Stembestuurde Arduino Auto met BLE – Zelfbouw Handleiding
Onderdelen en Benodigdheden
| Arduino UNO | 1 |
| Breadboard | 1 |
| DC-motoren | 2 |
| Wielen | 2 |
| Chassis (passende maat) | 1 |
| Spanningsregelaar LM7805 | 1 |
| L293D Dual H-brug motordriver | 1 |
| 12V batterij (voeding) | 1 |
| Draadbruggen | 1 set |
| Bluetooth-module HC-05 (of BLE-module) | 1 |
Over dit Project
Componenten
Zie tabel bovenaan. De Android-app voor stemherkenning is te vinden op: Google Play Store.
Idee
De Bluetooth-module communiceert met de app. Spraakcommando's worden als tekens via de seriële poort naar de Arduino gestuurd. De Arduino verzamelt karakters tot een string en vergelijkt deze met bekende commando's ("forward", "back", "left", "right"). Bij match wordt de bijbehorende motoractie uitgevoerd.
Aansluitingen
Volledig schema: yainnoware.blogspot.com
Code
int motor_input1 = 11; // Rechts motor
int motor_input2 = 10;
int motor_input3 = 5; // Links motor
int motor_input4 = 6;
String voice;
void setup() {
Serial.begin(9600);
pinMode(motor_input1, OUTPUT);
pinMode(motor_input2, OUTPUT);
pinMode(motor_input3, OUTPUT);
pinMode(motor_input4, OUTPUT);
}
void loop() {
while (Serial.available() > 0) {
delay(10);
char c = Serial.read();
if (c == '#') break; // einde commando
voice += c;
}
if (voice == "forward") {
digitalWrite(motor_input1, LOW); digitalWrite(motor_input2, HIGH);
digitalWrite(motor_input3, LOW); digitalWrite(motor_input4, HIGH);
delay(5000);
} else if (voice == "back") {
digitalWrite(motor_input1, HIGH); digitalWrite(motor_input2, LOW);
digitalWrite(motor_input3, HIGH); digitalWrite(motor_input4, LOW);
delay(5000);
} else if (voice == "left") {
digitalWrite(motor_input1, LOW); digitalWrite(motor_input2, HIGH);
digitalWrite(motor_input3, HIGH); digitalWrite(motor_input4, LOW);
delay(800);
} else if (voice == "right") {
digitalWrite(motor_input1, HIGH); digitalWrite(motor_input2, LOW);
digitalWrite(motor_input3, LOW); digitalWrite(motor_input4, HIGH);
delay(800);
}
if (voice.length() > 0) {
Serial.println(voice);
voice = "";
// Stop motors
digitalWrite(motor_input1, LOW);
digitalWrite(motor_input2, LOW);
digitalWrite(motor_input3, LOW);
digitalWrite(motor_input4, LOW);
}
}
Let op: De code gebruikt een eenvoudige protocollering: commando's eindigen met '#'. De app moet dit teken sturen. De motorpinnen zijn voorbeeld – pas aan aan je L293D-aansluiting.
Productieproces
- Alexa-gecontroleerde ARDrone 2.0 Demo: Stem-geactiveerde Drone met Raspberry Pi & Hologram Nova
- Arduino Digitale Dobbelsteen: Bouw Je Eigen LCD-willekeurige Getalgenerator
- Bouw Je Eigen 37-LED Roulette-spel met Arduino Nano
- Een oude RC-auto ombouwen tot joystick-gestuurd voertuig met Arduino
- ATtiny85 Mini Arcade: Snake – Bouw een Handheld OLED Game Console
- Draagbare Afstandsdetector – Arduino Nano DIY Kit met HC-SR04, 18650 Accu en 3D-geprinte Behuizing
- MobBob: Bouw Je Eigen Arduino Robot, Naadloos Bestuurd via Android Smartphone
- Slimme app-gestuurde hydraulische kraan – Precisie & Gemak
- Autonome Gezichtsvolgende Robot Auto met Arduino Nano & OpenCV
- PiBot: De Arduino-aangedreven pianorobot voor precisiemuziek
- Koper Elektrolyseren Project: Bouw een Slim Systeem met Arduino UNO