Turinys:

Comunicación ESP-NOW. Valdymas Remoto De Vehículo, vairasvirtė, Arduino Wemos .: 28 žingsniai
Comunicación ESP-NOW. Valdymas Remoto De Vehículo, vairasvirtė, Arduino Wemos .: 28 žingsniai

Video: Comunicación ESP-NOW. Valdymas Remoto De Vehículo, vairasvirtė, Arduino Wemos .: 28 žingsniai

Video: Comunicación ESP-NOW. Valdymas Remoto De Vehículo, vairasvirtė, Arduino Wemos .: 28 žingsniai
Video: no prende FORD ESCAPE HYBRID 2005-2008 código P1A10 Powertrain Control Module Engine Disabled 2024, Liepa
Anonim
Comunicación ESP-NOW. Valdymas Remoto De Vehículo, vairasvirtė, Arduino Wemos
Comunicación ESP-NOW. Valdymas Remoto De Vehículo, vairasvirtė, 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 neidesidad de empujar la misma. Como ejemplo de funcionamiento, he creado este proyecto. Posteriormente se pueden cambiar los circuititos salida y los motores, por otros de burger potencia y acoplar a las ruedas de la silla un system 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 controlar los movimientos del joystick y 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.

Dokumento pabaigoje pridedu šio darbo PDF failą anglų kalba (interneto vertėjas).

Paskutinis dokumentas, pritaikytas PDF formatu ir baigtas español.

1 žingsnis: Įvadas:

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

.- Wemos, especificaciones eléctricas.

.- Protocolo de comunicaciones ESP-NOW.

.- 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. Los valores provenientes de un joystick, se transmiten de forma rápida, segura y fácil por medio de Wifi usando el protocolo ESP-NOW. En el vehículo, otra Wemos recibe los datos y acciona dos motores DC para controlar la directcció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 komponentes de bajo precio siempre es una patenkinamas cuando lo ves funcionar. Aparte de eso, me conformo con que a una persona le guste o le aclare algún conceptto o duda.

Intentaré explicar los conceptos usados para mejor comprensión del trabajo. Quizás a algunos le parezca interesante alguna parte del mismo.

2 žingsnis: „Placa De Desarrollo Arduino Wemos“:

„Arduino Wemos“aikštė
„Arduino Wemos“aikštė
Arduino Wemos aikštė
Arduino Wemos aikštė
Arduino Wemos aikštė
Arduino Wemos aikštė

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

„Con ella podemos realizar proyector IoT“, analogas de data and envío a través de las redes y otras muchas cosas, aprovechando la capacityidad Wifi de las mismas. Jau antrasis 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. La diferencia respecto al anterior es que en vez de usar protokoll HTLM para la comunicación, uso la característica muy poco publicada de la comunicación WiFi del tipo ESP-NOW entre dos dispositivos, por ser fácil, rápida, segura (encriptada) y sin necesidad de 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.

La placa dispone de una entrada de alimentación de 5v en el pinrespondiente (o por USB) y de una 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. „Wemos podemos verlo y adjunto también“yra duomenų lapo duomenų lapas, skirtas reguliavimo sistemai.

ESP8266 elektroninio ryšio grandinė, 3 įtampos įtampos įpurškimo įtaisas, 3 colių maitinimo šaltinis ir aukštesnės įtampos 3,5 volto įtampos reguliatorius, 3 k. En dicho link se puede ver otros detalės técnicos que amplian esta information.

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

La Placa también dispone de 9 entradas/salidas digitalles (D0-D8). Todas tienen la capacityidad de poder trabajar con salidas del tipo PWM, bus I2C ir kt.

Išsamiai išnagrinėkite ir suplanuokite skaitmeninį skaitmeninį vaizdą, iliumarinius šviesos diodus, aktyvųjį ryšį ir kt. La corriente máxima que puede entregar un pin Digital es de 12mA. Jei reikia, įveskite teisingą informaciją, įveskite tarpkalibrinį entre el pin y el dispositivo un transistor o un opto acoplador de burger potencia. Ver figura de salidas.

Atsparumas 330 omų įtampos serijai ir 10 mA įtampos įtampos nustatymas, galima tikėtis, kad tai įmanoma, aumentar el valor de las resistencias. Hay en muchas webs la recomendación de una resistencia de 330 ohm and serie con los leds Yo recomiendo usar resistencias mas altas. Si ilumina el led to nuostabaus malonumo, be būtinų sumar mAs al trabajo Cualquier ahoro de energía siempre es bueno.

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

La placa Wemos también dispone de una entrada digital A0, para análisis de datos analógicos. Hay que tener en cuenta dos cosas. La primera es que NO se le puede aplicar un voltaje superior a 3.3v directamente, ya que se degradrarí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.

Otros charakteristikos:

-Salida de 3.3v para alimentar schemos exteriores. Mamaxima corriente 12mA iš kaiščio.

-„Micro USB“mikroprocesorius, skirtas programinei įrangai ir 5 v alimentui

-Pulsador de Reset.

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

3 žingsnis: „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)

Man gusta la placa de desarrollo Wemos, ya que tiene poco tamaño, es barata y tiene muchas posibilidades. Como solo dispone de una entrada analógica A0, Surge el problem de querer captar varios valores analógicos al mismo tiempo. Para mi caso en concreto, unjoick está formado por dos potencmetros con salidas individual analógicas and unspuls. Además, quiero analizar el valor faktinis 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 akumuliatoriai yra de 3.3V, la entrada analógicare riesgo de averiarse, por ello conviene redcir el voltaje para su análisis. Voy a usar una bateria de 3.7v, por lo que cuando está cargada completamente es de aproximadamente 4v y debido al divisor de voltaje, en el pin 4 de H1 tenemos 2v (kintamasis priklausomybės lygis nuo akumuliatoriaus). A la derecha tenemos un joystick básico, formado por dos potencmetros 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 (pušys 2, 3 ir 4 de H1) y un valor digital (pin 1 de H1).

„Wemoslos 3“yra analitinis, pasikartojantis ir nepakartojamas optoakopladoras, mikroschema SFH615A arba 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 a GND. Todos los pin 3 unidos ya 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 kintamasis (puodelis 1 metai) 2 vairasvirtė ir baterija).

Hay que tener en cuenta que no podemos conectar la salida digital de la Wemos directamente al pin 1 del TLP621, ya que se badraría dicha salida digital. Cada pin digital ir Wemos puede suministrar unos 12mA. Por ello, intercalamos una resistencia suficiente para activar el led interno. Con 470 Ω, yra pakankamas aktyvumas ir tik 7 mA.

Al querer Introducir 3 valores analógicos mediante este system, usamos 3 salidas digitalles para poder activarlas. Si queremos Introducir mas valores analógicos por A0, podemos usar otras salidas digitals other or podemos seguir usando solo 3 salidas digitals, añadiendo al circuit and demultiplexor y dando valores binarios a las entradas, conseguimos hasta 8 posibles valores digitles.

Añadimos al Mando a distancia 2 leds, vienas iš „Power ON“atspindžių ir antrasis elementas, skirtas baterijoms ir „Transmisión OK“.

Añado al circuitito un interruptor para la baterija ir un conector para poder recargar la misma sin tener que quitarla (aviso: APAGAR PARA RECARGAR par evitar dañar el regulador ME6211 de la placa Wemos). Išsami informacija apie įvykius, pilną mandato grandinę ir distancinį vairasvirtę, skirtą figūrai.

4 žingsnis: 2 vairasvirtė:

Joystick 2
Joystick 2

Arduino IDE paaiškinimas:

En A0 recojo los valores de los potencimetros y del nivel de la batería.

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

Si aktyvo D1, leo el estado del potenciómetro vertical del joystick ir A0.

Si aktyvo D2, leo el estado del potenciametro horizontal del joystick ir A0.

Si aktyvo D5, leo el estado de la batería ir A0. PASTABA: en un principio lo puse en D4, pero me daba problem al flashhear el program 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 įtaisas 3,6 y 3,5v, 2 parpadeos enter 3,5 y 3,4v ir 3 parpadeos debajo de 3,4v).

El led rojo indica Encendido/Power ON.

S1 - tai pertraukiklis. Suderinkite tenerlo apagado cuando se realiza la carga de la baterija arba si modifikavimas ir el. Programinė įranga (5v ir USB).

El Esquema del circuitito montado en una protoboard es la figura siguiente:

La línea inferior positiva es el voltaje de la batería. La línea superior positiva es la salida de 3.3v de la Wemos

5 žingsnis: vairasvirtė „Placa De Circuitos“:

„Placa De Circuitos“vairasvirtė
„Placa De Circuitos“vairasvirtė
„Placa De Circuitos“vairasvirtė
„Placa De Circuitos“vairasvirtė
„Placa De Circuitos“vairasvirtė
„Placa De Circuitos“vairasvirtė
„Placa De Circuitos“vairasvirtė
„Placa De Circuitos“vairasvirtė

Jis turi „Sprint-Layout 6.0“schemos schemą, skirtą valdyti vairasvirtę, akopladorus, „Wemos y otros“. Indico las medidas por si alguien la quiere realizar (40x95mm). Šieno que tener cuidado con el pin 1 de los TLP621. Van soldados al terminal cuadrado y en la posición indicada visto desde la cara de los komponentai. 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 a distancia. Naudojant USB laidus, baterijas ir įjungimo/išjungimo pertraukiklius.

Fácil de sujetar, aunque sea un poco grande. Man reikia realios informacijos apie mediją, skirtą 3D elgesiui:

6 žingsnis: „Circuito Del“receptorius („Motores“):

„Circuito Del Receptor“(„Motores“)
„Circuito Del Receptor“(„Motores“)

Apskaičiuokite kitą vietą „Wemos“, valdykite valdymo svirtį arba valdykite nuotolinio valdymo pultą ir valdykite nuotolinio valdymo pultą, taip pat valdykite „L298N“(„doble puente en H“) ir „controlar dos motores“, hacia adelante y hacia atrás, con control de directcción. Kompiuterio grandinė, 3 šviesos diodai, įjungtas maitinimas, antrasis perdavimo ir duomenų perdavimo įtaisas, nurodantis „parada de emergencia“. Aprovecho estos dos últimos (parpadeando) para la indicación del estado de la batería del vehicleículo.

Akumuliatorių valdymo valdymas: „Lo primero a tener en cuenta es que la batería que estoy usando es de 9v“. Intentar medir la misma lt A0 directamente, supone degradrar el puerto, ya que el máximo valor que se le puede aplicar es de 3.3v. Para evitarlo, ponemos también second divisor de voltaje, esta vez mas descompensado que en el mando a distancia y reducir el valor en A0. Para este caso, utilizo un unistor de 47k ir serija con otro de 4k7. En el punto central es donde tomo la referencia a medir. „Bateria baja“, 7v ir 5,5v, 1 paroda „Emergencia“. „Bateria MUY baja“(5, 5v, 3 parfade del led “Recepción ok”)

Visa transporto priemonės grandinė ir el. Sistema:

Debido a que este circuitito está montado sobre un vehicleículo, no he querido comparar mucho el sketch de Arduino. Paprastas duomenų valdymas vairasvirtėmis per „Wi-Fi“ESP-NOW ir los convierte en señales de los para motores. Tai taip pat palengvina que en futuros cambios de software or modificaciones de trayectoria, realus solo solo ir el mando a distancia (vairasvirtė) ir ved de en ambos.

Ne, jis realizuoja ninguna placa de circuititos especial. „Tan solo“su laikinais para los leds y sus resistencias.

7 žingsnis: 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 deskripción del circuitito que controla los motores DC que mueven el vehicleículo.

- A y B konektoriai (azules de 2 pušys). 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“(3 pušys). Es la entrada de corriente al circuit. Como el mismo puede ser alimentado entre 6 y 36 voltios, hay que tener muy en cuenta el jumper or 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 Cirito ir alimenta con un voltaje superior a 12v, hay que quitar el puente para que no se dañe el convertidor DC-DC que lleva y si queremos que funcione su circuititer, lógica, deberemos llevar un cable de 5v externo hacia el circuitito (5v įvestis). En mi caso, como utilizo una bateria de 9v, lo dejo 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 pušys). Tiene dos partes. ENA, IN1, IN2 valdymas el motor conectado en A y ENB, IN3, IN4 que controlan el 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, atras o frenado. EN ENA y lt ENB šienas unos puentes. Si los dejamos puestos, el L298N pondrá los motores al voltaje de entrada Vm en el sentido indicado, sin ningún control de velocidad ni de reguleció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.

„L298N“paveikslėlyje „Arduino UNO“esantis eskizas ir nepakartojamas eskizas, kaip ir žirų el. Variklis A hacia adelante ir 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.

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. Naudokite tik 9v (Vm) ir 6v baterijas. 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 no se badre y como mucho proporcione los 6v máximo. Ambas cosas, como ya comentaba anteriormente, en el sketch de Arduino del mando a distancia.

8 žingsnis: 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 effectivo. Quizás diseñe e imprima ir 3D un modelio mas bonito, bet modelis „casero“tiene la ventaja de ver mejor el funcionamiento. Egzistuoja serija de motores, con reductora incluida y ruedas para acoplar, a bajo precio. Yo he usado lo que tengo a mano.

Para el montaje, jis impreso ir 3D unikalus piezas, ruedas, soporte de rodamiento/motor y unos casquillos y uso tornillería de 3mm de diámetro para unir las piezas. Vienintelis variklio motoroleris gali būti naudojamas, kai jis susisiekia su bendrininkavimu, o ne reguliuoja deramą būseną. 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 circuititos y la rueda trasera. La diferencia de altura la marca el tipo de rueda que pongamos, para mantener el vehicleículo horizontal. La distancia entre la rueda trasera y la primera plataforma nos debe asegurar el giro de la misma, por eso tuve que correctgir el primer agujero, como veis en las fotos.

Añado los circuititos ir visos paskutinės baterijos yra prijungtos prie poder cargarla.

Como veis, no es un gran diseño. Mi intención es aplicar este system a una silla de ruedas como comentaba al principio de este trabajo. Pero ya que lo tengo desarrollado, pozityvi liga ir tipo transporto priemonė.

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

9 žingsnis: Arduino:

Arduino
Arduino

Šis principas yra pagrįstas, be jokių papildomų plėtinių, skirtų konfigūruoti „IDE de Arduino“, librerias y como debe reconocer la placa Wemos para poder trabajar con ellas. Solo unos duomenys:

.- En Preferencias, Gestor de URLs adicionales:

arduino.esp8266.com/stable/package_esp8266com_index.json

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

10 veiksmas: „Qué MacAddress Tiene Nuestra Placa“?

Qué Mac Adresas Tiene Nuestra Placa?
Qué Mac Adresas Tiene Nuestra Placa?

Kompiuteris prieš tai yra neįtikėtinas anes de trabajar su el protokolu ESP-NOW, deemos cargar este pequeño eskizas en las Wemos con las que vamos a trabajar, para saber la AP MAC de las ESP8266 que llevan integradas. En Herramientas, Monitor Serie podemos ver el resultado del eskizas ir 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 data:

11 veiksmas: ESP-DABAR

Naudodami AP AP MAC de las placas, komentaras ir protocolo ESP-NOW desarrollado por Espressif:

„ESP-NOW permite un control directo y de baja potencia de las luces inteligentes, sin la necesidad de un enrutador. Este método es energéticamente eficiente y conveniente.

ESP-Now es otro protokolą desarrollado por Espressif, que permite que praeitples dispositivos se communiquen entre sí syn usar Wi-Fi. Protokolai yra panašūs į 2,4 GHz dažnio potencialą. Por lo tanto, el emparejamiento entre dispositivos es necesario antes de su comunicación. Una vez que se realiza el emparejamiento, la conexión es segura y de igual a igual, sin que sea necesario un apretón de manos. “

Pagrindinė informacija ir nuoroda:

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

ESP-NOW yra vieno protokolo stiprintuvas, leidžiantis įveikti galimas situacijas, tačiau tai yra vienintelė forma, skirta bendravimui ir perdavimui.

12 žingsnis: Librería ESP-NOW

Librería ESP-NOW
Librería ESP-NOW

El sketch que he preparado solo un dispositivo transmite (joystick) y second recibe sus datos (vehículo). Vis dėlto reikia, kad ten butų tenas cosas comunes comunes, las cuales paso a descriptionir.

.- Inicio de la librería ESP-NOW

13 žingsnis: La Estructura De Datos a Transmitir/recibir:

„Estructura De Datos“ir „Transmitir/recibir“
„Estructura De Datos“ir „Transmitir/recibir“

.- La estructura de datos a transmitir/recibir. No podemos definir las variables con longitud variable, sino de 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. Es como cuando se prep un tren, con distintos vagones y la estación que los recibe debe saber cuantos y para que empresa deben ir. Siųskite 5 duomenis iš la vezio, Si pulso el joystick, y los voltajes (motor Izquierdo y Derecho) ir sentido (adelante/atrás) de cada motor del vehículo, que extraigo de la posición del mismo.

14 žingsnis: „Defino El Tipo De Función“ESP-DABAR

„Defino El Tipo De Función“ESP-DABAR
„Defino El Tipo De Función“ESP-DABAR

.- Defino el tipo de función que realizará cada Wemos. Quizás debido a la falta de experiencecia en el protocolo ESP-NOW, he tenido ciertos problems cuando a uno lo defino como maestro y al otro como esclavo. Siempre me ha funcionado bien poniendo los dos como bidireccionales (Vaidmuo = 3)

15 žingsnis: Emparejamiento De Los Dispositivos ESP-NOW:

Emparejamiento De Los Dispositivos ESP-NOW
Emparejamiento De Los Dispositivos ESP-NOW

.- Emparejamiento de los dispositivos. Svarbu: „AP MAC de la Wemos del vehicleículo“eskizas su vairalazdės debo poneriu. Automobilio eskizas, „AP MAC“vairasvirtė.

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

16 žingsnis: 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 preparar esos vagones del tren que hay que enviar (duomenys), con recuadro rojo. Después, hay que definir a quien lo envío (da), que es la AP MAC de la Wemos del vehículo y la longitud total del TREN. Una vez definidos estos datos anteriores, se envía el paquete de datos (cuadro verde).

Atkurti: „Quiero“perdavimo 5 duomenys, si pulso el joystick, y los voltajes (motor Izquierdo y Derecho) ir 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).

17 žingsnis: „Datos En El Vehículo“priėmimas:

Receptas De Datos En El Vehículo
Receptas 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 data data recibida la asigno a las variables (vagones del TREN) con la misma estructura utilizada en ambos:

Su paprastu priekiniu, puedo siųstuvo/recibiro duomenimis, Wifi ESP-NOW de forma sencilla.

En los siguientes pasos aprašomas eskizas de Arduino del mando a distancia (vairasvirtė).

18 žingsnis: vairasvirtė: apibrėžimas „Pines Y“ir kintamieji

Vairasvirtė: Apibrėžimas De Pines ir kintamieji
Vairasvirtė: Apibrėžimas De Pines ir kintamieji
Vairasvirtė: Apibrėžimas De Pines ir kintamieji
Vairasvirtė: Apibrėžimas De Pines ir kintamieji

.-Tras apibrėžta librería de ESP-NOW, defino los pines que voy a utilizar de la Wemos.

.- Defino las kintamieji, kuriuos reikia naudoti:

19 veiksmas: sąranka ()

Sąranka ()
Sąranka ()

.- 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-NOW esté inicializado bien. Y tras ello, defino el modo de trabajo y emparejamientos anteriormente comentados:

20 veiksmas: ciklas ()

Ciklas ()
Ciklas ()
Ciklas ()
Ciklas ()

.- 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). Jis gavo 60 msg, con lo que realizo unas 15 lecturas por segundo mas o menos. Después leo el estado del pulsador de emergencia del joystick. Si se pulsa, pongo a cero los valores de los motores, transfero 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é.

21 veiksmas: „Funcion LeePots“()

„Funcion LeePots“()
„Funcion LeePots“()

.- Leo el estado de los potencimetros y de la batería. Los retardos (delay) 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) en setilizar la salida, así que le pongo 5 msg para que las lecturas sean mas correctas. Se podría bajar este retardo perfectamente.

22 veiksmas: „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 potencimetro vertical, por ejemplo, los pasos están mostrados en la figura siguiente.

1.- El valor total en el movimiento (mínimo, reposo, máximo) está entre 0 y 1024.

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

3.- Establecer un margen para que no se mueva el vehículo con ligeros movimientos o que no afecten las fluctuaciones eléctricas.

4.- Konvertuoti los movimientos hacia arriba o hacia abajo en sentido y corriente de los motores.

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

23 veiksmas: „Función DirMot“()

„Función DirMot“()
„Función DirMot“()

.- Partimos del hecho de que un dispositivo de dos motores, sin eje de directcción, necesita unos valores de sentido y voltaje hacia los mismos. La conversión de 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 ir incporo 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). De ahí el 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“, priklausomybė nuo posūkio valdymo svirties:

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

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

.- Avansas (con o sin giro)

.- Retroceso (con o sin giro)

24 žingsnis: valdykite „Batería En El Joystick“:

„Bateria En El Joystick“valdymas
„Bateria En El Joystick“valdymas

.- Por último, el control del estado de la batería. Cuando el joystick está en reposo, o no ha podido broadcastir, inkremto 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)

25 žingsnis: Arduino (Vehículo)

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

Tinkamas la parte susirašinėjimas (ESP-NOW) su el. Vairasvirte, ya se comentaron anteriormente, por lo que analizo el resto. Hay que tener en cuenta de que lo he simpleplicado bastante, para que si hay que hacer modificaciones, se trabaja mejor modificando el mando a distancia que a tener que poner el vehicleículo en la mesa y conectarlo al ordenador. Por ello, me limitito a recoger los datos de movimiento y pasarlos al L298N para que 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. Atkurti sąranką ESP-NOW:

26 veiksmas: 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-NOW, recepción () y la otra realization el manejo del L298N con los data recibidos. Por 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 or menos con el transmisor. Ejecuto la función de recepción () y analizo si se ha pulsado “Emergencia” para procedur a la inmovilización. Si no recibo datos o movimiento de ninguno de los motores, los paro también mediante el envío de data a la función writeL298N (). Nėra jokių šieno duomenų, padidėja ir atnaujinamas baterijų atnaujinimas. Si hay datos recibidos, enciendo el led de comunicaciones y por supuesto, los mando a la función writeL298N () para que se mueva el motor según dichos data.

27 žingsnis: Vehículo: - Función WriteL298N ()

Vehículo: - Función WriteL298N ()
Vehículo: - Función WriteL298N ()
Vehículo: - Función WriteL298N ()
Vehículo: - Función WriteL298N ()

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

28 žingsnis: Finalas:

Ir taip. 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 konform. Si uno lo implementa en una silla de ruedas y hace mas confortable la vida a una persona, me haría mucha ilusión.

PDF koregavimas ir español y PDF en Inglés

Adjunto los ficheros de arduino de ambos dispositivos.

Nesveikai:

Migelis A.

Rekomenduojamas: