

The HC-12 is a versatile, long-range wireless communication module based on the SI4463 RF chip. It operates in the 433 MHz frequency band and supports transparent serial communication, making it ideal for applications requiring wireless data transmission. The module is widely used in IoT projects, remote control systems, telemetry, and wireless sensor networks due to its ease of use and reliable performance.
Common applications include:








The HC-12 module is designed for low-power, long-range communication. Below are its key technical details:
| Parameter | Specification |
|---|---|
| Operating Voltage | 3.2V to 5.5V |
| Operating Current | 16 mA (transmitting), 3.5 mA (idle) |
| Frequency Range | 433.4 MHz to 473.0 MHz |
| Communication Range | Up to 1,000 meters (open space) |
| Modulation | GFSK |
| Baud Rate | 1,200 to 115,200 bps |
| Transmit Power | Up to 20 dBm (100 mW) |
| Antenna Interface | IPEX or soldered wire antenna |
| Dimensions | 27.8 mm x 14.4 mm x 4 mm |
The HC-12 module has a total of 4 pins. Below is the pinout and description:
| Pin | Name | Description |
|---|---|---|
| 1 | VCC | Power supply input (3.2V to 5.5V). Connect to a regulated power source. |
| 2 | GND | Ground. Connect to the ground of the circuit. |
| 3 | RXD | UART Receive pin. Connect to the TX pin of the microcontroller. |
| 4 | TXD | UART Transmit pin. Connect to the RX pin of the microcontroller. |
| 5 | SET | Mode selection pin. Pull LOW to enter configuration mode; HIGH for normal mode. |
Below is an example of how to connect and use the HC-12 module with an Arduino UNO:
| HC-12 Pin | Arduino UNO Pin |
|---|---|
| VCC | 5V |
| GND | GND |
| RXD | D3 (via voltage divider if using 5V logic) |
| TXD | D2 |
| SET | D4 |
#include <SoftwareSerial.h>
// Define HC-12 pins for SoftwareSerial
SoftwareSerial HC12(2, 3); // HC-12 TX Pin to Arduino D2, RX Pin to D3
void setup() {
Serial.begin(9600); // Start serial communication with PC
HC12.begin(9600); // Start serial communication with HC-12
pinMode(4, OUTPUT); // Set D4 as output for SET pin
digitalWrite(4, HIGH); // Set HC-12 to normal mode
Serial.println("HC-12 Ready");
}
void loop() {
// Check if data is received from the PC
if (Serial.available()) {
String data = Serial.readString(); // Read data from Serial Monitor
HC12.println(data); // Send data to HC-12
}
// Check if data is received from HC-12
if (HC12.available()) {
String data = HC12.readString(); // Read data from HC-12
Serial.println(data); // Send data to Serial Monitor
}
}
No Communication Between Modules
Short Communication Range
Module Not Responding to AT Commands
Interference with Other Devices
AT+Cxxx command to avoid conflicts.Q: Can the HC-12 communicate with other 433 MHz devices?
A: No, the HC-12 uses a proprietary protocol and cannot directly communicate with other 433 MHz devices unless they use the same protocol.
Q: How do I reset the HC-12 to factory settings?
A: Pull the SET pin LOW and send the AT+DEFAULT command via UART.
Q: What is the maximum number of HC-12 modules that can communicate simultaneously?
A: Multiple modules can communicate as long as they are on the same channel, but only one module should transmit at a time to avoid collisions.