Frequency, Range, Data Rate, Crosstalk, Data integrity

For a customer I’m working on an industrial remote. To build a first quick prototype this MRK 1310 seemed a good fit and with the easy development environment there should be quick time to market.

Initially I had my doubts about the ability to use 434 MHz but I got a very neat email reply with a code example from Arduino that proofs to work. Using the LoRa library from sandeepmistry you can select any frequency in Hz (passed as a long). The datasheet of the SX1276 (inside the on-board muRata module) limits this to 3 bands: 137 - 175 MHz, 410 - 525 MHz and 862 - 1020 MHz.

Library API: arduino-LoRa/API.md at master · sandeepmistry/arduino-LoRa · GitHub
Can be installed in the Arduino IDE → Tools → Manage Libaries… search for LoRa and find the library from sandeepmistry
SX1276 Datasheet: https://github.com/emauriciorg/lora_modules/raw/master/doc/sx1276-1278113.pdf

After crunching trough the datasheet and API and playing around with some parameters I started sending some packages 10 times per second at 10 dBm (10 mW) at 869.4 MHz using the W3907XXXX antenna from Pulse. I don’t have a good antenna for 434 MHz at the moment. I have the sending board laying in my office on the 2nd floor, on a glass table and USB powered. The receiver board attached to my laptop where I can see messages coming in the terminal of around 64 bytes long.

Then I started walking.

300 m away the messages finally stopped coming! Sometimes behind some houses it also dropped, but a hill in the line of sight didn’t matter. The boundary is very clear, only a few meters of “no mans land” in which I receive gibberish (CRC is off) and after that no messages are detected at all, until walking in range again. I’m amazed!

The only thing I’m struggling with now is that I receive double packets, missing packets and packets the receiver sends himself. This happens independent of the signal strength. Also with shorter packages. Here’s a snippet:

19:29:14.940 -> Received packet 'Transmitter_Transmitter_Transmitter_369' with RSSI -40
19:29:15.042 -> Received packet 'Transmitter_Transmitter_Transmitter_370' with RSSI -41
19:29:15.042 -> Received packet 'Transmitter_Transmitter_Transmitter_370' with RSSI -41
19:29:15.146 -> Received packet 'Transmitter_Transmitter_Transmitter_371' with RSSI -41
19:29:15.146 -> Received packet 'Transmitter_Transmitter_Transmitter_371' with RSSI -41
19:29:15.218 -> Received packet 'Transmitter_Transmitter_Transmitter_372' with RSSI -40
19:29:15.328 -> Received packet 'Transmitter_Transmitter_Transmitter_373' with RSSI -41
19:29:15.361 -> Received packet 'Receiver_62_Transmitter_Transmitter_373' with RSSI -41
19:29:15.361 -> Received packet 'Receiver_62_Transmitter_Transmitter_373' with RSSI -41
19:29:15.501 -> Received packet 'Transmitter_Transmitter_Transmitter_375' with RSSI -40
19:29:15.603 -> Received packet 'Transmitter_Transmitter_Transmitter_376' with RSSI -40
19:29:15.711 -> Received packet 'Transmitter_Transmitter_Transmitter_377' with RSSI -41
19:29:15.711 -> Received packet 'Transmitter_Transmitter_Transmitter_377' with RSSI -41
19:29:15.778 -> Received packet 'Transmitter_Transmitter_Transmitter_378' with RSSI -41
19:29:15.988 -> Received packet 'Transmitter_Transmitter_Transmitter_380' with RSSI -40
19:29:16.054 -> Received packet 'Transmitter_Transmitter_Transmitter_381' with RSSI -39
19:29:16.091 -> Received packet 'Transmitter_Transmitter_Transmitter_381' with RSSI -39
19:29:16.164 -> Received packet 'Transmitter_Transmitter_Transmitter_382' with RSSI -38
19:29:16.269 -> Received packet 'Transmitter_Transmitter_Transmitter_383' with RSSI -39
19:29:16.442 -> Received packet 'Transmitter_Transmitter_Transmitter_385' with RSSI -39
19:29:16.543 -> Received packet 'Transmitter_Transmitter_Transmitter_386' with RSSI -39
19:29:16.543 -> Received packet 'Transmitter_Transmitter_Transmitter_386' with RSSI -39
19:29:16.650 -> Received packet 'Transmitter_Transmitter_Transmitter_387' with RSSI -40
19:29:16.650 -> Received packet 'Transmitter_Transmitter_Transmitter_387' with RSSI -40
19:29:16.720 -> Received packet 'Transmitter_Transmitter_Transmitter_388' with RSSI -41
19:29:16.821 -> Received packet 'Transmitter_Transmitter_Transmitter_389' with RSSI -39
19:29:16.854 -> Received packet 'Receiver_65_Transmitter_Transmitter_389' with RSSI -39
19:29:16.995 -> Received packet 'Transmitter_Transmitter_Transmitter_391' with RSSI -40

I’m wondering if something is going wrong in the FIFO buffer. Does anyone have ideas?

It ended up having something to do with the Serial communication. Increasing the Baud Rate solved the problem. Only sometimes I still got messages I sent, but they can be easily filtered out using addressing.