The second iteration of the Arctic Tracker is based on an ESP-32 IoT module (a sucessor of the ESP8266). It is quite capable and still rather cheap. It has Wifi, Bluetooth, a dual core CPU operating at up to 240 MHz, 520 KiB RAM, and several other interesting features. We use a ESP-Wroom-32 module with 16MB flash.
A revised PCB (two layer) has been made, using mainly the same components except that the Teensy and the ESP-12 was replaced with an ESP-32. Since the ESP-32 do not have a USB port, but three serial ports, one of them was used for command shell through a 3.5mm jack and an external USB to serial converter. This is probably ok since the command shell will seldom be used for other than development (configuration and firmware updates can be done using a Wifi connection).
We still use a Nokia LCD display, SR-FRS-1 radio module and a Mitsubishi PA module but the PA circuit is improved by using RF-switch modules instead of PIN diodes for switching between transmit and receive. These are designed for higher frequencies and have high isolation and very low current draw on controlling signals. However, they are small in size (U2 in particular) making them more tricky to solder on the board. This choice, along with better grounding and placement of components around the PA module makes it stable and it works well, producing 5-6 watts RF output depending on the battery voltage.
The software is written in pure C using the ESP-IDF and associated tools, which is again based on FreeRTOS. The code written earlier the Teensy microcontroller in Arctic Tracker first version was based on another RTOS not unlike FreeRTOS, and therefore relatively straightforward to port. Some code (controlling the Wifi, Webserver, etc.) had to be written more from scratch but there are many examples out there. We also use a nice Webserver framework (libesphttpd) which comes with a simple HTML template mechanism. The code is available on Github.
Currently the following is implemented or ported. And tested:
- Command shell.
- Settings of various parameters, using persistent storage (flash).
- Firmware upgrades over the air (OTA).
- Internetworking using WIFI. Automatically connect to access points available. User can set up an ordered list of APs to try. It can also function as its own access point.
- Webserver. Currently used for configuration of Wifi (access points, etc), Basic radio and APRS setup, Digipeater/Igate and Firmware upgrades over the internet.
- LCD display, button handler, etc..
- Controlling radio and PA module
- Sending and receiving APRS packets
- Interface with GPS and APRS tracking.
Digipeater and Igate code is ready to be ported from the earlier version. In addition we could do some work in reducing the power drain to save battery. Another planned feature is storage of tracks and uploading to the server when internet is available.
Just like what we did with the first round, a complete tracker was made. Mainly in the same way with GPS, display, two single colour LEDs, a button and a switch on the top. The pictures below shows some of the work. Tracking has been tested and it has been shown that it works and battery last for about 12-15 hours when driving in a car.
There may be one issue with the battery charging though, probably due to the protection circuit in the battery (it is LiPo). The charging voltage is 8.4V nominally and there are cheap chargers available with that voltage, but when the battery is low, we may need to reduce it to 8.3 or even 8.2 or it won’t charge.
A small error was made forgetting to feed the receiver signal into the ESP-32, but it is easily fixed by adding a short wire. Other possible improvements of the hardware design include the possibility to bypass the PA-module completely from software (0.5w and 1w option), a switch for serial port programming mode, and maybe some circuitry for regulating the battery charging voltage. The last item is maybe better handled with an external charger since it should deliver a current of 2A.
(Add 17. july 19) Schematic for the PA. The output of the radio module is 0.5W and must be attenuated. Two switching modules (U2 and U4) bypasses the PA module in receiving mode. There is also a pi-filter (low-pass) between the PA and the antenna.