Friday, December 12, 2014

APRS Arduino with map display

APRS Map on 2.2" TFT

While reading the chapter on Marinus: An APRS Display from the Ham Radio for Arduino & Picaxe by Leigh L. Klotz, Jr, WA5ZNU. I decide to give it a try over the weekend.

Ham Radio for Arduino & PICAXE

Initially it sounded complicated but after looking into my inventory ( Arduino, TFT display, SD card and APRS modem ), I have ALL the similar items needed to do this project.

I replaced the Arduino UNO with a DigiX , an enhanced Arduino DUE with Wifi, SD card, nRF and many more pins. The reason for this was for both mcu power, flash & memory storage and operating voltage of 3.3V as most of the TFT out there runs on 3.3V.

The next, I replaced the Adafruit display shield with a bigger and commonly used  2.2" TFT / ILI9341 (320x240) that runs on SPI. The Arduino forum here have lots of info on this display. This display runs on 3.3V only. As I have gotten this 2.2" TFT working on Adafruit GFX library before, it is just a matter of hooking up the pins correctly.

The SD card slot was built-in to the DigiX on pin 87 as Chip Select (CS). Nice...

MicroAPRS modem

The last piece, instead of Argent Radio Shield, I'm using an Open Source version of Arduino MicroAPRS modem by markqvist from The above is a picture of the MicroAPRS modem board I made on DIY PCB.

For the library, DB1NTO modified the ArgentRadioShield library for the MicroAPRS for decoding the normal and compressed packets functions.

All the main codes remains the same as I just modified the TFT & ArgentRadioShield library only.

The image below are the whole system, DigiX with SD card, 2.2" TFT display, 5V to 3.3V from the MicroAPRS modem to the Serial3 of DigiX.

Marinus on DigiX / MicroAPRS
With help from the author WA5ZNU, I was able to generate the OSM map tile for 320x240 to match my 2.2" TFT display. Since I'm using a "bigger" Arduino with lots of memory, I generated a 7x7 tile to be stored inside the SD card.

OSM 7x7 map tiles

With everything setup, I put everything inside a plastic box and go for a ride. Below are some of the pictures and decoded callsigns on the maps.

APRS Map decoding my 9W2SVT-8 packets

APRS Map inside a plastic box



Summary hardware :-

Special thanks Leigh L. Klotz, Jr, WA5ZNU for the great article and his assistance to get everything up and running. Markqvist for the MicroAPRS modem and Taner DB1NTO for the modified MicroAPRS library to support for packet decoding for normal and compressed packets.

Summary Links :-

Wednesday, December 10, 2014

Updated SVTrackR with mini 0.96 OLED display

After a few months of testing and development, I have reach a milestone of version 1.0 with all the necessary functions and features.

SVTrackR with OLED
The functions and features of this APRS Tracker called SVTrackR are :-

  • Super bright 0.96" mini OLED display
  • Decodes mic-e / compressed packets
  • Calculate distance to station from received packets
  • Calculate bearing to station from received packets
  • Display two decoded packets in multiple lines
  • Decodes and display messages for the callsign
  • Top section display GPS lat/lon and number of satellites
  •  Lower section display important counters, speeds, heading and altitude
  • Enhance Smart Beacons 
  • Calculate distance to base station location
  • Display uptime / minutes since power-up
  • Sequence number of every packet to detect packet loss
  • Byte saving by sending status every 10 packets
SVTrackR message

The OLED screen are bright enough during the day and are made for you to glance it during stops. It was NOT design to view it during driving as the text are too small.

The mic-e / compressed packet was decoded as 9M2NIA-9 was 142 degree, 6km away from my current location.
SVTrackR mic-e decoded

Friday, October 3, 2014

Cheras APRS Fill-in Digipeater Installation - 9W2SVT-1

This is a short entry on my team's installation of a 9W2SVT-1 digipeater at north of Cheras. Due to the blind spot at north of Cheras that was not covered by 9M2RPN and also the fact that my parent's house is on top of a small hill at around 80m altitude, I have decided to install a APRS digipeater with the help of other APRS Studio members.

Panoramic View from balcony
This is the panoramic view of my balcony looking over the entire Kuala Lumpur ( now blocked by trees ) and Bandar Tun Razak on the left side of the picture. With a clear view of downtown, this makes a good location for a fill-in digipeater location to compliment the coverage of 9M2RPN.

