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:

P1090772(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:

P1090770The 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:

P1090766The software is incomplete (e.g. no facility to change frequency) but that will come soon.




16 Replies to “LoRa Handheld Receiver”

  1. I would be really interested if you posted details about the LoRa module. Also, even more interesting would be if you got into detail about the configuration and programming of the module.

  2. Nice job there!
    I would really appreciate as well, if you would share how to configure those RFM modules, how to pair them etc…

    Thanks in advance!
    Best regards

  3. Hi Dave,

    great work there. I am looking to make a similar handheld, but one that will work two-way – send a signal, then receive data. Do you think the SX1275 is appropriate for that, being essentially half-duplex?

    1. Yes you can do that. Send a packet, receive at the other end, formulate and send a reply.

  4. Hi Dave!
    Do I understand your setup correctly that you are running a separate GPS module, which is sending the location information through the LoRa module RFM98W right?
    Ie – you aren’t doing triangulation/location tracking based on the LoRa communication packets (like some pinging systems). Pretty NEAT!

    1. Yes the balloon tracker has GPS, and transmits its location to the receiver. The receiver has its own GPS so it knows where it is, where the balloon is, and can calculate the distance and direction to the balloon.

  5. Hi Dave,

    Just wondering what the “Arduino A0 – Switch (other side GND)” in the code is for?

    It looks like it changes the mode/display somehow but your photo doesn’t seem to show anything connected to the arduino A0 pin.

    Is it a planned upgrade?

    1. The photos were before the button was added.

      A press of the button cycles between the different screens.

      On the setup screens (e.g. frequency) hold down the button to switch into edit mode. Then quick press to change the value; hold down again to save and exit edit mode.

      From memoty, the screens are 1 Direction to payload, 2 Data from HAB, 3 – local GPS position, 4 – Frequency, 5 – LoRa mode.

      1. Ahh that looks good, so you can adjust frequency without having to alter the code etc…

        It looks like it can be a simple press button switch?

      2. How is the local GPS position determined?

        Is it through a GPS chip? If so, how is it wired up?

  6. Hi Dave.
    I have a similar unit built with a RA-02 Lora module. Would it be possible to use the code as is, or would significant changes be required for it to work?

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.