Carro robótico controlado pela Internet

Coche robótico controlado por Internet

Existen muchos modelos de vehículos robóticos controlados de forma inalámbrica. Normalmente, estos robots están conectados a un control remoto mediante un módulo de RF, Bluetooth, Wi-Fi o teléfonos móviles. Todas estas tecnologías inalámbricas tienen sus propias limitaciones y están restringidas a rangos específicos. Como si el vehículo robótico estuviera conectado al control remoto a través de un módulo Bluetooth (como el módulo Bluetooth HC-05), puede tener un alcance operativo máximo de hasta 10 metros. Si el vehículo robótico está conectado al control remoto mediante un módulo de RF, puede tener un alcance operativo máximo de hasta una distancia de 50 a 60 metros. En este proyecto se diseña un vehículo robótico controlado por internet que será controlado por una página web. La página web se puede abrir en cualquier computadora de escritorio, portátil o teléfono móvil. El vehículo robótico puede estar en cualquier lugar con acceso a Internet y puede controlarse de forma remota desde cualquier lugar.
El vehículo robótico fue diseñado en Particle Photon. Para fabricar el vehículo, se interconectan dos motores de CC al tablero de partículas a través del CI del controlador del motor L293D. También se conectan a la placa un sensor de temperatura y humedad DHT-11 y un sensor LDR para monitorear el entorno físico alrededor del automóvil robótico. Particle Photon es una placa IOT con módulos Wi-Fi y Bluetooth integrados. La placa funciona por aire conectándose a una conexión Wi-Fi. La placa se conecta automáticamente al servicio en la nube de Particle y se puede controlar a través de Internet enviando datos a través del servicio en la nube de la empresa.
Particle Photon es una placa IOT compatible con Arduino. Para escribir código de programa para cualquier Photon, el desarrollador debe crear una cuenta en el sitio web de Particle y registrar la placa Photon con su cuenta de usuario. Luego, el código del programa se puede escribir en el IDE web del sitio web de Particle y transferirse a una placa IOT registrada a través de Internet. Si el panel de partículas seleccionado, aquí Photon, está encendido y conectado al servicio de nube de partículas, el código se escribe en el panel seleccionado por aire a través de una conexión a Internet y el panel comienza a funcionar de acuerdo con el código transferido.
Para controlar el tablero a través de internet se desarrolló una página web que utiliza Ajax y JQuery para enviar datos al tablero mediante el método HTTP POST. La página identifica la placa mediante un ID de dispositivo y se conecta al servicio en la nube de Particle a través de un token de acceso.

Componentes necesarios –

Lado del receptor:
1. Partícula de fotones.
2. Sensor DHT11.
3. Sensor LDR.
4. Conexión wifi doméstica.
5. Circuito integrado de controlador de motor L293D
9. Motores de CC
Lado del transmisor:
1. Página web (EngineersGarageIoT.html)

Diagrama de bloques -

Diagrama de blocos de um carro robô controlado pela Internet baseado em fótons de partículas
Figura 1: Diagrama de bloques de un automóvil robot controlado por Internet basado en fotones de partículas

Conexiones de circuito –

Protótipo de carro robô controlado pela Internet baseado em fótons de partículas
Fig. 2: Prototipo de coche robot controlado por Internet basado en fotones de partículas
El controlador del motor IC y los sensores interactúan con el fotón de partículas. El circuito se ensambla de la siguiente manera:
Fuente de alimentación: en el circuito, Photon y otros circuitos integrados necesitan una CC regulada de 5 V para su funcionamiento. Se utiliza una batería de 18 V como fuente de energía principal. La energía de la batería se regula a 5 V y 12 V mediante circuitos integrados 7805 y 7812. El pin 1 de ambos circuitos integrados reguladores de voltaje está conectado al ánodo de la batería y el pin 2 de ambos circuitos integrados está conectado a tierra. Las respectivas salidas de voltaje se toman del pin 3 de los respectivos circuitos integrados reguladores de voltaje. También se conecta un LED junto con una resistencia pull-up de 10 K Ω entre la tierra común y el pin de salida para obtener una señal visual de la continuidad de la energía.
Sensor de temperatura y humedad DHT-11: el sensor DHT-11 lee la temperatura y humedad ambiente y transmite los datos al microcontrolador como datos digitales. El pin de datos del sensor de temperatura y humedad DHT11 está conectado al pin A0 del Particle Photon, y el VCC y la tierra están conectados al VCC y la tierra comunes.
Sensor LDR: el LDR se utiliza para detectar la intensidad de la luz. El sensor está conectado al pin A1 del fotón de partículas. El sensor está conectado a un circuito divisor de potencial. El LDR proporciona un voltaje analógico que el ADC integrado convierte en una lectura digital.
IC del controlador del motor de CC L293D: el L293D es el IC del controlador del motor. Tiene 16 pines con la siguiente configuración de pines:
Tabela listando a configuração dos pinos do IC do driver do motor L293D
Fig. 3: Tabla que enumera la configuración de pines del CI del controlador del motor L293D
Se utilizan dos motores de CC para fabricar el automóvil robótico. Los motores de CC interactúan entre los pines 3 y 6 y los pines 14 y 11 del IC del controlador del motor.
IC L293D controla motores de CC según las siguientes tablas de verdad:
Tabela verdade do IC do driver do motor L293D
Fig. 4: Tabla de verdad del CI del controlador del motor L293D
Tabela verdade do IC do driver do motor L293D
Fig. 5: Tabla de verdad del CI del controlador del motor L293D
Los pines 4, 5, 13 y 12 del L293D están conectados a tierra mientras que los pines 1, 16 y 9 están conectados a 5 VCC y el pin 8 está conectado a 9 VCC. Los pines 15, 2, 7 y 10 del IC del controlador del motor están conectados a los pines D3, D2, D1 y D0 del fotón de partículas.

Cómo funciona el circuito –

Imagem de um carro robô controlado pela Internet baseado em partículas fótons
Fig. 6: Imagen de un coche robot controlado por Internet basado en partículas de fotones
Una vez que el código del programa se transfiere a Particle Photon, comienza a funcionar en consecuencia. El Particle Photon debe estar conectado a cualquier punto de acceso a Internet a través de Wi-Fi. El código compatible con Arduino en el Photon inicialmente envía una lógica BAJA en todos los pines de datos, detiene ambos motores y comienza a recuperar datos de los sensores.
El sensor de temperatura y humedad DHT11 es un sensor digital con un termistor y un sensor de humedad capacitivo incorporados. Transmite una lectura de temperatura y humedad en tiempo real cada 2 segundos. El sensor funciona con una fuente de alimentación de 3,5 a 5,5 V y puede leer temperaturas entre 0° C y 50° C y humedad relativa entre 20% y 95%. El sensor DHT 11 envía datos en formato digital a un pin del controlador en el protocolo de un solo cable que debe implementarse en el lado del firmware. Primero, el pin de datos se configura para la entrada y se le envía una señal de inicio.
La señal de inicio comprende un BAJO durante 18 milisegundos seguido de un ALTO durante 20 a 40 microsegundos seguido de un BAJO nuevamente durante 80 microsegundos y un ALTO durante 80 microsegundos. Después de enviar la señal de inicio, el pin se configura para salida digital y se bloquean los datos de 40 bits que consisten en la lectura de temperatura y humedad. De los datos de 5 bytes, los primeros dos bytes son la parte entera y decimal de la lectura de humedad relativa respectivamente, el tercer y cuarto bytes son la parte entera y decimal de la lectura de temperatura y el último es el byte de suma de verificación. El protocolo de un solo cable se implementa en el firmware utilizando una biblioteca de código abierto disponible para Photon.
El sensor de infrarrojos genera un voltaje analógico en el pin del controlador interconectado. El voltaje analógico se lee y digitaliza utilizando el canal ADC integrado. La función analogRead se utiliza para leer el voltaje analógico en el pin del controlador.
Los datos leídos del sensor se pasan a la nube de partículas a través de una conexión Wi-Fi y la placa espera la orden para mover el vehículo. El usuario ve los datos del sensor en la página web y tiene botones para mover y girar el coche en la misma página web. Cuando el usuario toca un botón, el comando en forma de cadena se transfiere a través de Internet a través del servicio en la nube de Particle. Las cadenas se reciben a través del método HTTP POST de Particle Photon. Al detectar el comando, la placa cambia la lógica digital en los pines de datos girando los motores en el sentido de las agujas del reloj o en el sentido contrario a las agujas del reloj.
En el circuito del robot, considerando la tracción en dos ruedas, ya sea delantera o trasera, el motor del lado derecho (RHS) está conectado entre los pines 3 y 6 y el motor del lado izquierdo (LHS) está conectado entre los pines 11 y 14 de L293D. El motor derecho está controlado por los pines 2 y 7 del L293D, mientras que el motor izquierdo está controlado por los pines 10 y 15 del L293D. Por lo tanto, para mover el robot en diferentes direcciones, se requieren las siguientes salidas digitales en los pines L293D:
Tabela lógica do IC do driver do motor L293D para carro robótico baseado em fótons IoT
Fig. 7: Tabla lógica del IC del controlador del motor L293D para un automóvil robótico basado en fotones IoT
Por lo tanto, para impulsar el robot en esta tracción de dos ruedas, el motor derecho debe girarse en el sentido de las agujas del reloj y el motor izquierdo debe girarse en el sentido contrario a las agujas del reloj. Esto se hace pasando señales BAJAS a los pines 2 y 15 del L293D y señales ALTAS a los pines 7 y 10 del L293D según la tabla de verdad. Para impulsar el robot hacia atrás (aplicable a la tracción en dos ruedas), el motor derecho debe girarse en sentido antihorario y el motor izquierdo debe girarse en sentido horario. Esto se hace pasando señales BAJAS a los pines 7 y 10 del L293D y señales ALTAS a los pines 2 y 15 del L293D según la tabla de verdad.
Para girar el robot hacia la derecha, se debe detener el motor derecho y girar el motor izquierdo en sentido antihorario. Esto se hace pasando señales BAJAS a los pines 2, 7 y 15 del L293D y señales ALTAS al pin 10 del L293D según la tabla de verdad. Para girar el robot hacia la izquierda, se debe detener el motor izquierdo y girar el motor derecho en el sentido de las agujas del reloj. Esto se hace pasando señales BAJAS a los pines 2, 10 y 15 del L293D y señales ALTAS al pin 7 del L293D según la tabla de verdad. Los motores se detienen en el diseño proporcionando ambas entradas de control L293D para cada motor con lógica BAJA.
Consulte el código Photon para saber cómo el código compatible con Arduino detecta comandos en el aire, lee datos de sensores y los publica en la URL de registro de datos vinculada. Aprenda cómo se manipula la cadena de comando para cambiar la lógica digital en los pines conectados al CI del controlador del motor L293D.

Guía de programación –

código de fotones
En primer lugar, se importa la biblioteca de sensores DHT. La biblioteca se agrega automáticamente mediante Particle Web IDE. Se define una constante para indicar el pin al que está conectado el sensor DHT 11 y se define una constante para indicar la variante del sensor DHT. Se declaran variables para contener valores de temperatura, humedad e intensidad de luz. Las variables que indican la lógica de control del motor se declaran y asignan a los pines del microcontrolador. Se declara un objeto de tipo DHT.
Se declara que una matriz de caracteres contiene los datos del sensor que se enviarán a la página web.
Se llama a la función de configuración en la que los pines conectados al L293D se declaran como pines de salida usando la función pinMode y se configuran en BAJO de forma predeterminada usando la función digitalWrite. El sensor DHT se inicializa llamando al método de inicio en el objeto dht. Una variable getpos y una función setpos se exponen desde la nube y se recuperan mediante el método POST llamando a los métodos Particle.variable y Particle.function. La función de configuración se ejecuta solo una vez al comienzo del código.
La función de bucle se llama y se itera infinitamente. En la función de bucle, los datos del sensor DHT se obtienen utilizando los métodos getTempCelcius y getHumidity en el objeto dht. Los datos del sensor LDR se obtienen llamando al método analogRead y se convierten a intensidad de luz usando fórmulas estándar. Los datos de diferentes sensores se almacenan en variables, se agrupan en cadenas adecuadas y se envían a la URL de registro de datos mediante el método de publicación en el objeto Particle.
La función ledToggle manipula la cadena de comando. La cadena se convierte a un número entero y se compara con 1 a 4 para cambiar la lógica en los pines de entrada del motor L293D.
Captura de tela da função ledToggle  do Particle Photon Code para o carro robótico controlado pela Internet
Fig. 8: Captura de pantalla de la función LEDToggle del código de fotones de partículas para el automóvil robótico controlado por Internet
Esto completa el código del programa en Photon para vehículos robóticos controlados por Internet.
Código HTML
Para controlar el robot a través de Internet es necesario crear una página web.
Captura de tela do código-fonte da página da Web que controla o carro robótico
Fig. 9: Captura de pantalla del código fuente de la página web que controla el coche robótico
El tipo de documento se declara para configurar la página en la versión HTML 5 y se agrega el elemento principal. Dentro del elemento principal, el juego de caracteres está configurado en utf-8 y la página web está configurada para abarcar toda la ventana. Bootstrap para CSS y Javascript se incluye en la CDN mediante el elemento de enlace.
Se declara el elemento del cuerpo y se declara un elemento divisor adicional para contener el contenido de la página web. La página web se estructura a través de otros elementos divisorios y se agregan algunos elementos de párrafo de encabezado y botones.
Se incorpora Javascript en el que el ID del dispositivo y el token de acceso se declaran como variables y se crea una función switchLED para formatear la cadena de comando que se pasará al tablero de partículas. La cadena de comando contiene un número entre 1 y 4. Se accede a los elementos de la página mediante la función JavaScript getElementbyID. Los datos del sensor se obtienen mediante el método JSON.parse y se incrustan en elementos HTML mediante el método InnerHTML. El método $.Post se utiliza para recuperar datos de la nube mediante el método HTTP POST.
Este es un archivo HTML que debe ejecutarse para enviar datos al servicio en la nube de Particle. El servicio en la nube se conecta automáticamente a Photon y Code on Photon funciona en función de los datos recibidos de la nube.

Código fuente del proyecto

###

 //Programa para

 // Esta declaración #include fue agregada automáticamente por Particle IDE.

 #incluir


 //parámetros DHT

 #definir DHTPIN A0

 #definir DHTTYPE DHT11


 //variables

 temperatura interna;

 humedad interna;

 luz interna;

 int luz_sensor_pin = A1;

 int uv = A3;

 int pos = 0;

 valor entero;

 // Pines

 int motor0 = D0;

 int motor1 = D1;

 int motor2 = D2;

 int motor3 = D3;

 // sensor DHT

 DHT dht(DHTPIN, DHTTYPE);


 // publicarjson.ino - Ejemplo de publicación Spark

 último tiempo largo sin firmar = 0UL;

 char publicarString(64);


 configuración nula {

 Serie1.begin(9600);

 pinMode(motor0,SALIDA);

 pinMode(motor1,SALIDA);

 pinMode(motor2,SALIDA);

 pinMode(motor3,SALIDA);

 escritura digital (motor0, BAJO);

 escritura digital (motor1, BAJO);

 escritura digital (motor2, BAJO);

 escritura digital (motor3, BAJO);

 dht.comenzar;
 
// También vamos a declarar una función Particle.function para que podamos encender y apagar el LED desde la nube.

 Partícula.función("led",ledToggle);

 }


 bucle vacío {



 // Medición de temperatura

 temperatura = dht.getTempCelcius;



 // Medición de humedad

 humedad = dht.getHumidity;



 // Medición del nivel de luz

 float light_measurement = analogRead(light_sensor_pin);

 luz = (int)(medición_luz/4096*100);


 sin firmar largo ahora = milis;

 // Cada 5 segundos publicamos tiempo de actividad

 si (ahora-últimahora>5000UL) {

 última hora = ahora;

 sprintf(publishString,"{"Temperatura": %u, "Humedad": %u, "Luz": %u}",temperatura,humedad,luz);

 Particle.publish("Tiempo de actividad",publishString);

 escritura digital (motor0, BAJO);

 escritura digital (motor1, BAJO);

 escritura digital (motor2, BAJO);

 escritura digital (motor3, BAJO);

 }



 }



 int ledToggle (comando de cadena) {

 valor = comando.toInt;

 si (valor == 1) {

 escritura digital (motor0, ALTO);

 escritura digital (motor1, BAJO);

 escritura digital (motor2, ALTO);
 
escritura digital (motor3, BAJO);

 devolver 1;

 }

 de lo contrario si (valor == 2) {

 escritura digital (motor1, ALTO);

 escritura digital (motor0, BAJO);

 escritura digital (motor3, ALTO);

 escritura digital (motor2, BAJO);

 devolver 1;

 }

 de lo contrario si (valor == 3) {

 escritura digital (motor0, ALTO);

 escritura digital (motor1, BAJO);

 escritura digital (motor2, BAJO);

 escritura digital (motor3, ALTO);

 devolver 1;

 }

 de lo contrario si (valor == 4) {

 escritura digital (motor0, BAJO);

 escritura digital (motor1, BAJO);

 escritura digital (motor2, ALTO);

 escritura digital (motor3, BAJO);

 devolver 1;

 }

 demás {

 escritura digital (motor0, BAJO);

 escritura digital (motor1, BAJO);

 escritura digital (motor2, BAJO);

 escritura digital (motor3, BAJO);

 devolver 0;

 }


 }

###

Diagramas de circuito

Coche robot controlado por Internet, diagrama de circuito, partículas, fotones.

Vídeo del proyecto

https://www.youtube.com/watch?v=I1qtACOSZig

contenido relacionado

Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.