Sadržaj:

Komunikacija ESP-SADA. Upravljajte Remoto De Vehículo, Joystick, Arduino Wemos .: 28 koraka
Komunikacija ESP-SADA. Upravljajte Remoto De Vehículo, Joystick, Arduino Wemos .: 28 koraka

Video: Komunikacija ESP-SADA. Upravljajte Remoto De Vehículo, Joystick, Arduino Wemos .: 28 koraka

Video: Komunikacija ESP-SADA. Upravljajte Remoto De Vehículo, Joystick, Arduino Wemos .: 28 koraka
Video: 13 sorprendentes PREDICCIONES de Nikola TESLA sobre el futuro 2024, Juli
Anonim
Komunikacija ESP-SADA. Upravljajte Remoto De Vehículo, Joystick, Arduino Wemos
Komunikacija ESP-SADA. Upravljajte Remoto De Vehículo, Joystick, Arduino Wemos

Todo parte de la idea de poder mover una silla de ruedas para personal 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, de otros de Mayor potencia y 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á kapacitada para manejarla personalmente, se pueden fusionar ambos skice de Arduino en uno solo y evitar las comunicaciones remotas. Jednostavno, única placa para kontroler 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.

Na kraju dokumenta prilažem PDF ovog djela na engleskom jeziku (web prevodilac).

Završni dokument, dodatak u PDF -u sa trabajo kompletan na engleskom.

Korak 1: Uvod:

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

.- Wemos, especificaciones eléctricas.

.- Protokol o komunikaciji ESP-SADA.

.- Circuito L298N. Especificaciones y pinout del mismo.

.- Montaje vehículo con dos motores DC

En este trabajo explico como tomar varios valores analógicos i uvod u unúnico puerto A0 de una placa Wemos. Los valores provenientes de un džojstik, koji se prenosi putem formata, osigurava i podržava putem Wi-Fi-ja koristeći protokol ESP-NOW. Na vozilu, Wetra prima povratne informacije i podatke o motociklima DC -a za kontroliranje upravljanja vozilom.

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 componentsntes 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.

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

Korak 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 posibilidades:

Con ella podemos realizar proyector IoT, analizira podatke i envío na traves de las redes y otras muchas cosas, aprovechando la capacityid Wifi de las mismas. En otro proyecto que he realizado, creo una red wifi propia y puedo abrir una cerradura remota, mediant una clave tecleada desde nuestro smartphone, que también and publicado. La diferencia respecto al anterior es que en vez de usar protocolo HTLM para la comunicación, so 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 necesid emparejamientos a la hora de actuar (solo al konfigurator sa skicom za Arduino). Mas adelante, a la hora de explicar el skica, komentirajući manje detalja a tener en cuenta.

La placa dispone de una entrada de alimentación de 5v en el pin korespondente (or USB) and un una entrada de GND. Diha alimentación no tiene porque ser 5v, que lleva un regulalador 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 regulalador.

Según el link de las especificaciones del ESP8266, podría trabajar includeso 3v, per conviene alimentarlo con un voltaje superior a 3.5v, para que a la salida del regulatoror interno tengamos un mínimo 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). Svi ti kapaciteti su povezani sa PWM -om, sabirnicom I2C itd.

Detaljnije o tener muy en cuenta a la hora de conectar algo a la salida de los pines digitales, para iluminar LED, activar relés itd. La corriente máxima que puede entregar un pin Digital es de 12mA. Ako vam je potreban entregar mas corriente, debemos intercalar entre el pin y el dispositivo un tranzistor ili opto acoplador de Mayor potencia. Ver figura de salidas.

Con una resistencia en serie con la salida de 330 ohms, entrega una corriente de 10mA, por lo que si es possible, aumentar el valor de las resistencias. Hay en muchas web la recomendación de unao resistancecia de 330 ohm en serie con los leds Yo recomiendo usar resistencias mas altas. Si ilumina el je vodio nuestro gusto, nema potrebe sumar mAs al trabajo Cualquier ahoro de energía siempre es bueno.

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

Tablični tablični prostor Wemos dispone de un entrada digital A0, paralelno sa analitičkim podacima. Hay que tener en cuenta dos cosas. La Primera es que NO se primjenjuje na napon bolji od 3.3V usmjerenja, pa se morate pogoršati. Si se quiere medir un voltaje superior, hay que intercalar un divisor de voltaje externo. Los valores de dicha entrada sin 0 do 1024.

Otras características:

-Salida od 3.3V za vanjske vanjske krugove. Máxima corriente 12mA por pin.

-Mikro USB konektor za isporučeni firmver i alimentaciju od 5V

-Pulsador de Reset.

Hay muchos tutoriales de como configurar 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.

Korak 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. Kao samostalni ulazni analitički uređaj A0, problem sa povećanjem broja analitičkih analitičara i pogrešnih problema. Para mi caso en concreto, un joysick está formado por dos potenciómetros con salidas individuales analógicas y un pulsador. Además, koji je analizirao valjanost stvarne de la bateríe koju je potrebno iskoristiti na udaljenosti, ili locirao potrebnu tomarnu vrijednost od 3 valorizirana analitika.

En el siguiente esquema, creado con Fritzing, tenemos a la izquierda un divisor de voltaje. Si la bateria es de mas de 3.3V, la entrada analógica corre riesgo de averiarse, por ello conviene reducir el voltaje para su análisis. Voy a usar una batería de 3.7v, or lo que cuando está cargada completamente as aproximadamente 4v y debido al delitel de voltaje, en pin 4 de H1 tenemos 2v (variable de zavisendo de la batería). A la derecha tenemos un džojstik básico, formado dos dos potenciómetros y un pulsador (R3 es externa al joystick). Se alimentan con los 3.3v que proporciona la Wemos. En es escema general primero, tenemos 3 valores analógicos (borovi 2, 3 i 4 de H1) i nevažeći digitalni (pin 1 de H1).

Za analizu podloga na pladnju Wemoslos 3 valoriziranih analoga, recidiva i neovisnih opto-akopladora, sa čipom SFH615A ili TLP621. Es muy básico su funcionamiento para este trabajo. En pin 4 ili čip pongo uno de los valores analógicos i analiza. Kako biste izgubili pin 2 i GND. Todos los pin 3 unidos ya A0 y cada uno de los pin 1 a una salida digital with a 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 digital de la Wemos directionce al pin 1 del TLP621, ye que se pogoršava dicha salida digital. Cada pin digital en Wemos puede suministrar unos 12mA. Por ello, intercalamos una resistencia suficiente para activar el interno. Sa 470 Ω, dovoljno je aktivirati i solo supone 7 mA.

Ako želite da uvedete 3 valorijske analitičke medijane u sistem, upotrijebite 3 digitalne cifre za aktivaciju poder. Si queremos uvodi mas valores analógicos preko 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 ima 8 mogućih valoita.

Añadimos al mando i distancia 2 LED, unio parafragme "Power ON" i otrovo za batería "Transmisión OK".

Uključite prekidač i prekidač za bateriju i konektor za poder recargar la misma sin tener que quitarla (aviso: APAGAR PARA RECARGAR za evitar dañar el regulador ME6211 de la placa Wemos). Con todo lo anteriormente explicado, el circuito completo del mando a distancia con joystick es la siguiente figura.

Korak 4: Joystick 2:

Joystick 2
Joystick 2

Objašnjenje za zadnji desarrollo i IDE de Arduino:

En A0 je rekojo 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")

Ako aktivirate D1, označite vertikalnu džojstik i A0.

Aktivirajte D2, levo el potenciometar za horizontalnu navigaciju i A0.

Ako ste aktivirali D5, leo el estado de la batería i A0. NAPOMENA: en un principio lo puse en D4, pero me daba problems allashear el program desde el IDE de Arduino, por lo que la pasé a D5

La salida D3 se koristi za upravljanje Actividadom (azul). Dicho je vodio računarsku navigaciju s džojstikom i prenio je ispravku. Možete prikazati reposo nosne oznake 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 po debajo od 3.4v).

El led rojo indica Encendido/Uključeno.

S1 es el interruptor de encendido. Prilagođeni tenerlo apagado vam omogućava da realizujete bateriju sa baterija ili da promijenite softver i softver (5V na USB -u).

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

La línea inferior pozitiva es el voltaje de la batería. La línea superiorna pozicija sa 3.3V de la Wemos

Korak 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

On isporučuje signalnu ploču sa Sprint-Layout 6.0 para la 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. Van soldados al terminal cuadrado y en la pozición indicada visto desde la cara de los components. 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, conector de car de la batería i el prekidač ON/OFF.

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

Korak 6: Circuito Del Receptor (Motores):

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

Está compuesto por otra placa Wemos, dobavite podatke sa joystick -a za daljinsko upravljanje i aktiviranje las señales neophodnih uređaja sa L298N (doble puente en H) y kontroler dos motores, hacia adelante y hacia atrás, con control de dirección. Como complemento del circuito, 3 LED -a, uno para napajanje UKLJUČENO, dodatno para prijenos podataka sa zapisa i un tercero kao indikatori "parada de emergencia". Aprovecho estos dos últimos (parpadeando) para la indicación del estado de la batería del vehículo.

Control de estado de la batería: Lo primero a tener en cuenta es que la batería que estoy usando es de 9v. Interesirajte grešku i A0 smjernice, podložite pogoršanje puerto -a, možete primijeniti maksimalnu hrabrost da biste primijenili aplikacije na 3.3V. Para evitarlo, ponemos tambien otro divisor de voltaje, esta vez mas descompensado que en el mando a distancia y reducir el valor en A0. Za ovaj slučaj, upotrijebite otpornik od 47 k na seriji sa otrovom od 4 k 7. En el punto central es donde tomo la referencia a medir. "Bateria baja", ulaz 7v i 5.5v, 1 dio diode "Emergencia". "Baterija MUY baja" (na portalu 5, 5v, 3 par LED diode "Recepción ok")

El circuito completo del vehículo es el siguiente:

Debido a que este circuito está montado sobre un vehículo, no he querido complicar mucho el skica de Arduino. Jednostavno pošaljite podatke s džojstika putem Wi-Fi-ja ESP-SADA i oslobodite kontrolu nad upravljanjem para motorom. Omogućava vam i postavljanje novih softverskih softvera o modifikacijama trajektorije, kao i samostalno i daljinsko upravljanje (džojstik) u ambijentima.

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

Korak 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)

Ovo je unaprijed opisan krug koji kontrolira motocikl DC koji je već uključen u vozilo.

- Conectores A y B (azules de 2 bora). 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 bora). 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. Krug se napaja sa vanjskim naponom superiornog a 12v, može se pretvoriti u električni napon za napajanje ako se ne pretvara u DC-DC que llevu y si queremos koji je funkcionalan u strujnom krugu, deberemos llevar i vanjski kabel od 5 volti vanjski električni krug (5 v ulaz). En mi caso, como utilized una batería de 9v, lo dejo puesto y me sirve para alimentar la placa Wemos a traves 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 borova). Tiene dos partes. ENA, IN1, IN2 upravljački motor povezan s A y ENB, IN3, IN4 konektorom upravljačkog motora i B. En la tabla de la figura anterior se prikazuje 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 indicado, sin ningún control de velocidad ni de regulación de voltaje. U tom slučaju, usaremos dichos pines para recibir una señal PWM desde la placa Wemos y así upravljački la velocidad de cada motor. U Arduinu je potrebno posredovati i komandovati analogWrite (). En la placa Wemos, todas los puerto D tienen esa capacidad.

Na slici L298N možete vidjeti recuadro i skicirati skicu za Arduino UNO, jer je na njoj motor sa motorom A 75% od Vm.

Prethodno prikazana tekstura, objašnjenje relacije analognog Write () u obliku salida sa lošim borovima za Arduino UNO. En We Wemos, 100% se sastoji od analogWrite (1023) i 50% serije 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 mediaante el comando analogWrite, ya que dependen del valor del voltaje de la batería y del voltaje de los motores. Za ovo vrijeme, baterija je napajana 9V (Vm) i 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 ne može se pogoršati u skladu sa proporcijama los 6v max. Ambas cosas, como ya comentaba anteriormente, en skica Arduino del mando a distancia.

Korak 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 modele bonito, ili modelo "casero" tiene la ventaja de ver mejor el funkcionamiento. Postojite una serie de motores, con reductora incluida y ruedas para acoplar, bajo precio. Yo he usado lo que tengo a mano.

Za montažu, on će prikazati 3D unas piezas, ruedas, soporte de rodamiento/motor y unnos casquillos y uso tornillería de 3mm de diametar para unir las piezas. Para la unión del motor al tornillo eje, he usado los contactos de una regleta 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 cm (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 namjeravamo primijeniti sistem na 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 skica de Arduino que he realizado.

Korak 9: Arduino:

Arduino
Arduino

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

.- En Preferencias, Gestor de URLs adicionales:

arduino.esp8266.com/stable/package_esp8266com_index.json

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

Korak 10: ¿Qué MacAddress Tiene Nuestra Placa?

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

Como paso je prethodio i impresivan antes de trabajar sa protokolom ESP-NOW, debemos cargar este pequeño skica na las Wemos con las que vamos a trabajar, para sablja la AP MAC de las ESP8266 que llevan integradas. En Herramientas, Monitor Serie podešava rezultate rezanja o skici i anotaciji na AP -u kada je Wemos postavljen.

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

Korak 11: ESP-SADA

Una vez con la AP MAC de las placas, comienzo a hablar del protocolo ESP-NOW desarrollado por Espressif:

“ESP-NOW dozvoljava i kontrolira direkciju y de baja potencia de las luces inteligentes, sin la necesidad de un enrutador. Este método es energéticamente eficiente y comfortente.

ESP-Now je dodatni protokol za desarrollado Espressif-a, koji dopušta više različitih dispozitiva koji se zajednički prijavljuju sa vašeg Wi-Fi-ja. Protokoli su slični i uključuju konektivne inženjerske komponente sa potencijalom od 2,4 GHz u meniju sa implementacijom ratona u unutrašnjosti. Por lo tanto, el emparejamiento entre dispositivos es necesario antes de su comunicación. Una vez que se realizira el emparejamiento, la conexión es segura y de igual a igual, sin que sea necesario un apretón de manos. “

Dodatne informacije na linku:

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

ESP-NOW je protokolarno pojačan i sa svim mogućim mogućnostima, ali i većina informacija o formatu komunikacije sa dispozitivom i odašiljanjem datog zapisa, ako se koristi kompletna forma.

Korak 12: Librería ESP-SADA

Librería ESP-SADA
Librería ESP-SADA

Sketch que he Preparado solo and dispositivo transmite (joystick) y otro recibe sus datos (vehicle). Pero ambos deben tener cosas comunes necesariamente, las cuales paso a description.

.- Inicio de la librería ESP-SADA

Korak 13: La Estructura De Datos a Transmitir/recibir:

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

.- La estructura de datos a transmitir/recibir. Nema podemos definir las varijabli sa longitud varijabla, sino de longitud fija, debido a cuando se prenosi todos los datos a la vez, el que recibe debe sabre separator cada byte recibido y sabre a que valor de variable asignar dichos bytes recibidos. Es como cuando se priprema za tren, sa razlikama vagones y la estación que los recibe debe sabre cuantos y para que empresa deben ir. Prenesite 5 podataka na 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.

Korak 14: Definirajte El Tipo De Función ESP-SADA

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

.- Definirajte funkcionalnost koja je realizirana u Wemos-u. Quizás debido a la falta de experiencia en protokol ESP-NOW, on 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 (Uloga = 3)

Korak 15: Emparejamiento De Los Dispositivos ESP-SADA:

Emparejamiento De Los Dispositivos ESP-SADA
Emparejamiento De Los Dispositivos ESP-SADA

.- Emparejamiento de los dispositivos. Važno: Nacrtajte džojstik za rad sa AP MAC -om sa Wemos -a na vozilu. Na skici vozila, debo poner sa AP MAC -om na džojstiku.

.- Como clave (ključ), on puesto igual en ambos, la unión de ambasador AP MAC, por ejemplo.

Korak 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 pripremiti esos vagones del tren que hay que enviar (podaci), 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 longitud total total TREN. Una vez definitios estos datos anteriores, se envía el paquete de datos (cuadro verde).

Recuerda: Quiero transmiter 5 datas la la vez, Si pulso el joystick, y los voltajes (motor Izquierdo y Derecho) y sentido (adelante/atrás) de cada motor del vehicle.

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

Korak 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. Komo se puede ver la pongo en modo de recepción (con respuesta, call back) i podaci primaju povratne informacije o asigno a las varijablama (vagones del TREN) con la misma estructura utilizada en ambos:

Y simplemente con lo anterior, prijenosni/povratni prijenos podataka putem Wi-Fi-ja ESP-NOW de forma sencilla.

En los siguientes pasos opisuje skicu Arduino del mando a distancia (joystick).

Korak 18: Joystick: Definicion De Pines Y varijable

Joystick: Definicion De Pines Y Variables
Joystick: Definicion De Pines Y Variables
Joystick: Definicion De Pines Y Variables
Joystick: Definicion De Pines Y Variables

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

.- Definirajte varijable que usaré posteriormente:

Korak 19: Postavljanje ()

Postaviti()
Postaviti()

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

Korak 20: Petlja ()

Petlja()
Petlja()
Petlja()
Petlja()

.- 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). On je poslao 60 poruka, nakon što je realizirao 15 lektura nakon što su se pojavile maske. Desué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 (), sin las llamadas a las funciones que utilizo, que posteriormente exlicaré.

Korak 21: Funcion LeePots ()

Funcion LeePots ()
Funcion LeePots ()

.- Leo el estado de los potenciómetros 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 aktivira el led, tarda unos microsegundos (unos 10) en estabilizar la salida, as le que le pongo 5 ms para que las lecturas sean mas correctas. Se podría bajar este retardo perfectamente.

Korak 22: Funcion AjustePots ()

Funcion AjustePots ()
Funcion AjustePots ()

.- Una vez leídos los potenciómetros y el estado de labatería, hay que transformator 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.- Ukupna vrijednost svih valjanosti i pokretljivosti (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.- Pretvorite los movimientos hacia arriba o hacia abajo en sentido y corriente de los motores.

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

Korak 23: Funkcija DirMot ()

Funkcija DirMot ()
Funkcija 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 e incoporo 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.

Ties varios casos, ovisi o poziciji džojstika:

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

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

.- Avance (con o sin giro)

.- Retroceso (con o sin giro)

Korak 24: Upravljajte De Batería En El Joystickom:

Kontrola De Batería En El Joystick
Kontrola De Batería En El Joystick

.- Por último, el control del estado de la batería. Ovu džojstiku možete repozirati, ali ne morate poslati prijenosnik, povećavajući ga u kontaktu. Si alcanza un valor deseado (50 veces), analizovano el estado de la batería y hago parpadear el led (1 parpadeo = baja, 2 parpadeos = muy baja)

Korak 25: Arduino (Vehículo)

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

Sobre la parte korespondiente a las comunicaciones (ESP-NOW) s el džojstikom, možete se komentarisati unaprijed, por lo que analizo el resto. Hay que tener en cuenta de que lo he simpleficado bastante, para que si hay que hacer modificaciones, se trabaja mejor modificando el mando a distancia que a tener que poner el automobile en la mesa y conectarlo al ordenador. Por ello, ograničavam i vraćam podatke o movimiento y pasarlos u L298N, pa se moram 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. Ponovno postavljanje je u toku ESP-SADA:

Korak 26: Vehículo, Loop ():

Vehicle, Loop ()
Vehicle, Loop ()
Vehicle, Loop ()
Vehicle, Loop ()
Vehicle, Loop ()
Vehicle, Loop ()

.- En loop (), aparte de mirar el estado de la batería, mando ejecutar dos funciones, un comentada y al hablar del ESP-NOW, recepción () y la otra realize el manejo del L298N con los datos recibidos. Por supuesto, lo primero je analiza nepostojane hitne situacije ili para vozila.

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 () i analizirano je prikazano “Emergencia” para za postupak a la inmovilización. Ako nemate recibo podataka o movimiento de ninguno de los motores, los paro también mediaan el envío de datos a la función writeL298N (). Ako nemate podataka, to je dodatak za ažuriranje za reviziju de la batería. Ako ste dobili povratne podatke, uključite ih u komunikaciju i vodite računa o sucuesto, tako da možete pokrenuti funkciju writeL298N () ako je potrebno isključiti motor s podacima o datotekama.

Korak 27: Vehicle: - Funkcija WriteL298N ()

Veličina: - Funkcija WriteL298N ()
Veličina: - Funkcija WriteL298N ()
Veličina: - Funkcija WriteL298N ()
Veličina: - Funkcija WriteL298N ()

.- Funkcija writeL298N () Ako ste zapisali tablicu L298N, jednostavno je to opisano u skladu s podacima o povratnim podacima

Korak 28: Završni:

É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 and Inglés

Adjunto los ficheros de arduino de ambos dispositivos.

Un saludo:

Miguel A.

Preporučuje se: