HC-12 — ارزانترین راه برای رادیو ۴۳۳MHz
HC-12 یک ماژول رادیویی ۴۳۳MHz است که درون خودش یک میکروکنترلر و تراشه Si4463 دارد. واسط آن UART ساده است — هر دادهای که وارد TX آردوینو کنی، از طریق رادیو به طرف دیگر میرسد — دقیقاً مثل Serial Wire اما بیسیم تا ۵۰۰m. قیمت: ~۶۰K تومان!
در مقایسه با LoRa: HC-12 سادهتر اما برد کمتر (۵۰۰m vs ۲km). برای UGV در محوطه بسته یا فاصله کوتاه ارزانترین و سادهترین انتخاب است.
🛠️ کارت پروژه
| قیمت جفت | ~۱۲۰K تومان (۲ ماژول HC-12) |
| برد | ~۵۰۰m FT-023 mode / ~۱km FU-4 mode |
| اتصال | UART ساده — کاملاً plug-and-play |
اتصال HC-12 به Arduino
| HC-12 | Arduino |
|---|---|
| VCC | 5V (پشتیبانی از 3.2–5.5V) |
| GND | GND |
| TX | D4 (SoftwareSerial RX) |
| RX | D3 (SoftwareSerial TX) |
| SET (پین تنظیم) | D2 (LOW=AT Mode, HIGH/Float=Data Mode) |
کد کامل — فرستنده و گیرنده
#include <SoftwareSerial.h>
SoftwareSerial hc12(4, 3); // RX=D4, TX=D3
// ===== فرستنده (دسته کنترل) =====
void transmitter_loop(){
int thr = map(analogRead(A0),0,1023,-100,100);
int str = map(analogRead(A1),0,1023,-100,100);
hc12.print(thr); hc12.print(','); hc12.println(str);
delay(50);
}
// ===== گیرنده (روی UGV) =====
void receiver_loop(){
if(hc12.available()){
String data = hc12.readStringUntil('\n');
int comma = data.indexOf(',');
int thr = data.substring(0,comma).toInt();
int str = data.substring(comma+1).toInt();
applyDrive(thr, str);
}
}
// ===== تنظیم AT Mode =====
void setHC12(String cmd){
digitalWrite(2, LOW); // SET پایین
delay(100);
hc12.print(cmd);
delay(100);
digitalWrite(2, HIGH); // برگشت به Data Mode
}
// مثال: setHC12("AT+B9600"); // بودریت ۹۶۰۰
// مثال: setHC12("AT+P8"); // توان ۲۰dBm (100mW)
جدول مقایسه HC-12 vs LoRa SX1278
| ویژگی | HC-12 | SX1278 LoRa |
|---|---|---|
| قیمت | ~۶۰K | ~۱۵۰K |
| برد | ~۵۰۰m–1km | ~۲–۱۵km |
| پیچیدگی کد | UART ساده | SPI + کتابخانه |
| مصرف توان | ~۱۵–۱۰۰mA | ~۱–۱۰mA receive |
| مناسب برای | محوطه کوچک، سریع | فضای باز، برد بلند |