Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Coche robótico controlado por página web Node.js (inalámbrico)

Componentes y suministros

Arduino UNO
× 1
Controladores de motor SparkFun Dual H-Bridge L298
× 1
Módulo Bluetooth HC-05
× 1
Cables de puente (genéricos)
× 1
Batería, 9 V
× 2
Motor de CC, 12 V
× 2

Acerca de este proyecto

Idea de proyecto

Node.js es una de las mejores opciones para aplicaciones en tiempo real. Anteriormente trabajé en algunas aplicaciones en tiempo real usando Sockets, así que con el mismo concepto, decidí hacer algunos proyectos de IoT con el servidor Node.js para el autoaprendizaje.

Este Rover mío se comunica con mi servidor Node.js usando Bluetooth y en el front-end, envío comandos al servidor usando Sockets.

Objetivo del proyecto

Estudiar e implementar la comunicación inalámbrica entre el servidor Node y el hardware (que en este caso es nuestro Rover) y controlar remotamente el Rover con una página web móvil servida por el servidor Node usando Sockets.

Requisito previo

Necesita tener algunos conocimientos básicos sobre el funcionamiento del Nodo, la programación de zócalos y el controlador de motor L298.

Requisitos

  • 1 Arduino Uno
  • 1 controlador de motor L298
  • Módulo Bluetooth HC-05
  • Cables de puente
  • 2 pilas:9 voltios cada una
  • 2 motores de engranajes (6-9 voltios)
  • 2 ruedas compatibles
  • Chasis
  • Computadora con Node.js instalado para nuestro servidor.

Paso 1:construcción del Rover

Construir el Rover no es tan complicado, puede comprar un "kit de chasis de 2 ruedas" que está fácilmente disponible en línea y viene con todas las unidades de ensamblaje.

Nuestro Arduino Uno y L298 Motor Driver están integrados en la parte superior de nuestro Rover, ambos alimentados por dos baterías de 9 voltios por separado.

Arduino Uno, a su vez, alimentará el módulo Bluetooth HC-05 que se comunicará con nuestro servidor.

Diagrama de circuito

Como se muestra arriba del diagrama del circuito, el controlador del motor L298 está alimentado por una batería de 9V, las dos salidas de control del motor están conectadas al Motor A y al Motor B y como el motor no tiene polaridad, puede conectarle cualquier terminal, pero asegúrese de que ambos motores giran en la misma dirección. No retire el puente del regulador de 5V.

Nota : si enciende el L298 con más de 12 voltios, el regulador de voltaje de 5 V integrado se dañará.

Arduino Uno también funciona con una batería de 9V con su terminal positivo conectado al pin Vin de Arduino y el terminal negativo a la tierra común. Arduino, a su vez, alimentará el módulo Bluetooth, así que conecte el pin Vcc de HC-05 a 5V de Arduino y GND a tierra.

Para la comunicación en serie entre HC-05 y Arduino, conecte el pin TXD de HC-05 al pin RX de Arduino y el pin RXD de HC-05 al pin TX de Arduino.

Ahora, para controlar el módulo L298, puede conectar el pin EN1 y EN2 con cualquier pin PWM del Arduino. Y luego conecte el pin de entrada -1, 2, 3, 4 de L298 con cualquier pin digital de Arduino.

Transmisión de datos

Como se muestra arriba, es un diagrama que muestra la transmisión de señales.

1. El usuario accederá a la página web servida por el servidor de nodo. La URL sería la dirección IP con el número de puerto utilizado, por ejemplo, "192.XXX.XXX.129:8080".

2. Cuando el usuario hace clic en un botón en la página web, activará el servidor para realizar la función requerida. Esta comunicación ocurre debido a Sockets.

3. El servidor de nodo que está conectado al módulo HC-05 a través de Bluetooth, enviará los datos requeridos al módulo HC-05.

4. El HC-05 transmitirá datos a Arduino UNO mediante comunicación en serie.

5. El Arduino UNO a su vez controlará el módulo L298.

Paso 2- Configurar el servidor

Para nuestro servidor, necesitamos instalar Node.js. Instale cualquier versión estable del nodo, la mía es la versión 11.15. Necesitamos instalar los siguientes paquetes:

  • node-gyp
  • expreso
  • nodo-bluetooth
  • socket.io
  • ejs

Nota:la instalación de "node-gyp" puede ser complicada ya que no es compatible con la última versión de Node, por lo que es mejor instalar la versión 11.15 de Node.

Ahora, necesitamos escuchar los eventos de una página web, tan pronto como se active un evento al interactuar con la página web, la página emitirá la función requerida que debe ejecutarse en nuestro servidor Node. El servidor a su vez escuchará ese mensaje y ejecutará la función deseada (que es en nuestro caso, enviar datos a Bluetooth).

Entonces, cree un servidor y una página web usando paquetes como "express" y "EJS". Diseñe la página web con los controles que desee y configure las conexiones de socket creando un servidor de socket. Puede consultar esta documentación.

Para la configuración de Bluetooth, consulte esta documentación. Siempre que se hace clic en cualquier botón de control, se envía un mensaje al módulo HC-05.

Aquí está mi página web sencilla:

Paso 3- Código Arduino

Como Bluetooth se comunicará con Arduino-Uno mediante la comunicación en serie, enviaremos una "cadena" como comando y una letra adicional que nos dirá que terminemos y capturemos la cadena.

Por ejemplo:para avanzar, Bluetooth transmitirá "forwardT", y en el extremo de Arduino, tan pronto como encontremos la letra "T", sabremos que la comunicación en serie se completó.

Y con ese comando de cadena entrante, configuraremos el controlador L298 para avanzar, retroceder, izquierda, derecha, alterar la velocidad, etc.

Busque el código Arduino adjunto.

Paso 4- Resultado final

Mejoras y alcance futuro

En etapas posteriores, planeo controlar el móvil mediante comandos de voz y la función de evitación de obstáculos. También puedo mantener una base de datos en la que guardaré registros estadísticos como la distancia recorrida, la velocidad máxima, la velocidad media, etc. También agregaré varios sensores, como la temperatura, la luz y la humedad, y realizaré un seguimiento de ellos a intervalos regulares, lo que almacenarse en nuestra base de datos.

Próxima versión

Verifique mi próximo proyecto "Móvil controlado por voz usando un dispositivo móvil"

Código

  • Código Arduino de Node Rover
Código Arduino de Node Rover Arduino
 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 =""; configuración vacía () {Serial.begin (9600); pinMode (en1, SALIDA); pinMode (en2, SALIDA); pinMode (inp1, SALIDA); pinMode (inp2, SALIDA); pinMode (inp3, SALIDA); pinMode (inp4, OUTPUT);} void loop () {// ponga su código principal aquí, para que se ejecute repetidamente:if (Serial.available ()) {charRead =Serial.read (); if (charRead! ='T') {inputString + =charRead; } else {if (inputString =="forward") {// Para avanzar digitalWrite (inp1, HIGH); digitalWrite (inp2, BAJO); digitalWrite (inp3, ALTA); digitalWrite (inp4, BAJO); } else if (inputString =="backward") {// Para retroceder digitalWrite (inp1, LOW); escritura digital (inp2, ALTA); digitalWrite (inp3, BAJO); digitalWrite (inp4, ALTA); } else if (inputString =="fleft") {// Para moverse a la izquierda digitalWrite (inp1, HIGH); digitalWrite (inp2, BAJO); digitalWrite (inp3, BAJO); digitalWrite (inp4, BAJO); } else if (inputString =="fright") {// Para moverse a la derecha digitalWrite (inp1, LOW); digitalWrite (inp2, BAJO); digitalWrite (inp3, ALTA); digitalWrite (inp4, BAJO); } else if (inputString =="bleft") {// Para retroceder a la izquierda digitalWrite (inp1, LOW); digitalWrite (inp2, BAJO); digitalWrite (inp3, BAJO); digitalWrite (inp4, ALTA); } else if (inputString =="bright") {// Para retroceder a la derecha digitalWrite (inp1, LOW); escritura digital (inp2, ALTA); digitalWrite (inp3, BAJO); digitalWrite (inp4, BAJO); } else if (inputString =="break") {// Para detener analogWrite (en1, 50); analogWrite (en2, 50); retraso (550); digitalWrite (inp1, BAJO); digitalWrite (inp2, BAJO); digitalWrite (inp3, BAJO); digitalWrite (inp4, BAJO); analogWrite (en1, 150); analogWrite (en2, 150); } else if (inputString =="maxspeed") {// Velocidad máxima analogWrite (en1, 250); analogWrite (en2, 250); } else if (inputString =="medspeed") {// Escritura analógica de velocidad media (en1, 180); analogWrite (en2, 180); } else if (inputString =="baja velocidad") {// Escritura analógica de baja velocidad (en1, 90); analogWrite (en2, 90); } else {// Detener digitalWrite (inp1, LOW); digitalWrite (inp2, BAJO); digitalWrite (inp3, BAJO); digitalWrite (inp4, BAJO); } inputString =""; }}} 

Esquemas


Proceso de manufactura

  1. Haga un vehículo robótico inalámbrico usando sensores de infrarrojos
  2. Tecnología de servidor web eficiente para microcontroladores con recursos limitados
  3. Cómo instalar un servidor web integrado seguro en un dispositivo WiFi de $ 3
  4. Obtener humedad / temperatura de la Web
  5. Ventilador de temperatura controlada
  6. Luz solar de entrada al nodo de sensor inalámbrico MSP430
  7. Raspberry Pi 4 como servidor web [Crear un sitio web propio]
  8. Convierte tu coche RC en coche RC Bluetooth
  9. Coche RC controlado por joystick
  10. Coche de radiocontrol con Wi-Fi - Qi habilitado
  11. Brazo robótico controlado por Nunchuk (con Arduino)