Dec 062016
 

As you can read in my previous post, I’ve been having trouble establishing P2P communication between a Semtech SX1272 and Microchip RN2483 LoRa transceiver. I though this would be a good idea to use my HackRF One and see if it’s possible to see the LoRa packets “on the air”.

I checked out this article which has some very useful details. I later found this gnuradio plugin which allowed me to decode the basic P2P messages I was sending between my LoPy and Dragino LoRa hat.

I used pybombs to install gnuradio on my Ubuntu 16.04.1 desktop so I created a recipe to install this version of gr-lora (which is different from the gr-lora package normally installed by pybombs) as gr-lora-rpp0. You can add this recipe via pybombs recipes add gr-xykon git+https://github.com/Xykon/gr-xykon.git I did not include dependencies for any specific hardware sdr so make sure you have this installed before running pybombs install gr-lora-rpp0

If you’re not using pybombs you can also follow the instructions from https://github.com/rpp0/gr-lora to download and install the gr-lora plugin for your gnuradio installation.

This version of gr-lora requires liquid-dsp which does not build properly on Ubuntu 16. See this issue on github to fix.

I tried with various sample rates (currently using 10e6) but even 1e6 (1M) seems to show the same results so this should probably work with cheaper sdr hardware than the Hackrf One.

With gnuradion and gr-lora-rpp0 installed I used this simple flowgraph to capture the LoRa packets (I have uploaded the lora_recv.grc file on github):

lora_gnuradio

I seem to be getting fairly consistent results from the LoPy but I’m still struggling with the RN2483 from Microchip. Here is a screenshot of a few received packets:

lora_recv.png

More to follow…

 Posted by at 00:05
Dec 052016
 

It’s been quite a while since I last posted anything here but I finally started an interesting project using the new LoRa long range wireless communication protocol.

I had recently received two LoRa based Kickstarter projects, one being the Sodaq One LoRa/GPS tracker which is using the Microchip RN2483 LoRa transceiver and the Pycom LoPy which is based on the Espressif ESP32 and uses a Semtech SX1272 LoRa transceiver. As I had trouble establishing communications between the two different chipsets I also got the Dragino LoRa/GPS hat which uses the same SX1272 as the LoPy.

To get the Dragino hat to fully work I had to do some hardware modifications. First I added a cable to feed 5V to the centre pin of the external GPS antenna connector to use an active antenna. Then I had to add a solder bridge between pins 22 and 24 as explained here. Next up I connected D1 from the LoRa transceiver to PIN16 and D2 to PIN18 as explained here.

This is the final setup on my Raspberry Pi3:

lora_hat

Picture 1 of 3

I started out with the instructions and software found here but I didn’t have a DS18B20 temperature sensor to hand. I modified the software somewhat to either send 3 bytes or to listen and print the received bytes. I uploaded the sources to github. In subdirectory “simple” you can find the sender and receiver. Run make to build the software and sudo ./lora_sender or sudo ./lora_receiver to launch. The RadioHead library used in this code adds a 4byte header to the lora packet. This can be changed in RH_RF95.h and for receiving this can be set to 0 but it seems when sending it is necessary. The header by default is 0xff 0xff 0x00 0x00 and when receiving the first byte received needs to be 0xff or you don’t see it.

As for the LoPy I have also uploaded the lopy_sender.py and lopy_receiver.py files to the same folder. Both sides either listen to LoRa P2P messages on 868.1Mhz and print anything they receive in hex or they send 0x7 0xi 0xab (with i continuously incrementing from 0 to 255) every 5 seconds. The LoPy is adding the 4 byte header 0xff 0xff 0x00 0x00 when sending and it will be visible in the console output when receiving.

 Posted by at 22:48