RadioHead
by Mike McCauley
RadioHead is a packet radio driver library supporting a wide range of transceiver chips — NRF24L01, RFM95/96/98 (LoRa), RFM69, and others — behind a common driver + manager pattern. The `RH_XXX` driver class talks to the specific radio chip, while an optional `RHReliableDatagram` manager layer adds addressing, acknowledgements, and automatic retries on top of the raw driver. The catch that trips people up is licensing: RadioHead is dual-licensed GPL / commercial, meaning it's free for open-source and personal projects but requires a paid commercial license for closed-source commercial products — worth checking before basing a product on it.
Installation
Arduino IDE — Library Manager
Sketch → Include Library → Manage Libraries → search RadioHead
PlatformIO
lib_deps = airspayce/RadioHeadSupported boards
Examples
Send a packet over a LoRa RFM95 module
Same driver pattern (init + send) applies across NRF24L01, RFM69, and other supported radio chips.
#include <RH_RF95.h>
RH_RF95 rf95(10, 2); // CS, INT pins
void setup() {
rf95.init();
rf95.setFrequency(915.0);
}
void loop() {
const char msg[] = "Hello from SolderHub";
rf95.send((uint8_t*)msg, sizeof(msg));
rf95.waitPacketSent();
delay(1000);
}