Оглавление:

Comunicación ESP-NOW. Control Remoto De Vehículo, джойстик, Arduino Wemos: 28 шагов
Comunicación ESP-NOW. Control Remoto De Vehículo, джойстик, Arduino Wemos: 28 шагов

Видео: Comunicación ESP-NOW. Control Remoto De Vehículo, джойстик, Arduino Wemos: 28 шагов

Видео: Comunicación ESP-NOW. Control Remoto De Vehículo, джойстик, Arduino Wemos: 28 шагов
Видео: 🚀 Unleashing ESP-NOW Magic! 🕹️ Joystick-Controlled Car for YouTube Shorts #esp32 2024, Июль
Anonim
Comunicación ESP-NOW. Управление Remoto De Vehículo, джойстиком, Arduino Wemos
Comunicación ESP-NOW. Управление Remoto De Vehículo, джойстиком, 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, он 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á capacity para manejarla personalmente, se pueden fusionar ambos sketchs de Arduino en uno solo y evitar las comunicaciones remotas. Простая установка для управления движением джойстика и управления моторами.

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.

В конце документа я прилагаю PDF-файл этой работы на английском языке (веб-переводчик).

Al final del documento, add un PDF con el trabajo complete en español.

Шаг 1: Введение:

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

.- Wemos, especificaciones eléctricas.

.- Протокол общения ESP-NOW.

.- Circuito L298N. Особенности и распиновка разного вида.

.- 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. Джойстик был успешно передан в обычном режиме, и вы можете использовать его по протоколу ESP-NOW. En el vehículo, от Wemos получает данные и aciona dos motores DC для управления движением автомобиля.

Quizás alguien se pueda plantear que las cosas expuestas de estos trabajos, se puedan conguir de forma fácil y barata en alguna web, pero el hecho de hacerlo tu mismo y con components de bajo Precio siempre es unaisfacción cuando lo ves funcion. Aparte de eso, me consformo con que a una persona le guste o le aclare algún concept 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: 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 ampias posibilidades:

Con ella podemos realizar proyector IoT, analisis de datos y envío a través de las redes y otras muchas cosas, aprovechando la capacity 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. La diferencia уважение к переднему es que en vez de usar protocolo 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 (encesidada) emparejamientos a la hora de actar (индивидуальная конфигурация эскиза 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 pin correiente (o por USB) y de una entrada de GND. Dicha alimentación no tiene porque ser 5v, ya que lleva un Regularador 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 image de la datasheet del Regularador.

Связь с особой связью ESP8266, подача питания на 3 В, улучшенное питание с напряжением 3,5 В, для подключения к внутреннему регулятору с напряжением 3 В. En dicho link se puede ver otros detalles técnicos que ampian 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 capidad de poder trabajar con salidas del tipo PWM, bus I2C и т. Д.

Подробная информация о тенере муй и т. Д. А ля хора де конектар алго а ла салида де лос сосны цифровые, светодиоды для освещения, светодиоды и т.д. 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 esposible, 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 привел nuestro gusto, no necesitamos sumar mAs al trabajo Cualquier ahoro de energía siempre es bueno.

ПРИМЕЧАНИЕ: en los pines digitales, podemos dar valores PWM entre 0 y 1023. En Arduino Uno, entre 0 y 254.

La Placa Wemos también Dis una Entrada Digital A0, для анализа аналоговых данных. Hay que tener en cuenta dos cosas. Примеры, которые НЕТ, выбирают приложение с напряжением питания, превосходящим прямое напряжение 3,3 В, и оно ухудшается. 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 alimentar circuitos exteriores. Máxima corriente 12mA через контакт.

-Конектор micro USB для прошивки и питания 5 В

-Pulsador de Reset.

Много обучающих программ для конфигурации IDE де Arduino для работы с типом плаката, как с необходимыми библиотеками. No voy an entrar en ello para no alargar demasiado este trabajo.

Шаг 3: Джойстик Circuito Del (mando a Distancia):

Джойстик Circuito Del (mando a Distancia)
Джойстик Circuito Del (mando a Distancia)
Джойстик Circuito Del (mando a Distancia)
Джойстик Circuito Del (mando a Distancia)

Me gusta la placa de desarrollo Wemos, ya que tiene poco tamaño, es barata y tiene muchas posibilidades. Como Solo Dis una Entrada Analógica A0, Surve el проблема с querer captar varios valores analógicos al mismo tiempo. Para mi caso en concreto, un Joysick está formado por dos Potenciómetros con salidas Individual 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 uniquetos.

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, 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, por lo que cuando está cargada completetamente es de aproximadamente 4v y debido al divisor de voltaje, en el pin 4 de H1 tenemos 2v (переменная зависит от estado de la batería). Базовый джойстик формируется с помощью датчиков и пульсометров (R3 - внешний джойстик). Включено с 3.3V, что пропорционально 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).

Для анализа на плакате Wemoslos 3 аналогичных значения, повторяются и используются для опто-оптических устройств, чип SFH615A или TLP621. Es muy básico su funcionamiento para este trabajo. En el pin 4 del chip pongo uno de los valores analógicos analizar. Теперь вывод 2 на 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 зависимые активные активные y leyendo el valor en A0, asigno a cada valor una variable (pot 1y pot 2 джойстика у батареи).

Если вы хотите, чтобы все было в порядке, вы не можете найти ничего, что связано с цифровым покрытием Wemos, прямо на контакте 1 TLP621, и вы увидите, что оно ухудшается в цифровом формате. Цифровой контактный разъем и Wemos puede suministrar unos 12mA. Por ello, intercalamos una resistencia suficiente para activar el led interno. При 470 Ом, достаточно для активации и автономного питания 7 мА.

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, conguimos hastoresa 8 posibles val.

Активировать на расстоянии 2 светодиода, один из которых предназначен для отражения «Power ON» и находится на расстоянии от батареи и «Transmisión OK».

Перейти на схему прерывателя для батареи и разъема для восстановления неисправности, которая может быть нарушена (указано: APAGAR PARA RECARGAR для того, чтобы убрать регулировку ME6211 на плакате Wemos). Con todo lo anteriormente explicado, el circuito complete del mando a distancia con joystick es la siguiente figura.

Шаг 4: Джойстик 2:

Джойстик 2
Джойстик 2

Explicación para el 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»)

Активный D1, левый верхний предел потенциометра вертикального джойстика и A0.

На активном D2, левом верхнем положении горизонтального джойстика потенциометра и A0.

Si activo D5, leo el estado de la batería en A0. ПРИМЕЧАНИЕ: en un Principio lo puse en D4, pero me daba issuesas 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 (азул). Dicho led se enciende cuando hay movimiento de joystick y la transmisión ha sido correa. 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).

El led rojo indica Encendido / Power ON.

S1 в сущности - это прерыватель. Conviene tenerlo apagado cuando se realiza la carga de la batería or 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. La línea superior positiva es la salida de la Wemos

Шаг 5: Джойстик Placa De Circuitos:

Джойстик Placa De Circuitos
Джойстик Placa De Circuitos
Джойстик Placa De Circuitos
Джойстик Placa De Circuitos
Джойстик Placa De Circuitos
Джойстик Placa De Circuitos
Джойстик Placa De Circuitos
Джойстик Placa De Circuitos

Он разработал сигнальную площадку для схем с Sprint-Layout 6.0 для соединения с джойстиком, оптоволоконными элементами, Wemos и другими. Indico las medidas por si alguien la quiere realizar (40x95 мм). 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 components. La parte de la placa próxima a los conectores y Wemos, la recordto 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, el conector de carga de la batería и el interruptor de ON / OFF.

Fácil de sujetar, старинное море и великое море. Я понял, что это средство для общения с другими людьми в 3D:

Шаг 6: Рецептор Circuito Del (Motores):

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

Está compuesto por otra placa Wemos, donde recibo la data del joystick o control remote y activa las señales necesarias hacia un L298N (doble puente en H) и controlar dos motores, hacia adelante y hacia atrás, con control de dirección. Комбинированный контур, 3 светодиода, один для включения питания, ото для передачи данных и еще один индикатор, указывающий на «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. Intentar medir la misma en A0 directamente, supone defectiorar 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. Для этого случая используйте резистор 47 кОм в серии с 4 кОм. En el punto central es donde tomo la referencia a medir. "Bateria baja", 7v и 5.5v, 1 parpadeo del led de "Emergencia". "Bateria MUY baja" (por debajo de 5, 5v, 3 parpadeos del led "Recepción ok")

Полная схема движения автомобилей и животных:

Debido a que este circuito está montado sobre un vehículo, no he querido complex mucho el sketch de Arduino. Просто получите данные с джойстика через Wi-Fi ESP-NOW и получите контроль над моторами. Это облегчает создание футуро-камби-де-программного обеспечения или модификаций траектории, которое можно использовать только в режиме реального времени и на расстоянии (джойстик) в режиме ожидания.

Нет, он не понимает, что это особенное. Загар соло - временные паралоги светодиодов и сус сопротивлений.

Шаг 7: L298N (doble Puente En H)

L298N (двухместный номер Puente En H)
L298N (двухместный номер Puente En H)
L298N (двухместный номер Puente En H)
L298N (двухместный номер Puente En H)

Esta es una pequeña descripció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 inctir los pines del mismo

Конектор де Пауэр (азуль де 3 сосны). 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 que quitar el puente para que no se dañe el convertidor DC-DC que lleva y si queremos que funcione su circuititería lógica, deberemos llevar un cable de 5v externo hacia el circuito (5v Вход). 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 viene del negativo de la batería y va también a G de la Wemos y a los leds.

Conector de Control (6 сосен). Tiene dos partes. ENA, IN1, IN2, управляющий моторным соединением в A y ENB, IN3, IN4, который управляет моторным соединением в 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 indicado, sin ningún control de velocidad ni de regación de voltaje. Si los quitamos, usaremos dichos pines for recibir una señal PWM desde la placa Wemos y así controlar la velocidad de cada motor. В Arduino используется команда analogWrite (). En la placa Wemos, todas los puerto D tienen esa capidad.

На рисунке L298N восстановлен с эскизным рисунком для Arduino UNO, который работает на двигателе, который находится под напряжением на 75% от Vm.

Передняя графика с текстовым текстом, экспликация по релаксации analogWrite () с формой салиды в соснах для Arduino UNO. En la Wemos, на 100% используйте analogWrite (1023) и 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 valorterminado, 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 Нет никаких дефектов у como mucho proporcione los 6v máximo. Ambas cosas, como ya comentaba anteriormente, en el sketch de Arduino del mando a distancia.

Шаг 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. Викторина дизайна и изображения в 3D-модели бонито, которая является моделью «casero», вент-ла-вентэха де вер мейор-эль-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, он импрессо в 3D unas piezas, ruedas, soporte de rodamiento / motor y unos casquillos y uso tornillería de 3mm de diámetro para unir las piezas. Для соединения мотора торнильо эхе, он использует контактные данные уна реглета де 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 concuntos 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 differencia 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 disñ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 disñe un tipo de vehículo mas elegante.

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

Шаг 9: Arduino:

Ардуино
Ардуино

Como escribí al Principio, no puedo extenderme mucho y prescindo de como configurar el IDE de Arduino, librerías y como debe reconocer la placa Wemos para poder trabajar con ellas. Данные соло unos:

.- En Preferencias, Gestor de URLs adicionales:

arduino.esp8266.com/stable/package_esp8266com_index.json

.- En Herramientas (Инструменты), Gestor de tarjetas, como muestra la imagen:

Шаг 10: ¿Qué MacAddress Tiene Nuestra Placa?

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

Предыдущий и непостижимые антесы движения с протоколом ESP-NOW, демонстрационный рисунок, сделанный в реальном времени, в Wemos с вашим вам, трабахаром, для AP MAC де лас ESP8266, который был интегрирован. 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:

Шаг 11: ESP-NOW

Una vez con la AP MAC de las placas, comienzo 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 comfort.

ESP-Now - это протокол, предназначенный для приготовления эспрессо, который позволяет нескольким устройствам подключаться к сети через Wi-Fi. Эти протоколы похожи на функциональные элементы базовой частоты 2,4 ГГц, в которых меню реализовано с использованием элементов интерфейса. 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. «

Дополнительная информация по ссылке:

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

ESP-NOW - это протокол усиления и обмена мнениями, который можно использовать, чтобы получить доступ к коммуникативным устройствам и передаваемые данные, которые могут быть использованы.

Шаг 12: Librería ESP-NOW

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

Скетч, который он готовит соло и передает (джойстик) и принимает все данные (автомобиль). Pero ambos deben tener cosas comunes necesariamente, las cuales paso a descriptionir.

.- Inicio de la librería ESP-NOW

Шаг 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 amitir / recibir. Нет podemos, определяющих все переменные с продольной переменной, sino de longitud fija, debido a cuando se передаются 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 prepara un tren, con unique vagones y la estación que los recibe debe saber cuantos y para que empresa deben ir. Quiero transferir 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.

Шаг 14: Defino El Tipo De Función ESP-NOW

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

.- Defino el tipo de función que realizará cada Wemos. Quizás debido a la falta de experiencecia en el protocolo ESP-NOW, он решает проблемы ciertos cuando a uno lo defino como maestro y al otro como esclavo. Siempre me ha funcionado bien poniendo los dos como bidireccionales (роль = 3)

Шаг 15: Emparejamiento De Los Dispositivos ESP-NOW:

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

.- Emparejamiento de los dispositivos. Важное замечание: En el sketch del joystck debo poner la AP MAC de la Wemos del vehículo. Эскиз автомобиля, работает с джойстиком AP MAC.

.- Como clave (ключ), он puesto igual en ambos, la unión de ambas AP MAC, por ejemplo.

Шаг 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 preparar esos vagones del tren que hay que enviar (data), 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).

Recuerda: Quiero transferir 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 rightamente (cuadro azul).

Шаг 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, обратный звонок) y la data recibida la asigno a las variables (vagones del TREN) con la misma estructura utilizada en ambos:

Y simplemente con lo anterior, можно передавать / получать данные через Wifi ESP-NOW de forma sencilla.

En los siguientes pasos описывает эскиз Arduino del mando a distancia (джойстик).

Шаг 18: Джойстик: определение переменных Y De Pines

Джойстик: Definicion De Pines Y Variables
Джойстик: Definicion De Pines Y Variables
Джойстик: Definicion De Pines Y Variables
Джойстик: Definicion De Pines Y Variables

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

.- Определить все переменные, которые используются апостериорным образом:

Шаг 19: Настройка ()

Настраивать()
Настраивать()

.- 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: цикл ()

Петля()
Петля()
Петля()
Петля()

.- Начало цикла () с ретардо, которое не оставляет маркирующей цифры, деформирует передачи или лекций джойстика, что это означает, что на втором этапе (фигура siguiente). Он отправил 60 сообщений, после чего реализовал 15 лекций на следующие основные темы. Después leo el estado del pulsador de Emergencia del джойстик. Si se pulsa, pongo a cero los valores de los motores, transfero y establezco un retardo donde no response a nada hasta que pase ese tiempo (en mi caso de 5 segundos, delay (5000);).

.- El resto del loop (), сын ламадов и лас функций, которые используются, явным задним ходом.

Шаг 21: Funcion LeePots ()

Funcion LeePots ()
Funcion LeePots ()

.- Лео-эль-Эстадо-де-лос-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 activa el led, tarda unos microsegundos (unos 10) en installizar la salida, así que le pongo 5 msg para que las lecturas sean mas correas. Se podría bajar este retardo perfectamente.

Шаг 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 (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.- Establecer un margen para que no se mueva el vehículo con ligeros movimientos o que no afecten las fluaciones eléctricas.

4.- Преобразование лос-движения в хаосе арриба о хасиа абахо ан sentido y corriente de los motores.

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

Шаг 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. La convertió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 misiro giro incorpp. 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 pue 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, зависимость от джойстика:

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

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

.- Avance (con o sin giro).

.- Retroceso (con o sin giro).

Шаг 24: Управление джойстиком De Batería En El:

Джойстик Control De Batería En El
Джойстик Control De Batería En El

.- Por último, el control del estado de la batería. Cuando el джойстик находится в репозитории, но не имеет podido transferir, 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)

Шаг 25: Arduino (Vehículo)

Ардуино (Vehículo)
Ардуино (Vehículo)
Ардуино (Vehículo)
Ардуино (Vehículo)

Sobre la parte correiente 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 lo he simpleificado bastante, para que 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. Привет, я ограничиваю распознавание данных о движении и пассажиры на L298N для того, чтобы узнать, что происходит с двигателями. 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. Восстановить настройки в соответствии с ESP-NOW:

Шаг 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-NOW, recpción () y la otra realiza el manejo del L298N con los datos 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 рецептор mas o menos con el transmisor. Ejecuto la función de Recepción () y analizo si se ha pulsado «Emergencia» для процедуры а-ля inmovilización. Если нет данных о движении машинного перевода, то это означает, что вы видите среднюю среду данных с функцией writeL298N (). 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 writeL298N () para que se mueva el motor según dichos datos.

Шаг 27: Vehículo: - Функция WriteL298N ()

Vehículo: - Функция WriteL298N ()
Vehículo: - Функция WriteL298N ()
Vehículo: - Функция WriteL298N ()
Vehículo: - Функция WriteL298N ()

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

Шаг 28: Заключительный:

É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, мне соответствует. 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 en Inglés

Adjunto los ficheros de arduino de ambos dispositivos.

Un saludo:

Мигель А.

Рекомендуемые: