Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Voiture robotique contrôlée par page Web Node.js (sans fil)

Composants et fournitures

Arduino UNO
× 1
Drivers de moteur SparkFun Dual H-Bridge L298
× 1
Module Bluetooth HC-05
× 1
Câbles de raccordement (générique)
× 1
Batterie, 9 V
× 2
Moteur CC, 12 V
× 2

À propos de ce projet

Idée de projet

Node.js est l'une des meilleures options pour les applications en temps réel. J'ai déjà travaillé sur des applications en temps réel à l'aide de Sockets, donc avec le même concept, j'ai décidé de faire des projets IoT avec le serveur Node.js pour l'auto-apprentissage.

Ce Rover à moi communique avec mon serveur Node.js via Bluetooth et sur le front-end, j'envoie des commandes au serveur via Sockets.

Objectif du projet

Étudier et mettre en œuvre la communication sans fil entre le serveur Node et le matériel (qui est dans ce cas notre Rover), et contrôler à distance le Rover avec une page Web mobile servie par le serveur Node à l'aide de Sockets.

Prérequis

Vous devez avoir des connaissances de base sur les nœuds, la programmation des sockets et le fonctionnement du pilote de moteur L298.

Exigences

  • 1 Arduino Uno
  • 1 pilote de moteur L298
  • Module Bluetooth HC-05
  • Cavaliers
  • 2 batteries - 9 volts chacune
  • 2 moteurs à engrenages (6-9 volts)
  • 2 roues compatibles
  • Châssis
  • Ordinateur avec Node.js installé pour notre serveur.

Étape 1 - Construire le Rover

Construire le Rover n'est pas si compliqué, vous pouvez acheter un "kit de châssis à 2 roues" qui est facilement disponible en ligne et est livré avec toutes les unités d'assemblage.

Nos moteurs Arduino Uno et L298 sont intégrés au sommet de notre Rover, tous deux alimentés séparément par deux batteries 9 volts.

Arduino Uno alimentera à son tour le module Bluetooth HC-05 qui communiquera avec notre serveur.

Schéma de circuit

Comme indiqué au-dessus du schéma de circuit, le pilote de moteur L298 est alimenté par une batterie 9V, les deux sorties de commande du moteur sont connectées au moteur A et au moteur B et comme le moteur n'a pas de polarité, vous pouvez y connecter n'importe quelle borne, mais assurez-vous que les deux moteurs tournent dans le même sens. Ne retirez pas le cavalier du régulateur 5V.

Remarque :si vous alimentez le L298 avec plus de 12 volts, le régulateur de tension 5 V embarqué sera endommagé.

Arduino Uno est également alimenté par une batterie 9V avec sa borne positive connectée à la broche Vin d'Arduino et la borne négative à la masse commune. Arduino alimentera à son tour le module Bluetooth, alors connectez la broche Vcc de HC-05 à 5V d'Arduino et GND à la terre.

Pour la communication série entre HC-05 et Arduino, connectez la broche TXD de HC-05 à la broche RX d'Arduino et la broche RXD de HC-05 à la broche TX d'Arduino.

Maintenant, pour contrôler le module L298, vous pouvez connecter les broches EN1 et EN2 avec n'importe quelle broche PWM de l'Arduino. Et puis connectez la broche d'entrée -1, 2, 3, 4 de L298 avec n'importe quelle broche numérique d'Arduino.

Transmission de données

Comme indiqué ci-dessus, est un schéma montrant la transmission des signaux.

1. L'utilisateur accédera à la page Web desservie par le serveur de nœud. L'URL serait l'adresse IP avec le numéro de port utilisé, par exemple : "192.XXX.XXX.129:8080".

2. Lorsque l'utilisateur clique sur un bouton de la page Web, le serveur exécute la fonction requise. Cette communication se produit en raison de Sockets.

3. Le serveur Node qui est connecté au module HC-05 via Bluetooth, enverra les données requises au module HC-05.

4. Le HC-05 transmettra les données à Arduino UNO en utilisant la communication série.

5. L'Arduino UNO contrôlera à son tour le module L298.

Étape 2- Configuration du serveur

Pour notre serveur, nous devons installer Node.js. Installez n'importe quelle version stable de node, la mienne est la version 11.15. Nous devons installer les packages suivants-

  • node-gyp
  • exprimer
  • nœud-bluetooth
  • socket.io
  • ejs

Remarque - L'installation de "node-gyp" peut être délicate car elle ne prend pas en charge certaines des dernières versions de Node, il est donc préférable d'installer la version 11.15 de Node.

Maintenant, nous devons écouter les événements d'une page Web, dès qu'un événement est déclenché lors de l'interaction avec la page Web, la page émettra la fonction requise qui doit être exécutée sur notre serveur Node. Le serveur à son tour écoutera ce message et exécutera la fonction souhaitée (qui est dans notre cas, envoyer des données vers Bluetooth).

Alors, créez un serveur et une page Web en utilisant des packages tels que "express" et "EJS". Concevez la page Web avec les contrôles que vous souhaitez et configurez des connexions de socket pour elle en créant un serveur de socket, vous pouvez vous référer à cette documentation.

Pour la configuration Bluetooth, reportez-vous à cette documentation. Chaque fois qu'un bouton de contrôle est cliqué, un message est envoyé au module HC-05.

Voici ma page Web simple --

Étape 3 : Code Arduino

Comme Bluetooth communiquera avec Arduino-Uno à l'aide de la communication série, nous enverrons une "chaîne" en tant que commande et une lettre supplémentaire qui nous indiquera de terminer et de capturer la chaîne.

Par exemple :pour aller de l'avant, Bluetooth transmettra "forwardT", et à la fin Arduino, dès que nous rencontrerons la lettre "T", nous saurons que la communication série est terminée.

Et avec cette commande de chaîne entrante, nous allons configurer le pilote L298 pour avancer, reculer, gauche, droite, modifier la vitesse, etc.

Trouvez le code Arduino joint.

Étape 4 - Résultat final

Améliorations et portée future

Dans les étapes ultérieures, je prévois de contrôler le rover à l'aide de commandes vocales et de la fonction d'évitement d'obstacles. Je peux également maintenir une base de données où je conserverai des statistiques telles que la distance parcourue, la vitesse maximale, la vitesse moyenne, etc. J'ajouterai également plusieurs capteurs tels que la température, la lumière et l'humidité et en garderai une trace à intervalles réguliers, ce qui être stocké dans notre base de données.

Version suivante

Vérifiez mon prochain projet "Voice Controlled Rover using Mobile"

Code

  • Code Arduino Node Rover
Code Arduino Node RoverArduino
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, SORTIE); pinMode(en2, SORTIE); pinMode(inp1, SORTIE); pinMode(inp2, SORTIE); pinMode(inp3, SORTIE); pinMode(inp4, OUTPUT);}void loop() { // mettez votre code principal ici, pour l'exécuter à plusieurs reprises :if (Serial.available()) { charRead =Serial.read(); if (charRead !='T') { inputString +=charRead; } else { if (inputString =="forward") { // Pour avancer digitalWrite(inp1, HIGH); digitalWrite(inp2, LOW); digitalWrite(inp3, HAUT); digitalWrite(inp4, LOW); } else if (inputString =="backward") { // Pour reculer digitalWrite(inp1, LOW); digitalWrite(inp2, HAUT); digitalWrite(inp3, LOW); digitalWrite(inp4, ÉLEVÉ); } else if (inputString =="fleft") { // Pour déplacer vers la gauche digitalWrite(inp1, HIGH); digitalWrite(inp2, LOW); digitalWrite(inp3, LOW); digitalWrite(inp4, LOW); } else if (inputString =="fright") { // Pour déplacer vers la droite digitalWrite(inp1, LOW); digitalWrite(inp2, LOW); digitalWrite(inp3, HAUT); digitalWrite(inp4, LOW); } else if (inputString =="bleft") { // Pour reculer à gauche digitalWrite(inp1, LOW); digitalWrite(inp2, LOW); digitalWrite(inp3, LOW); digitalWrite(inp4, ÉLEVÉ); } else if (inputString =="bright") { // Pour reculer à droite digitalWrite(inp1, LOW); digitalWrite(inp2, HAUT); digitalWrite(inp3, LOW); digitalWrite(inp4, LOW); } else if (inputString =="break") { // Pour arrêter analogWrite (en1, 50); analogWrite(en2, 50); retard (550); digitalWrite(inp1, LOW); digitalWrite(inp2, LOW); digitalWrite(inp3, LOW); digitalWrite(inp4, LOW); analogWrite(en1, 150); analogWrite(en2, 150); } else if (inputString =="maxspeed") { // Vitesse max analogWrite(en1, 250); analogWrite(en2, 250); } else if (inputString =="medspeed") { // Vitesse moyenne analogWrite(en1, 180); analogWrite(en2, 180); } else if (inputString =="lowspeed") { // AnalogWrite à faible vitesse (en1, 90); analogWrite(en2, 90); } else { // Arrêter digitalWrite(inp1, LOW); digitalWrite(inp2, LOW); digitalWrite(inp3, LOW); digitalWrite(inp4, LOW); } chaîne d'entrée =""; } }}

Schémas


Processus de fabrication

  1. Créer un véhicule robotique sans fil à l'aide de capteurs infrarouges
  2. Technologie de serveur Web efficace pour les microcontrôleurs à ressources limitées
  3. Comment installer un serveur Web intégré sécurisé sur un appareil Wi-Fi à 3 $
  4. Obtenir l'humidité/la température à partir du Web
  5. Ventilateur à température contrôlée
  6. Éclairage d'allée solaire au nœud de capteur sans fil MSP430
  7. Raspberry Pi 4 en tant que serveur Web [Créer son propre site Web]
  8. Transformez votre voiture RC en voiture RC Bluetooth
  9. Voiture RC contrôlée par joystick