สารบัญ:

การสื่อสาร ESP-NOW Control Remoto De Vehículo, Joystick, Arduino Wemos.: 28 ขั้นตอน
การสื่อสาร ESP-NOW Control Remoto De Vehículo, Joystick, Arduino Wemos.: 28 ขั้นตอน

วีดีโอ: การสื่อสาร ESP-NOW Control Remoto De Vehículo, Joystick, Arduino Wemos.: 28 ขั้นตอน

วีดีโอ: การสื่อสาร ESP-NOW Control Remoto De Vehículo, Joystick, Arduino Wemos.: 28 ขั้นตอน
วีดีโอ: ESPNOW RC Car using ESP32| Joystick Remote Control 👌🏻 2024, กรกฎาคม
Anonim
การสื่อสาร ESP-NOW ควบคุม Remoto De Vehículo, จอยสติ๊ก, Arduino Wemos
การสื่อสาร ESP-NOW ควบคุม Remoto De Vehículo, จอยสติ๊ก, Arduino Wemos

สิ่งที่ต้องทำจากความคิดถึงผู้เสนอญัตติ una silla de ruedas para personal discapacitado vía remota y poder acompañarlos sin necesidad de empujar la misma. ตัวอย่างจาก funcionamiento เขาสร้าง este proyecto เบื้องหลัง 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 และ evitar las comunicaciones remotas. Simplemente una única placa para controlar los movimientos del joystick และ control de los motores.

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

ในตอนท้ายของเอกสาร ฉันแนบไฟล์ PDF เป็นภาษาอังกฤษของงานนี้ (นักแปลเว็บ)

Al final del documento, adjunto และ 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.

.- โปรโตคอลการสื่อสาร ESP-NOW

.- Circuito L298N. ลักษณะเฉพาะและ pinout del mismo

.- Montaje vehículo con dos motores DC

En este trabajo explico como tomar varios valores analógicos e introducirlos en un único puerto A0 ไม่ได้ติดตั้ง Wemos. Los valores Provenientes de un จอยสติ๊ก, ส่งสัญญาณจากรูปแบบ rápida, แยกประเภทตาม Wifi ใช้และโปรโตคอล ESP-NOW ในรถยนต์, otra Wemos recibe los datos y acciona dos motores DC para controlar la dirección del vehiculo.

แบบทดสอบ 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 componentes de bajo precio luna ciempre es. Aparte de eso, me Conformo con que a una persona le guste o le aclare algún concepto o duda

คำอธิบาย Intentaré los conceptos usados para mejor comprensión del trabajo แบบทดสอบ 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 กับ 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 เดอ ลา มิมาส เกี่ยวกับ que เขา 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 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 เข้าสู่ dos dispositivos, por ser fácil, rádagurapida, s n emparejamientos a la hora de actuar (เดี่ยว al กำหนดค่า el sketch de Arduino) Mas adelante, a la hora de explicar el sketch, comentaré los detalles a tener en cuenta.

La placa dispone de una entrada de alimentación de 5v en el pin ติดต่อ (หรือ USB) และ de una entrada de GND. Dicha อาหารไม่มี 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 una imagen de la แผ่นข้อมูล del regulador

ลิงก์ที่ลิงก์จาก 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 tecnicos que amplian esta información. ลิงก์ที่เกี่ยวข้อง

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

La Placa también จำหน่าย 9 entradas/salidas digitales (D0-D8) Todas tienen la capacidad de poder trabajar con salidas del tipo PWM, บัส I2C เป็นต้น

ดูรายละเอียด a tener muy en cuenta a la hora de conectar algo a la salida de los pines digitales, para iluminar leds, activar relés, etc. La corriente máxima que puede entregar un pin Digital es de 12mA. Si se necesita entregar mas corriente, debemos intercalar entre el pin y el dispositivo un transistor o un opto acoplador de Mayor potencia. เวอร์ชั่น ฟิกเกอร์ เดอ ซาลิดาส.

คอน una resistencia en serie con la salida de 330 โอห์ม, se entrega una corriente de 10mA, por lo que si es posible, 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 recomendación usar resistencias mas altas. เพิ่มเติม Si ilumina el นำความเอร็ดอร่อย nuestro, 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 dispone de una entrada digital A0, สำหรับการวิเคราะห์ข้อมูลอนาลอก เฮย์ que tener en cuenta dos cosas. La primera es que NO se le puede aplicar un voltaje เหนือกว่า 3.3v directamente, ya que se deterioraría Si se quiere medir un voltaje superior, hay que intercalar un divisor de voltaje externo Los valores de dicha entrada son de 0 a 1024.

คาแรคเทอริสติกของโอตร้า:

-Salida de 3.3v สำหรับภายนอกวงจรอาหาร Máxima corriente 12mA พอร์พิน

-Conector micro USB สำหรับเฟิร์มแวร์และส่วนประกอบ 5v

-พัลซาดอร์ เดอ รีเซ็ท

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: Circuito Del Joystick (mando a Distancia):

Circuito Del จอยสติ๊ก (mando a Distancia)
Circuito Del จอยสติ๊ก (mando a Distancia)
Circuito Del จอยสติ๊ก (mando a Distancia)
Circuito Del จอยสติ๊ก (mando a Distancia)

ฉัน 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 ปัญหา 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 ปัจเจกบุคคล analógicas y un pulsador. Además, quiero การวิเคราะห์ el valor actual de la batería que uso en el mando a distancia, por lo que ya necesitamos tomar 3 valores analógicos distintos.

En el siguiente esquema, creado con Fritzing, tenemos a la izquierda un divisor de voltaje Si 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 (variable dependiendo del estado de la batería). A la derecha tenemos un จอยสติ๊ก básico, formado por dos potenciómetros y un pulsador (R3 es externa al joystick). อาหารตามสั่ง 3.3v que proporciona la Wemos En este esquema general primero, tenemos 3 valores analógicos (pines 2, 3 y 4 de H1) และ un valor digital (pin 1 de H1)

การวิเคราะห์เปรียบเทียบ en la placa Wemoslos 3 มูลค่า analógicos, recurrimos a unos pequeños opto-acopladores, el chip SFH615A o TLP621. Es muy básico su funcionamiento para este ตราบาโจ En el pin 4 del ชิป pongo uno de los valores analógicos a analizar. สิ่งที่ต้องทำ los pin 2 a GND สิ่งที่ต้องทำด้วยพิน 3 ยูนิตสำหรับ A0 y cada uno de los pin 1 ยูนิตที่ใช้ดิจิตอลและตัวต้านทาน, las cuales voy activando sucesivamente y dependiendo cual active y leyendo el valor en A0, กำหนดตัวแปร a cada valor potuna 2 จอยสติ๊กและแบตเตอรี่)

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 ดิจิตอล Cada pin digital และ Wemos puede suministrar unos 12mA. Por ello, intercalamos una resistencia suficiente para activar el led interno. Con 470 Ω, es เพียงพอสำหรับ activarlo y solo supone 7 mA.

Al querer introducir 3 valores analógicos mediante este sistema, usamos 3 salidas digitales สำหรับ poder activarlas Si queremos introducir mas valores analógicos por A0, podemos usar otras salidas digitales más o podemos seguir ใช้งานเดี่ยว 3 salidas digitales, añadiendo al circuito un demultiplexor y dando valores binarios a las ento.

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

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 สำหรับ evitar dañar el regulador ME6211 de la placa Wemos) Con todo lo anteriormente explicado, el circuito completo del mando a distancia con จอยสติ๊ก 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 Emergency”)

Si activo D1, leo el estado del potenciómetro vertical del จอยสติ๊ก en A0

Si activo D2, leo el estado del potenciómetro แนวนอน del จอยสติ๊ก en A0.

Si activo D5, leo el estado de la batería en A0. หมายเหตุ: ในหลักการของ 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 (อาซูล). Dicho led se enciende cuando hay movimiento de joystick y la transmisión ha sido correcta. Cuando está en reposo nos indica el estado de la batería (1 parpadeo 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/เปิดเครื่อง

S1 es el ตัวขัดขวาง de encendido Conviene tenerlo apagado cuando se realiza la carga de la batería o si hago modificaciones en el software (5v ท่องผ่าน USB)

เอล esquema del circuito montado en una protoboard es la figura siguiente:

La líneaด้อยกว่า positiva es el voltaje de la batería. La línea superior positiva es la salida de 3.3v 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

เขา diseñado la siguiente placa de circuitos กับ 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 เดอลอส TLP621 รถตู้ขาย 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, เอล encendido y las conexiones externas

ลาส fotos del mando a distancia. ที่ขอบ, las conexiones USB, การเชื่อมต่อของ carga de la batería และ el ตัวขัดขวางการเปิด/ปิด

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

ขั้นตอนที่ 6: Circuito Del Receptor (มอเตอร์):

Circuito Del Receptor (มอเตอร์)
Circuito Del Receptor (มอเตอร์)

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) และ controlar dos motores, hacia adelante y hacia atrácis, con control de ควบคุม Como complemento del circuito, ไฟ LED 3 ดวง, เปิดไฟ uno para, otro para la transmisión de datos y un tercero como ตัวบ่งชี้ "parada de Emergencyncia" Aprovecho estos dos últimos (parpadeando) para la indicación del estado de la batería del vehículo.

การควบคุม 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, เหนือกว่า 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 และ reducir el valor en A0. Para este caso, utilizo un ตัวต้านทาน 47k en serie con otro de 4k7 En el punto central es donde tomo la referencia a medir. เข้าสู่ระบบ "Bateria baja", ทางเข้า 7v y 5.5v, 1 parpadeo del led de "Emergencia" "Bateria MUY baja" (โดย debajo de 5, 5v, 3 parpadeos del led “Recepción ok”)

El circuito สมบูรณ์ del vehículo es el siguiente:

Debido a que este circuito está montado sobre un vehículo, no he querido complicar mucho el sketch de Arduino. เพิ่มเติม Simplemente recibe los datos del joystick ผ่าน wifi ESP-NOW y los convierte en señales de control para los motores ความสะดวกในการใช้งานซอฟต์แวร์สำหรับซอฟต์แวร์หรือการปรับเปลี่ยนถาด, การใช้งานจริงแบบเดี่ยวและแบบควบคุมระยะไกล (จอยสติ๊ก) และการใช้งานจริง

ไม่ เขา realizado ninguna placa de circuitos พิเศษ. Tan solo una ชั่วคราว para los leds y sus resistencias

ขั้นตอนที่ 7: L298N (ดับเบิล Puente En H)

L298N (ดับเบิล Puente En H)
L298N (ดับเบิล Puente En H)
L298N (ดับเบิล Puente En H)
L298N (ดับเบิล Puente En H)

Esta es una pequeña คำอธิบาย del circuito que controla los motores DC que mueven el vehículo.

- Conectores A y B (azules จาก 2 ต้นสน) Son las salidas de corriente hacia los motores. Si tras las pruebas, el motor gira al lado contrario del que deseamos, simplemente invertir ลอส pines del mismo

Conector de Power (azul de 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 จัมเปอร์ 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). ใช้วงจรไฟฟ้าในการจ่ายไฟสำหรับเครื่องจ่ายไฟที่เหนือกว่า 12v, 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 circuit deciav ex ป้อนข้อมูล). 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 และไฟ LED

Conector de Control (6 ต้นสน) ทีน ดอส พาร์ทส์ 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 tener para poner en movimiento los motores, adelante, atrás o frenado. En ENA และ ENB hay unos puentes. Si los dejamos puestos, el L298N pondrá los motores al voltaje de entrada Vm en el sentido indicado, บาป ningún ควบคุม velocidad ni de regulación de voltaje. Si los quitamos, usaremos dichos pines para recibir una señal PWM desde la placa Wemos และ así controlar la velocidad de cada motor. สำหรับ Arduino se consigue mediante un comando analogWrite() En la placa Wemos, todas los puerto D tienen esa capacidad. ภาษาอังกฤษ

ดูภาพจาก L298N ลบภาพร่างสำหรับ Arduino UNO, ใช้งานจริงกับมอเตอร์ มากกว่า 75% ของ Vm.

ข้อความก่อนหน้า este texto, explica la relación de analogWrite() con la forma de salida en los pines para Arduino UNO. ใน Wemos, el 100% ใช้กับ analogWrite (1023) และ 50% ของ 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 de y del motores. การใช้งานจริงสำหรับแบตเตอรี่ 9v (Vm) และมอเตอร์ 6v. ข้อมูลมากกว่านี้ 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 mover que lo badja. พอใช้, 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 param voltajecerable ไม่มีสิ่งกีดขวาง y como mucho proporcione los 6v máximo. Ambas cosas, como ya comentaba anteriormente, en el sketch de Arduino del mando ที่ห่างไกล

ขั้นตอนที่ 8: Montaje Del Vehículo:

มอนตาเจ เดล เวฮิคูโล
มอนตาเจ เดล เวฮิคูโล
มอนตาเจ เดล เวฮิคูโล
มอนตาเจ เดล เวฮิคูโล
มอนตาเจ เดล เวฮิคูโล
มอนตาเจ เดล เวฮิคูโล

Tengo que reconocer que el montaje es un poco casero, เปโร เอฟเฟคติโว Quizás diseñe e imprima en 3D un modelo mas bonito, pero este modelo “casero” tiene la ventaja de ver mejor el funcionamiento. แบบทดสอบ มีอยู่ una serie de motores, con reductora incluida y ruedas para acoplar, a bajo precio โย่ เขา usado lo que tengo a mano.

Para el montaje, he impreso en 3D unas piezas, ruedas, soporte de rodamiento/motor y unos casquillos y uso tornillería de 3mm de diámetro para unir las piezas. Para la unión del motor al tornillo eje, เขาใช้ los contactos de una regleta de conexión eléctrica cortando el plástico externo. อัล มอนตาร์ ลาส รูเอดาส, คอนวีเน เปการ์ เอล ตอร์นิลโล อะ ลา รูเอดา, พารา เอวิตาร์ เก ปาทีน อัล จิราร์

La siguiente muestra el soporte del rodamiento/motor y la pieza 3D que lo sujeta. เพิ่มเติม

มอนโต ลา รูเอด้า Tomo las medidas, corto el tornillo que sobra y los uno:

Una vez realizado el montaje de los dos conjuntos motriz, los sujeto a una plataforma de 10x13 cms (บลังโก) Les uno otra plataforma (8x12cms) สำหรับ 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 แนวนอน. ห่างออกไป entre la rueda trasera y la primera plataforma nos debe aseguar el giro de la misma, por eso tuve que corregir el primer agujero, como veis en las fotos

Añado los circuitos และ al final la batería con un conector para poder cargarla.

Como veis ไม่มี es un gran diseñ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 diseñe un tipo de vehículo mas elegante. เป็นไปได้

Y ahora pasamos a la explicación del sketch de Arduino que he realizado. เพิ่มเติม

ขั้นตอนที่ 9: Arduino:

Arduino
Arduino

Como escribí al principio, no puedo extenderme mucho y prescindo de como configurar el IDE de Arduino, ไลบรารีและcomo debe reconocer la placa Wemos para poder trabajar con ellas. เดี่ยว unos datos:

.- En Preferencias, Gestor de URLs อื่นๆ:

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?

ก่อนหน้า ก่อนหน้า ก่อนหน้าที่ไม่อาจปฏิเสธได้ 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 และ anotar sobre todo la AP de cada placa Wemos.

Tengo la costumbre de al recibir las que compro, มาร์โก ลาส บอลซิตัส 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 ดาวน์โหลดโดย Espressif:

“ESP-NOW อนุญาตให้ยกเลิกการควบคุม directo y de baja potencia de las luces inteligentes, sin la necesidad de un enrutador Este método es energéticamente มีประสิทธิภาพและสะดวก

ESP-Now es otro protocolo desarrollado por Espressif, que permite que múltiples dispositivos se comuniquen entre sí sin usar Wi-Fi. โปรโตคอลที่คล้ายคลึงกัน a la conectividad inalámbrica de baja potencia de 2.4GHz que a menudo se implementa en ratones inalámbricos. พอ 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. “

ข้อมูลทั่วไป en el link:

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 and Transmission datos entre ellos, sin utilizar formas complejas.

ขั้นตอนที่ 12: Librería ESP-NOW

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

El sketch que he preparado solo un dispositivo sende (จอยสติ๊ก) y otro recibe sus datos (vehículo) Pero ambos deben tener cosas comunes necesariamente, las cuales คำบรรยาย

.- Inicio de la libría ESP-NOW

ขั้นตอนที่ 13: La Estructura De Datos a Transmitir/recibir:

La Estructura De Datos ส่งสัญญาณ/ผู้รับ
La Estructura De Datos ส่งสัญญาณ/ผู้รับ

.- La estructura de datos ตัวส่งสัญญาณ/recibir ไม่มีการกำหนดตัวแปรแบบ podemos กับตัวแปร longitud, sino de longitud fija, debido a cuando se ส่งสิ่งที่ต้องทำ los datos a la vez, el que recibe debe saber separar cada byte recibido y saber a que valor de ตัวแปรที่กำหนดซ้ำ Es como cuando se prepara un tren, con distintos vagones y la estación que los recibe debe กระบี่ cuantos y para que empresa deben ir. Quiero transmitter 5 datos a la vez, Si pulso el joystick, y los voltajes (motor Izquierdo y Derecho) และ 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 แบบทดสอบ ทดสอบ ประสบการณ์ 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. สำคัญ: En el sketch del joystck debo poner la AP MAC de la Wemos del vehículo En el sketch del vehículo, debo poner la AP MAC del จอยสติ๊ก

.- Como clave (คีย์), เขา puesto igual en ambos, la unión de ambas AP MAC, ตามตัวอย่าง

ขั้นตอนที่ 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) กับ recudro 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 ยอดรวมของ TREN. Una vez definidos estos datos anteriores, se envía el paquete de datos (กัวโดรแวร์เด).

บันทึก: Quiero sendir 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 correctamente (กัวโดร อะซูล).

ขั้นตอนที่ 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 เขา 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 variables (vagones del TREN) กับ misma estructura utilizada en ambos:

ง่าย ๆ กับด้านหน้า, ส่งสัญญาณ/recibir datos ผ่าน Wifi ESP-NOW จากแบบฟอร์ม sencilla

En los siguientes pasos describiré el sketch de Arduino del mando a distancia (จอยสติ๊ก)

ขั้นตอนที่ 18: จอยสติ๊ก: ตัวแปร Definicion De Pines Y

จอยสติ๊ก: 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

.- Defino las ตัวแปร que usaré หลัง:

ขั้นตอนที่ 19: ตั้งค่า ()

ติดตั้ง()
ติดตั้ง()

.- Ya en setup(), en la primera parte, defino como van a trabajar los pines de la Wemos และ un valor inicial de los mismos. También ยืนยัน que el protocolo ESP-NOW esté inicializado bien. Y tras ello, defino el modo de trabajo y emparejamientos anteriormente ความคิดเห็น:

ขั้นตอนที่ 20: วนซ้ำ ()

วน ()
วน ()
วน ()
วน ()

.- Inicio el loop() กับ un retardo que nos marca el número de transmisiones o lecturas del joystick que quiero hacer por segundo (figura siguiente) เขา puesto 60 msg, con lo que realizo unas 15 lecturas por segundo mas o menos. Después leo el estado del pulsador de Emergencyncia del จอยสติ๊ก Si se pulsa, pongo a cero los valores de los motores, ส่ง y establezco un retardo donde ไม่ตอบสนอง a nada hasta que pase ese tiempo (en mi caso de 5 segundos, ล่าช้า (5000);)

.- El resto del loop (), ลูกชาย las llamadas a las funciones que utilizo, que posteriormente expplicaré

ขั้นตอนที่ 21: Funcion LeePots ()

ฟังชัน ลีพอตส์()
ฟังชัน ลีพอตส์()

.- Leo el estado de los potenciómetros y de la batería. Los 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 สำหรับ 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, ตามตัวอย่าง, 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) เวอร์ชั่น leePot();

3.- Establecer un margen para que no se mueva el vehículo con ligeros movimientos o que no afecten las fluctuaciones ไฟฟ้า.

4.- Convertir los movimientos hacia arriba o hacia abajo en sentido และ corriente de los motores

Los pasos 2 และ 4 los realizo en ajustePots();.

ขั้นตอนที่ 23: Función DirMot()

ฟังก์ชัน DirMot()
ฟังก์ชัน DirMot()

.- Partimos del hecho de que un dispositivo de dos motores, sin eje de dirección, จำเป็นที่ 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, misrlo mismo hacia ใน 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 porhículo) Menor que el valor de avance (como mucho, พาราเอลมอเตอร์). De ahí el uso de la ตัวแปร 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, การพึ่งพาอาศัยกัน de la posición del จอยสติ๊ก:

.- Centrado y en reposo (รถพาราโด).

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

.- Avance (con o บาป giro)

.- Retroceso (con o บาป giro)

ขั้นตอนที่ 24: ควบคุม De Batería En El Joystick:

ควบคุม De Batería En El จอยสติ๊ก
ควบคุม De Batería En El จอยสติ๊ก

.- Por último, el control del estado de la batería. Cuando el จอยสติ๊ก está en reposo, o no ha podido sendir, 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 (ยานพาหนะ)

Arduino (ยานพาหนะ)
Arduino (ยานพาหนะ)
Arduino (ยานพาหนะ)
Arduino (ยานพาหนะ)

Sobre la parte contactiente a las comunicaciones (ESP-NOW) กับจอยสติ๊ก, ya se comentaron anteriormente, por lo que analizo el resto. Hay que 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. Por ello, me limito a recoger los datos de movimiento y pasarlos al L298N สำหรับ que se muevan los motores Priorizo la recepción del pulsador de Emergencyncia y en los tiempos sin movimiento, analizo el estado de la batería.

.- Pines de entrada salida de la placa Wemos y ตัวแปร usadas:

.- ya en el setup() inicio los pines y su estado inicial. - ยา en el setup() El resto de setup es sobre ESP-NOW:

ขั้นตอนที่ 26: ยานพาหนะ, ลูป ():

ยานพาหนะ, วง ()
ยานพาหนะ, วง ()
ยานพาหนะ, วง ()
ยานพาหนะ, วง ()
ยานพาหนะ, วง ()
ยานพาหนะ, วง ()

.- En loop(), aparte de mirar el estado de la batería, mando ejecutar dos funciones, una comentada ya al hablar del ESP-NOW, recepción() y la otra realiza el manejo del L298N con los datos recibidos. Por supuesto, lo primero es analizar una posible Emergency และ parar el vehículo.

Primero establezco un pequeño retardo en las comunicaciones, para sincronizar el receptor mas o menos con el transmisor ตัวอย่าง ลา función de recepción() และ analizo si se ha pulsado “Emergencia” สำหรับขั้นตอนการดำเนินการ Si no recibo datos o movimiento de ninguno de los motores, los paro también mediante el envío de datos a la funció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() สำหรับ que se mueva el motor según dichos datos.

ขั้นตอนที่ 27: ยานพาหนะ: - Función WriteL298N()

ยานพาหนะ: - Función WriteL298N()
ยานพาหนะ: - Función WriteL298N()
ยานพาหนะ: - Función WriteL298N()
ยานพาหนะ: - Función WriteL298N()

.- Función writeL298N() Si บันทึก la tabla del L298N, simplemente es escribir dichos valores con los datos recibidos

ขั้นตอนที่ 28: รอบชิงชนะเลิศ:

เอสโต เอส สิ่งที่ต้องทำ No es mi intención ganar concursos, แนวคิดเกี่ยวกับชิโน อาคลารา Si UNA persona agradece este trabajo, le sirve para adquirir un conocimiento y después desarrollar alguna idea propia, me Conocimiento. 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 และ PDF en Inglés

Adjunto los ficheros de arduino de ambos ตัวจัดการข้อมูล

Un saludo:

มิเกล เอ.

แนะนำ: