adafruit / Adafruit_CircuitPython_RFM9x

CircuitPython module for the RFM95/6/7/8 LoRa wireless 433/915mhz packet radios.
MIT License
68 stars 45 forks source link

Implement "reliable Datagram mode" #42

Closed jerryneedell closed 4 years ago

jerryneedell commented 4 years ago

Implemented compatibility with the RadioHead library "Reliable DataGram" mode. see #34 . Received packets ar "ACKed" and Transmitted packets wait for ACK response.

It has been difficult to make this work reliably. Packets will still be missed occasionally but now they will be reported. There are attributes that can be "tweaked" to help

rfm9x.ack_delay -- set a delay before the ACK packet is sent - this is necessary when the receive unit an MCU communication to a Raspberry Pi . The MCU can send it's ACK packet before the Raspberry Pi has resumed "listening". The default setting is "None" but setting it to .1 seconds may be necessary. The Arduino RadioHead library does not allow for this "ack_delay" and it it may be difficult to get this to work, especially with a Raspberry Pi.

rfm9x.retries -- set the number of ack retries

All of the existing examples will still execute without change.

There are "breaking changes" for anyone that had been setting the RadioHead headers directly. There are now attributes for setting the header parameters and the rx_filter parameter for the receive function has been removed.

There are examples for using this mode in rfm9x_node1_ack.py and rfm9x_node2_ack.py

other new examples rfm9x_header.py -- receive packets and display the header and packet contents rfm9x_node1.py -- uses adresses without ACK rfm9x_node2.py -- companion to rfm9x_node1.py rfm9x_rpi_simpletest.py - no LED and set pins for RaspBerry Pi rfm9x_node1_bonnet.py -- similar to rfm9x_node1.py but for use with RPi and bonnet -- uses buttons to sent packets

the changes are very similar to https://github.com/adafruit/Adafruit_CircuitPython_RFM69/pull/24 and hopefully many lessons learned were applied

FoamyGuy commented 4 years ago

I've got a pair of RFM95 Featherwings ordered from Digikey on the way. I can test this PR with them once they arrive if it's helpful, hopefully within the next few days.

jerryneedell commented 4 years ago

I've got a pair of RFM95 Featherwings ordered from Digikey on the way. I can test this PR with them once they arrive if it's helpful, hopefully within the next few days.

Great! I’ll wait for your testing before merging. No rush.