UGV با Bluetooth چیست؟ (برای مبتدی)
UGV (Unmanned Ground Vehicle) یک وسیله نقلیه زمینی بدون راننده است. در این پروژه ما یک UGV 4WD (چهارچرخ محرک) میسازیم که با Bluetooth Classic از گوشی Android کنترل میشود.
ESP32 دارای Bluetooth 4.2 (Classic + BLE) داخلی است و نیاز به ماژول HC-05 ندارد. با اپلیکیشن رایگان Dabble یا BlueControl، یک Joystick مجازی روی گوشی ایجاد میشود که مختصات X,Y آن از طریق Bluetooth به ESP32 ارسال میشود.
L298N یک درایور موتور H-Bridge است که امکان کنترل دو موتور DC را با PWM فراهم میکند — سرعت و جهت هر دو موتور به صورت مستقل قابل تنظیم است.
محصولی که میسازید
یک UGV 4WD که با Joystick گوشی Android از طریق Bluetooth با برد ۱۰ متر کنترل میشود.
- زمان ساخت: ۴ تا ۶ ساعت
- هزینه: ۸۰۰ هزار تا ۱.۵ میلیون تومان
- برد کنترل: ۱۰-۳۰ متر Bluetooth
قطعات لازم (BOM)
| قطعه | نقش |
|---|---|
| ESP32 DevKit V1 | کنترلر + BT |
| شاسی 4WD Smart Robot Car | بدنه + ۴ موتور + چرخ |
| L298N Motor Driver | کنترل ۲ جفت موتور |
| باتری 7.4V LiPo یا ۶×AA | تغذیه |
کد ESP32 — Bluetooth Joystick Control
#include "BluetoothSerial.h"
BluetoothSerial SerialBT;
// پینهای L298N:
const int L_FWD=26, L_BWD=27, L_PWM=14;
const int R_FWD=25, R_BWD=33, R_PWM=32;
const int BASE = 180; // سرعت پایه
void setMotors(int left, int right) {
left = constrain(left, -255, 255);
right = constrain(right, -255, 255);
digitalWrite(L_FWD, left > 0); digitalWrite(L_BWD, left < 0);
digitalWrite(R_FWD, right > 0); digitalWrite(R_BWD, right < 0);
ledcWrite(0, abs(left)); // PWM channel 0 → L_PWM
ledcWrite(1, abs(right)); // PWM channel 1 → R_PWM
}
void setup() {
Serial.begin(115200);
SerialBT.begin("UGV_ESP32");
int pwmPins[] = {L_FWD,L_BWD,R_FWD,R_BWD};
for(int p : pwmPins) pinMode(p, OUTPUT);
ledcSetup(0, 1000, 8); ledcAttachPin(L_PWM, 0);
ledcSetup(1, 1000, 8); ledcAttachPin(R_PWM, 1);
}
void loop() {
if(SerialBT.available()) {
// فرمت Dabble: F(forward), B(back), L(left), R(right), S(stop)
char c = SerialBT.read();
Serial.println(c);
if(c == 'F') setMotors(BASE, BASE);
else if(c == 'B') setMotors(-BASE, -BASE);
else if(c == 'L') setMotors(-BASE/2, BASE);
else if(c == 'R') setMotors(BASE, -BASE/2);
else if(c == 'S') setMotors(0, 0);
}
}
چکلیست تست
| تست | نتیجه |
|---|---|
| گوشی در BT Settings "UGV_ESP32" را میبیند؟ | بله |
| Forward → هر ۴ چرخ به جلو؟ | بله — اگر نه، جهت موتور را عوض کنید |
| Left/Right → میچرخد؟ | بله |
| Stop → میایستد؟ | بله |