A bit of story about the antenna used here ...

1/4 wave ground plane

The first time I saw such weird looking antenna was at EMCOMM Go-Box event organised by MARTS. It is a 2m quarter wave ground plane antenna with four ground plane legs.

This four-legged quarter wave antenna was donated by 9W2KHN for this fill-in digipeater. The antenna was made by Pak Razif, 9W2JQQ.

1/4 wave ground plane

1/4 wave ground plane
As I'm more of an electronics and hardware programming fellow, doing drilling and physical hardware installation was not something I am familiar with. Luckily, within our group, APRS Studio, we have people with a wide range of skill-sets including antenna installation.

Below are 9W2CEW, 9W2KHN and 9W2WHT helping out with the digipeater installation on a hot and sunny day.

Below are the guts of the APRS digipeater powered with the BH4TDV NET51TNC as the digipeater and a TYT F8 as the radio. Both the radio and NET51TNC are powered by a 12V SMPS.

I plan to power up this digipeater using solar power and 12V battery in the near future.
The completed installation at the front of the roof.

1/4 wave ground plane

1/4 wave GP installed

After almost a week, here are the coverage area of this fill-in digipeater from


Special thanks to APRS Studio team members 9W2CEW, 9W2KHN and 9W2WHT for the antenna installations, tools and donation of this weird looking but good performance antenna to make this fill-in digipeater possible..

If any APRS users driving along south of KL, Loke Yew highway or Sg Besi highway, do drop a few packets to this digipeater ..

Thursday, August 21, 2014

APRS to Garmin Waypoint

GPSMAP 64s, Yaesu VX-8G & powerbank

In this blog entry, I will be talking about integrating APRS to a Garmin GPS receiver with active waypoint. Some of the APRS products does support sending received RF packets with current position as a waypoint directly to a Garmin GPS. I believe Yaesu, Kenwood and NET51TNC support this feature.

A while ago during an eyeball session with 9W2KHN, 9W2WHT, 9W2CEW and myself, 9W2KHN mentioned that it would be really cool if we can integrate active waypoint for any received APRS packets to a Garmin receiver on a colour map. As I still have my first generation Garmin colour screen, GPSMAP 60C, we went ahead to test this out.

Before we continue, let talk a bit about serial protocol commonly used in modems and console to network appliance. There are two types of serial protocol, they are RS-232 and TTL (Transistor to Transistor Logic ) and both have different electrical characteristic.


- RS-232 serial protocol that runs on inverted logic: -12V for TRUE(1) and 12V for FALSE(0)

- TTL serial that runs on 0V to 5V ( or 0V to 3.3V ) with 0V for FALSE (0) and 5V for TRUE (1).

If you ever need to communicate one way from RS-232 to 5V TTL, placed a 22k ohm resistor on the Tx of RS-232 to Rx of TTL.

Let's get back to the main topic of connecting a Yaesu VX-8G to Garmin GPSMAP 64s, for Yaesu VX-8G, the 2.5mm 3-pin PTT out have RS-232 electrical signals and works best with older Garmin models with the round Garmin port that have the same RS-232 voltage level.

Garmin connector

For our first tests, we did a direct connection from BH4TDV NET51TNC to Garmin GPSMAP 60C for a TWO way communications, Garmin send the GPS position to the 51TNC and the 51TNC send any received APRS packets with position as a waypoint to the Garmin GPS receiver.


MAX232 on prefboard

As we did not want to pull the internal jumpers to switch to RS-232 signals, we added a MAX232 IC in between to convert between RS-232 signals to TTL signals.

Garmin GPSMAP 60C with APRS waypoint
The above picture is the captured Garmin waypoints from the air. The NET51TNC still have some bugs on the SSID and could not decode compressed packets and will give an error when it received any compressed APRS packets as a waypoint. BH4TDV will fix this for the next firmware upgrade (hopefully).

Here is a better picture from 9W2KHN NET51TNC to Garmin Oregon 450 with distance and headings to the waypoint. The Oregon 450 uses a mini-USB.

For the below setup of Yaesu VX-8G with Garmin GPSMAP64s, with the cable, 2.5mm Yaesu on one side and mini-USB on the other with a MAX232 in the middle. 5V power will be supplied using a power bank to both the MAX232 and Garmin GPS.

