Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Drahtloser Node.js-gesteuerter Roboterwagen – Echtzeit-IoT-Projekt

Komponenten und Zubehör

Arduino UNO × 1
SparkFun Dual H-Brücke L298 (Motortreiber) × 1
HC-05 Bluetooth-Modul × 1
Jumper-Kabel × 1
9 V Blockbatterie × 2
12 V DC-Getriebemotoren × 2

Über dieses Projekt

Projektidee

Node.js eignet sich hervorragend für Echtzeitanwendungen. Ich hatte bereits Erfahrung mit Socket-basierten Echtzeit-Apps und wollte das Konzept auf IoT-Hardware übertragen – einen Rover, der per Bluetooth mit einem Node.js-Server kommuniziert und über eine mobile Webseite (WebSockets) ferngesteuert wird.

Projektziel

Drahtlose Kommunikation zwischen Node-Server und Hardware (Rover) implementieren und den Rover über eine mobile Webseite fernsteuern.

Voraussetzungen

Anforderungen

Schritt 1: Rover bauen

Drahtloser Node.js-gesteuerter Roboterwagen – Echtzeit-IoT-Projekt

Ein 2-Rad-Chassis-Set (online erhältlich) vereinfacht den mechanischen Aufbau. Arduino Uno und L298 werden auf dem Chassis montiert, jeweils mit eigener 9 V-Batterie versorgt. Der Arduino speist das HC-05-Modul über seinen 5V-Pin.

Schaltplan

Drahtloser Node.js-gesteuerter Roboterwagen – Echtzeit-IoT-Projekt

Datenübertragung

Drahtloser Node.js-gesteuerter Roboterwagen – Echtzeit-IoT-Projekt
  1. Benutzer ruft Webseite auf (z. B. 192.168.x.x:8080)
  2. Klick auf Buttons → Socket-Event an Node-Server
  3. Server sendet Kommando via Bluetooth an HC-05
  4. HC-05 → Serielle Übertragung an Arduino
  5. Arduino steuert L298

Schritt 2: Server einrichten

Node.js installieren (v11.15 empfohlen, da node-gyp mit neueren Versionen Probleme haben kann). Benötigte Pakete:

Webseite mit Express + EJS erstellen, Socket.io für Echtzeitkommunikation einrichten. Buttons auf der Webseite emittieren Events, Server lauscht und sendet Daten an HC-05.

Drahtloser Node.js-gesteuerter Roboterwagen – Echtzeit-IoT-Projekt

Schritt 3: Arduino-Code

Bluetooth sendet Strings wie forwardT (T = Terminator). Arduino liest seriell bis 'T', dann Aktion ausführen (vorwärts, rückwärts, links, rechts, Geschwindigkeit, Stopp).

Schritt 4: Ergebnis & Ausblick

Der Rover lässt sich über die Webseite steuern. Geplante Erweiterungen:

Nächstes Projekt: „Voice Controlled Rover using Mobile“

Code

Node Rover Arduino Code

const int en1 = 9, en2 = 3;
const int inp1 = 2, inp2 = 4, inp3 = 7, 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") {
        digitalWrite(inp1, HIGH); digitalWrite(inp2, LOW);
        digitalWrite(inp3, HIGH); digitalWrite(inp4, LOW);
      } else if (inputString == "backward") {
        digitalWrite(inp1, LOW); digitalWrite(inp2, HIGH);
        digitalWrite(inp3, LOW); digitalWrite(inp4, HIGH);
      } else if (inputString == "fleft") {
        digitalWrite(inp1, HIGH); digitalWrite(inp2, LOW);
        digitalWrite(inp3, LOW); digitalWrite(inp4, LOW);
      } else if (inputString == "fright") {
        digitalWrite(inp1, LOW); digitalWrite(inp2, LOW);
        digitalWrite(inp3, HIGH); digitalWrite(inp4, LOW);
      } else if (inputString == "bleft") {
        digitalWrite(inp1, LOW); digitalWrite(inp2, LOW);
        digitalWrite(inp3, LOW); digitalWrite(inp4, HIGH);
      } else if (inputString == "bright") {
        digitalWrite(inp1, LOW); digitalWrite(inp2, HIGH);
        digitalWrite(inp3, LOW); digitalWrite(inp4, LOW);
      } else if (inputString == "break") {
        analogWrite(en1, 50); analogWrite(en2, 50); delay(550);
        digitalWrite(inp1, LOW); digitalWrite(inp2, LOW);
        digitalWrite(inp3, LOW); digitalWrite(inp4, LOW);
        analogWrite(en1, 150); analogWrite(en2, 150);
      } else if (inputString == "maxspeed") {
        analogWrite(en1, 250); analogWrite(en2, 250);
      } else if (inputString == "medspeed") {
        analogWrite(en1, 180); analogWrite(en2, 180);
      } else if (inputString == "lowspeed") {
        analogWrite(en1, 90); analogWrite(en2, 90);
      } else {
        digitalWrite(inp1, LOW); digitalWrite(inp2, LOW);
        digitalWrite(inp3, LOW); digitalWrite(inp4, LOW);
      }
      inputString = "";
    }
  }
}

Schaltpläne

Drahtloser Node.js-gesteuerter Roboterwagen – Echtzeit-IoT-Projekt Drahtloser Node.js-gesteuerter Roboterwagen – Echtzeit-IoT-Projekt

Herstellungsprozess

  1. Drahtloses IR-Sensor-gesteuertes Roboterfahrzeug bauen
  2. Effiziente Webserver-Lösungen für ressourcenbeschränkte Mikrocontroller
  3. TLS-fähigen Webserver auf 3$ ESP8266 in unter 30 Minuten deployen
  4. Echtzeit-Temperatur- & Feuchtigkeitsmonitoring via Web auf Raspberry Pi 4
  5. Temperaturgesteuerter Lüfter: DIY Relais-System für Medienmöbel-Kühlung
  6. Aus 4$ Solar-Licht wird smarter Wireless-Sensorknoten: MSP430 + nRF24L01+ für Garten-Monitoring
  7. Raspberry Pi 4 als Webserver nutzen und eigene Website erstellen
  8. RC-Auto in Bluetooth-gesteuertes Fahrzeug verwandeln
  9. Altes RC-Auto per Xbox-Controller & Arduino zum Joystick-Fahrzeug umbauen
  10. Qi-fähiges Wi-Fi RC-Auto: Kabelloses Laden per Wireless Charging