Sounds exciting….what is it?

Its a thing that sits on an Arduino that does stuff with APRS packets.

Nice so whats the thing?

Arduino’s have a way of interfacing with each other thats nice a simple. you can stack them on top of each other. So this Argent Data radio Shield is a pcb kit that you build. Once built it can be stacked on top of a normal Arduino, the same as any shield, and will give you the chance of either encoding, decoding or digipeating APRS data. The Argent data website doesn’t give much away but the link to their wiki is much more useful.

2013-08-05-19.39.54Building the kit took less than an hour. Once I had all the parts. you need to source an LCD, ribbon cable and suitable connector. Mine came from friendly eBay stores either in Hong Kong, China, London or the default if you don’t like eBay of Hobbytronics.

Once you’re up and running with an Arduino and the shield you can do a couple of different things

1. Test it with a known audio source to get levels right

2. Plug in your rig through either a custom built cable or a shop bought one

So Step 1 sounds easy enough. Get some packets from somewhere. If you have an Android phone or tablet, can I suggest APRSdroid. Its a nice piece of software that will play out some good solid packets through the headphone socket. You can download it theough Google Play for a fee (please support the developer) or be a cheapskate and get it for nothing (Google it yourself, it won’t take a genius


to find it but £2.95 will at least buy the guy 2/3 of a pint ;-))


Right then, you’ve stumped up the money and got the software. I’ll assume you’ve got the relevant passcode, if not follow the instructions on the site and go to the Settings Key > More > Preferences > location Source  and select manual. You can either select the last known GPS position or manually input one. The former is more accurate but not really necessary for the test.

Roll / Scroll / Swipe down to Connection protocol and select AFSK via speaker / Mic

Exit out of there and onto the APRSdroid hub and press single shot. You should hear a weird brrrapppp through the speaker. Thats the AFSK packet.


Now connect up a cable from the speaker output to the shield input, you’ll need the ground and noise. it will depend on the model of phone you have as to which part of the jack it is but if you get hold of a plug from Maplin’s then you can connect up a 3.5mm to 3,5mm cable with a set of leads off it to check which one is which.

Get yourself a copy of the simple sketch from the wiki. It’s down below but you need to look at the wiki as there is more data there and plug in the Arduino and start the IDE. Follow the instructions on the wiki as to how to program the thing otherwise it won’t work as you expected and may damage the shield (ok the last bit may not be true but did I mention look on the wiki?)

Press the Single shot button again. The LED on the shield will flash a bit and you’ll get the decode on the LCD. Hey Presto

Just as a brief note my LCD needed another earth on pin 16 so I joined 16 and 1 together to short it out and it works fine. A tidy job with some hook up wire should do it for you. The last photo is of it connected up to a cheapo Baofeng UV5R whilst it was decoding packets sent from my more expensive Yaesu VX8-G.

Some code from Argent Data

 char inbyte = 0; // Received byte
 char buf[260]; // Incoming data buffer
 int buflen = 0; // Length of buffered ata
 void setup() // Runs at startup
 Serial.begin(4800); // RadioShield runs at 4800 baud
 delay(3); // Allow time for RadioShield setup
 Serial.println("B100"); // Set display contrast
 Serial.println("C"); // Clear screen
 delay(10); // Can take a bit to clear the LCD, so wait
 Serial.println("WWaiting"); // 'Waiting' message stays until we receive something
 void loop() // Runs constantly after startup
 while (Serial.available() > 0) // Check for an incoming byte on the serial port
 inbyte =; // Get the byte
 if (inbyte == 'n') // Check for end of line
 Serial.println("C"); // Clear screen
 delay(10); // Can take a bit to clear the LCD, so wait
 buflen = 0;
 else if (inbyte > 31 && buflen < 260) // Only record printable characters
 buf[buflen++] = inbyte;
 buf[buflen] = 0;


  • Jeff Hartman

    Hey Alex, Google served your page up while I was searching for somebody that might have combined this shield with Adafruit’s latest ‘Ultimate GPS’. I have both and the GPS is really pretty amazing. The sensitivity is out of this world. I was trying to save myself the work of figuring out the packet format with GPS data embedded and then the right code to incorporate it into the transmit routine.

    Have you done anything further with yours?
    73’s, Jeff

    • Alex

      I haven’t seen the Ultimate GPS. I’d better have a look and see what i can find. Have you had a look on the page. The Timber might be the one that pulls some if not all of it together. I’m a bit behind in my projects so Christmas is a bit of a tidy up for me (hopefully)

Leave a Reply