صور وفيديو المشروع
نبذة عن المشروع
يحوّل تطبيق الهاتف الكلام إلى نص ويرسله عبر البلوتوث، ويقارن الأردوينو النص مع أوامر محفوظة (تقدم، توقف، يمين، يسار، دوران) وينفّذها. يمكن إضافة أوامر عربية بسهولة في مصفوفة الأوامر.
المكونات المطلوبة
- 1لوحة Arduino UNO ابحث في المتجر
- 1وحدة بلوتوث HC-06 ابحث في المتجر
- 1درايفر محركات L298N ابحث في المتجر
- 2محرك DC مع عجلات ابحث في المتجر
- 1حساس مسافة HC-SR04 (أمان) ابحث في المتجر
- 1بطارية 7.4V ابحث في المتجر
كود Arduino IDE
#include <SoftwareSerial.h>
SoftwareSerial bt(2, 3);
#define IN1 4
#define IN2 5
#define IN3 6
#define IN4 7
#define TRIG 11
#define ECHO 12
String cmd = "";
void drive(bool a1, bool a2, bool b1, bool b2) {
digitalWrite(IN1,a1); digitalWrite(IN2,a2);
digitalWrite(IN3,b1); digitalWrite(IN4,b2);
}
long distanceCm() {
digitalWrite(TRIG, LOW); delayMicroseconds(2);
digitalWrite(TRIG, HIGH); delayMicroseconds(10);
digitalWrite(TRIG, LOW);
long d = pulseIn(ECHO, HIGH, 30000);
return d == 0 ? 400 : d * 0.034 / 2;
}
void setup() {
pinMode(IN1,OUTPUT); pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT); pinMode(IN4,OUTPUT);
pinMode(TRIG,OUTPUT); pinMode(ECHO,INPUT);
bt.begin(9600);
Serial.begin(9600);
}
void loop() {
while (bt.available()) {
char c = bt.read();
if (c == '#' || c == '\n') {
cmd.toLowerCase();
cmd.trim();
if (cmd == "go" || cmd == "forward") drive(1,0,1,0);
else if (cmd == "back") drive(0,1,0,1);
else if (cmd == "left") drive(0,1,1,0);
else if (cmd == "right") drive(1,0,0,1);
else if (cmd == "stop") drive(0,0,0,0);
else if (cmd == "spin") { drive(1,0,0,1); delay(1200); drive(0,0,0,0); }
Serial.println(cmd);
cmd = "";
} else {
cmd += c;
}
}
// safety: stop if something is too close
if (distanceCm() < 15) drive(0,0,0,0);
delay(40);
}