

The HC-12 is a wireless serial communication module that operates in the 433 MHz frequency range, enabling long-range data transmission of up to 1,000 meters in open space. It is designed for ease of use with a simple UART (Universal Asynchronous Receiver-Transmitter) interface, making it an excellent choice for applications requiring reliable wireless communication.








The HC-12 module is highly versatile, with adjustable transmission power and multiple communication modes. Below are its key technical details:
| Parameter | Specification |
|---|---|
| Frequency Range | 433.4 MHz to 473.0 MHz |
| Modulation Type | GFSK (Gaussian Frequency Shift Keying) |
| Communication Range | Up to 1,000 meters (open space) |
| Supply Voltage | 3.2V to 5.5V |
| Operating Current | 16 mA (transmitting at 20 dBm) |
| Sleep Current | < 22 µA |
| Baud Rate | 1,200 to 115,200 bps (default: 9,600) |
| Transmission Power | Adjustable (1 mW to 100 mW) |
| Operating Temperature | -40°C to +85°C |
| Dimensions | 27.8 mm x 14.4 mm x 4 mm |
The HC-12 module has 4 main pins for operation. Below is the pinout and description:
| Pin Name | Pin Number | Description |
|---|---|---|
| VCC | 1 | Power supply input (3.2V to 5.5V) |
| GND | 2 | Ground |
| TXD | 3 | UART Transmit pin (connect to RX of MCU) |
| RXD | 4 | UART Receive pin (connect to TX of MCU) |
The HC-12 module is straightforward to use and can be integrated into a variety of circuits. Below are the steps and best practices for using the module:
AT+B19200AT+P8Below is an example of how to use the HC-12 with an Arduino UNO to send and receive data:
#include <SoftwareSerial.h>
// Define SoftwareSerial pins for HC-12
SoftwareSerial HC12(10, 11); // RX = Pin 10, TX = Pin 11
void setup() {
Serial.begin(9600); // Start Serial Monitor at 9600 bps
HC12.begin(9600); // Start HC-12 communication at 9600 bps
Serial.println("HC-12 Test");
}
void loop() {
// Check if data is available from HC-12
if (HC12.available()) {
String received = HC12.readString(); // Read data from HC-12
Serial.print("Received: ");
Serial.println(received); // Print received data to Serial Monitor
}
// Check if data is available from Serial Monitor
if (Serial.available()) {
String toSend = Serial.readString(); // Read data from Serial Monitor
HC12.print(toSend); // Send data to HC-12
}
}
No Communication Between Modules
AT+RX command to verify the current settings.Reduced Communication Range
AT+P command.Module Not Responding to AT Commands
AT and checking for an OK response.Interference with Other Devices
AT+C command to avoid conflicts.Q1: Can the HC-12 communicate with other 433 MHz devices?
A1: No, the HC-12 is designed to communicate only with other HC-12 modules due to its proprietary protocol.
Q2: How do I reset the HC-12 to factory settings?
A2: Send the AT+DEFAULT command to reset the module to its default configuration.
Q3: What is the maximum data rate of the HC-12?
A3: The HC-12 supports a maximum baud rate of 115,200 bps.
Q4: Can I use the HC-12 with a 3.3V microcontroller?
A4: Yes, the HC-12 is compatible with both 3.3V and 5V logic levels.
By following this documentation, you can effectively integrate the HC-12 module into your projects for reliable wireless communication.