Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Node.js webpagina gestuurde robotauto (draadloos)

Componenten en benodigdheden

Arduino UNO
× 1
SparkFun Dual H-Bridge motordrivers L298
× 1
HC-05 Bluetooth-module
× 1
Jumperdraden (algemeen)
× 1
Batterij, 9 V
× 2
DC-motor, 12 V
× 2

Over dit project

Projectidee

Node.js is een van de beste opties voor realtime toepassingen. Ik heb eerder aan een aantal realtime apps gewerkt met behulp van Sockets, dus met hetzelfde concept besloot ik een aantal IoT-projecten te maken met de Node.js-server voor zelflerend gebruik.

Deze Rover van mij communiceert met mijn Node.js-server via Bluetooth en aan de front-end stuur ik opdrachten naar de server met behulp van Sockets.

Projectdoel

Om draadloze communicatie tussen Node-server en hardware (in dit geval onze Rover) te bestuderen en te implementeren, en om de Rover op afstand te besturen met een mobiele webpagina die wordt bediend door Node-server met behulp van Sockets.

Voorwaarde

U moet enige basiskennis hebben van Node, socket-programmering en het werken met L298 Motor Driver.

Vereisten

  • 1 Arduino Uno
  • 1 L298-motorstuurprogramma
  • HC-05 Bluetooth-module
  • Jumperdraden
  • 2 Batterijen - elk 9 volt
  • 2 tandwielmotoren (6-9 volt)
  • 2 compatibele wielen
  • Chassis
  • Computer met Node.js geïnstalleerd voor onze server.

Stap 1- De Rover bouwen

Het bouwen van de Rover is niet zo ingewikkeld, je kunt een "tweewielige chassiskit" kopen die gemakkelijk online verkrijgbaar is en wordt geleverd met alle montage-eenheden.

Onze Arduino Uno en L298 Motor Driver zijn bovenop onze Rover ingebed, die beide afzonderlijk worden gevoed door twee 9 volt-batterijen.

Arduino Uno zal op zijn beurt de HC-05 Bluetooth-module van stroom voorzien, die zal communiceren met onze server.

Schakelschema

Zoals boven het schakelschema te zien is, wordt de L298-motordriver gevoed door een 9V-batterij, zijn de twee motorbesturingsuitgangen verbonden met Motor A en Motor B en aangezien de motor geen polariteit heeft, kunt u er elke terminal op aansluiten, maar zorg ervoor dat beide motoren draaien in dezelfde richting. Verwijder de 5V-regelaarjumper niet.

Opmerking :als je L298 met meer dan 12 volt voedt, wordt de ingebouwde 5V-spanningsregelaar beschadigd.

Arduino Uno wordt ook aangedreven door een 9V-batterij waarvan de positieve pool is verbonden met de Vin-pin van Arduino en de negatieve pool met de gemeenschappelijke aarde. Arduino zal op zijn beurt de Bluetooth-module van stroom voorzien, dus verbind de Vcc-pin van HC-05 met 5V van Arduino en GND met aarde.

Voor seriële communicatie tussen HC-05 en Arduino sluit u de TXD-pin van HC-05 aan op de RX-pin van Arduino en RXD-pin van HC-05 op de TX-pin van Arduino.

Om nu de L298-module te bedienen, kunt u de EN1- en EN2-pin verbinden met elke PWM-pin van de Arduino. En verbind dan L298's Input pin -1, 2, 3, 4 met een willekeurige digitale pin van Arduino.

Gegevensoverdracht

Zoals hierboven getoond, is een diagram dat de overdracht van signalen laat zien.

1. De gebruiker krijgt toegang tot de webpagina die wordt bediend door de node-server. De URL is het IP-adres met het gebruikte poortnummer, bijvoorbeeld "192.XXX.XXX.129:8080".

2. Wanneer de gebruiker op een knop op de webpagina klikt, wordt de server geactiveerd om de vereiste functie uit te voeren. Deze communicatie vindt plaats vanwege Sockets.

3. De Node-server die via Bluetooth met de HC-05-module is verbonden, stuurt de benodigde gegevens naar de HC-05-module.

4. De HC-05 verzendt gegevens naar Arduino UNO via seriële communicatie.

5. De Arduino UNO bestuurt op zijn beurt de L298-module.

Stap 2- De server instellen

Voor onze server moeten we Node.js installeren. Installeer een stabiele versie van het knooppunt, de mijne is de 11.15-versie. We moeten de volgende pakketten installeren-

  • node-gyp
  • express
  • node-bluetooth
  • socket.io
  • ejs

Opmerking - Installatie van "node-gyp" kan lastig zijn omdat het een of andere laatste versie van Node niet ondersteunt, dus installeer versie 11.15 van Node beter.

Nu moeten we naar gebeurtenissen van een webpagina luisteren, zodra een gebeurtenis wordt geactiveerd tijdens interactie met de webpagina, zal de pagina de vereiste functie uitzenden die moet worden uitgevoerd naar onze Node-server. De server luistert op zijn beurt naar dat bericht en voert de gewenste functie uit (in ons geval gegevens naar Bluetooth verzenden).

Maak dus een server en webpagina met pakketten als "express" en "EJS". Ontwerp de webpagina met de gewenste bedieningselementen en stel socketverbindingen ervoor in door een socketserver te maken, u kunt deze documentatie raadplegen.

Raadpleeg deze documentatie voor het instellen van Bluetooth. Telkens wanneer er op een bedieningsknop wordt geklikt, wordt er een bericht naar de HC-05-module gestuurd.

Hier is mijn eenvoudige webpagina --

Stap 3- Arduino-code

Omdat Bluetooth zal communiceren met Arduino-Uno met behulp van seriële communicatie, sturen we een "string" als een commando en een extra letter die ons vertelt om de string te beëindigen en vast te leggen.

Bijvoorbeeld:om vooruit te gaan, verzendt Bluetooth "forwardT", en aan het Arduino-einde zodra we de letter "T" tegenkomen, weten we dat de seriële communicatie is voltooid.

En met dat inkomende tekenreekscommando, zullen we het L298-stuurprogramma configureren om vooruit, achteruit, links, rechts te gaan, de snelheid te wijzigen, enz.

Zoek de bijgevoegde Arduino-code.

Stap 4- Eindresultaat

Verbeteringen en toekomstige reikwijdte

In latere stadia ben ik van plan de rover te besturen met spraakopdrachten en een functie om obstakels te vermijden. Ik kan ook een database bijhouden waarin ik statistische gegevens bijhoud, zoals afgelegde afstand, maximale snelheid, gemiddelde snelheid, enz. Ik zal ook meerdere sensoren toevoegen, zoals temperatuur, licht en vochtigheid en zal deze met regelmatige tussenpozen bijhouden, wat zal worden opgeslagen in onze DB.

Volgende versie

Bekijk mijn volgende project "Voice Controlled Rover met mobiel"

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 () { Serieel.begin(9600); pinMode (nl1, UITGANG); pinMode(en2, UITGANG); pinMode (inp1, UITGANG); pinMode (inp2, UITGANG); pinMode (inp3, UITGANG); pinMode(inp4, OUTPUT);}void loop() { // plaats hier je hoofdcode om herhaaldelijk uit te voeren:if (Serial.available()) { charRead =Serial.read(); if (charRead !='T') { inputString +=charRead; } else { if (inputString =="forward") { // Om vooruit te gaan digitalWrite (inp1, HIGH); digitalWrite(inp2, LAAG); digitalWrite(inp3, HOOG); digitalWrite(inp4, LAAG); } else if (inputString =="achteruit") { // Om achteruit te gaan digitalWrite (inp1, LOW); digitalWrite(inp2, HOOG); digitalWrite(inp3, LAAG); digitalWrite(inp4, HOOG); } else if (inputString =="fleft") { // Om naar links te gaan digitalWrite (inp1, HIGH); digitalWrite(inp2, LAAG); digitalWrite(inp3, LAAG); digitalWrite(inp4, LAAG); } else if (inputString =="fright") { // Om naar rechts te gaan digitalWrite (inp1, LOW); digitalWrite(inp2, LAAG); digitalWrite(inp3, HOOG); digitalWrite(inp4, LAAG); } else if (inputString =="bleft") { // Om terug naar links te gaan digitalWrite (inp1, LOW); digitalWrite(inp2, LAAG); digitalWrite(inp3, LAAG); digitalWrite(inp4, HOOG); } else if (inputString =="bright") { // Om terug naar rechts te gaan digitalWrite (inp1, LOW); digitalWrite(inp2, HOOG); digitalWrite(inp3, LAAG); digitalWrite(inp4, LAAG); } else if (inputString =="break") { // Om analogWrite (en1, 50) te stoppen; analoogWrite(nl2, 50); vertraging (550); digitalWrite(inp1, LAAG); digitalWrite(inp2, LAAG); digitalWrite(inp3, LAAG); digitalWrite(inp4, LAAG); analoogWrite(nl1, 150); analoogWrite(en2, 150); } else if (inputString =="maxspeed") { // Max. snelheid analogWrite (en1, 250); analoogWrite(en2, 250); } else if (inputString =="medspeed") {// Medium Speed ​​analogWrite (en1, 180); analoogWrite(en2, 180); } else if (inputString =="lowspeed") { // Low speed analogWrite (en1, 90); analoogWrite(nl2, 90); } else { // Stop digitalWrite (inp1, LOW); digitalWrite(inp2, LAAG); digitalWrite (inp3, LAAG); digitalWrite(inp4, LAAG); } inputString =""; } }}

Schema's


Productieproces

  1. Maak een draadloos robotvoertuig met IR-sensoren
  2. Efficiënte webservertechnologie voor microcontrollers met beperkte middelen
  3. Hoe installeer je een beveiligde ingebouwde webserver op een wifi-apparaat van $ 3
  4. Vochtigheid/temperatuur van internet halen
  5. Temperatuurgestuurde ventilator
  6. Zonne-opritverlichting naar MSP430 draadloos sensorknooppunt
  7. Raspberry Pi 4 als webserver [Maak eigen website]
  8. Zet je RC-auto om naar Bluetooth RC-auto
  9. Met joystick bestuurde RC-auto
  10. Wi-Fi RC Car - Qi ingeschakeld
  11. Nunchuk-gestuurde robotarm (met Arduino)