📱 ماژول بلوتوث HC-05 (HC-05 Bluetooth Module)
| اسم انگلیسی | HC-05 Bluetooth Module |
|---|---|
| در ووکوی (Wokwi) | نسخهی آمادهای سراغ نداریم |
| دسته | 📦 ماژولها |
| در شبیهساز فارسی | مود ساده (بدون کد) و مود آردوینو · رایگان |
ماژول بلوتوث HC-05 (HC-05 Bluetooth Module) یک درگاه سریال بیسیم است: از یک طرف با دو سیم TXD و RXD به آردوینو وصل میشود و از طرف دیگر با گوشی اندرویدی یا کامپیوتر از راه بلوتوث کلاسیک جفت میشود. هر بایتی که از یک برنامهی ترمینال بلوتوث در گوشی بفرستی، در آردوینو با read() خوانده میشود و برعکس. ماشین کنترلی، روشن کردن چراغ با گوشی و فرستادن عدد سنسور به گوشی کاربردهای رایجش هستند.
HC-05 در ووکوی (Wokwi)
تا جایی که میدانیم ووکوی ماژول آمادهی HC-05 ندارد و بلوتوث کلاسیک را شبیهسازی نمیکند. ولی از دید آردوینو، HC-05 فقط یک درگاه سریال است؛ پس بهترین جایگزین در ووکوی خود سریال مانیتور است. کد پایین فرمان را از هر دو مسیر میگیرد: در ووکوی حرفها را در سریال مانیتور تایپ میکنی و روی برد واقعی همان حرفها از گوشی میرسند؛ بدون یک خط تغییر.
در تینکرکد فارسی خود HC-05 هست و پنل «خواص»ش یک گوشی مجازی برای فرستادن فرمان دارد؛ باز کردن و خواندن مثالها رایگان است، ولی HC-05 جزو ماژولهای حرفهای است و اجرایش اشتراک Plus میخواهد. پروژهی آماده: کنترل LED با بلوتوث HC-05.
سیمکشی با آردوینو
| پایهی HC-05 | وصل به |
|---|---|
| VCC | 5V (ماژولهای روی برد واسط، رگولاتور ۳٫۳ ولتی دارند) |
| GND | GND |
| TXD | پین 10 (RX در SoftwareSerial) |
| RXD | پین 11 از راه مقسم: ۱ کیلواهم از پین 11 به RXD و ۲ کیلواهم از RXD به GND |
| STATE و EN | آزاد (EN فقط برای حالت دستور AT) |
| LED | پین 8 ← مقاومت ۲۲۰ اهم ← آند، کاتد به GND |
«فرستنده»ی یکی به «گیرنده»ی دیگری میرود؛ برای همین سیمها ضربدریاند. مقسم ۱k و ۲k ولتاژ ۵ ولتی پین آردوینو را به حدود ۳٫۳ ولت میرساند که ورودی RXD ماژول میپذیرد.
کد نمونه
// HC-05 on pins 10/11. The same commands work from the phone
// (Bluetooth) and from the Serial Monitor (handy in Wokwi).
#include <SoftwareSerial.h>
SoftwareSerial bt(10, 11); // RX, TX (module TXD -> 10, module RXD <- 11)
const int LED = 8;
void reply(const char *text) {
bt.println(text);
Serial.println(text);
}
void handle(char c) {
if (c == '1') {
digitalWrite(LED, HIGH);
reply("LED on");
} else if (c == '0') {
digitalWrite(LED, LOW);
reply("LED off");
} else if (c == '?') {
reply(digitalRead(LED) ? "state: on" : "state: off");
}
}
void setup() {
pinMode(LED, OUTPUT);
Serial.begin(9600);
bt.begin(9600); // HC-05 default speed in data mode
Serial.println("send 1, 0 or ?");
}
void loop() {
if (bt.available()) handle(bt.read());
if (Serial.available()) handle(Serial.read());
}
تابع handle نمیداند حرف از کجا آمده و لازم هم نیست بداند. این الگو را برای هر ماژول سریال دیگری هم به کار ببر: منطق را جدا بنویس و اول با سریال مانیتور تستش کن.
اشتباههای رایج
- TX به TX: اگر TXD ماژول را به پین 11 (TX برنامه) بزنی، هیچ حرفی نمیرسد.
- آیفون: HC-05 با iOS جفت نمیشود؛ با اندروید یا کامپیوتر تست کن.
- سرعت اشتباه: در حالت داده معمولاً 9600 است، ولی حالت دستور AT روی 38400 کار میکند.
- ماژول روی پایههای 0 و 1: این دو پایه مسیر USB هم هستند و ماژول وصلشده جلوی آپلود برنامه را میگیرد.
آموزشهای مرتبط
- سریال مانیتور و نمودار سریال آردوینو
- ESP32 یا آردوینو اونو؟ (ESP32 بلوتوث داخلی دارد)
- LED در ووکوی
- درس کنترل با بلوتوث HC-05
- UART و HC-05 با میکروپایتون روی پیکو
سؤالهای رایج
HC-05 با آیفون کار میکند؟
نه. HC-05 از بلوتوث کلاسیک با پروفایل سریال (SPP) استفاده میکند که iOS برای دستگاههای عمومی پشتیبانی نمیکند. با گوشی اندرویدی یا کامپیوتر کار میکند؛ برای آیفون ماژول بلوتوث کممصرف (BLE) مثل HM-10 لازم است.
رمز جفت شدن HC-05 چیست؟
معمولاً 1234 و در بعضی ماژولها 0000. اسم پیشفرضش هم معمولاً HC-05 است و میشود با دستورهای AT عوضش کرد.
چطور برنامهی HC-05 را در ووکوی تست کنم؟
ووکوی ماژول HC-05 ندارد، ولی چون HC-05 فقط یک درگاه سریال است، کدت را طوری بنویس که فرمان را از Serial هم بخواند. در ووکوی حرفها را در سریال مانیتور تایپ کن؛ روی برد واقعی همان فرمانها از گوشی میرسند.