My adventures with a Raspberry Pi and Arduino programming

Managed to spend a bit of time playing with my gpstxrx project now I’ve finished writing NoSQL For Dummies! Made a lot of progress already…

New GPS unit

I ordered a smaller and cheaper GPS unit to see if that provided the same performance in a smaller package. I’m happy to say it does!

I’ve ordered the GP-635T from SparkFun and it works great. Actually easier to use than the original large UBlox. Of course I’ll probably want to play with this later on so I can better control its power usage.

For now though the same GPS code works great with this device. Sends a nice NMEA string every second over serial UART. Works great with SoftwareSerial on the Arduino

433 MHz 3DR Radios

Got these working too! Modified the settings for legal max range in UK. They pair fine. I have one plugged in to my Mac (actually to the VMWare image of Windows 7 with APM planner installed).

Not sending MAVLink information but I can confirm that serial data is received by the laptop. Looks like garbage though – probably a baud rate issue or a crap serial terminal issue. More to follow on this.

Tested this by sending a letter each second. This letter increases from A to B and so on so I can see the data changes. Duplicating the radio output to the serial line in to the Arduino serial monitor too.

This too works well with SoftwareSerial.

Putting it together 

I now have a sketch that does a bunch of read on the GPS unit until it gets a valid NMEA message, then switches the gps software serial off, enables the radio software serial, then sends the NMEA string over it.

Works pretty well. Had a face palm moment when I tried to operate both software serial devices at the same time! SoftwareSerial only supports one at a time. So you have to do gpsSerial.begin(9600), check for and read data, then do gpsSerial.end(), before then doing the same sequence on radioSerial too.

Pretty easy once you figure it out though.

What’s next

Borrowed a friend’s soldering iron so I can integrate a 16×2 LCD to a receiver. Will need a second 3DR radio air side module – my ground one has a USB connection for use with a computer. Not much use for the Arduino Mini Pro!

Also adding a transmitter ID field and generating a data packet in JSON using ArduinoJson. Bug with that library at the moment though prevents it from compiling. Bug reported – just awaiting feedback.

Once I have the LCD showing the sent information I’ll neaten the package up:-

  • Convert my faithful WGS84/EPSG4326 lon/lat to Ordnance Survey 8 fig grid references (SK12348765 style – 10 metre accuracy)
  • Use shared One Time Pad encryption to secure both transmitter ID and the JSON data packet (Don’t like the idea of sending positional information on teenagers in plain over radio!)
  • Solder the damn things together, and get proper 15cm antennae for the lot
  • Test in a few weekends time!

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: