

The Adafruit RFM96W LoRa Radio Transceiver Breakout - 433 MHz (RadioFruit) (Manufacturer Part ID: ADA3073) is a low-power, long-range radio transceiver module designed for wireless communication in IoT applications. Operating at 433 MHz, it features a high-sensitivity receiver and a low-power transmitter, making it ideal for battery-operated devices. This module leverages LoRa (Long Range) technology, enabling robust communication over long distances with minimal power consumption.








The following table outlines the key technical details of the Adafruit RFM96W LoRa Radio Transceiver Breakout:
| Parameter | Value |
|---|---|
| Operating Frequency | 433 MHz |
| Modulation Type | LoRa (Long Range) |
| Sensitivity | Down to -148 dBm |
| Transmit Power | Up to +20 dBm |
| Operating Voltage | 3.3V to 5V |
| Current Consumption | 10.8 mA (receive), 120 mA (transmit) |
| Communication Interface | SPI |
| Dimensions | 25.5 mm x 18 mm x 3 mm |
The Adafruit RFM96W breakout board has the following pinout:
| Pin Name | Pin Type | Description |
|---|---|---|
| GND | Power | Ground connection |
| VIN | Power | Power input (3.3V to 5V) |
| SCK | SPI Clock | SPI clock input |
| MISO | SPI Data Out | SPI data output (Master In, Slave Out) |
| MOSI | SPI Data In | SPI data input (Master Out, Slave In) |
| CS | Chip Select | SPI chip select (active low) |
| RST | Reset | Hardware reset pin |
| DIO0 | Digital I/O | General-purpose digital I/O pin, often used for interrupt signaling |
| ANT | Antenna | Connection for external antenna (required for proper operation) |
Below is an example of how to use the RFM96W with an Arduino UNO. This code uses the Adafruit RadioHead library, which must be installed via the Arduino Library Manager.
#include <SPI.h>
#include <RH_RF95.h>
// Define RFM96W pins
#define RFM95_CS 10 // Chip Select pin
#define RFM95_RST 9 // Reset pin
#define RFM95_INT 2 // Interrupt pin (DIO0)
// Define LoRa frequency
#define RF95_FREQ 433.0 // Frequency in MHz
// Create an instance of the RF95 driver
RH_RF95 rf95(RFM95_CS, RFM95_INT);
void setup() {
// Initialize serial communication
Serial.begin(9600);
while (!Serial);
Serial.println("Initializing RFM96W...");
// Initialize the RFM96W module
pinMode(RFM95_RST, OUTPUT);
digitalWrite(RFM95_RST, HIGH);
delay(10);
digitalWrite(RFM95_RST, LOW);
delay(10);
digitalWrite(RFM95_RST, HIGH);
delay(10);
if (!rf95.init()) {
Serial.println("RFM96W initialization failed!");
while (1);
}
Serial.println("RFM96W initialized successfully!");
// Set the frequency
if (!rf95.setFrequency(RF95_FREQ)) {
Serial.println("Failed to set frequency!");
while (1);
}
Serial.print("Frequency set to: ");
Serial.print(RF95_FREQ);
Serial.println(" MHz");
// Set transmit power (max: 23 dBm)
rf95.setTxPower(20, false);
}
void loop() {
// Transmit a message
Serial.println("Sending message...");
const char *message = "Hello, LoRa!";
rf95.send((uint8_t *)message, strlen(message));
rf95.waitPacketSent();
Serial.println("Message sent!");
// Wait for a response
if (rf95.waitAvailableTimeout(3000)) {
uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];
uint8_t len = sizeof(buf);
if (rf95.recv(buf, &len)) {
Serial.print("Received response: ");
Serial.println((char *)buf);
} else {
Serial.println("Receive failed!");
}
} else {
Serial.println("No response received.");
}
delay(5000); // Wait 5 seconds before sending the next message
}
No Communication with the Module:
Poor Range or Signal Quality:
Module Not Initializing:
High Power Consumption:
Q: Can I use this module with a 5V microcontroller?
A: Yes, the module is compatible with 5V logic levels, but ensure the VIN pin is supplied with 5V.
Q: What is the maximum range of the RFM96W?
A: The range depends on the environment and antenna, but it can reach up to 10 km in open areas.
Q: Do I need an external library to use this module?
A: Yes, the Adafruit RadioHead library is recommended for easy integration with Arduino.
Q: Can I use multiple RFM96W modules in the same network?
A: Yes, you can configure multiple modules with unique addresses for communication in the same network.