From Parts to Packet: Building an APRS MicroModem
Introduction
Automatic Packet Reporting System (APRS) has always held a special place in my heart. The idea of real-time tracking and messaging over ham radio frequencies excites me, and I wanted to make APRS portable with a small and efficient Terminal Node Controller (TNC). However, many of the ready-made APRS trackers available are quite expensive, which got me thinking—could I build one myself? Fortunately, there are several open-source projects that make this possible.
Finding the Right Project: APRS Micromodem
After some research, I stumbled upon an open-source project called the APRS micromodem by Mark Qvist. It seemed like the perfect starting point for my build.
However, while exploring other options, I discovered an improved version of the micromodem PCB designed by LY2EN on GitHub.
This design looked promising, with a more refined PCB layout and using SMD components and Arduino Nano.
I immediately decided to take the plunge.
I ordered the PCBs from JLCPCB and sourced all the necessary components from Aliexpress.
I was now ready to build my own APRS micromodem!
Assembly and Programming
With all the components in hand, I began the soldering process.
This part can be a bit tricky, and I learned this the hard way—during the assembly, I managed to fry two 2N7000 MOSFETs by staying too long on the ground leg while soldering.
This can easily happen if you apply heat for too long, so be mindful of how long the soldering iron stays on each pin.
One thing that made the process much easier was using flux. Applying flux to the SMD components ensured the solder flowed smoothly and made the entire process far more manageable.
Once the soldering was complete, I used AVRDudess, a GUI for AVRDUDE, to program the Arduino micro controller.
This utility made it easy to load the necessary firmware (can be found on the Github repository) onto the board, ensuring the TNC was ready to communicate with my radio.
It took some time to find the right settings so I attach a screenshot so you can save some time.
Once the Arduino was programmed, I moved on to the JDY-31 Bluetooth module.
Please notice that the JDY-31 needs to be the one without the carrier board.
Programming the JDY-31
Programming the JDY-31 Bluetooth module was a bit of a challenge, as information on how to configure it can be hard to find. Here’s a quick guide to help you through the process:
- Connections:
- Connect Vcc and ground from your USB-serial converter to the JDY-31.
- Connect Rx on the JDY-31 to Tx on the serial converter.
- Connect Tx on the JDY-31 to Rx on the serial converter.
- Communication Settings:
- The JDY-31 defaults to 9600 BAUD, 0-stop bits, 0-parity, and uses both carriage return and new line ending (\r\n).
- Important Notes:
- The JDY-31 will have no response to an empty “AT” command, which can be confusing. However, you should get a response when you send “AT+VERSION”.
- Basic Commands:
- To change the Bluetooth device name:
AT+NAMEtoyrobot2
will set the name to “toyrobot2.” - To change the PIN:
AT+PIN3141
sets the PIN to 3141 (default is 1234).
After each command, you should see a +OK response to confirm it was successful. I used the Arduino IDE serial monitor for this, as it allows sending the necessary \r\n line endings.
- To change the Bluetooth device name:
After soldering it to the PCB, I connected it to my Baofeng UV-5R radio. To my delight, everything worked as expected!
With the Bluetooth module in place, I was able to connect wirelessly to the TNC from my phone using APRSDroid, making it portable and easy to use.
For anyone looking to replicate this project, I created a pinout diagram to clarify how to connect the radio cables to the TNC.
This can be a tricky part for beginners, so I hope the diagram makes the process easier.
You can check out the updated instructions and images in my GitHub fork of the micromodem-pcb project here.
3D Printed Case
I needed a quick case to protect the board so I designed a simple and easy to print sleeve case.
Field Testing: Taking the TNC to Romania
After assembly, I took my newly built TNC on a family trip to Romania, eager to test it in real-world conditions. I connected it to my Baofeng UV-5R, but results were mixed—while the TNC worked and I could see myself on the APRS map, the performance was limited. I chalk this up to the setup I was using: a rubber ducky antenna inside the car, which is far from ideal for APRS.
Despite the partial success, the test proved that the TNC build worked, and with better equipment (like an upgraded antenna), it would perform even better in the field.
This experience reinforced how important it is to consider your antenna setup when working with APRS, especially when operating from a vehicle.
Conclusion
In conclusion, building this APRS TNC has been a rewarding experience. It allowed me to create a portable, customizable device at a fraction of the cost of pre-built units.
The ability to modify the design, update the firmware, and improve performance opens up a lot of possibilities for further experimentation.
For anyone looking to build their own APRS tracker, this project offers a great starting point.
Feel free to check out my GitHub repository and follow the build yourself. I’d love to hear about your experiences and any modifications or improvements you might make along the way!
73!