Sending the first LoRa frames

I haven’t had much time to blog lately because I got a new job designing software for subsea embedded devices. So let’s recap what I’ve been doing with my LoRa transceivers.

First of all, those tiny boards that I bought are not really handy to use. There exists an arduino LoRa shield called Dragino which is a bit more expensive but in the end it’s really worth to buy some of those. Plug and play is really the way to get things done if you have little hobby time.

It took a bit of time and reading the schematic to figure out the the pins used by the Dragino shield. To save you a few minutes, here they are:

// Pin mapping
const lmic_pinmap lmic_pins = {
    .nss = 10,
    .rxtx = LMIC_UNUSED_PIN,
    .rst = 9,
    .dio = {2, 6, 7},
};

This can be used with the lmic (LoRaMac-in C) port to Arduino. I tried the “raw” example and got two modules to talk to each other without problems. In the screenshot you can see a waterfall of a LoRa frame being sent (totally oversteering the SDR and generating ghost images).

Another thing I tried was on-off keying (OOK modulation) and frequency shift keying (FSK modulation) using the digital IO pin for the keying. However that was less than successful. If somebody reading this has been experimenting with this, please let me know in the comments.

The next step will be using my own functions to transmit and receive LoRa frames, because I don’t want to keep using an entire library for something that simple. Then I will make a short tour in cryptography. That will be interesting too because it is not easy to implement a good encryption scheme if you’re not a specialist. However I will make a good effort, document everything here (except the actual keys), and if I fail, people will be able to read the temperature in my garage.

PS: kudos to https://tohtml.com for providing an easy way to put source code into an html document. Will use again.

Leave a Reply

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