Here are some of pictures and screenshots from the Garmin GPSMAP 64s with GPS/GLONASS receiver from 9W2WHT.

Garmin GPSMAP 64s
APRS waypoint

Finally the completed cable for this project nicely done by 9W2WHT.

Saturday, August 9, 2014

APRSDroid Audiocable ( 3.5mm 4-pin / TRRS ) for Kenwood/China handy

Tested with various handy
This is a short post on how to do a DIY audiocable for APRSDroid on Kenwood / China handy type ..

We use the Yaesu VX-8G as the receiver for our APRS test and tested with a few common China handy like Wouxun and TYT.

Thanks to info from 9W2KHN, he mentioned this site have made an audiocable for TRRS phones.

There are basically two types of connectors for the four pin 3.5mm plug.. the only differences are the Ring-2 and Sleeve ... either mic or ground.

4-pin 3.5mm pinout

Kenwood / China PTT pinout

As most of the phones are either Samsumg, iPhone (including XiaoMi ), we decided to make the audiocable for Samsung/iPhone called the TRRS connector.

I did not follow the components used by the circuit on the above mentioned site but just the connection. Do NOT max out your handy might blow your Android smartphone microphone.

For the handy settings, turn ON VOX to 3 to 5 ( depending on the handy sensitivity ) ...

If you are not getting anything out from the radio, change your APRSDroid Preferences on the following :-

Connection Protocol :- AFSK via Speaker/Mic
Connection Preferences :- Frame Sync Prefix ( default is 1000ms, you can change to a higher value if your handy is not triggering the VOX within 1 secs )

To troubleshoot, you can hear the output sound before plugging in the TRRS connector.

TRRS Pinout

Here are some pictures of cables professionally done by 9W2WHT..

Unsoldered connectors

Nicely heatshrink wrap connector

The final version look so professionally done cable by cutting the PTT handsfree cable..
Cut from the PTT
Special thanks to 9W2CEW, 9W2KHN and 9W2WHT for the testing on various handy.


Thursday, July 17, 2014

Building an Open Source Arduino APRS Tracker with LCD & GPS ( SVTrackR )

It all started when I was searching the web for open source Atmel AVR or Arduino based APRS engine. There are several projects listed below with a short summary of them :-

Most of them are using atmega328P or similar MCU but most of them are also not updated except for the last one that my APRS Tracker was based on.


BeRTOS examples with APRS
The BeRTOS codes for an APRS implementation just using ATMEGA328 and a few common parts. From this, the few below project were the fork using the BeRTOS engine to encode and decode the AX.25 / APRS packet without the need for a very hard to find MX604/MX614 modem IC.

AX.25 Packet Modem
During the late part of 2012, I decided to start building a packet radio modem for 1200 baud AFSK (AX.25 style) from scratch. After spending a number of weeks on the project getting the basics all sorted out, it started to turn into something quite usable. I added on some small SPI SRAM chips that had 256kbit of memory each. However, these had to run at 3.3V and I was using a 5V Arduino. After setting it all up and create level shifters for the SPI bus, I noticed they also had 512kbit 23LC512 SPI SRAM chips that supported a native 5V interface. This made the actual layout and component count far simpler. It also doubled the available packet memory.

Arduino KISS TNC
A while back I purchased Scott Miller N1VG's OpenTracker 1+. I bought the device as a kit, had no trouble putting it together, and have used it a few times as part of my ammo-can tracker box. The OT1+ uses a Freescale MC08 microcontroller to perform software-based modulation and demodulation of AX.25 audio. I have also read about Gary Dion N4TXI's WhereAVR, and Byon Garrabrant N6BG's TinyTrak 4, both of which use AVR microprocessors without additional modem chips to perform mod and demod functions in software. With these as examples, I knew that the AVR Mega series CPUs were capable of functioning as a TNC with minimal support circuitry.

extdigi, an APRS Digipeater for Arduino
The project is an AVR ATMega328P based AX-25 1200 AFSK Digital Repeater, suitable for APRS "digipeating". The microcontroller code and the basic Hardware design is based from the BeRTOS APRS example. The most popular AVR ATmega328P board is called Arduino, wich you can either buy one at their website or build your own (the one on the picture is built by me).

The WhereAVR
The WhereAVR is a small, lightweight, low-power, and low-cost APRS tracker with a full compliment of analog and digital I/O, as well as the ability to decode ax.25 packets. This allows for the reception of remote commands without the need for a "real" TNC. It is designed to hook directly to the speaker and microphone jacks of a handheld radio. One caveat, however, is that it currently doesn't have a spiffy configuration utility. I'm not into windows programming yet, so that feature will have to wait. :)

AFSK 1200 modem
MicroModem is an educational and open-source implementation of a 1200-baud AFSK modem on the popular ATmega328p microprocessor. This makes it compatible with all Arduino boards and spinoffs using the 328p (for example the Uno, and the Microduino). Apart from a 328pBased board, you will also need to assemble 17 common electronic components to build the modem. When done, it can be used for things like ham radio APRS, TCP/IP over SLIP, experimentation with mesh-networks, long-range wireless communication with sensors (Or friends! Or strangers!).

After going through the MicroModem schematics, it seems like an easy modem to built, and those components were easy to find at the local electronic store. The schematics below was taken from Quickstart.pdf

MicroModem Schematics

With the components on top of the protoboard shield, I made two of them modem so that I can test them back to back without using two radios or transmitting test packets on the air.

After getting the modem to work, I had an idea to make an Open Source radio shield similar to Argent Data Radio Shield as this radio shield IC was not even listed in the schematics nor are open source. I usually stay away from non-open source stuff.

I had wrote to the author of MicroModem and he agreed to write the MicroAPRS with commands to control the AX.25 modem. This is great news to my journel to develop an APRS Tracker.

From here, I started writing the tracker codes in Arduino IDE as the SoftSerial, LCD and GPS libraries are already available for the Arduino platform. Below are some of the pictures from the projects.

From the pictures, you will need TWO Arduino UNO or TWO atmega328 chip for this to work. One as a APRS AX/25 "modem" and another as a Tracker talking to the GPS module and sending location to the modem.

SVTrackR with 20x4 LCD

Full setup with radio & GPS module

I'm using a 20x4 LCD module and a sensitive Skylab SKM53 GPS module ( Datasheet ). Below are some pictures of the first field tests outside my condominium.

Project box

Driving field test with decoded packets

I have also added a FTDI Serial USB module for logging and debugging purpose as I cannot view the screen while driving. The FTDI Android app was used for logging any errors for later reviews as a text file.
Using FTDI Serial USB and Android app for debugging

And below are the tracklogs on after fixing the coordinates formula and added  "Smart Beaconing" algorithm with distance detection and distance from base station into the LCD display.

tracklog on
The nice things about writing your own APRS SVTrackeR is that you can customise the comment field with dynamic info and I have added voltage of the Arduino ( SecretVoltmeter ), speed, HDOP and number of active GPS to it. On the LCD, I have added distance from last Tx, distance to base station, Tx counter and seconds since last Tx. I've also added a manual Tx wire/button to pin Analog0 with a limit of Tx every 10 seconds if the jumper wire are connected to 5V. This is really useful to test in places without much RF coverage.

There are still a few more bugs to be fixed before I will make a PCB ( printed circuit board ) instead of all the jumper wires flying around.

My source codes are posted to Github at and I will update them often when bugs are found and features are added.

I welcome anyone to test out my codes and contribute to the codes by forking my repo. My programming style isn't the best and I have not optimize the codes for good memory usage.

Updates :
I've migrated to two Mini Pro ( Modem on 5V/16Mhz and SVTrackR on 3.3V/8Mhz  ) to shrink down the size of the box.

I've also added a 2.2" SPI TFT screen to the Tracker ( renamed to SVTrackR ) on Mini Pro 3.3V 8Mhz but unfortunately the atmega328 running at 8Mhz is under powered for such a test of reading GPS and updating the 320x240 screen.

SVTrackR with 2.2" TFT
More Updates :
I've added course, speed and altitude int APRS format that can be recognise by

SVTrackR v0.4

Added course/speed/altitude into APRS format

Summary Links :-
My Repo
Arduino Secret Voltmeter
Android FTDI Terminal
Skylab SKM53 GPS
APRS Modem with command line MicroAPRS