Skip to content
E

LoRa

Interfacing RFM95W LoRa with ESP32

What is the RFM95W?

A long-range LoRa transceiver enabling kilometer-scale, low-power wireless links for remote sensor and IoT networks. The RFM95W is built around the same Semtech SX1276 LoRa chip used across the popular RFM9x module family, packaged with a shielded metal can and matching antenna circuitry for reliable performance — it's a common choice for LoRaWAN-based sensor nodes, The Things Network deployments, and any project needing long-range, low-bandwidth wireless data links well beyond Wi-Fi or Bluetooth range.

Specifications

ChipsetSemtech SX1276 LoRa transceiver (also branded HopeRF RFM95W)
Frequency band868MHz (EU) or 915MHz (US) variants — check the specific part number for your region
Operating voltage1.8V–3.7V DC (3.3V typical — NOT 5V tolerant)
Operating current~10-12 mA RX, up to ~120 mA TX at maximum +20dBm output power
Transmit powerUp to +20 dBm (100mW), software-configurable
RangeSeveral kilometers line-of-sight, 10+ km reported in favorable rural/open conditions
ModulationLoRa chirp spread spectrum with configurable spreading factor, bandwidth, and coding rate for range/data-rate tradeoffs
Protocol supportCompatible with LoRaWAN stacks (e.g. for The Things Network) or simple point-to-point LoRa links
InterfaceSPI, plus DIO interrupt pins for TX-done/RX-ready signaling

RFM95W Pinout

PinNameDescription
13.3VPower, 3.3V DC only
2GNDGround
3MOSISPI data in
4MISOSPI data out
5SCKSPI clock
6NSS (CS)SPI chip select, active LOW
7RESETActive-LOW module reset
8DIO0-DIO5Configurable interrupt pins; DIO0 is most commonly wired for TX-done/RX-ready signaling in LoRa libraries
9ANTAntenna connection — requires a properly tuned antenna for the module's frequency band

Confirm you're buying the correct frequency variant (868MHz vs 915MHz) for your region's ISM band regulations before wiring up a project — the two are not interchangeable. Like the RA-02, this module is 3.3V-only SPI and needs a level shifter when paired with 5V boards, and an antenna must always be connected before transmitting to avoid damaging the power amplifier.

Setting Up RFM95W with ESP32

Library

RadioHead by Mike McCauley

Arduino IDE → Tools → Manage Libraries → search "RadioHead"

Library guide

Wiring

Component pinESP32 pinNote
3.3V3.3V3.3V only -- this module is not 5V tolerant
GNDGND
MOSIGPIO23 (VSPI MOSI)
MISOGPIO19 (VSPI MISO)
SCKGPIO18 (VSPI SCK)
NSS (CS)GPIO5
RESETGPIO14
DIO0GPIO26Required by RadioHead for TX/RX interrupt signaling
ANTAntenna tuned to your module's bandNever power up without an antenna attached -- it can damage the PA

Example code

C++

Set setFrequency() to match your module's specific band (433/868/915MHz) and local radio regulations -- transmitting on the wrong band is both illegal and won't be heard by a receiver expecting a different frequency.

Related Guides & Projects