![]() My receiver was failing to receive after a random amount of time (2 - 60 seconds). I discovered some power supply issues (DC-DC converter related) that turned out to be another cause of the same problem but only on some boards. The reset procedure for most of the boards that RadioLib can drive changes the pin mode of the reset line to an input after reset, effectively tri-stating the output. I had seen this but dismissed it after checking that the SX126x has a pullup on NRST meaning this was not an issue. The receiver I have produced uses a level converter to translate the 5v0 signals to 3v3. The level converters are not themselves pulled up or down, which means when a pin is connected in a high-impedance input state it will float around possibly randomly. This can cause spurious resets on my board, and possibly others. I remembered the reset procedure when I realised I could reproduce the problem by rubbing the board on my shirt, probably causing some ESD to trigger a change on the reset line. This PR simply removes the lines that change the pinmode to input after reset leaving it as an output which is hard-driven and the safest way. I assume that the current behaviour was chosen to decrease the chance of a conflict if used incorrectly. |
||
---|---|---|
.github/ISSUE_TEMPLATE | ||
examples | ||
extras | ||
src | ||
.gitignore | ||
.travis.yml | ||
CONTRIBUTING.md | ||
Doxyfile | ||
keywords.txt | ||
library.properties | ||
license.txt | ||
README.md |
RadioLib 
One radio library to rule them all!
Universal wireless communication library for Arduino
See the Wiki for further information. See the GitHub Pages for detailed and up-to-date API reference.
RadioLib allows its users to integrate all sorts of different wireless communication modules into a single consistent system. Want to add a Bluetooth interface to your ZigBee network? Sure thing! Need to connect LoRa network to the Internet with a GSM module? RadioLib has got your back!
RadioLib was originally created as a driver for RadioShield, but it can be used to control as many different wireless modules as you like - or at least as many as your Arduino can handle!
Supported modules:
- CC1101 FSK radio module
- ESP8266 WiFi module
- HC05 Bluetooth module
- JDY08 BLE module
- nRF24L01 2.4 GHz module
- RF69 FSK/OOK radio module
- RFM9x series LoRa modules (RFM95, RM96, RFM97, RFM98)
- SX127x series LoRa modules (SX1272, SX1273, SX1276, SX1277, SX1278, SX1279)
- SX126x series LoRa modules (SX1261, SX1262, SX1268)
- SX1231 FSK/OOK radio module
- XBee modules (S2B)
Supported protocols:
- MQTT for modules: ESP8266
- HTTP for modules: ESP8266
- RTTY for modules: SX127x, RFM9x, SX126x, RF69, SX1231, CC1101 and nRF24L01
- Morse Code for modules: SX127x, RFM9x, SX126x, RF69, SX1231, CC1101 and nRF24L01
Supported platforms:
- AVR - tested with hardware on Uno, Mega and Leonardo
- ESP8266 - tested with hardware on NodeMCU and Wemos D1
- ESP32 - tested with hardware on ESP-WROOM-32
- STM32 - tested with hardware on Nucleo L452RE-P
- SAMD - Arduino Zero, Arduino MKR boards, M0 Pro etc.
- SAM - Arduino Due
- nRF52 - Adafruit Bluefruit Feather etc.
- Intel Curie - Arduino 101
- megaAVR - Arduino Uno WiFi Rev.2 etc.
- Apollo3 - SparkFun Artemis Redboard etc.
The list above is by no means exhaustive. Most of RadioLib code is independent of the used platform, so as long as your board is running some Arduino-compatible core, RadioLib should work. Compilation of all examples is tested for all platoforms in bold on each git push. Platforms in italic are not tested on each push, but do compile and should be working.
In development:
- SIM800C GSM module
- LoRaWAN protocol for SX127x, RFM9x and SX126x modules
- and more!
Frequently Asked Questions
Where should I start?
First of all, take a look at the examples and the Wiki - especially the Basics page. There's a lot of useful information over there. Also, you should check out RadioShield - open source Arduino shield that will allow you to easily connect any two wireless modules supported by RadioLib!
Help, my module isn't working!
The fastest way to get help is by creating an issue using the appropriate template. It is also highly recommended to try running the examples first - their functionality is tested from time to time and they should work. Finally, RadioLib is still under development, which means that sometimes, backwards-incompatible changes might be introduced. Though these are kept at minimum, sometimes it is unavoidable. You can check the release changelog to find out if there's been such a major change recently.
RadioLib doesn't support my module! What should I do?
Start by creating new issue (if it doesn't exist yet). If you have some experience with Arduino and C/C++ in general, you can try to add the support yourself! Use the template files in /extras/
folder to get started. This is by far the fastest way to implement new modules into RadioLib, since I can't be working on everything all the time. If you don't trust your programming skills enough to have a go at it yourself, don't worry. I will try to implement all requested modules, but it will take me a while.