

The RFM12B is a low-power, low-cost wireless transceiver module manufactured by HopeRF. It is designed for short-range communication and operates in the 433 MHz, 868 MHz, or 915 MHz ISM frequency bands. This module is highly versatile and supports both FSK (Frequency Shift Keying) and OOK (On-Off Keying) modulation schemes, making it suitable for a wide range of wireless applications.








The following table outlines the key technical details of the RFM12B module:
| Parameter | Value |
|---|---|
| Frequency Range | 433 MHz / 868 MHz / 915 MHz |
| Modulation | FSK, OOK |
| Supply Voltage | 2.2V to 3.8V |
| Operating Current | 23 mA (transmit), 3 mA (receive) |
| Sleep Current | < 1 µA |
| Data Rate | 0.6 kbps to 115.2 kbps |
| Output Power | -18 dBm to +13 dBm (programmable) |
| Sensitivity | -117 dBm (at 2.4 kbps) |
| Communication Interface | SPI |
| Operating Temperature | -40°C to +85°C |
| Dimensions | 16 mm x 16 mm x 3 mm |
The RFM12B module has a total of 8 pins. The table below describes each pin:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | GND | Ground connection |
| 2 | VDD | Power supply input (2.2V to 3.8V) |
| 3 | SDO | Serial Data Output (SPI interface) |
| 4 | SDI | Serial Data Input (SPI interface) |
| 5 | SCK | Serial Clock Input (SPI interface) |
| 6 | nSEL | Chip Select (active low) |
| 7 | nIRQ | Interrupt Request (active low, used to signal events like received data) |
| 8 | ANT | Antenna connection (connect to an external antenna for wireless communication) |
Below is an example of how to initialize and send data using the RFM12B module with the JeeLib library:
#include <JeeLib.h> // Include the JeeLib library for RFM12B
// Define the RFM12B network group and node ID
#define NETWORK_GROUP 212 // Network group (must match on all nodes)
#define NODE_ID 1 // Unique node ID for this device
void setup() {
Serial.begin(9600); // Initialize serial communication for debugging
rf12_initialize(NODE_ID, RF12_433MHZ, NETWORK_GROUP);
// Initialize RFM12B with node ID, frequency, and network group
Serial.println("RFM12B initialized");
}
void loop() {
const char *message = "Hello, RFM12B!";
rf12_sendNow(0, message, strlen(message));
// Send a message using RFM12B (0 = broadcast address)
Serial.println("Message sent: Hello, RFM12B!");
delay(1000); // Wait 1 second before sending the next message
}
NETWORK_GROUP and NODE_ID values to match your network configuration.No Communication Between Modules
Module Not Responding
Short Range or Poor Signal
Data Corruption
Q: Can the RFM12B communicate with other transceiver modules?
A: Yes, as long as the other modules support the same frequency, modulation scheme (FSK/OOK), and data rate.
Q: What is the maximum range of the RFM12B?
A: The range depends on factors like antenna design, output power, and environmental conditions. In open areas, it can achieve up to 300 meters.
Q: Can I use the RFM12B with a 5V microcontroller?
A: Yes, but you must use level shifters to convert the 5V logic levels to 3.3V to avoid damaging the module.
Q: How do I select the operating frequency?
A: The operating frequency is set via SPI commands during initialization. Refer to the module's datasheet for details.
By following this documentation, you can effectively integrate the RFM12B transceiver into your wireless communication projects.