Inhoudsopgave:

Communicatie ESP-NOW. Bedien Remoto De Vehículo, Joystick, Arduino Wemos. - Ajarnpa
Communicatie ESP-NOW. Bedien Remoto De Vehículo, Joystick, Arduino Wemos. - Ajarnpa

Video: Communicatie ESP-NOW. Bedien Remoto De Vehículo, Joystick, Arduino Wemos. - Ajarnpa

Video: Communicatie ESP-NOW. Bedien Remoto De Vehículo, Joystick, Arduino Wemos. - Ajarnpa
Video: Как отслеживать и контролировать ESP32 из любой точки мира с помощью RemoteXY IoT Cloud 2024, Juli-
Anonim
Communicatie ESP-NOW. Bedien Remoto De Vehículo, Joystick, Arduino Wemos
Communicatie ESP-NOW. Bedien Remoto De Vehículo, Joystick, Arduino Wemos

Een deel van het idee van het verplaatsen van een persoon naar een persoonlijke handicap door middel van een rem op de weg naar een oorzaak die nodig is voor een misma. Como ejemplo de funcionamiento, hij creado este proyecto. Achterste pueden cambiar los circuits de salida y los motores, door otros de mayor potencia y acoplar een las ruedas de la silla un sistema mecánico que la mueva.

Het is een persona que va en silla de ruedas está capacitada para manejarla personalmente, se pueden Fusionar ambos sketches de Arduino en uno solo en evitaar las comunicaciones remotes. Eenvoudige bediening van de bewegingen van de joystick en de besturing van de motor.

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

Aan het einde van het document voeg ik een PDF in het Engels van dit werk toe (webvertaler).

Al final del documento, adjunto un PDF met el trabajo completo en español.

Stap 1: Introductie:

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

.- Wemos, elektrische apparaten.

.- Communicatieprotocol ESP-NOW.

.- Circuito L298N. Especificaciones y pinout del mismo.

.- Montaje vehículo con dos motores DC

Dit is een voorbeeld van een aantal verschillende analyses en introducties en een uniciteit van de avond van Wemos. Losse bewezen bewezen van joystick, verzonden door middel van het verzenden, scheiden en verzenden van wifi-gebruik en protocol ESP-NOW. En het voertuig, andere Wemos recibe los data y accona dos motores DC para controlar la 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 t eunmo y con componentes de bajo precio e cu en satisfac. Aparte de eso, me conformo con que a un persona le guste of le aclare algún concepto o duda.

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

Stap 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 sarrollo con amplias posibilidades:

Con ella podemos realizar proyector IoT, análisis de datos y envío a través de las rees 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 un cerradura remota, mediante una clave tecleada desde nuestro smartphone, que también he publicado. Het verschil tussen beide is voorafgegaan door het gebruik van protocollen 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 (enigsgezind) emparejamientos a la hora de actuar (solo al configurar en sketch de Arduino). Mas adelante, a la hora de explicar el sketch, comentaré los detalles a tener en cuenta.

La Placa dispone de unentrada de aimentación de 5v en el pin correspondiente (op USB) en de unentrada 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 un imagen de la datasheet del regulador.

Según el link de las especificaciones del ESP8266, podría trabajar incluso a 3v, pero conviene alimentarlo con un voltaje superior a 3.5v, para que a la salida del regulador interno tengamos un minimo de 3v. En dicho link se puede ver otros detalles técnicos que amplian esta información.

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

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

U kunt zien wat u kunt zien aan digitale apparaten, verlichte led's, geactiveerde relais, enz. De meest recente versie van de pin Digitale es van 12mA. Het is noodzakelijk om een 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 ohm, se entrega una corriente de 10mA, por lo que si es posible, aumentar el valor de las resistencias. Hay en veel webs la recomendación de un resistencia de 330 ohm en serie con los leds Yo recomiendo usar resistencias mas altas. Si ilumina el leidde een nuestro gusto, no necesitamos sumar mAs al trabajo Cualquier ahoro de energía siempre es bueno.

NOTA: en los pines digitales, podemos dar valores PWM tussen 0 en 1023. En Arduino Uno, tussen 0 en 254.

La placa Wemos beschikbaar voor digitale A0, voor analyse van gegevens. 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 deterioraría. Si se quiere medir un voltaje superior, hay que intercalar un deler de voltaje externo. Los valores de dicha entrada son de 0 a 1024.

Andere kenmerken:

