Talaan ng mga Nilalaman:

Comunicación ESP-NGAYON. Kontrolin ang Remoto De Vehículo, Joystick, Arduino Wemos .: 28 Mga Hakbang
Comunicación ESP-NGAYON. Kontrolin ang Remoto De Vehículo, Joystick, Arduino Wemos .: 28 Mga Hakbang

Video: Comunicación ESP-NGAYON. Kontrolin ang Remoto De Vehículo, Joystick, Arduino Wemos .: 28 Mga Hakbang

Video: Comunicación ESP-NGAYON. Kontrolin ang Remoto De Vehículo, Joystick, Arduino Wemos .: 28 Mga Hakbang
Video: México, Brasil | Fuerzas Policiales Que Defienden Las Fronteras 2024, Nobyembre
Anonim
Comunicación ESP-NGAYON. Kontrolin ang Remoto De Vehículo, Joystick, Arduino Wemos
Comunicación ESP-NGAYON. Kontrolin ang Remoto De Vehículo, Joystick, Arduino Wemos

Todo parte de la idea de poder mover una silla de ruedas para personal discapacitado vía remota y poder acompañarlos sin necesidad de empujar la misma. Como ejemplo de funcionamiento, he creado este proyecto. Posteriormente se pueden cambiar los circuitos de salida y los motores, por otros de mayor potencia y acoplar a las ruedas de la silla un sistema mecánico que la mueva.

Si la persona que va en silla de ruedas está capacitada para manejarla personalmente, se pueden fusionar ambos sketchs de Arduino en uno solo y evitar las comunicaciones remotas. Simplemente una única placa para sa controlar los Movimientos del joystick at control de los motores.

Aunque no gane ningún concurso, si a alguien le gusta (o una parte del mismo) o puede realizar el proyecto y aliviar el estado de ánimo de una persona mejorando su Movilidad, me sentiré contento.

Sa pagtatapos ng dokumento, nakakabit ako ng isang PDF sa English ng gawaing ito (tagasalin ng web).

Al final del documento, mag-ayos ng PDF sa iyong trabajo completeo en español.

Hakbang 1: Introducción:

Resumen del trabajo:.- Varios entradas analógicas a través de un solo puerto.

.- Wemos, especificaciones eléctricas.

.- Protocolo de comunicaciones ESP-NGAYON.

.- Circuito L298N. Especificaciones y pinout del mismo.

.- Montaje vehículo con dos motores DC

En este trabajo explico como tomar varios valores analógicos e introducirlos en un único puerto A0 de una placa Wemos. Ang mga valores na napatunayan sa un joystick, ay naghahatid ng forma rápida, segura y fácil por medio de Wifi usando el protocolo ESP-NGAYON. En el vehículo, otra Wemos recibe los datos y acciona dos motores DC para makontrol ang dirección del vehiculo.

Quizás alguien se pueda plantear que las cosas expuestas de estos trabajos, se puedan conseguir de forma fácil y barata en alguna web, pero el hecho de hacerlo tu mismo y con componentses de bajo precio siempre es una satisfacción cuando lo ves funcionar. Aparte de eso, me conformo con que a una persona le guste o le aclare algún concepto o duda.

Maikli ang explosar los conceptos usados para sa aking kompromiso del trabajo. Quizás a algunos le parezca interesante alguna parte del mismo.

Hakbang 2: Placa De Desarrollo Arduino Wemos:

Placa De Desarrollo Arduino Wemos
Placa De Desarrollo Arduino Wemos
Placa De Desarrollo Arduino Wemos
Placa De Desarrollo Arduino Wemos
Placa De Desarrollo Arduino Wemos
Placa De Desarrollo Arduino Wemos

Estamos hablando de una pequeña placa de desarrollo con amplias posibilidad:

Sa pamamagitan ng mga podemos realizar na tagapagtaguyod ng IoT, ang mga datos at envío a través de las redes y otras muchas cosas, aprovechando la capacidad Wifi de las mismas. En otro proyecto que he realizado, creo una red wifi propia y puedo abrir una cerradura remota, mediante una clave tecleada desde nuestro smartphone, que también he publicado. Inihahambing sa kanila ang anterior es que en vez de usar protocolo HTLM para la comunicación, uso la característica na makakakuha ng publiko sa paglalagay ng WiFi sa tipo ng ESP-NGAYON ay nagsasagawa ng mga dispositivos, sa pamamagitan ng pagsubaybay sa mga ito, rápida, segura (encriptada) at sinulat emparejamientos a la hora de actuar (solo al configurar el sketch de Arduino). Mas adelante, a la hora de explicar el sketch, comentaré los detalles a tener en cuenta.

Ang pagtatapos ay magtanggal ng una entrada de alimentación de 5v en el pin correspondiente (o por USB) at isang entrada de GND. Dicha alimentación no tiene porque ser 5v, ya que lleva un regulador de voltaje que lo convierte en 3.3v, que es realmente el voltaje de trabajo. En la datasheet de la Wemos podemos verlo y adjunto también una imagen de la datasheet del regulador.

Ang link ng las especificaciones del ESP8266, podría trabajar incluso a 3v, pero conviene alimentarlo con un voltaje superior a 3.5v, para sa isang salida del regulador interno tengamos un mínimo de 3v. I-link ang link sa pamamagitan ng pag-iwas sa mga detalye ng iyong impormasyon.

cdn-shop.adafruit.com/product-files/2471/0…

Ang La Placa también ay nagtatapon ng 9 entradas / salidas digitales (D0-D8). Todas tienen la capacidad de poder trabajar con salidas del tipo PWM, bus I2C, etc.

Detalle a tener muy en cuenta a la hora de conectar algo a la salida de los pines digitales, para sa iluminar leds, activar relés, atbp. La corriente máxima que puede entregar un pin Digital es de 12mA. Si se necesita entregar mas corriente, debemos intercalar entre el pin y el dispositivo un transistor o un opto acoplador de mayor potencia. Ver figura de salidas.

Con una resistencia en serie con la salida de 330 ohms, se entrega una corriente de 10mA, por lo que si es posible, aumentar el valor de las resistencias. Hay en muchas webs la recomendación de una resistencia de 330 ohm en serie con los leds Yo recomiendo usar resistencias mas altas. Si ilumina el led a nuestro gusto, no necesitamos sumar mAs al trabajo Cualquier ahoro de energía siempre es bueno.

TANDAAN: en los pines digitales, mga podemos dar valores PWM entre 0 y 1023. En Arduino Uno, entre 0 y 254.

Ang mga ito ay Wemos también dispone de una entrada digital A0, para sa mga tala ng mga analista na ito. Hay que tener en cuenta dos cosas. Ang pangunahing kaalaman sa HINDI pag-aprub sa un voltaje superior ay isang 3.3v direktoryo, na mayroon kang deterioraría. Si se quiere medir un voltaje superior, hay que intercalar un divisor de voltaje externo. Los valores de dicha entrada son de 0 a 1024.

Otras características:

-Salida de 3.3v para sa alimentar circuitos exteriores. Máxima corriente 12mA por pin.

-Conector micro USB para sa iyong firmware sa firmware ng 5v

-Pulsador de Reset.

Hay muchos tutoriales de como configurar el IDE de Arduino para sa trabajar con este tipo de placa, bilang como las librerías necesarias. No voy a entrar en ello para no alargar demasiado este trabajo.

Hakbang 3: Circuito Del Joystick (mando a Distancia):

Circuito Del Joystick (mando a Distancia)
Circuito Del Joystick (mando a Distancia)
Circuito Del Joystick (mando a Distancia)
Circuito Del Joystick (mando a Distancia)

Me gusta la placa de desarrollo Wemos, ya que tiene poco tamaño, es barata y tiene muchas posibilidades. Ang como solo dispone de una entrada analógica A0, dumaloy ng problema de querer captar varios valores analógicos al mismo tiempo. Para mi caso en concreto, un joysick está formado por dos potenciómetros con salidas individuales analógicas y un pulsador. Además, quiero analizar el valor actual de la batería que uso en el mando a distancia, por lo que ya necesitamos tomar 3 valores analógicos distintos.

En el siguiente esquema, creado con Fritzing, tenemos a la izquierda un divisor de voltaje. Si la batería es de mas de 3.3v, ang entrada analógica corre riesgo de averiarse, por ello conviene reducir el voltaje para su análisis. Pumunta sa usar una batería de 3.7v, sa loob ng iyong kotse ay kumpletong es de aproximadamente 4v y debido al divisor de voltaje, en el pin 4 de H1 tenemos 2v (variable dependiendo del estado de la batería). A la derecha tenemos un joystick básico, formado por dos potenciómetros y un pulsador (R3 es externa al joystick). Se alimentan con los 3.3v que proporciona la Wemos. En este esquema general primero, tenemos 3 valores analógicos (mga pines 2, 3 y 4 de H1) at walang lakas na digital (pin 1 de H1).

