Once the software superstructure was in place, the next step build a PCB version of the ESP8266 and interface hardware, package it in a small box, and target a specific commercial radio. The first was the TK981 radio from Kenwood, but to understand the protocol required signing non-disclosure agreements, which precludes any further discussion on this subject.

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 that was used for prototyping has 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.

Finished PCB with CP2102N-MiniEK

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.

APRSDroid Generating Position information and received messages from Fleetsync

At the receiving end, the messages were decoded and displayed on the screen at the raspberry Pi, using the serial port on the Pi HAT controller. Future implementations will use a central server connected by an IP network.