-Salida van 3.3v voor alimentaire circuits aan de buitenkant. Máxima corriente 12mA por pin.

-Conector micro USB voor de firmware en voeding van 5v

-Pulsador de Reset.

Hay muchos tutorials de como configurar en IDE de Arduino voor trabajar con este tipo de placa, así como las librerías necesarias. Geen voy a entrar en ello para no alargar demasiado este trabajo.

Stap 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. Como solo dispone de una entrada analógica A0, surge el 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, quiero analizar el valor actual de la batería que uso and el mando a distancia, que ya ya necesitamos tomar 3 valores analógicos distintos.

En el siguiente esquema, creado con Fritzing, tenemos a la izquierda un deler de voltaje. Dit is de manier waarop de 3.3v is gemaakt, de analyse van de resultaten van de averiarse, door het conviene reducir el voltaje para su análisis. Voy a usar un batería de 3.7v, door de cuando está cargada completamente 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 is een externe joystick). Zie alimentan met 3.3v que proporciona la Wemos. En este esquema general primero, tenemos 3 valores analógicos (pines 2, 3 y 4 de H1) y un valor digital (pin 1 de H1).

Voor de analyse van de wemoslos 3 valores analógicos, recurrimos a unos pequeños opto-acopladores, el chip SFH615A of TLP621. Het is een belangrijke functie van het functioneren van de trabajo. En el pin 4 del chip pongo uno de los valores analógicos a analizar. Todos los pin 2 een GND. Todos los pin 3 unidos ya A0 y cada uno de los pin 1 a una salida digital a través de un resistance, 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 en bateria).

Hay que tener en cuenta que no podemos conectar la salida digital de la Wemos directamente al pin 1 del TLP621, ya que se deterioraría dicha salida digital. Cada pin digitaal en Wemos puede suministrar unos 12mA. Door ello, intercalamos un resistencia suficiente para activar el led interno. Con 470, is voldoende voor activarlo y solo supone 7 mA.

Al querer introducir 3 valores analógicos mediante este sistema, usamos 3 salidas digitals para poder activarlas. Er is een inleiding tot het analyseren van de digitale versie van A0, het gebruik van digitale gegevens voor het maken van een digitale versie van de drie digitale digitale apparaten, een digitale kaart van demultiplexer en het maken van digitale en digitale documenten.

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

U kunt een verbinding maken met de batterij en de verbinding maken met de fout die u kunt maken (zie: APAGAR PARA RECARGAR voor de elektronische regel ME6211 de la placa Wemos). Con todo lo anteriormente explicado, el circuito completo del mando a distancia con joystick es la siguiente figura.

Stap 4: Joystick 2:

Joystick 2
Joystick 2

Explicación para el posterior desarrollo en de IDE van 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")

Actieve D1, leo en estado van de verticale potentiële joystick en A0.

Actieve D2, leo en estado van potenciómetro horizontale joystick en A0.

Si activo D5, leo el estado de la bateria en A0. NOTA: 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 heeft geleid tot de beweging van de joystick en de overdracht van de juiste volgorde. Dit is een bron van indica van de batterij (1 parpadeo tussen 3.6 en 3.5v, 2 parpadeos tussen 3.5 en 3.4v en 3 parpadeo's op 3.4v).

El led rojo indica Encendido/Power ON.

S1 is de interruptor de encendido. Conviene tenerlo apagado cuando se realiza la carga de la batería of 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 linea inferior positiva es el voltaje de la bateria. La linea superior positiva es la salida de 3.3v de la Wemos

Stap 5: Joystick Placa De Circuitos:

Joystick Plaça de Circuitos
Joystick Plaça de Circuitos
Joystick Plaça de Circuitos
Joystick Plaça de Circuitos
Joystick Plaça de Circuitos
Joystick Plaça de Circuitos
Joystick Plaça de Circuitos
Joystick Plaça de Circuitos

Hij maakt gebruik van de volgende circuits met Sprint-Layout 6.0 voor de joystick, opto acopladores, Wemos en otros. Indico las medidas por si alguien la quiere realizar (40x95mm). Hay 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 componentes. 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. En los bordes, las conexiones USB, de connector van de carga de la batería en de interruptor de ON/OFF.

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

Stap 6: Circuito Del Receptor (motoren):

Circuito Del Receptor (motoren)
Circuito Del Receptor (motoren)

Het is mogelijk om op een andere manier te werken, de gegevens van de joystick of de bediening van de afstandsbediening en de activering van de functies die nodig zijn voor de L298N (dubbele puente en H) en de controle over de motor, de afstandsbediening en de controle over de bediening te controleren. Como complemento del circuito, 3 leds, uno para power ON, otro para la transmisión de datos y un tercero como indicativo de "parada de emergencia". Aprovecho estos dos últimos (parpadeando) para la indicatie del estado de la batería del vehículo.

Control de estado de la batería: Lo primero a tener en cuenta 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 aplicares the 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. Voor het geval u een weerstand van 47k en een serie van 4k7 kunt gebruiken. En el punto central es donde tomo la referencia a medir. "Bateria baja", tussen 7v en 5.5v, 1 parpadeo del led de "Emergencia". "Bateria MUY baja" (door debajo de 5, 5v, 3 parpadeos del led "Recepción ok")

El circuito completo del vehículo es el siguiente:

Debido een vraag naar de circuits die een voertuig kunnen maken, nee hij vraagt een complicar veel te schetsen van Arduino. Eenvoudige bediening van de joystick via wifi ESP-NOW en de controle over de motor. Eso facilita a que en futuros cambios de software of modificaciones de trayector, se realicen solo en el mando a distancia (joystick) en vez de en ambos.

Nee hij realiseert zich ninguna placa de circuitos especial. Tan solo una voorlopige para los leds y sus resistencias.

Stap 7: L298N (dubbele Puente En H)

L298N (dubbel Puente En H)
L298N (dubbel Puente En H)
L298N (dubbel Puente En H)
L298N (dubbel Puente En H)

Dit is een beschrijving van het circuit van de motor van de DC door de voertuigen.

- Conectores A y B (azules de 2 dennen). 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 dennen). Es la entrada de corriente al circuito. Como el mismo puede ser alimentado tussen 6 en 36 voltios, hay que tener muy en cuenta el jumper o puente que hay junto al conector. Je kunt alimentatie met een voltaje tussen 6 en 12v, het begin van de dag PUESTO y en Vlogico tenemos una salida de 5v hacia la Wemos (como en este trabajo). Het stroomcircuit is voorzien van een spanning van een 12v, die niet meer kan worden aangesloten op een gelijkstroom-gelijkstroomconvertor DC-DC kan worden aangesloten op een elektronische circuit, deberemos kan worden aangesloten op een kabel van 5v extern (5v invoer). En mi caso, como utilizo una batería de 9v, lo dejo puesto y me sirve para alimentar la placa Wemos a través del pin 5v. GND heeft een negatieve invloed op de batería y va también a G de la Wemos en a los leds.

Conector de Control (6 dennen). Tiene dos partes. ENA, IN1, IN2 controlan 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 toner para poner en movimiento los motores, adelante, atras of 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 indicado, sin ningún control de velocidad ni de regulación de voltaje. Si los quitamos, usaremos dichos pines para recibir un señal PWM desde la placa Wemos y así controlar la velocidad de cada motor. En Arduino gaat verder met het commando analogWrite(). En la placa Wemos, todas los puerto D tienen esa capacidad.

En la figura del L298N hay un recuadro met un pequeño sketch para Arduino UNO, que hará girar el motor Een hacia adelante en een voltaje cercano al 75% van Vm.

Een eerdere afbeelding van een tekst, een verklaring van analogeWrite() met een formele beschrijving van de pijnbomen voor Arduino UNO. En la Wemos, el 100% se conigue con analogWrite(1023) en 50% sería analogWrite(512).

Een 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 que afhankelijkheid del valor del voltaje de la batería y del voltaje de los motores. U kunt gebruikmaken van een batterij van 9v (Vm) en motoren van 6v. Al ir aumentando la señal PWM en ellos, el voltaje del motor asciende, pero no comienza a move hasta que llega a un moed determinado, por lo que en las pruebas, se debe establecer ese minimo PWM que lo haga mover a baja velocida. Door een ander deel van het algemeen 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 WM para máx geen se deteriore y como mucho proporcione los 6v máximo. Ambas cosas, como ya comentaba anteriormente, en el sketch de Arduino del mando a distancia.

Stap 8: Montaje del Vehículo:

Montaje Del Vehiculo
Montaje Del Vehiculo
Montaje Del Vehiculo
Montaje Del Vehiculo
Montaje Del Vehiculo
Montaje Del Vehiculo

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 mejor el funcionamiento. Existen una serie de motores, con reductora incluida y ruedas para acoplar, a bajo precio. Yo hij usado lo que tengo a mano.

Para el montaje, he impreso and 3D unas piezas, ruedas, soporte de rodamiento/motor y unos casquillos y uso tornillería de 3mm de diámetro para unir las piezas. Het is de motor van de motor, die gebruikt wordt om contact te maken met de elektrische aansluiting van de plastic 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:

U kunt samen met de montaje de los dos conjuntos motriz, los op een plataforma van 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 horizontal. 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, no es un gran diseño. Mi intención es aplicar este sistema a un 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.

Stap 9: Arduino:

Arduino
Arduino

Como escribí al principio, no puedo extenderme mucho y prescindo de como configurar and IDE de Arduino, librerías y como de reconocer la placa Wemos para poder trabajar con ellas. Solo-gegevens:

.- En Preferencias, Gestor de URLs adicionales:

arduino.esp8266.com/stable/package_esp8266com_index.json

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

Stap 10: ¿Qué MacAddress Tiene Nuestra Placa?

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

Het is niet onoverkomelijk dat er een overeenkomst is tussen ESP-NOW, die de mogelijkheid biedt om een schets te maken en een nieuwe versie van de overeenkomst met de AP MAC van ESP8266 en alle integraties. En Herramientas, Monitor Serie podemos ver el resultado del sketch y 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:

Stap 11: ESP-NU

Una met de AP MAC de las placas, gecomienzo a hablar del 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 handye.

ESP-Now is een protocol voor espresso, dat u meerdere malen kunt communiceren via Wi-Fi. Gelijkaardige protocollen voor het aansluiten van 2,4 GHz op een menudo se implementa en ratones inalambricos. Por lo tanto, el emparejamiento entre dispositivos es necesario antes de su comunicación. U kunt uw emparejamiento, de onderlinge verbinding en 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-reference/network/esp_now.html

ESP-NOW geeft een uitgebreid protocol en veel meer mogelijkheden, die u kunt gebruiken voor het communiceren van de communicatie en het verzenden van gegevens en het gebruik ervan.

Stap 12: Libreria ESP-NOW

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

El sketch que he preparado solo un dispositivo transmittere (joystick) y otro recibe sus datos (vehículo). Pero ambos deben tener cosas comunes necesariamente, las cuales paso a describir.

.- Inicio de la librería ESP-NOW

Stap 13: La Estructura De Datos een Transmitir/recibir:

La Estructura De Datos a Transmitir/recibir
La Estructura De Datos a Transmitir/recibir

.- La estructura de datos een zender/recibir. No podemos definir las variables con longitud variable, sino de longitud fija, debido a cuando se senden todos los data a la vez, el que recibe debe sabre separar cada byte recibido y saber a que valor de variable asignar dichos bytes recibidos. Dit is een voorbereiding voor het bereiden van een reis en een vaststaand recept voor het maken van sabels en het maken van empresa deben ir. De vijf zenders zijn uitgerust met de elektronische joystick, de elektrische bediening van de motor en de motor van de motor.

Stap 14: Definieer El Tipo De Función ESP-NOW

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

.- Definitieve functie van de werkelijke functie van Wemos. Quizás debido a la falta de experiencia en el protocolo ESP-NOW, the tenido ciertos problemas cuando a uno lo defino como maestro y al otro como esclavo. Siempre me ha funcionado bien poniendo los dos como bidireccionales (Rol=3)

Stap 15: Emparejamiento De Los Dispositivos ESP-NOW:

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

.- Emparejamiento de los dispositivos. Belangrijk: En el sketch del joystck debo poner la AP MAC de la Wemos del vehículo. En de schets van de voertuigen, de beschrijving van de AP MAC van de joystick.

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

Stap 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 hooi que preparar esos vagones del tren que hay que enviar (data), met 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).

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

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

Stap 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. Het is een functie van het gebruik en de 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:

Y simplemente con lo anterior, puedo transmitter/recibir data vía Wifi ESP-NOW de forma sencilla.

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

Stap 18: Joystick: Definicion De Pines Y Variabelen

Joystick: Definicion De Pines Y Variabelen
Joystick: Definicion De Pines Y Variabelen
Joystick: Definicion De Pines Y Variabelen
Joystick: Definicion De Pines Y Variabelen

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

.- Definino las variabelen que usaré posteriormente:

Stap 19: Setup()

Opstelling()
Opstelling()

.- Ya en setup(), in de eerste plaats, defino como van een trabajar los pines de la Wemos en een 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:

Stap 20: lus()

Lus()
Lus()
Lus()
Lus()

.- Inicio el loop() con un retardo que nos marca el numero de transmisiones of lecturas del joystick que quiero hacer segundo (figura siguiente). Hij puesto 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. Geef een antwoord op de vraag of de motor kan worden ingeschakeld, laat het ons niet nalaten en wacht niet langer met het sluiten van de dag (in 5 segundos, vertraging (5000);).

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

Stap 21: Functie LeePots()

Functie LeePots()
Functie LeePots()

.- Leo el estado de los potenciómetros y de la bateria. Los retardos (vertraging) que pongo de 5msg son para que las lecturas en los optoacopladores sean precisas. Hay que tener en cuenta que desde que se active el led, tarda unos microsegundos (unos 10) en estabilizar la salida, así que pongo 5 msg para que las lecturas sean mas correctas. Kies een bajar este retardo perfectamente.

Stap 22: Functie AjustePots()

Functie AjustePots()
Functie AjustePots()

.- U kunt gebruikmaken van de mogelijkheden van de labatería, het transformeren van de joystick en het sturen van de motor. Si analizamos el potenciómetro vertical, por ejemplo, los pasos están mostrados en la figura siguiente.

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

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

3.- Er is geen marge meer voor het vervoer van voertuigen die geen invloed hebben op de elektrische schommelingen.

4.- Convertir los movimientos hacia arriba of hacia abajo en sentido y corriente de los motores.

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

Stap 23: Functie DirMot()

Functie DirMot()
Functie 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. 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 el so incorporo el. 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 en evitando los valores negativos (se descontrola el vehículo), per tantoucci, el valor de red menor que el valor de avance (como mucho, para el motor). De ahí el uso de la variabele de giro (VariabeleGiro). Esta variabele 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.

Verschillende casos, afhankelijk van de positie van de joystick:

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

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

.- Avance (met of zonder acceptgiro)

.- Retroceso (met bon)

Stap 24: Bedien De Batería En El Joystick:

Besturing De Batería En El Joystick
Besturing De Batería En El Joystick

.- Por último, el control del estado de la bateria. Cuando el joystick está en reposo, o no ha podido transmitter, incremento un contador. Si alcanza un valor deseado (50 veces), analizo el estado de la bateria y hago parpadear el led (1 parpadeo=baja, 2 parpadeos=muy baja)

Stap 25: Arduino (voertuig)

Arduino (voertuig)
Arduino (voertuig)
Arduino (voertuig)
Arduino (voertuig)

Sobre la parte correspondiente a las comunicaciones (ESP-NOW) con el joystick, ya se comentaron anteriormente, por lo que analizo el resto. Hay que tener en cuenta de que simplificado bastante, para que si hay que hacer modificaciones, se trabaja mejor modificando el mando een distancia que a tener que poner el vehículo en la mesa y conectarlo al ordenador. Door ello, me limito a recoger los data 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. El resto de setup es sobre ESP-NOW:

Stap 26: Voertuig, Loop():

Voertuig, Loop()
Voertuig, Loop()
Voertuig, Loop()
Voertuig, Loop()
Voertuig, Loop()
Voertuig, Loop()

.- En loop(), aparte de mirar el estado de la batería, mando ejecutar dos funciones, een commentaar op ya al hablar del ESP-NOW, recepción() y la otra realiza el manejo del L298N con los datos recibidos. Voor zover het gaat om mogelijke noodgevallen en voertuigen.

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 proceder a la inmovilización. Dit is geen geldige reden voor het verplaatsen van de motor, los van het midden van de functie van het schrijven van de functie writeL298N(). Si no hay datos, incremento un contador para revisión de la batería. Het is goed om te weten, en het leidde tot communicatie en communicatie, los mando en función writeL298N() para que se mueva el motor según dichos datos.

Stap 27: Voertuig: - Functie WriteL298N()

Voertuig: - Functie WriteL298N()
Voertuig: - Functie WriteL298N()
Voertuig: - Functie WriteL298N()
Voertuig: - Functie WriteL298N()

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

Stap 28: Finale:

Wat is er te doen. Geen 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. Dit is een manier om het een en ander uit te voeren en een comfortabele manier om een persona te zijn, me haría mucha illusión.

Adjunto PDF en español y PDF en Engels

Adjunto los ficheros de arduino de ambos dispositivos.

Un saldo:

Miguel A.

Aanbevolen: