جدول المحتويات:

التواصل ESP-NOW. التحكم في ريموتو دي فيهيكولو ، جويستيك ، أردوينو ويموس: 28 خطوة
التواصل ESP-NOW. التحكم في ريموتو دي فيهيكولو ، جويستيك ، أردوينو ويموس: 28 خطوة

فيديو: التواصل ESP-NOW. التحكم في ريموتو دي فيهيكولو ، جويستيك ، أردوينو ويموس: 28 خطوة

فيديو: التواصل ESP-NOW. التحكم في ريموتو دي فيهيكولو ، جويستيك ، أردوينو ويموس: 28 خطوة
فيديو: التحكم في أجهزة المنزل عن بعد و يدويا - ESP32 Home Automation 2024, يوليو
Anonim
التواصل ESP-NOW. التحكم عن بعد ريموتو دي فيهيكولو ، جويستيك ، أردوينو ويموس
التواصل ESP-NOW. التحكم عن بعد ريموتو دي فيهيكولو ، جويستيك ، أردوينو ويموس

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، he creado este proyecto. بعد ذلك ، يمكنك الوصول إلى الدوائر الخاصة بالمحركات ، من قبل رئيس البلدية ، بوتنسيا وأكوبلار ، لاس رويدس دي لا سيلا ، سيستيما ميكانيكو كيو لا مويفا.

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 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 una persona mejorando su movilidad، me sentiré contento.

في نهاية المستند ، أرفق ملف PDF باللغة الإنجليزية لهذا العمل (مترجم ويب).

الوثيقة النهائية ، إضافة إلى تنسيق PDF مع الاستخدام الكامل باللغة الإسبانية.

الخطوة 1: مقدمة:

استئناف ديل تراباجو:.- Varios entradas analógicas a través de un solo puerto.

.- Wemos، especificaciones eléctricas.

.- Protocolo de comunicaciones ESP-NOW.

.- حلبة L298N. خاصة و بينوت ديل ميسمو.

.- Montaje éví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. عصا التحكم Los valores التي أثبتت جدواها ، والتي يتم نقلها من الشكل الرابحي ، يمكنك الحصول على بيانات من خلال وسائل الاتصال بشبكة Wifi USando El Protocolo ESP-NOW. En el vehicle، otra Wemos recibe los datos y acciona dos motores DC para controlar la dirección del videiculo.

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 elementes de bajo precio siempre es una satisfacción funciono lo ves. Aparte de eso ، أنا أتفق مع كونه شخصًا واحدًا لو كان مفهوماً جديداً.

Intentaré explicar los conceptos usados para mejor include del trabajo. Quizás a algunos le parezca interesante alguna parte del mismo.

الخطوة الثانية: 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، análisis de datos y envío a través de las redes y otras muchas cosas، aprovechando la capacidad Wifi de las mismas. En otro proyecto que he realizado، creo una red wifi propia y puedo abrir una cerradura remota، mediante una clave tecleada desde nuestro phone، que también he publicado. لا ديفرينسيا الاحترام للأمام ، بروتوكول HTLM para la comunicación ، uso la característica muy poco publicada de la comunicación WiFi del Tipo ESP-NOW entre dos Disitivos، por ser fácil، rápida، segura (encriptada) y sin necesidad emparejamientos a la hora de actuar (solo al configurar 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 مراسلة (o من 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. En la datasheet de la Wemos podemos verlo y advunto 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…

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

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، إلخ. La corriente máxima que puede entregar un pin Digital es de 12mA. Si se necesita entregar mas corriente، debemos interalar entre el pin y el detitivo 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 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 recomiendo usar resistencias mas altas. قاد Si ilumina el a nuestro gusto، no necesitamos sumar mAs al trabajo Cualquier ahoro de energía siempre es bueno.

NOTA: en los pines digitales، podemos dar valores PWM entre 0 y 1023. En Arduino Uno، entre 0 y 254.

La placa Wemos también dispone de una entrada digital A0، para análisis de datos analógicos. Hay que tener en cuenta dos cosas. La primera es que NO se le puede aplicar un voltaje Superior a 3.3v directamente، ya que se trouble. Si se quiere medir un voltaje Superior، hay que interalar un divisor de voltaje externo. اللهم امين. 1024.

Otras características:

-Salida de 3.3v للدوائر الغذائية الخارجية. Máxima corriente 12mA بور دبوس.

- موصل micro USB للبرامج الثابتة وتغذية 5 فولت

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

الخطوة 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)

Me gusta la placa de desarrollo Wemos، ya que tiene poco tamaño، es barata y tiene muchas posibilidades. كومو منفردا ديسوبون دي أونا إنترادا أنالوجيكا A0 ، زيادة المشكلة في حل المشكلة. 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 real 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 reduction el voltaje para su análisis. Voy a usar una batería de 3.7v، por lo que cuando está cargada completeamente es de aproximadamente 4v y debido al divisor de voltaje، en el pin 4 de H1 tenemos 2v (متغير يعتمد على 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).

تحليلات وحدة التخزين في لوحة المفاتيح Wemoslos 3 valores analógicos، recurrimos a unos pequeños opto-acopladores، el chip SFH615A o TLP621. Es muy básico su funcionamiento para este trabajo. En el Pin 4 del chip pongo uno de los valores analógicos a analizar. Todos los pin 2 a 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 active y leyendo el valor en A0، asigno a cada valor una variable (وعاء 1y pot 2 del جويستيك 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 trouble dicha salida digital. Cada pin digital en Wemos puede suministrar unos 12mA. Por ello، intercalamos una resistencia suficiente para activar el led interno. يخدع 470 ، يكفي للفعالية الفعالة ويوجد 7 مللي أمبير منفردًا.

يقدم Al querer 3 قيم تناظرية ، وسيطة ، ونظام 3 ، و 3 salidas digitales para poder activarlas. يقدم هذا المنتج التناظري من خلال A0 ، من خلال استخدام أجهزة رقمية أخرى ، يمكنك استخدام المنفردة منفرداً 3 salidas Digitales ، بالإضافة إلى الدوائر الكهربية وإزالة تعدد القيم بيناريوس و las entradas ، ورسومات رقمية عالية السرعة.

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

Añado al circo un interruptor para la batería y unector para poder recargar la misma sin tener que quitarla (aviso: APAGAR PARA RECARGAR para evitar dañar el regulador ME6211 de la placa Wemos). Con todo lo anteriormente explicado، el cracto completeo 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”)

Si activo D1، leo el estado del potenciómetro vertical del joystick en A0.

Si activo D2، leo el estado del potenciómetro del joystick en A0.

Si activo D5، leo el estado de la batería en A0. ملحوظة: en un Principio lo puse en D4، pero me daba problemas al flashear el programa desde el IDE de Arduino، por lo que la pasé a D5

La salida D3 se usará para el led de Actividad (azul). قاد Dicho حد ذاته تحويل 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 روجو إنديكا إنسينديدو / تشغيل الطاقة.

S1 es el interruptor de encendido. Conviene tenerlo apagado cuando se realiza la carga de la batería o 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 3.3v de la Wemos

الخطوة 5: عصا التحكم Placa De Circuitos:

جويستيك بلاكا دي سيركويتوس
جويستيك بلاكا دي سيركويتوس
جويستيك بلاكا دي سيركويتوس
جويستيك بلاكا دي سيركويتوس
جويستيك بلاكا دي سيركويتوس
جويستيك بلاكا دي سيركويتوس
جويستيك بلاكا دي سيركويتوس
جويستيك بلاكا دي سيركويتوس

إنه diseñado la siguiente placa de cCTos con 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 posición indicada visto desde la cara de los componentes. La parte de la placa próxima a los conectores y Wemos، la recorto postiormente، 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 y el interruptor de ON / OFF.

Fácil de sujetar، aunque sea un poco grande. أنا falta realizar una caja a medida para el mismo con la Impresora 3D:

الخطوة 6: مستقبلات Circuito Del (المحركات):

مستقبلات Circuito Del (المحركات)
مستقبلات Circuito Del (المحركات)

إنشاء حساب Wemos ، استرداد البيانات ، عصا التحكم عن بعد ، التحكم عن بعد ، التحكم عن بعد ، التحكم في التوجيه. مجموعة كاملة من الدوائر ، 3 المصابيح ، 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 ltimos.

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 developer 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 down valor en A0. Para este 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" ، مدخل 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")

El Circuito Completeo del Veiculo es el siguiente:

Debido a que este circo está montado sobre un vehicle، no he querido complexar mucho el sketch de Arduino. قم بتشغيل عصا التحكم بسهولة عبر شبكة wifi ESP-NOW y los convierte en señales de control para los motores. يسهل الوصول إلى حد بعيد في المستقبل الكامبيوس في البرمجيات أو تعديلها من حيث الحجم ، وهذا يعني أنه منفردا أن يكون منفردا إلى مسافة بعيدة (عصا التحكم) في الواقع.

لا هو ينجز لعبة ninguna placa de circos خاصة. تان منفردًا مؤقتًا يؤدي إلى مقاومة مقاومة.

الخطوة 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)

وصف تفصيلي لدائرة التحكم عن طريق محرك الأقراص DC que mueven el dieiculo.

- المخاريط A y B (أزول دي 2 باينز). Son las salidas de corriente hacia los motores. Si tras las pruebas، el motor gira al lado contanario del que deseamos، simplemente invertir los pines del mismo

كونيكتور دي باور (أزول دي 3 باينز). Es la entrada de corriente al circo. كومو إل ميسمو بويد سير ألينتادو 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 circo 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 circuitería lógica، deberemos llevar un cable de 5v externo hacia el circo (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.

كونيكتور دي كونترول (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 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 motor. En Arduino se consigue mediante un comando analogWrite (). En la placa Wemos، todas los puerto D tienen esa capacidad.

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.

La gráfica anterior a este texto ، 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٪ 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 analog، ya que relen 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 selectinado، 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 لا يوجد حد لذلك يرجى إرساله إلى جهاز الكمبيوتر الخاص بـ 6v máximo. Ambas cosas، como ya comentaba anteriormente ، en el sketch de Arduino del mando a distancia.

الخطوة الثامنة: مونتاج ديل فهيكولو:

مونتاج دل فيهيكولو
مونتاج دل فيهيكولو
مونتاج دل فيهيكولو
مونتاج دل فيهيكولو
مونتاج دل فيهيكولو
مونتاج دل فيهيكولو

Tengo que Recocer 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. موجود في سلسلة محركات ، كون اختزال متضمن y ruedas para acoplar ، bajo precio. يو هو 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. 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.

مونتو لا رويدا. تومو لاس ميديداس ، كورتو إل تورنيو كيو سوبرا إي لوس أونو:

Una vez realizado el montaje de los dos conjuntos motriz ، los sujeto a una plataforma de 10x13 سم (بلانكو). Les uno otra plataforma (8x12cms) para soporte de los Circos y la rueda trasera. La diferencia de altura la marca el tipo de rueda que pongamos، para mantener el besículo الأفقي. 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 circos y al final la batería con unector para poder cargarla.

Como veis، no 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 Averículo mas elegante.

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

الخطوة 9: اردوينو:

اردوينو
اردوينو

معلومات أساسية ، لا تمتد إلى فترة زمنية طويلة لتكوين مجموعة كاملة من IDE de Arduino ، مكتبة ومُجَوِّدة لمُجَوَّدَة La placa Wemos para poder trabajar con ellas. منفردا unos datos:

.- 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 غير مرغوب فيه من الإجراءات المطبقة على البروتوكول ESP-NOW ، debemos cargar este pequeño رسم تخطيطي في 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 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 بالتحكم المباشر في إدارة الأعمال ، مثل sin la necesidad de un enrutador. Este método هو كفاءة وفعالية.

ESP-now is otro protocolo desarrollado por Espressif، que permite que múltiples detitivos se Comuniquen entre sí sin usar Wi-Fi. El Protocolo هو مماثل لـ conectividad inalámbrica de baja potencia de 2.4GHz que a menudo se applicationa en ratones inalámbricos. Por lo tanto، el emparejamiento entre Disitivos 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."

Mas información en el link:

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

El Sketch que he Preparado solo un detitivo transmite (joystick) y otro recibe sus datos (videículo). Pero ambos deben tener cosas comunes necesariamente، las cuales paso وصف.

.- 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 a transmitir / recibir. لا توجد متغيرات las محددة مع متغير longitud ، sino de longitud fija ، debido a cuando se transmiten todos datos a la vez ، el que recibe debe sabereparar cada byte recibido y saber a que valor de المتغير asignar dichos bytes recibidos. Es como cuando se Prepara un tren، con distintos vagones y la estación que los recibe debe sabre cuantos y para que empresa deben ir. Quiero transmitir 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 vehicle، 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 experienceencia 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

.- امبيرجامينتو دي لوس انجليس. المستورد: En el sketch del joystck debo poner la AP MAC de la Wemos del Vepículo. En el Sketch del Veiculo، debo poner la AP MAC del جويستيك.

.- Como clave (key)، he puesto igual en ambos، la unión de ambas AP MAC، por ejemplo.

الخطوة 16: Envío De Datos Al Nahículo:

إنفيو دي داتوس آل فهيكولو
إنفيو دي داتوس آل فهيكولو

.- Envío de datos alveyculo، figura siguiente. Primero hay que Preparar esos vagones del tren que hay que enviar (data)، con recuadro rojo. Después، hay que selectir a quien lo envío (da)، que es la AP MAC de la Wemos del locículo y la longitud total del TREN. Una vez Definidos estos datos anteriores، se envía el paquete de datos (cuadro verde).

Recuerda: Quiero transmitir 5 datos a la vez، Si pulso el joystick، y los voltajes (motor Izquierdo y Derecho) y sentido (adelante / atrás) de cada motor del éculo.

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

الخطوة 17: Recepción De Datos En El Vehikulo:

Recepción De Datos En El Vehículo
Recepción De Datos En El Vehículo

.- Recepción de datos en el alle. Esta es la función que he usado en la Wemos del lociculo. Como se puede ver la pongo en modo de recepción (con respuesta، call back) y la data recibida la asigno a las variables (vagones del TREN) con la misma estructura utilizada en ambos:

Y simplemente con front، puedo transmitir / recibir datos vía Wifi ESP-NOW de forma sencilla.

وصف En los siguientes pasos رسم تخطيطي من Arduino del mando بعيدًا (عصا التحكم).

الخطوة 18: عصا التحكم: تعريف متغيرات De Pines Y

جويستيك: تعريف متغيرات De Pines Y
جويستيك: تعريف متغيرات De Pines Y
جويستيك: تعريف متغيرات De Pines Y
جويستيك: تعريف متغيرات De Pines Y

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

.- متغيرات Defino las 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. التحقق من وجود بروتوكول 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 محاضرة من خلال قوائم. عصا التحكم Despué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 responsee 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 postiormente explicaré.

الخطوة 21: Funcion LeePots ()

فونسيون ليبوتس (اقتباسًا عن روايته)
فونسيون ليبوتس (اقتباسًا عن روايته)

.- Leo el estado de los potenciómetros y de la batería. - 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 acta 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 ()

فونسيون AjustePots ()
فونسيون 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. تحليلات عمودية ، من خلال ejemplo ، los pasos están mostrados en la figura siguiente.

1.- El Valor total en el movimiento (mínimo، reposo، máximo) عبارة عن مدخل 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 elveyculo 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 detitivo 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 hacreo atráismo. Cuando va hacia adelante y giro، lo que hago es gradir el voltaje de la rueda a la que giro، proporcionalmente al movimiento del joystick y evitando los valores Negativos (se descontrola el jeçulo)، por lo tanto، el valor de reducción مينور كيو إيل فالور دي أفانس (كومو موغو ، بارا إل موتور). De ahí el uso de la variable de giro (VariableGiro). التحويل المتغير Esta el giro en mas suave y el igno se controla mejor.

Como la función es grande، se puede sacar del fichero INO addunto.

Tiene varios casos، Depiendo de la posición del جويستيك:

.- Centrado y en reposo (videí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
عصا التحكم 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 transmitir، 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: اردوينو (فهيكولو)

اردوينو (فهيكولو)
اردوينو (فهيكولو)
اردوينو (فهيكولو)
اردوينو (فهيكولو)

Sobre la parte مراسلة الاتصالات السلكية واللاسلكية (ESP-NOW) مع عصا التحكم ، نعم 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 villículo en la mesa y conectarlo al ordenador. Por ello، me limito a recoger los datos de movimiento y pasarlos al L298N para que se muevan los motores. Priorizo la recepción del pulsador de Emergencia y en los tiempos sin movimiento، analizo el estado de la batería.

.- Pines de entrada salida de la placa Wemos y Variables usadas:

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

الخطوة 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. من خلال supuesto، lo primero es analizar una posible emposible y parar el villí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 ha pulsado “Emergencia” para Proceder a la inmovilización. 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 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: فيهيكولو: - Función WriteL298N ()

فيهيكولو: - Función WriteL298N ()
فيهيكولو: - Función WriteL298N ()
فيهيكولو: - Función WriteL298N ()
فيهيكولو: - Función 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، me configo. 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 and PDF englés

Adjunto los ficheros de arduino de ambos disitivos.

أون سالودو:

ميغيل أ.

موصى به: