ዝርዝር ሁኔታ:

Comunicación ESP- አሁን። Remoto De Vehículo ፣ Joystick ፣ Arduino Wemos ን ይቆጣጠሩ። 28 ደረጃዎች
Comunicación ESP- አሁን። Remoto De Vehículo ፣ Joystick ፣ Arduino Wemos ን ይቆጣጠሩ። 28 ደረጃዎች

ቪዲዮ: Comunicación ESP- አሁን። Remoto De Vehículo ፣ Joystick ፣ Arduino Wemos ን ይቆጣጠሩ። 28 ደረጃዎች

ቪዲዮ: Comunicación ESP- አሁን። Remoto De Vehículo ፣ Joystick ፣ Arduino Wemos ን ይቆጣጠሩ። 28 ደረጃዎች
ቪዲዮ: Test Serial Communication with Proven Method in Inverter Mini Split AC 2024, ሀምሌ
Anonim
Comunicación ESP- አሁን። ሬሞቶ ዴ ቬሂኩሎ ፣ ጆይስቲክ ፣ አርዱዲኖ ዌሞስን ይቆጣጠሩ።
Comunicación ESP- አሁን። ሬሞቶ ዴ ቬሂኩሎ ፣ ጆይስቲክ ፣ አርዱዲኖ ዌሞስን ይቆጣጠሩ።

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 ፣ እሱ ፕሮዶክቶን ያደንቃል። Posteriormente se pueden cambiar los circuitos de salida y los motores, por otros de Mayor potencia y acoplar a las ruedas de la silla un sistema mecánico que la mueva.

Si la persona que va en silla de ruedas está capacitada para manejarla personalmente, se pueden fusionar ambos sketchs de Arduino en uno solo y evitar las comunicaciones remotas. Simplemente una única placa para controlar los movimientos del joystick y መቆጣጠሪያ ዴ ሎስ ሞተርስ።

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.

በሰነዱ መጨረሻ ላይ በዚህ ሥራ (ድር ተርጓሚ) በእንግሊዝኛ ፒዲኤፍ አያይዣለሁ።

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

ደረጃ 1: መግቢያ:

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

.- Wemos, especificaciones eléctricas.

.- Protocolo de comunicaciones ESP-NOW.

.- ሰርኩቶ L298N. Especificaciones y pinout del mismo.

.- Montaje vehículo con dos motores ዲሲ

ኢን tra trabajo explico como tomar varios valores analógicos e introducirlos en un únicoico puerto A0 de una placa Wemos. ሎስ ቫሎሬስ ፕሮቬንቴንስ ዴ ኤን ጆይስቲክ ፣ ሴ ማሰራጫ ፎርማ 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 dirección del veruulo.

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

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:

ፕላካ ደ Desarrollo Arduino Wemos
ፕላካ ደ Desarrollo Arduino Wemos
ፕላካ ደ Desarrollo Arduino Wemos
ፕላካ ደ Desarrollo Arduino Wemos
ፕላካ ደ Desarrollo Arduino Wemos
ፕላካ ደ Desarrollo Arduino Wemos

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

Con ella podemos realizar proyector IoT, análisis de datos y envío a través de las redes y otras muchas cosas, aprovechando la capacidad Wifi de las mismas. እሱ እሱ እንደገና በሚተላለፍበት ጊዜ ፣ ክሬኦ አንድ ቀይ wifi propia y puedo abrir una cerradura remota ፣ mediante una clave tecleada desde nuestro smartphone ፣ que también he publicado። ላ diferencia respecto al anterior 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 (encriptada) y sin necesidad de emparejamientos a la hora de actuar (ብቸኛ አል configurar el sketch de Arduino)። ማስ አደላንቴ ፣ ላ ላ ሆራ ዴ ኤክስፕላየር ኤል ረቂቅ ፣ ኮሜንታሬስ ሎስ ዴታሌን አንድ ኩንታል።

ላ placa dispone de una entrada de alimentación de 5v en el pin correspondiente (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. ኤን ላ datasheet de la Wemos podemos verlo y adjunto también una 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 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…

ላ ፕላካ también dispone de 9 entradas/salidas digitales (D0-D8)። Todas tienen la capacidad de poder trabajar con salidas del tipo PWM ፣ አውቶቡስ I2C ፣ ወዘተ.

Detalle a tener muy en cuenta a la hora de conectar algo a la Salida de los pines digitales, para iluminar leds, activar relés, ወዘተ. Si se necesita entregar mas corriente, debemos intercalar entre el pin y el dispositivo un transistor o un opto acoplador de ከንቲባ ፖቴኒያ። Ver figura de salidas.

Con una resistencia en serie con la salida de 330 ohms, se entrega una corriente de 10mA, por lo que si es posible, aumentar el valor de las resistencias. Hay en muchas ድር ላ recomendación de una resistencia de 330 ohm en serie con los leds ዮ recomiendo usar resistencias mas altas. ሲ ኢሉሚና ኤል ኑስስትሮ ጉስትን መርቷል ፣ ምንም 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.

ላ placa Wemos también dispone de una entrada digital A0, para análisis de datos analógicos. Hay que tener en cuenta dos cosas. ላ ፕሪሜራ ኤስ ኖ ኖ ኖ ሌድ ፓዴፕ አፕልarር አንድ ቮልትኤኤኤኤኤኤኤኤኤኤኤኤኤኤ 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 ፖር ፒን።

-ኮኔክተር ማይክሮ ዩኤስቢ ለላ ካርጋ ዴል firmware እና alimentación de 5v

-ulsልዶዶር ደ ዳግም አስጀምር።

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

ደረጃ 3 - ሰርኩቶ ዴል ጆይስቲክ (ማንዶ እና ዲስታሺያ)

ሰርኩቶ ዴል ጆይስቲክ (ማንዶ እና ዲስታሺያ)
ሰርኩቶ ዴል ጆይስቲክ (ማንዶ እና ዲስታሺያ)
ሰርኩቶ ዴል ጆይስቲክ (ማንዶ እና ዲስታሺያ)
ሰርኩቶ ዴል ጆይስቲክ (ማንዶ እና ዲስታሺያ)

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, sur el el problemma de querer captar varios valores analógicos al mismo tiempo. Para mi caso en concreto, un joysick está formado por dos potenciómetros con salidas individuales analógicas y un pulsador. Además, quiero analizar el valor reality de la batería que uso en el mando a distancia, por lo que ya necesitamos tomar 3 valores analógicos ልዩነት.

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 completamente es de aproximadamente 4v y debido al divisor de voltaje, en el pin 4 de H1 tenemos 2v (ተለዋዋጭ dependiendo del estado de la batería)። A la derecha tenemos un joystick básico, formado por dos potenciómetros y un pulsador (R3 es externa al joystick)። Se alimentan con los 3.3v que proporciona la Wemos. En este esquema general primero, tenemos 3 valores analógicos (pines 2, 3 y 4 de H1) y un valor digital (pin 1 de H1)።

Para poder analizar en la placa Wemoslos 3 valores analógicos, recurrimos a unos pequeños opto-acopladores ፣ el chip SFH615A ወይም TLP621። Es muy básico su funcionamiento para este trabajo. ኤን ፒን 4 ዴል ቺፕ pongo uno de los valores analógicos a 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 dependiendo cual active y leyendo el valor en A0, asigno a cada valor una variable (ማሰሮ 1y ድስት 2 ዴል ጆይስቲክ y batería)።

Hay que tener en cuenta que no podemos conectar la salida digital de la Wemos directamente al pin 1 del TLP621, ya que se deterioraría dicha salida digital. Cada pin digital digital en Wemos puede suministrar unos 12mA. ፖር ኤልሎ ፣ intercalamos una resistencia suficiente para activar el led interno. Con 470 Ω ፣ ለ para activarlo y solo supone 7 mA በቂ ነው።

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

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 እሺ”።

Añado al circuito un interruptor para la batería y un conector para poder recargar la misma sin tener que quitarla (aviso: APAGAR PARA RECARGAR para evitar dañar el regulador ME6211 de la placa Wemos)። እንደዚሁም ከዚህ በፊት ማብራሪያ ፣ el circuito completo del mando a distancia con joystick es la siguiente figura።

ደረጃ 4 ጆይስቲክ 2

ጆይስቲክ 2
ጆይስቲክ 2

ገለፃ ለኤል ኤል የኋላ 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”)

ሲ activo D1 ፣ leo el estado del potenciómetro vertical del joystick en A0.

ሲ activo D2 ፣ leo el estado del potenciómetro horizontal del joystick en A0.

ሲ activo D5 ፣ leo el estado de la batería en A0. ኖታ -በ ‹ፕሪንስፔዮ› ውስጥ በ ‹4› ላይ ፣ እኔ በዳ ችግር እንደ አል flashear el programa desde el IDE de Arduino ፣ por lo que la pasé a D5

ላ ሳሊዳ D3 se usará para el led de Actividad (azul)። ዲቾ መሪነት በኢ enciende cuando hay movimiento de joystick y la transmisión ha sido correcta. Cuando está en reposo nos indica el estado de la batería (1 parpadeo entre 3.6 y 3.5v, 2 parpadeos entre 3.5 y 3.4v y 3 parpadeos por debajo de 3.4v)።

ኤል መሪ ሮጆ አመላካች ኢንሴንዶዶ/ኃይል በርቷል።

S1 es el interruptor de encendido. Conviene tenerlo apagado cuando se realiza la carga de la batería o si hago modificaciones en el ሶፍትዌር (5v a través del USB)።

ኤል ኤስኬማ ዴል ሲሪኮቶ ሞንታዶ ኤን ኡን ፕሮቶቦርድ እስ ላ figura ሲጉኢንተ:

ላ línea inferior positiva es el voltaje de la batería. ላ línea የላቀ positiva es la salida de 3.3v de la Wemos

ደረጃ 5: ጆይስቲክ ፕላካ ዴ ሰርኩሲቶስ

ጆይስቲክ ፕላካ ዴ ሰርኩቶቶስ
ጆይስቲክ ፕላካ ዴ ሰርኩቶቶስ
ጆይስቲክ ፕላካ ዴ ሰርኩቶቶስ
ጆይስቲክ ፕላካ ዴ ሰርኩቶቶስ
ጆይስቲክ ፕላካ ዴ ሰርኩቶቶስ
ጆይስቲክ ፕላካ ዴ ሰርኩቶቶስ
ጆይስቲክ ፕላካ ዴ ወረዳዎች
ጆይስቲክ ፕላካ ዴ ወረዳዎች

እሱ በስፔይን-አቀማመጥ 6.0 para la conexión del joystick ፣ opto acopladores ፣ Wemos y otros ጋር እሱ sickñado la siguiente placa de circuitos con Sprint-Layout. ኢንዲኮ ላስ ሜዲዳስ ፖር አል alguien ላ quiere realizar (40x95 ሚሜ)። Hay que tener cuidado con el pin 1 ዴ ሎስ TLP621። ቫን soldados አል ተርሚናል cuadrado y en ላ posición indicada visto desde la cara de de los components. ላ 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. ኤን ሎስ ቦርዶች ፣ ላስ ዩኤስቢ ፣ ኤል ኮንቴክተር ዴ ካርጋ ዴ ላ ባቴሪያ እና ኤል ማቋረጫ/ማብሪያ/ማጥፊያ።

ፋሲል ደ ሱጄታር ፣ የማይታወቅ ባህር አንድ ፖኮ ግራንዴ። Me falta realizar una caja a medida para el mismo con la impresora 3D:

ደረጃ 6 - ሰርኩቶ ዴል መቀበያ (ሞተርስ)

ሰርኩቶ ዴል መቀበያ (ሞተርስ)
ሰርኩቶ ዴል መቀበያ (ሞተርስ)

Está compuesto por otra placa Wemos, donde recibo la data del joystick o control remoto y activa las señales necesarias hacia un L298N (doble puente en H) y controlar dos motores, hacia adelante y hacia atrás, con control de dirección. 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 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 deteriorar el puerto, ya que el máximo valor que se le puede aplicar es de 3.3v. Para evitarlo, ponemos también otro divisor de voltaje, esta vez mas descompensado que en el mando a distancia y reducir el valor en A0. ለፓራ ዋጋ caso, utilizo un resistor de 47k en serie con otro de 4k7. En el punto central es donde tomo la referencia a medir. “Bateria baja” ፣ entre 7v y 5.5v ፣ 1 parpadeo del led de “Emergencia”። “Bateria MUY baja” (por debajo de 5, 5v, 3 parpadeos del led “Recepción ok”)

ኤል ወረዳው ሙሉ በሙሉ ዴል vehículo es el siguiente:

ዴቢዶ አንድ ኬር ሲሮሲቶ ኢስታ ሞንታዶ ሶብሬ vehículo ፣ የለም እሱ querido complicar mucho el sketch de Arduino. በ wifi ESP-NOW y los convierte en señales de control para los motores በኩል Simplemente recibe los datos del joystick። Eso facilita a que en futuros cambios de software o modificaciones de trayectoria, se realicen solo en el mando a distancia (ጆይስቲክ) en vez de en ambos.

አይ እሱ realizado ninguna placa de circuitos ልዩ። ታን ሶሎ ኡና ጊዜያዊ ፓራ ሎስ ሊድስስ ሱስ resistencias።

ደረጃ 7 L298N (doble Puente En H)

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

Esta es una pequeña 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. ሲ ትራስ ላስ ፕሩባስ ፣ ኤል ሞተር ጂራ አል ላዶ ኮንትራሪዮ ዴል ዴ ዴስሞሞስ ፣ ቀለል ያለ ኢንቬስተር ሎስ ፒንስ ዴል ሚሞ

Conector de Power (azul de 3 pines)። ኤስ ላ እንትራዳ ዴ ኮርሪየንት አል ወረዳቶ። 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). ሲ ኤል ሲሪኮቶ አል ቪታታ በ 12 ቪ ፣ hay que quitar el puente para que no se dañe el convertidor DC-DC que lleva y si queremos que funcione su circuitería lógica, deberemos llevar un cable de 5v externo hacia el circuito (5v ግብዓት)። 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 ይለያል። ኢዜአ ፣ 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 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. Si los quitamos, usaremos dichos pines para recibir una señal PWM desde la placa Wemos y así controlar la velocidad de cada ሞተር. En Arduino se consigue mediante un comando analogWrite ()። ኤን ላ ፕላካ ዌሞስ ፣ ታዳስ ሎስ ertoርቶ ዲ ቲየን ኢሳ ካፓዲዳድ።

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

ላ ግራፊካ ከፊት ለፊቱ ቴክስትቶ ፣ explica la relación de analogWrite () con la forma de salida en los pines para Arduino UNO. En la Wemos, el 100% se consigue con analogWrite (1023) y al 50% seriaa analogWrite (512)።

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

ደረጃ 8 ሞንታጄ ዴል ቬቺኩሎ -

ሞንታጄ ዴል ቬቺኩሎ
ሞንታጄ ዴል ቬቺኩሎ
ሞንታጄ ዴል ቬቺኩሎ
ሞንታጄ ዴል ቬቺኩሎ
ሞንታጄ ዴል ቬቺኩሎ
ሞንታጄ ዴል ቬቺኩሎ

Tengo que reconocer que el montaje es un poco casero, pero efectivo. Quizás diseñe e imprima en 3D un modelo mas bonito, pero este modelo “casero” tiene la ventaja de ver mejor el funcionamiento. እስካሁን ድረስ አንድ ሞተርስ ፣ con reductora incluida y ruedas para acoplar ፣ a bajo precio። ዮ he usado lo que tengo a mano.

ፓራ ኤል ሞንታጄ ፣ እሱ በ 3 ዲ unas pieasas ፣ ruedas ፣ soporte de rodamiento/ሞተር y unos casquillos y uso tornillería de 3mm de diámetro para unir las piezas. Para la unión del ሞተር አል tornillo eje, he usado los contactos de una regleta de conexión eléctrica cortando el plástico externo. አል ሞንታር ላስ ሩዳስ ፣ conviene pegar ኤል tornillo a la rueda, para evitar que patine al girar.

ላ siguiente muestra el soporte del rodamiento/ሞተር y ላ pieza 3D que lo sujeta.

ሞንቶ ላ ሩዳ። ቶሞ ላስ ሜዲዳስ ፣ ኮርቶ ኤል ቴሪዶሎ ኬ ሶብራ y ሎስ ኡኖ -

Una vez realizado el montaje de los dos conjuntos motriz, los sujeto a una plataforma de 10x13 cms (blanco)። Les uno otra plataforma (8x12cms) para soporte de los circuitos y la rueda trasera። ላ diferencia de altura ላ marca el tipo de rueda que pongamos, para mantener el vehículo አግድም። ላ distancia entre ላ rueda trasera y ላ 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.

ኮሞ ቪስ ፣ ምንም ከባድ በሽታ የለም። Mi intención es aplicar este sistema a una silla de ruedas como comentaba al principalpio 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.

ደረጃ 9 አርዱinoኖ

አርዱinoኖ ፦
አርዱinoኖ ፦

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. ብቸኛ ዝርዝሮች:

.- En Preferencias, Gestor de URLs adicionales:

arduino.esp8266.com/stable/package_esp8266com_index.json

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

ደረጃ 10 ¿Qué MacAddress Tiene Nuestra Placa?

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

Como paso previo e imprescindible antes de trabajar con el protocolo ESP-NOW, debemos cargar este pequeño sketch en las Wemos con las que vamos a trabajar, para saber la AP MAC de las ESP8266 que llevan integradas. En Herramientas, Monitor Serie podemos ver el resultado del sketch y anotar sobre todo la AP de cada placa Wemos.

Tengo ላ 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 አመቺ.

ESP-Now es otro protocolo desarrollado por Espressif, que permite que múltiples dispositivos se comuniquen entre sí sin usar Wi-Fi. El protocolo es a la conectividad inalámbrica de baja potencia de 2.4GHz que a menudo se implementa en ratones inalámbricos. 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 es un protocolo amplio y con muchas posibilidades, pero quiero mostrar una forma fácil de comunicar dos dispositivos y transmitir datos entre ellos, sin utilizar formas complejas.

ደረጃ 12 Librería ESP-NOW

Librería ESP- አሁን
Librería ESP- አሁን

El sketch que እሱ preparado solo un dispositivo transmite (joystick) y otro recibe sus datos (vehículo)። ፐሮ አምቦስ ዴበን ቴነር ኮሳዎች comunes necesariamente ፣ las cuales paso አንድ ገላጭ።

.- Inicio de la librería ESP-NOW

ደረጃ 13 ላ ላ ኢስትራቱራ ዴ ዳቶስ አስተላላፊ/ሪሲቢር

ላ Estructura De Datos a Transmitir/recibir
ላ Estructura De Datos a Transmitir/recibir

.- ላ estructura de datos a transmitter/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 prepara un tren, con differentos vagones y la estación que los recibe debe saber cuantos y para que empresa deben ir. Quiero transmitter 5 datos a la vez, Si pulso el joystick, y los voltajes (ሞተር Izquierdo y Derecho) y sentido (adelante/atrás) de cada ሞተር del vehículo, que extraigo de la posición del mismo.

ደረጃ 14: ዲፊኖ ኤል ቲፖ ደ ፉሲዮን ESP-NOW

ዲፊኖ ኤል ቲፖ ደ Función ESP-NOW
ዲፊኖ ኤል ቲፖ ደ Función ESP-NOW

.- Defino el tipo de función que realizará cada Wemos. Quizás debido a la falta de experiencia en el protocolo ESP-NOW, he 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 (ሚና = 3)

ደረጃ 15-Emparejamiento De Los Dispositivos ESP-NOW:

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

.- Emparejamiento de los dispositivos. አስፈላጊ: ኤን ኤል ረቂቅ ዴል joystck debo poner ላ AP MAC de la Wemos del vehículo. En el sketch del vehículo, debo poner ላ AP MAC del joystick።

.- Como clave (key), he 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, figura siguiente. Primero hay que preparar esos vagones del tren que hay que enviar (ውሂብ), 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)።

ሬኩርዳ - Quiero አስተላላፊ 5 datos a la vez ፣ Si pulso el joystick ፣ y los voltajes (ሞተር Izquierdo y Derecho) y sentido (adelante/atrás) de cada ሞተር ዴል vehículo።

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

ደረጃ 17 ረሲሲዮን ዴ ዳቶስ ኤ ኤል ቬቺኩሎ ፦

ሬሲሲዮን ዴ ዳቶስ ኤ ኤል ቬቺኩሎ ፦
ሬሲሲዮን ዴ ዳቶስ ኤ ኤል ቬቺኩሎ ፦

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

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

En los siguientes pasos descriptioniré el sketch de Arduino del mando a distancia (ጆይስቲክ)።

ደረጃ 18: ጆይስቲክ: ፍቺ ዲ ፒንስ Y ተለዋዋጮች

ጆይስቲክ: ፍቺ ዲ ፒንስ Y ተለዋዋጮች
ጆይስቲክ: ፍቺ ዲ ፒንስ Y ተለዋዋጮች
ጆይስቲክ: ፍቺ ዲ ፒንስ Y ተለዋዋጮች
ጆይስቲክ: ፍቺ ዲ ፒንስ Y ተለዋዋጮች

.- Defino las variables que usaré posteriormente:

ደረጃ 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: ሉፕ ()

ሉፕ ()
ሉፕ ()
ሉፕ ()
ሉፕ ()

.- 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)። እሱም 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። ሲ ሴልሳ ፣ ፖንጎ ኤ ሴሮ ሎስ ቫሎሬስ ዴ ሎስ ሞተርስ ፣ አስተላላፊ እና ኢስትቤዝኮ 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 Funcion LeePots ()

Funcion LeePots ()
Funcion LeePots ()

.- Leo el estado de los potenciómetros y de la batería. ሎስ retardos (መዘግየት) 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 estabilizar la salida, así que le pongo 5 msg para que las lecturas sean mas correctas. 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 (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.- Convertir los movimientos hacia arriba o hacia abajo en sentido y corriente de los motores.

Los pasos 2 a 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. ላ 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 incorporo el giro sobre sí mismo. ኩዋንዶ ቫ ሃሺያ አደላንቴ gi ጊሮ ፣ ሎው ሃጎ እስ ራዲirር ኤል ቮልታጄ ዴ ላ ሩዳ ላ ላ ጊሮ ፣ 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 serede menor que el valor de avance (como mucho, para el ሞተር)። ዴ ahí el uso de la variable de giro (VariableGiro)። Esta ተለዋዋጭ convierte el giro en mas suave y el vehículo se controla mejor.

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

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

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

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

.- Avance (con o sin giro)

.- Retroceso (con o sin giro)

ደረጃ 24 ዲ ዴ ባቴሪያ ኤን ኤል ጆይስቲክን ይቆጣጠሩ

De Batería En El Joystick ን ይቆጣጠሩ
De Batería En El Joystick ን ይቆጣጠሩ

.- Por último, el control del estado de la batería. Cuando el joystick está en reposo, o no ha podido transmitter, incremento un contador. አልአንዛዛ ደፋር ዲሴዶ (50 veces) ፣ አናሊዞ ኤል ኢስታዶ ዴ ላ ባሪያሪያ እና ሀጎ ፓራፓየር ኤል ሊድ (1 parpadeo = baja ፣ 2 parpadeos = muy baja)

ደረጃ 25 አርዱinoኖ (ቬቺኩሎ)

አርዱinoኖ (ቬቺኩሎ)
አርዱinoኖ (ቬቺኩሎ)
አርዱinoኖ (ቬቺኩሎ)
አርዱinoኖ (ቬቺኩሎ)

Sobre la parte correspondiente a las comunicaciones (ESP-NOW) con el joystick, ya se comentaron anteriormente, por lo que analizo el resto. ሄይ ተ tener en cuenta de que lo he simplificado 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 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 አሁን ፦

ደረጃ 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, manando ejecutar dos funciones, una comentada ya al hablar del ESP-NOW, recepción () y la otra realiza el manejo del L298N con los datos recibidos. እንደዚያ ከሆነ ፣ እነሆ ፕሪሞሮ ኢ አናሊዛር እና ሊገኝ የሚችል ድንገተኛ ሁኔታ እና ፓራ el vehículo።

Primero establezco un pequeño retardo en las comunicaciones, para sincronizar el receptor mas o menos con el transmisor. Ejecuto la función de recepción () y analizo si se ha pulsado “Emergencia” para processer a la inmovilización. ሞቪሚኤንትኦ ዴ ኒኑኖ ዴ ሎስ ሞተርስ ፣ ሎስ ፓሮ ታምቢያን መካከለኛ ሰው ኤል envío de datos a la función writeL298N ()። Si no hay datos, incremento un contador para revisión de la batería. ሲ 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: - 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 () ሲ recordais la tabla del L298N, simplemente escribir dichos valores con los datos recibidos

ደረጃ 28: የመጨረሻ

አሁንም ድረስ። ምንም 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.

አድጃንቶ ፒዲኤፍ እና እስፓñል እና ፒዲኤፍ እና እንግሊዝኛ

አድጁንቶ ሎስ ፊቼሮስ ደ አርዱinoኖ ደ አምቦስ ዲስፖዚቲቮስ።

ሳልዱዶ;

ሚጌል ኤ.

የሚመከር: