Draadloze Node.js-gestuurde robotauto – Real-time IoT-project
Onderdelen en benodigdheden
| Arduino UNO | 1 |
| SparkFun Dual H-Bridge motordriver L298 | 1 |
| HC-05 Bluetooth-module | 1 |
| Draadjes (standaard) | 1 |
| 9V-batterij | 2 |
| DC-motor 12V | 2 |
Over dit project
Projectidee
Node.js is uitstekend voor real-time applicaties. Ik heb eerder gewerkt met sockets, en wilde dit toepassen op IoT: een rover die via Bluetooth communiceert met een Node.js-server, en die op de frontend via sockets wordt bestuurd.
Projectdoel
Draadloze communicatie tussen Node-server en hardware (rover) bestuderen en implementeren, en de rover op afstand besturen via een mobiele webpagina die door de Node-server wordt geserveerd met sockets.
Vereisten
- Basiskennis van Node, socketprogrammering en L298-motordriver.
- 1x Arduino Uno
- 1x L298-motordriver
- 1x HC-05 Bluetooth-module
- Draadjes
- 2x 9V-batterij
- 2x tandwielmotoren (6-9V)
- 2x passende wielen
- Chassis
- Computer met Node.js geïnstalleerd voor de server.
Stap 1: De rover bouwen
Koop een "2-wiel chassis kit" online. Arduino Uno en L298 worden op de rover gemonteerd, beide gevoed door een aparte 9V-batterij. De Arduino voedt de HC-05-module.
Schakelschema
L298 wordt gevoed door 9V-batterij. Motoruitgangen naar Motor A en B (polariteit niet belangrijk, maar beide motoren moeten dezelfde richting draaien). Belangrijk: verwijder de 5V-regulator-jumper NIET. Als je de L298 met meer dan 12V voedt, gaat de onboard 5V-regulator kapot.
Arduino wordt gevoed door de andere 9V-batterij (Vin en GND). HC-05: VCC naar 5V Arduino, GND naar massa. Seriële communicatie: TXD van HC-05 naar RX van Arduino, RXD van HC-05 naar TX van Arduino.
Besturing L298: EN1 en EN2 naar PWM-pinnen van Arduino. Input-pinnen 1-4 naar digitale pinnen van Arduino.
Dataoverdracht
- Gebruiker opent webpagina (bijv.
192.XXX.XXX.129:8080). - Klik op knop → socket stuurt commando naar Node-server.
- Node-server (via Bluetooth verbonden met HC-05) stuurt data naar HC-05.
- HC-05 stuurt via seriële communicatie naar Arduino UNO.
- Arduino stuurt L298 aan.
Stap 2: Server opzetten
Installeer Node.js (versie 11.15 aanbevolen voor node-gyp). Benodigde pakketten:
- node-gyp
- express
- node-bluetooth
- socket.io
- ejs
Maak een server en webpagina met Express en EJS. Ontwerp besturingselementen en stel socket-verbindingen in. Voor Bluetooth: zie documentatie van node-bluetooth. Bij elke knopklik wordt een bericht naar HC-05 gestuurd.
Stap 3: Arduino-code
Bluetooth communiceert via seriële poort. We sturen strings als commando, afgesloten met 'T' (bijv. "forwardT"). Arduino leest tot 'T' en voert actie uit.
Stap 4: Eindresultaat
De rover reageert op commando's van de webinterface.
Uitbreidingen en toekomstige plannen
- Stemcommando's
- Obstakelvermijding
- Database met statistieken (afstand, snelheid)
- Extra sensoren (temperatuur, licht, vochtigheid) met logging in database
Volgende versie: "Voice Controlled Rover using Mobile"
Arduino-code
const int en1 = 9; const int en2 = 3;
const int inp1 = 2; const int inp2 = 4;
const int inp3 = 7; const int inp4 = 8;
char charRead; String inputString = "";
void setup() {
Serial.begin(9600);
pinMode(en1, OUTPUT); pinMode(en2, OUTPUT);
pinMode(inp1, OUTPUT); pinMode(inp2, OUTPUT);
pinMode(inp3, OUTPUT); pinMode(inp4, OUTPUT);
}
void loop() {
if (Serial.available()) {
charRead = Serial.read();
if (charRead != 'T') {
inputString += charRead;
} else {
if (inputString == "forward") { /* vooruit */ }
else if (inputString == "backward") { /* achteruit */ }
else if (inputString == "fleft") { /* vooruit-links */ }
else if (inputString == "fright") { /* vooruit-rechts */ }
else if (inputString == "bleft") { /* achteruit-links */ }
else if (inputString == "bright") { /* achteruit-rechts */ }
else if (inputString == "break") { /* stop */ }
else if (inputString == "maxspeed") { /* max snelheid */ }
else if (inputString == "medspeed") { /* medium snelheid */ }
else if (inputString == "lowspeed") { /* lage snelheid */ }
else { /* stop */ }
inputString = "";
}
}
}
Productieproces
- Real-Time Temperatuur & Vochtigheid Monitoring Via Web Op Raspberry Pi 4
- Temperatuur-gecontroleerde Ventilator: DIY Relais Systeem Voor Media Kast Koeling
- Van $4 Zonnestandaard tot Slimme Draadloze Sensor-knooppunt: MSP430 + nRF24L01+ voor Tuinmonitoring
- Zet Je Raspberry Pi 4 Om in een Webserver en Bouw Je Eigen Site
- Uw RC-auto ombouwen tot een Bluetooth-gecontroleerd voertuig
- Een oude RC-auto ombouwen tot joystick-gestuurd voertuig met Arduino
- Qi-geschikte Wi‑Fi RC-auto: bouwen van een draadloos oplaadbare bestuurbare auto
- Arduino-gebaseerde 6-DoF Robotarm Gestoeerd met Wii Nunchuk
- Bouw een Draadloos IR-Sensor-Gestuurd Robotvoertuig
- Efficiënte Web Server Oplossingen voor Resource-Beperkte Microcontrollers
- Een TLS-ingeschakelde Web Server Deployen op een $3 ESP8266 in Onder 30 Minuten