One of the nice things about the LoRa devices is that they do all the modulation and demodulation internally. So whereas a traditional RTTY balloon tracker needs a PC at the receiving end (or a high end mobile phone or tablet), a LoRa receiver can be made with a simple microcontroller. Anything that can talk SPI (a simple serial protocol) will do.
So I decided to do just that, using:
- Arduino Mini Pro 3.3V / 8MHz
- Epson-compatible 16×2 LCD
- RFM98W module
- Boost converter
- 3.7V LiPo
- USB LiPo charger
The Epson LCDs need 5V otherwise the display is blank. In theory (i.e. according to specification) they need to be driven from 5V logic but in practice 3.3V logic works. This is good because the RFM98W needs 3.3V logic and is not compatible with 5V logic. So although it should be necessary to use a 5V Arduino (to keep the LCD happy) and use level shifters between Arduino and RFM98W, I found that it all works happily with 3.3V logic.
Basic wiring information is in the source code which you can grab here.
I put the lot in a case designed for Arduino and LCD, placing an SMA socket at the top (to connect an aerial) and a USB charging socket at the bottom. I need to add a power switch (I didn’t have a suitable one to hand) then it’s finished.
These are all the parts connected and fixed to the case:
(the 2 red wires at the bottom will go to a power switch when I have one). Bottom-right is a USB charger for the LiPo, and to the left is a step-up to convert the LiPo voltage (3-4V roughly) to 5V. That then drives the LCD and the LDO on the Arduino, which then steps down to 3.3V for the processor and the RFM98W. That connects to an SMA socket at the top of the case:
The software waits for a telemetry packet from the LoRa receiver. It then decodes the packet and displays the latitude, longitide, altitude and RSSI (signal strength). After a few seconds the altitude and RSSI are replaced by a “time since last packet” display, and a live signal strength bargraph: