Wednesday, February 5, 2014

BORP020314

Before you read the rest of the post, try and figure out what the title means. Pretty cryptic, huh? (kinda looks like a product number)

BORP020314

Obviously, you shouldn't know what it means (because we made it). But what if I told you that the number was actually the date? Instead, you would read it as such:

BORP 02-03-14

We can take it farther. The name BORP is our abbreviation of Balloon Over Radio Protocol. Now our title reads:


Balloon Over Radio Protocol 02-03-14

Let's go back to the date and take the title one step farther:


Balloon Over Radio Protocol - February 3, 2014

This is way easier to read; however, it takes a lot more space (47 characters vs. 12). This is almost 4 times longer. So, say I want to send a message to the International Space Station. That's pretty far, but sending the final title (the 47 character one) will be fairly easy. But, what if I want to send 100,000,000,000 messages to the Space Station. In this case, the quicker message would be Title #1 (BORP020314). As long as the astronauts on the Space Station know the protocol, they should be able to interpret the data.

In other words, a protocol is just a fancy way of agreeing how to send messages. This is what we are working on for the balloon project right now. The balloon in the air has to send large quantities of data to the ground; the computer on the ground has to know how to interpret this (the data transmission).

An analogy: The United States Post Office

The USPS processes an enormous number of mail parcels (around 100 billion). So, they should read this post and make their own protocol, right? That would be smart; it turns out they already have one:

<Name>
<House #><Street>
<City><State>
<Zipcode>

Look familiar? That's because it might be one of the best implemented protocols ever (disclaimer: I have no citations for this). Everyone knows it. And as a result, mail gets to your door within a week or two.

--Michael


Thus ends the easy part of the post. Everything below is for the technically adventurous .

Our current design for the BORP utilizes a 32-bit header to label each data packet transmitted from the balloons, described below.



Byte 0The first byte of data will included in the header will tell which balloon is transmitting, and how important the data is.
  • Bits 0-1: BID - Two bits have been allocated to the Balloon Identification (BID).
  • Bits 2-3: Priority - The next two bits will be used to give the packet a priority level. 
  • Bits 4-7: Open - The last four bits will be used for new flags in the future.  

Bytes 1-16: The next sixteen bytes of data will be an MD5 Checksum of the data being transmitted. This makes sure that the data has not been corrupted.

Bytes 17-20: The next four bytes include the time the transmission was sent (not the time the data was collected). Between a constantly changing time stamp as well as different data and MD5 Checksums, no two packets should ever be identical.

Bytes 21-24: These four bytes will be the timestamp of the data (when it was collected).

Bytes 25-26: These two bytes hold the "window size" of the data. They say how large the data being transmitted will be. This will be used to parse the data and will help delineate between different sets of data.

Bytes 27-31: These last five bytes of data have been left open for development. We may use them for something in the future, however we currently have no use for them.

Each balloon will have a Master-Slave relationship with the main computer on the ground. The "Master" computer on the ground will send out requests for data to each balloon. The balloons, or "Slaves", will respond to these requests by broadcasting the data.

We are planning on creating an Arduino library in C that will handle all of this. When it is fully implemented we should be able to call the BORP() function on a set of data and have it transmitted back to the "Master" computer on the ground.

--Andrew

No comments:

Post a Comment