Para poder analizar en la placa Wemoslos 3 valores analógicos, recurrimos a unos pequeños opto-acopladores, el chip SFH615A o TLP621. Es muy básico su funcionamiento para este trabajo. En el pin 4 del chip pongo uno de los valores analógicos a analizar. Todos los pin 2 isang GND. Ang mga pinuno ng 3 pinas ay A0 y cada uno de los pin 1 a una salida digital a través de un resistor, las cuales voy activando sucesivamente y dependiendo cual active y leyendo el valor en A0, asigno a cada valor una variable (pot 1y pot 2 del joystick y batería).

Hay que tener en cuenta que no podemos conectar la salida digital de la Wemos directamente al pin 1 del TLP621, ya que se se deterioraría dicha salida digital. Cada pin digital en Wemos puede suministrar unos 12mA. Sa pamamagitan ng, intercalamos una resistencia sapat para sa activar el led interno. Con 470 Ω, sapat na para sa activarlo y solo supone 7 mA.

Al querer introducir 3 valores analógicos mediante este sistema, usamos 3 salidas digitales para poder activarlas. Si queremos introducir mas valores analógicos por A0, podemos usar otras salidas digitales más o podemos seguir usando solo 3 salidas digitales, añadiendo al circuito un demultiplexor y dando valores binarios a las entradas, conseguimos hasta 8 posibles valores digitales.

Añadimos al mando a distancia 2 leds, para sa reflejar “Power ON” y el otro para el estado de la batería y “Transmisión OK”.

Añado al circuito un interruptor para la batería y un conector para poder recargar la misma sin tener que quitarla (aviso: APAGAR PARA RECARGAR para evitar dañar el regulador ME6211 de la placa Wemos). Sa pamamagitan ng pag-iwas sa explicado, el circuito completeo del mando a distancia con joystick es la siguiente figura.

Hakbang 4: Joystick 2:

Joystick 2
Joystick 2

Paliwanag para sa posterior desarrollo en el IDE de Arduino:

En A0 recojo los valores de los potenciómetros y del nivel de la batería.

En D0 pasa a HIGH cuando se pulsa el botón del joystick ("parada de emergencia")

Ang activo D1, leo el estado del potenciómetro vertical del joystick en A0.

Ang activo D2, leo el estado del potenciómetro pahalang del joystick en A0.

Si activo D5, leo el estado de la batería en A0. TANDAAN: en un principio lo puse en D4, pero me daba problemas al flashear el programa desde el IDE de Arduino, por lo que la pasé a D5

La salida D3 se usará para el led de Actividad (azul). Dicho led se enciende cuando hay Movimiento de joystick y la transmisión ha sido correcta. Cuando está en reposo nos indica el estado de la batería (1 parpadeo entre 3.6 y 3.5v, 2 parpadeos entre 3.5 y 3.4v y 3 parpadeos por debajo de 3.4v).

Pinangunahan ni El rojo indica ang Encendido / Power ON.

S1 es el interruptor de encendido. Ang mga sumusunod na impormasyon tungkol sa realiza la carga de la batería o si hago modificaciones en el software (5v a través del USB).

El esquema del circuito montado en una protoboard es la figura siguiente:

La línea inferior positiva es el voltaje de la batería. Ito ay higit na mahusay na positibo sa lavida de 3.3v de la Wemos

Hakbang 5: Joystick Placa De Circuitos:

Joystick Placa De Circuitos
Joystick Placa De Circuitos
Joystick Placa De Circuitos
Joystick Placa De Circuitos
Joystick Placa De Circuitos
Joystick Placa De Circuitos
Joystick Placa De Circuitos
Joystick Placa De Circuitos

He diseñado la siguiente placa de circuitos con Sprint-Layout 6.0 para sa conexión del joystick, opto acopladores, Wemos y otros. Indico las medidas por si alguien la quiere realizar (40x95mm). Hay que tener cuidado con el pin 1 de los TLP621. Ibinebenta ng al terminal ang iyong mga kliyente sa pamamagitan ng pagpapahiwatig ng iyong paningin sa mga bahagi. La parte de la placa próxima a los conectores y Wemos, la recorto posteriormente, así queda de forma cómoda el agarre del mando, el encendido y las conexiones externas.

Las fotos del mando isang distancia. En los bordes, las conexiones USB, el conector de carga de la batería y el interruptor de ON / OFF.

Fácil de sujetar, aunque sea un poco grande. Me falta realizar una caja a medida para sa mismong con la impresora 3D:

Hakbang 6: Circuito Del Receptor (Motores):

Circuito Del Receptor (Motores)
Circuito Del Receptor (Motores)

Está compuesto por otra placa Wemos, donde recibo la data del joystick o control remoto y activa las señales necesarias hacia un L298N (doble puente en H) and controlar dos motores, hacia adelante y hacia atrás, con control de dirección. Como komplemento del circuito, 3 leds, uno para power ON, otro para la transmisión de datos y un tercero como nagpapahiwatig ng “parada de emergencia”. Aprovecho estos dos últimos (parpadeando) para sa nagpapahiwatig ng estado ng la batería del vehículo.

Kontrolin ang estado ng la batería: Lo primero a tener en cuenta es que la batería que estoy usando es de 9v. Intentar medir la misma en A0 directamente, supone deteriorar el puerto, ya que el máximo valor que se le puede aplicar es de 3.3v. Para evitarlo, ponemos también otro divisor de voltaje, esta vez mas descompensado que en el mando a distancia y reducir el valor en A0. Para este caso, utilizo un resistor de 47k en serie con otro de 4k7. En el punto central es donde tomo la referencia a medir. "Bateria baja", entre 7v y 5.5v, 1 parpadeo del led de “Emergencia”. "Bateria MUY baja" (por debajo de 5, 5v, 3 parpadeos del led “Recepción ok”)

El circuito completeo del vehículo es el siguiente:

Debido a que este circuito está montado sobre un vehículo, no querido komplicar mucho el sketch de Arduino. Simplemente recibe los datos del joystick via wifi ESP-NGAYON y los convierte en señales de control para los motores. Gayundin ang isang software sa mga software ng software o modificaciones de trayectoria, isang realicen solo en el mando a distancia (joystick) at sa loob ng mga ambos.

No he realizado ninguna placa de circuitos especial. Tan solo una provisional para los leds y sus resistencias.

Hakbang 7: L298N (doble Puente En H)

L298N (doble Puente En H)
L298N (doble Puente En H)
L298N (doble Puente En H)
L298N (doble Puente En H)

Esta es una pequeña deskipción del circuito que controla los motores DC que mueven el vehículo.

- Conectores A y B (azules de 2 pines). Son las salidas de corriente hacia los motores. Si tras las pruebas, el motor gira al lado contrario del que deseamos, simplemente invertir los pines del mismo

Conector de Power (azul de 3 pines). Es la entrada de corriente al circuito. Como el mismo puede ser alimentado entre 6 y 36 voltios, hay que tener muy en cuenta el jumper o puente que hay junto al conector. Si lo alimentamos con un voltaje entre 6 y 12v, el puente se deja PUESTO y en Vlogico tenemos una salida de 5v hacia la Wemos (como en este trabajo). Si el circuito se alimenta con un voltaje superior a 12v, hay quitar el puente para que no se dañe el convertidor DC-DC que lleva y si queremos que funcione su circuitería lógica, deberemos llevar un cable de 5v externo hacia el circuito (5v input). Sa gayon, ang paggamit ng isang baterya sa 9v, ang iyong puesto y me sirve para alimentar la placa Wemos a través del pin 5v. GND viene del negativo de la batería y va también a G de la Wemos y a los leds.

Conector de Control (6 na pine). Tiene dos partes. Ang ENA, IN1, IN2 ay kumokontrol sa motor conectado en A y ENB, IN3, IN4 upang makontrol ang motor conectado en B. En la tabla de la figura anterior se indica los niveles de las señales que debe tener para poner en Movimiento los motores, adelante, atrás o frenado. En ENA y en ENB hay unos puentes. Si los dejamos puestos, el L298N pondrá los motores al voltaje de entrada Vm en el sentido nagpapahiwatig, sin ningún control de velocidad ni de regulación de voltaje. Si los quitamos, usaremos dichos pines para recibir una señal PWM desde la placa Wemos y así controlar la velocidad de cada motor. En Arduino se consigue mediante un comando analogWrite (). En la placa Wemos, todas los puerto D tienen esa capacidad.

En la figura del L298N hay un recuadro con un pequeño sketch para Arduino UNO, que hará girar el motor A hacia adelante a un voltaje cercano al 75% de Vm.

La gráfica anterior a este texto, explica la relación de analogWrite () con la forma de salida en los pines para Arduino UNO. En la Wemos, el 100% se consigue con analogWrite (1023) y al 50% sería analogWrite (512).

A la hora de realizar este proyecto, hay que tener muy en cuenta los posibles valores PWM de ENA y ENB que se suministran mediante el comando analogWrite, ya que dependen del valor del voltaje de la batería y del voltaje de los motores. En este caso utilizo una batería de 9v (Vm) y motores de 6v. Al ir aumentando la señal PWM en ellos, el voltaje del motor asciende, pero no comienza a moverse hasta que llega a un valor determinado, por lo que en las pruebas, se debe establecer ese mínimo PWM que lo haga mover a baja velocidad. Por otra parte, si ponemos la señal PWM al máximo, le damos al motor el voltaje Vm de la batería (9v) y se puede dañar el mismo, por lo que en las pruebas, debemos medir el voltaje y establecer ese máximo PWM para que walang isang deteriore y como mucho proporcione los 6v máximo. Sa gayon, como ya comentaba anteriormente, en el sketch de Arduino del mando a distancia.

Hakbang 8: Montaje Del Vehículo:

Montaje Del Vehículo
Montaje Del Vehículo
Montaje Del Vehículo
Montaje Del Vehículo
Montaje Del Vehículo
Montaje Del Vehículo

Tengo que reconocer que el montaje es un poco casero, pero efectivo. Quizás diseñe e imprima en 3D un modelo mas bonito, pero este modelo “casero” tiene la ventaja de ver mejor el funcionamiento. Existen una serie de motores, con reductora incluida y ruedas para acoplar, a bajo precio. Yo he usado lo que tengo a mano.

Para el montaje, he impreso en 3D unas piezas, ruedas, soporte de rodamiento / motor y unos casquillos y uso tornillería de 3mm de diámetro para unir las piezas. Para sa unión del motor al tornillo eje, maaari niyang makipag-ugnay sa de-registe de conexión eléctrica Cortando el plástico externo. Al montar las ruedas, conviene pegar el tornillo a la rueda, para evitar que patine al girar.

La siguiente muestra el soporte del rodamiento / motor y la pieza 3D que lo sujeta.

Monto la rueda. Tomo las medidas, corto el tornillo que sobra y los uno:

Una vez realizado el montaje de los dos conjuntos motriz, los sujeto a una plataforma de 10x13 cms (blanco). Les uno otra plataforma (8x12cms) para soporte de los circuitos y la rueda trasera. La diferencia de altura la marca el tipo de rueda que pongamos, para mantener el vehículo pahalang. La distancia entre la rueda trasera y la primera plataforma nos debe asegurar el giro de la misma, por eso tuve que corregir el primer agujero, como veis en las fotos.

Añado los circuitos y al final la batería con un conector para poder cargarla.

Como veis, walang es un gran diseño. Mi intención es aplicar este sistema a una silla de ruedas como comentaba al principio de este trabajo. Pero ya que lo tengo desarrollado, posiblemente diseñe un tipo de vehículo mas elegante.

Y ahora pasamos a la explicación del sketch de Arduino que he realizado.

Hakbang 9: Arduino:

Arduino
Arduino

Como escribí al principio, no puedo exterme mucho y prescindo de como configurar el IDE de Arduino, librerías and como debe reconocer la placa Wemos para poder trabajar con ellas. Mga solo unos datos:

.- En Preferencias, Gestor de URL adicionales:

arduino.esp8266.com/stable/package_esp8266com_index.json

.- En Herramientas (Tools), Gestor de tarjetas, como muestra la imagen:

Hakbang 10: ¿Qué MacAddress Tiene Nuestra Placa?

¿Qué MacAddress Tiene Nuestra Placa?
¿Qué MacAddress Tiene Nuestra Placa?

Como paso previo e imprescindible antes de trabajar con el protocolo ESP-NGAYON, debemos cargar este pequeño sketch en las Wemos con las que vamos a trabajar, para saber la AP MAC de las ESP8266 que llevan integradas. Sa Herramientas, Subaybayan ang Mga poder ng Serie sa resulta ng pag-sketch at anotar sobre todo la AP de cada placa Wemos.

Tengo la costumbre de al recibir las que compro, marco las bolsitas y la placa con dicho dato:

Hakbang 11: ESP-NGAYON

Una vez sa la MAC MAC de las placas, comienzo a hablar del protocolo ESP-NGAYON desarrollado por Espressif:

“Ang ESP-NGAYON ay nagpapahintulot sa pagkontrol sa direktoryo ng de baja potencia de las luces inteligentes, sin la necesidad de un enrutador. Este método es energéticamente ef sapate y maginhawa.

Ang ESP-Ngayon ay nagtuturo ng mga proteksyon mula sa Espressif, na pinahihintulutan ang mga ito na mag-iwan ng mga tuntunin sa pamamagitan ng Wi-Fi. Ang mga protocol na katulad ng isang konectividad inalámbrica de baja potencia de 2.4GHz ay isang menudo se implementa en ratones inalámbricos. Por lo tanto, el emparejamiento entre dispositivos es necesario antes de su comunicación. Una sa lahat ng realiza el emparejamiento, la conexión es segura y de igual a igual, sin que sea necesario un apretón de manos."

Mas información en el link:

docs.espressif.com/projects/esp-idf/en/latest/api-referensi/network/esp_now.html

Ang ESP-NGAYON ay isang protokol na nagpapalakas ng mga ito, ngunit ang mga ito ay nagsasaad ng isang paraan para maipagpaliban ang mga ito sa paglilipat ng mga datos entre ellos, sin utilizar formas complejas.

Hakbang 12: librería ESP-NGAYON

Libraryería ESP-NGAYON
Libraryería ESP-NGAYON

El sketch ay naghahanda siya nang solo na hindi maihahatid sa transmite (joystick) at otro recibe sus datos (vehículo). Pero ambos deben tener cosas comunes nekesariamente, las cuales paso a describesir.

.- Inicio de la librería ESP-NGAYON

Hakbang 13: La Estructura De Datos isang Transmitir / recibir:

La Es konstrura De Datos isang Transmitir / recibir
La Es konstrura De Datos isang Transmitir / recibir

.- La estructura de datos a transmitir / recibir. Walang mga podemos definir las variable na may longitud variable, sino ang longitud fija, debido a cuando se transmiten todos los datos a la vez, el que recibe debe saber separar cada byte recibido y saber a que valor de variable asignar dichos bytes recibidos. Ito ay ang paghahanda sa un tren, con distintos vagones y la estación que los recibe debe saber cuantos y para que empresa deben ir. Quiero transmitir 5 datos a la vez, Si pulso el joystick, y los voltajes (motor Izquierdo y Derecho) y sentido (adelante / atrás) de cada motor del vehículo, que extraigo de la posición del mismo.

Hakbang 14: Defino El Tipo De Función ESP-NGAYON

Defino El Tipo De Función ESP-NGAYON
Defino El Tipo De Función ESP-NGAYON

.- Defino el tipo de función que realizará cada Wemos. Quizás debido a la falta de Experienceencia en el protocolo ESP-NGAYON, siya ay nag-uusap ng mga problema sa pag-uusap ng isang tao sa iyo at sa iyong sarili. Siempre me ha funcionado bien poniendo los dos como bidireccionales (Role = 3)

Hakbang 15: Emparejamiento De Los Dispositivos ESP-NGAYON:

Emparejamiento De Los Dispositivos ESP-NGAYON
Emparejamiento De Los Dispositivos ESP-NGAYON

.- Emparejamiento de los dispositivos. Mahalaga: En sketch del joystck debo poner la AP MAC de la Wemos del vehículo. En el sketch del vehículo, debo poner la AP MAC del joystick.

.- Como clave (key), he puesto igual en ambos, la unión de ambas AP MAC, por ejemplo.

Hakbang 16: Envío De Datos Al Vehículo:

Envío De Datos Al Vehículo
Envío De Datos Al Vehículo

.- Envío de datos al vehículo, figura siguiente. Primero hay que paghahanda esos vagones del tren que hay que enviar (data), con recuadro rojo. Sa gayon, tiyak na nais mong malaman (da), kung saan ang AP MAC de la Wemos del vehículo at ang paayon na kabuuan ng TREN. Una vez definidos estos datos anteriores, se envía el paquete de datos (cuadro verde).

Recuerda: Quiero transmitir 5 datos a la vez, Si pulso el joystick, y los voltajes (motor Izquierdo y Derecho) y sentido (adelante / atrás) de cada motor del vehículo.

Tras el envío, verifico que el vehículo ha recibido los datos correctamente (cuadro azul).

Hakbang 17: Recepción De Datos En El Vehículo:

Recepción De Datos En El Vehículo
Recepción De Datos En El Vehículo

.- Recepción de datos en el vehículo. Esta es la función que he usado en la Wemos del vehículo. Como se puede ver la pongo en modo de recepción (con respuesta, call back) y la data recibida la asigno a las variables (vagones del TREN) con la misma estructura utilizada en ambos:

Pinasimple ko ang bago, puedo transmitir / recibir datos vía Wifi ESP-NGAYON para sa sencilla.

En los siguientes pasos describesiré el sketch de Arduino del mando a distancia (joystick).

Hakbang 18: Joystick: Kahulugan De Pines Y Mga variable

Joystick: Kahulugan De Pines Y Mga variable
Joystick: Kahulugan De Pines Y Mga variable
Joystick: Kahulugan De Pines Y Mga variable
Joystick: Kahulugan De Pines Y Mga variable

.-Tras definir la librería de ESP-NGAYON, defino los pines que voy a utilizar de la Wemos

.- Ang mga variable na depinisyon ay nauugnay sa posteriormente:

Hakbang 19: Pag-setup ()

Pag-setup ()
Pag-setup ()

.- Ya en setup (), en la primera parte, defino como van a trabajar los pines de la Wemos y un valor inicial de los mismos. También verifico que el protocolo ESP-NGAYON ay maaari nang mag-apply. Y tras ello, defino el modo de trabajo y emparejamientos anteriormente comentados:

Hakbang 20: Loop ()

Loop ()
Loop ()
Loop ()
Loop ()

.- Inicio el loop () con un retardo que nos marca el número de transmisiones o lecturas del joystick que quiero hacer por segundo (figura siguiente). Naisip niya ang 60 msg, kung paano mo makita ang 15 mga leksyon para sa iyo. Después leo el estado del pulsador de emergencia del joystick. Si se pulsa, pongo a cero los valores de los motores, transmito y establezco un retardo donde no responde a nada hasta que pase ese tiempo (en mi caso de 5 segundos, delay (5000);).

.- El resto del loop (), son las llamadas a las funciones que utilizo, que posteriormente explicaré.

Hakbang 21: Funcion LeePots ()

Funcion LeePots ()
Funcion LeePots ()

.- Leo el estado de los potenciómetros y de la batería. Los retardos (antala) que pongo de 5msg son para que las lecturas en los optoacopladores sean precisas. Hay que tener en cuenta que desde que se activa el led, tarda unos microsegundos (unos 10) sa pagtataguyod ng salida, as que que pongo 5 msg para sa mga lektura na ito ay mas tama. Se podría bajar este retardo perfectamente.

Hakbang 22: Funcion AjustePots ()

Funcion AjustePots ()
Funcion AjustePots ()

.- Una vez leídos los potenciómetros y el estado de labatería, hay que transformar el Movimiento del joystick en sentido y corriente hacia los motores. Si analizamos el potenciómetro vertical, por ejemplo, los pasos están mostrados en la figura siguiente.

1.- El valor total en el Movimiento (mimoimo, reposo, mimoximo) estre entre 0 y 1024.

2.- Averiguar cual es el punto medio del mismo (reposo de la palanca). Ver leePot ();

3.- Establecer un margen para hindi mabaon ang mga sasakyan sa pamamagitan ng ligeros Movimientos o que no afecten las fluctuaciones eléctricas.

4.- Convertir los Movimientos hacia arriba o hacia abajo en sentido y corriente de los motores.

Los pasos 2 a 4 los realizo en ajustePots ();.

Hakbang 23: Función DirMot ()

Función DirMot ()
Función DirMot ()

.- Partimos del hecho de que un dispositivo de dos motores, sin eje de dirección, necesita unos valores de sentido y voltaje hacia los mismos. Ang koneksyon ng hacia adelante / atrás y hacia la izquierda / derecha en sentido / voltaje lo realizo en dirMot (), teniendo en cuenta las 3 direcciones hacia adelante izquierda / frontal / derecha, lo mismo hacia atrás e integrporo el giro sobre sí mismo. Cuando va hacia adelante y giro, lo que hago es reducir el voltaje de la rueda a la que giro, proporcionalmente al Movimiento del joystick y evitando los valores negativos (se descontrola el vehículo), por lo tanto, el valor de reducción nunca puede ser menor que el valor de avance (como mucho, para el motor). Ito ang uso de la variable de giro (VariableGiro). Esta variable convierte el giro en mas suave y el vehículo se controla mejor.

Como la función es grande, se puede sacar del fichero INO adjunto.

Tiene varios casos, dependiendo de la posición del joystick:

.- Centrado y en reposo (vehículo parado).

.- Giro sobre si mismo (izquierda o derecha).

.- Avance (con o sin giro)

.- Retroceso (con o sin giro)

Hakbang 24: Kontrolin ang De Batería En El Joystick:

Kontrolin ang De Batería En El Joystick
Kontrolin ang De Batería En El Joystick

.- Para sa iyo, upang makontrol ang estado ng la batería. Cuando el joystick está en reposo, o no ha podido transmitir, incremento un contador. Si alcanza un valor deseado (50 veces), analizo el estado de la batería y hago parpadear el led (1 parpadeo = baja, 2 parpadeos = muy baja)

Hakbang 25: Arduino (Vehículo)

Arduino (Vehículo)
Arduino (Vehículo)
Arduino (Vehículo)
Arduino (Vehículo)

Sobre la parte correspondiente a las comunicaciones (ESP-NGAYON) para sa joystick, maaari kang mag-una, por lo que analizo el resto. Hay que tener en cuenta de que lo he simplificado bastante, para sa si hay que hacer modificaciones, se trabaja mejor modificando el mando a distancia que a tener que poner el vehículo en la mesa y conectarlo al ordenador. Para sa iyo, sa akin limito a recoger los datos de Movimiento y pasarlos al L298N para sa mga se muevan los motores. Priorizo la recepción del pulsador de emergencia y en los tiempos sin Movimiento, analizo el estado de la batería.

.- Pines de entrada salida de la placa Wemos y Variables usadas:

.- ya en el setup () inicio los pines y su estado inicial. El resto de setup es sobre ESP-NGAYON:

Hakbang 26: Vehículo, Loop ():

Vehículo, Loop ()
Vehículo, Loop ()
Vehículo, Loop ()
Vehículo, Loop ()
Vehículo, Loop ()
Vehículo, Loop ()

.- En loop (), aparte de mirar el estado de la batería, mando ejecutar dos funciones, una comentada ya al hablar del ESP-NGAYON, recepción () y la otra realiza el manejo del L298N con los datos recibidos. Para sa supuesto, lo primero es analizar una posible emergencia y parar el vehículo.

Primero establezco un pequeño retardo en las comunicaciones, para sincronizar el receptor mas o menos con el transmisor. Ejecuto la función de recepción () y analizo si se ha pulsado “Emergencia” para sa tagapag-isyu ng isang inmovilización. Si no recibo datos o Movimiento de ninguno de los motores, los paro también mediante el envío de datos a la función wroteL298N (). Si no hay datos, incremento un contador para revisión de la batería. Si hay datos recibidos, enciendo el led de comunicaciones y por supuesto, los mando a la función wroteL298N () para que se mueva el motor según dichos datos.

Hakbang 27: Vehículo: - Sumulat ng FunciónL298N ()

Vehículo: - Sumulat ng FunciónL298N ()
Vehículo: - Sumulat ng FunciónL298N ()
Vehículo: - Sumulat ng FunciónL298N ()
Vehículo: - Sumulat ng FunciónL298N ()

.- Función wroteL298N () Si recordais la tabla del L298N, simplemente es escribir dichos valores con los datos recibidos

Hakbang 28: Pangwakas:

Ésto es todo. No es mi intención ganar concursos, sino aclarar conceptos. Si UNA persona agradece este trabajo, le sirve para adquirir un conocimiento y después desarrollar alguna idea propia, me conformo. Si uno lo implementa en una silla de ruedas y hace mas confortable la vida a una persona, me haría mucha ilusión.

Adjunto PDF en español y PDF at Inglés

Adjunto los ficheros de arduino de ambos dispositivos.

Un saludo:

Miguel A.

Inirerekumendang: