

The Adafruit Feather RP2040 RF95 LoRa Radio is a compact microcontroller board that combines the powerful RP2040 chip with an integrated LoRa RF95 radio module. This board is designed for long-range, low-power wireless communication, making it an excellent choice for Internet of Things (IoT) projects, remote sensing, and telemetry applications. Its small form factor and compatibility with the Feather ecosystem make it versatile and easy to integrate into a wide range of projects.








The Adafruit Feather RP2040 RF95 LoRa Radio has a standard Feather pinout. Below is a table describing the key pins:
| Pin | Function |
|---|---|
| USB | USB-C connector for power and programming |
| BAT | Battery input for 3.7V LiPo battery |
| 3V3 | 3.3V regulated output |
| GND | Ground |
| A0 - A5 | Analog input pins (can also be used as digital GPIO) |
| D0 - D13 | Digital GPIO pins (some support PWM and special functions) |
| SCL, SDA | I2C communication pins |
| SCK, MOSI, MISO | SPI communication pins |
| RX, TX | UART communication pins |
| RST | Reset pin |
| ANT | Antenna connection for the LoRa module |
| IRQ | Interrupt pin for the LoRa module |
| CS | Chip Select pin for the LoRa module |
Powering the Board:
Connecting the Antenna:
Programming the Board:
Interfacing with Peripherals:
Below is an example of how to send a simple LoRa message using the Adafruit Feather RP2040 RF95 LoRa Radio:
#include <SPI.h>
#include <RH_RF95.h>
// Define LoRa module pins
#define RFM95_CS 10 // Chip Select pin
#define RFM95_RST 9 // Reset pin
#define RFM95_INT 2 // Interrupt pin
// Frequency for LoRa communication (adjust based on your region)
#define RF95_FREQ 915.0
// Create an instance of the RF95 driver
RH_RF95 rf95(RFM95_CS, RFM95_INT);
void setup() {
// Initialize serial communication
Serial.begin(9600);
while (!Serial);
// Initialize LoRa module
Serial.println("Initializing LoRa 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("LoRa module initialization failed!");
while (1);
}
// Set frequency
if (!rf95.setFrequency(RF95_FREQ)) {
Serial.println("Failed to set frequency!");
while (1);
}
Serial.println("LoRa module initialized successfully.");
}
void loop() {
// Send a test message
Serial.println("Sending message...");
const char *message = "Hello, LoRa!";
rf95.send((uint8_t *)message, strlen(message));
rf95.waitPacketSent();
Serial.println("Message sent!");
// Wait before sending the next message
delay(5000);
}
LoRa Module Not Initializing:
No Communication Between Devices:
Board Not Recognized by Computer:
Low Signal Strength:
Can I use this board with CircuitPython?
Yes, the Adafruit Feather RP2040 RF95 LoRa Radio is fully compatible with CircuitPython.
What is the maximum range of the LoRa module?
The range can reach up to 2 km in ideal conditions (line of sight).
Can I power the board with a LiPo battery?
Yes, the board has a JST connector for a 3.7V LiPo battery.
Is the board compatible with other FeatherWing add-ons?
Yes, the board follows the Feather standard and is compatible with most FeatherWings.