The intent of this project was to explore the possibility of using the built-in Fleetsync communication mode of the TK981 radio as a data transport for APRS-IS messages.
The primary objective was to be able to use an Android cell phone running APRSDroid to generate GPS data and also be able to exchange SMS messages in both directions. The Kenwood radio would be used as a data transport only.
The initial investigation showed the best method to achieve the end goal was to create a TCP connection over a WiFi connection, which would generate APRS-IS messages. The device to implement this portion of the project would be an ESP8266, which has a built-in WiFi transceiver. There is a readily available prototype of this called the NodeMCU, which is easy to program using the Arduino IDE. However, as this device runs on 3.3V, and the transceiver 5V, some buffering was needed. The picture below shows a NodeMCU experimenter board, with a prototype interface.
The software development was done in two phases; the first on a PC to develop the capability of making a TCP connection an APRS-IS message, then formatting that into a serial command for the TK981 radio. It was built in a modular fashion so that the processing routines would be wrapped in a superstructure, which would supply the operating environment. The processing routines would fit into this structure and be device independent. The PC version was developed with Visual C++, which has a good debug environment.
The Arduino IDE, on the other hand, does not have any sophisticated debugging for this particular board. It does have a plethora of built-in libraries and examples to create an access point and be notified when a device makes a connection and sends data. This was adequate enough to build the superstructure, but not easy to debug.
Once the processing routines were working on the ESP8266, I was able to generate NMEA sentences from the APRIS-IS messages, and also acknowledge an SMS message locally and send both to the radio. A second radio was then set up to act as a receiver, which parsed the incoming messages and displayed them on a terminal. Below is a picture of the messages that were received and decoded.
The next step in this project is to build a PCB version of the ESP8266 and interface hardware, and package it in a small box. I managed to secure a supply of ESP8266 modules, but the next challenge was how to design the circuit so that it was compatible with the Arduino IDE.
The NodeMCU uses a Silicon Labs CP2102 for its USB interface to the PC. A closer look at this part shows that it seems to have most of the RS232 controls implemented, and also has some other circuitry for charging a battery from the USB, which is not needed in this design. Unfortunately it is only available in a surface mount package, which stretches the capabilities of the average ham. I managed to find an evaluation module, the CP2102N-MiniEK, which could be used in a through hole application.
The two pins that the downloader uses are DTR (Data Terminal Ready), and RTS (Request To Send) to control the download process. Fortunately the ESP8266 has a built-in boot loader, so it is ready to use from day zero. The important circuit for the downloader is a two transistor inverter to generate the reset and also one GPIO input that triggers the download. The miniEK did have RTS brought out, but not DTR. This was accomplished by cutting the track to one of the unused charging outputs, and running a wire from the part, with that change I was able to download the board and install my software with the IDE.
After a couple of go-arounds with the PCB, the interface is finished. In the picture below is a Kenwood TK981 radio with a cable attached to the power and COM connections, which connects to the interface board.
The board fits in an off the shelf Hammond enclosure, which came as a template in KiCAD V5. The two LED’s show that there is a connection to the Wifi access point, and the second LED indicates a position fix has been obtained.
At the receiving end, the messages were decoded and displayed on the screen at the raspberry Pi, using the serial port on the MaplePi controller.