/RadioLib

Universal wireless communication library for Arduino

Primary LanguageC++MIT LicenseMIT

RadioLib Build Status

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
  • AX.25 for modules: SX127x, RFM9x, SX126x, RF69, SX1231 and CC1101

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.