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

Node.js-webseitengesteuertes Roboterauto (drahtlos)

Komponenten und Verbrauchsmaterialien

Arduino UNO
× 1
SparkFun Dual H-Bridge Motortreiber L298
× 1
HC-05 Bluetooth-Modul
× 1
Jumper (generisch)
× 1
Batterie, 9 V
× 2
DC-Motor, 12 V
× 2

Über dieses Projekt

Projektidee

Node.js ist eine der besten Optionen für Echtzeitanwendungen. Ich habe zuvor an einigen Echtzeit-Apps mit Sockets gearbeitet, daher habe ich mich mit dem gleichen Konzept entschlossen, einige IoT-Projekte mit Node.js-Server zum Selbstlernen zu erstellen.

Dieser Rover von mir kommuniziert mit meinem Node.js-Server über Bluetooth und am Front-End sende ich Befehle über Sockets an den Server.

Projektziel

Um die drahtlose Kommunikation zwischen Node-Server und Hardware (in diesem Fall unser Rover) zu untersuchen und zu implementieren und den Rover mit einer mobilen Webseite, die vom Node-Server unter Verwendung von Sockets bereitgestellt wird, fernzusteuern.

Voraussetzung

Sie müssen über einige Grundkenntnisse in den Bereichen Node, Socket-Programmierung und L298-Motortreiber verfügen.

Anforderungen

  • 1 Arduino Uno
  • 1 L298-Motortreiber
  • HC-05 Bluetooth-Modul
  • Überbrückungsdrähte
  • 2 Akkus - jeweils 9 Volt
  • 2-Gang-Motoren (6-9 Volt)
  • 2 kompatible Räder
  • Fahrwerk
  • Computer mit installiertem Node.js für unseren Server.

Schritt 1 – Den Rover bauen

Der Aufbau des Rovers ist nicht so kompliziert, Sie können ein "2-Rad-Chassis-Kit" kaufen, das leicht online erhältlich ist und alle Montageeinheiten enthält.

Unser Arduino Uno und L298 Motor Driver sind oben auf unserem Rover eingebettet, die beide separat von zwei 9-Volt-Batterien betrieben werden.

Arduino Uno wiederum wird das HC-05 Bluetooth-Modul mit Strom versorgen, das mit unserem Server kommuniziert.

Schaltplan

Wie oben im Schaltplan gezeigt, wird der L298-Motortreiber von einer 9-V-Batterie gespeist, die beiden Motorsteuerausgänge sind mit Motor A und Motor B verbunden und da der Motor keine Polarität hat, können Sie jeden Anschluss daran anschließen, aber stellen Sie sicher, dass beide Motoren drehen in die gleiche Richtung. Entfernen Sie nicht den 5V-Regler-Jumper.

Hinweis :Wenn Sie den L298 mit mehr als 12 Volt betreiben, wird der integrierte 5-V-Spannungsregler beschädigt.

Arduino Uno wird auch von einer 9-V-Batterie mit Strom versorgt, deren Pluspol mit dem Vin-Pin von Arduino und der Minuspol mit der gemeinsamen Masse verbunden ist. Arduino wiederum wird das Bluetooth-Modul mit Strom versorgen, also verbinden Sie den Vcc-Pin von HC-05 mit 5 V von Arduino und GND mit Masse.

Für die serielle Kommunikation zwischen HC-05 und Arduino verbinden Sie den TXD-Pin von HC-05 mit dem RX-Pin von Arduino und den RXD-Pin von HC-05 mit dem TX-Pin von Arduino.

Um nun das L298-Modul zu steuern, können Sie den EN1- und EN2-Pin mit einem beliebigen PWM-Pin des Arduino verbinden. Und dann verbinden Sie den Eingangspin -1, 2, 3, 4 des L298 mit einem beliebigen digitalen Pin von Arduino.

Datenübertragung

Wie oben gezeigt, ist ein Diagramm, das die Übertragung von Signalen zeigt.

1. Der Benutzer greift auf die vom Knotenserver bereitgestellte Webseite zu. Die URL wäre die verwendete IP-Adresse mit Portnummer, z. B. "192.XXX.XXX.129:8080".

2. Wenn der Benutzer auf eine Schaltfläche auf der Webseite klickt, wird der Server veranlasst, die erforderliche Funktion auszuführen. Diese Kommunikation erfolgt aufgrund von Sockets.

3. Der Node-Server, der über Bluetooth mit dem HC-05-Modul verbunden ist, sendet die erforderlichen Daten an das HC-05-Modul.

4. Der HC-05 überträgt Daten über serielle Kommunikation an Arduino UNO.

5. Das Arduino UNO steuert wiederum das L298-Modul.

Schritt 2- Einrichten des Servers

Für unseren Server müssen wir Node.js installieren. Installieren Sie eine beliebige stabile Version von Node, meine ist die Version 11.15. Wir müssen die folgenden Pakete installieren-

  • node-gyp
  • ausdrücken
  • Knoten-Bluetooth
  • socket.io
  • ejs

Hinweis - Die Installation von "node-gyp" kann schwierig sein, da es einige der neuesten Versionen von Node nicht unterstützt, installieren Sie also besser Version 11.15 von Node.

Jetzt müssen wir auf Ereignisse von einer Webseite hören. Sobald ein Ereignis während der Interaktion mit der Webseite ausgelöst wird, sendet die Seite die erforderliche Funktion aus, die an unseren Node-Server ausgeführt werden muss. Der Server wiederum hört diese Nachricht ab und führt die gewünschte Funktion aus (in unserem Fall das Senden von Daten an Bluetooth).

Erstellen Sie also einen Server und eine Webseite mit Paketen wie "express" und "EJS". Entwerfen Sie die Webseite mit den gewünschten Steuerelementen und richten Sie Socket-Verbindungen dafür ein, indem Sie einen Socket-Server erstellen. Sie können sich auf diese Dokumentation beziehen.

Informationen zur Bluetooth-Einrichtung finden Sie in dieser Dokumentation. Jedes Mal, wenn eine Steuerungstaste geklickt wird, wird eine Nachricht an das HC-05-Modul gesendet.

Hier ist meine einfache Webseite --

Schritt 3- Arduino-Code

Da Bluetooth mit Arduino-Uno über die serielle Kommunikation kommuniziert, senden wir einen "String" als Befehl und einen zusätzlichen Buchstaben, der uns auffordert, den String zu beenden und zu erfassen.

Zum Beispiel:Um vorwärts zu kommen, sendet Bluetooth "forwardT", und am Arduino-Ende, sobald wir auf den Buchstaben "T" stoßen, wissen wir, dass die serielle Kommunikation abgeschlossen ist.

Und mit diesem eingehenden String-Befehl konfigurieren wir den L298-Treiber so, dass er sich vorwärts, rückwärts, links, rechts bewegt, die Geschwindigkeit ändert usw.

Finden Sie den angehängten Arduino-Code.

Schritt 4- Endergebnis

Verbesserungen und zukünftiger Umfang

In späteren Stadien plane ich, den Rover mit Sprachbefehlen und einer Hindernisvermeidungsfunktion zu steuern. Ich kann auch eine Datenbank pflegen, in der ich Statistikaufzeichnungen wie zurückgelegte Strecke, Höchstgeschwindigkeit, durchschnittliche Geschwindigkeit usw. führe. Ich werde auch mehrere Sensoren wie Temperatur, Licht und Luftfeuchtigkeit hinzufügen und in regelmäßigen Abständen verfolgen, was in unserer DB gespeichert werden.

Nächste Version

Sehen Sie sich mein nächstes Projekt "Voice Controlled Rover using Mobile" an

Code

  • Node Rover Arduino-Code
Node Rover Arduino CodeArduino
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, AUSGANG); pinMode (en2, AUSGANG); pinMode (inp1, OUTPUT); pinMode (inp2, AUSGANG); pinMode (inp3, AUSGANG); pinMode (inp4, OUTPUT);}void loop () { // Setzen Sie Ihren Hauptcode hier ein, um ihn wiederholt auszuführen:if (Serial.available ()) { charRead =Serial.read (); if (charRead !='T') { inputString +=charRead; aufrechtzuerhalten. Sonst { if (inputString =="forward") {// Um ​​vorwärts zu gehen digitalWrite (inp1, HIGH); digitalWrite (inp2, LOW); digitalWrite (inp3, HIGH); digitalWrite (inp4, LOW); aufrechtzuerhalten. Sonst if (inputString =="backward") {// Um ​​rückwärts zu gehen digitalWrite (inp1, LOW); digitalWrite (inp2, HIGH); digitalWrite (inp3, LOW); digitalWrite (inp4, HIGH); aufrechtzuerhalten. Sonst if (inputString =="fleft") {// Um ​​sich nach links zu bewegen digitalWrite (inp1, HIGH); digitalWrite (inp2, LOW); digitalWrite (inp3, LOW); digitalWrite (inp4, LOW); aufrechtzuerhalten. Sonst if (inputString =="fright") {// Um ​​sich nach rechts zu bewegen digitalWrite (inp1, LOW); digitalWrite (inp2, LOW); digitalWrite (inp3, HIGH); digitalWrite (inp4, LOW); aufrechtzuerhalten. Sonst if (inputString =="bleft") {// Um ​​nach links zurückzugehen digitalWrite (inp1, LOW); digitalWrite (inp2, LOW); digitalWrite (inp3, LOW); digitalWrite (inp4, HIGH); aufrechtzuerhalten. Sonst if (inputString =="bright") {// Um ​​nach rechts zurückzugehen digitalWrite (inp1, LOW); digitalWrite (inp2, HIGH); digitalWrite (inp3, LOW); digitalWrite (inp4, LOW); aufrechtzuerhalten. Sonst if (inputString =="break") {// Um ​​analogWrite (en1, 50) zu stoppen; analogWrite(en2, 50); Verzögerung (550); digitalWrite (inp1, LOW); digitalWrite (inp2, LOW); digitalWrite (inp3, LOW); digitalWrite (inp4, LOW); analogWrite(en1, 150); analogWrite(en2, 150); aufrechtzuerhalten. Sonst if (inputString =="maxspeed") {// Max. Geschwindigkeit analogWrite (en1, 250); analogWrite(en2, 250); aufrechtzuerhalten. Sonst if (inputString =="medspeed") {// Mittlere Geschwindigkeit analogWrite (en1, 180); analogWrite(en2, 180); aufrechtzuerhalten. Sonst if (inputString =="lowspeed") {// Lowspeed analogWrite (en1, 90); analogWrite(en2, 90); aufrechtzuerhalten. Else {// Stopp digitalWrite (inp1, LOW); digitalWrite (inp2, LOW); digitalWrite (inp3, LOW); digitalWrite (inp4, LOW); } inputString =""; } }}

Schaltpläne


Herstellungsprozess

  1. Bauen Sie ein drahtloses Roboterfahrzeug mit IR-Sensoren
  2. Effiziente Webserver-Technologie für Mikrocontroller mit eingeschränkten Ressourcen
  3. So installieren Sie einen sicheren eingebetteten Webserver auf einem 3 USD-WLAN-Gerät
  4. Feuchte/Temperatur aus dem Web abrufen
  5. Temperaturgesteuerter Lüfter
  6. Solar-Einfahrtsbeleuchtung zum MSP430 Wireless Sensor Node
  7. Raspberry Pi 4 als Webserver [Erstelle eine eigene Website]
  8. Verwandeln Sie Ihr RC-Auto in ein Bluetooth-RC-Auto
  9. Joystick-gesteuertes RC-Auto
  10. WLAN-RC-Auto - Qi aktiviert