Mostrando entradas con la etiqueta ESPNOW. Mostrar todas las entradas
Mostrando entradas con la etiqueta ESPNOW. Mostrar todas las entradas

19 de abril de 2020

NodeMCU: 11_ESPNOW: Botón del pánico: Central_y_estación. Versión 01

Introducción



Primera versión del proyecto (V01) terminada. Se hacen ciertas mejoras a ambas partes, CENTRAL y ESTACIÓN, sobre todo a la primera. Es el primer desarrollo funcional. En próximas versiones se podría ampliar a varias estaciones y una estación central.

Estación




En el caso de la estación, el programa básico no ha cambiado. Excepto que la estructura de datos en la recepción se ha cambiado y puesto como variable global y la rutina que apaga la alarma controlada desde la CENTRAL. 

Central




En este caso, el programa sufre varias ampliaciones
  1. Se dibuja un logo nuevo para el programa.
  2. Se modifica la salida del LED (pasa a D3) y en D5 ponemos un buzzer.
  3. Creamos tres variables: frecmin, frecmax y duracion, para poder modificar el sonido de la sirena. Dejo los valores en 2000, 4000 y 250, pero se puede jugar con ellos. 700 y 800 dan un sonido más de "cacharros de feria".
  4. La estructura de datos E2 pasa a ser variable global.
  5. Hay una rutina por la que cada seis segundos muestra el logo (función presentarLogo). Así sabremos que no se ha bloqueado.
  6. En otra rutina (presentarPantalla) presentamos en la pantalla la información de la estación. Se ha mejorado incluyendo el símbolo ASCII de la "ó".
  7. No he borrado la función de testeo. Hay memoria para ello y me parece útil si quiero buscar un símbolo (testdrawchar)
  8. En la línea 243, si tenemos estado de alarma, suena el buzzer.
  9. En la línea 252, si el estado que recibo es de apagado, fuerzo a que la alarma se desactive.
<

16 de marzo de 2020

NodeMCU: 03_ESPNOW (Emisor y receptor - primeras pruebas)

Receptor



===============

Emisor


Al principio pensé que no funcionaban los programas. Pero algo me hizo sospechar de una unidad... Así era. Ambos programas funcionan perfectamente.

NodeMCU: 02_ ESPNOW (Comunicación punto a punto // funciones usadas )

Pretendo hacer lo siguiente:
  1.  Un módulo ESP8266 actuará como emisor y el otro como receptor
  2.  Mandaremos una estructura de datos, que puede contener variables de tipo char, int, float, String, boolean. Se podrá modificar para enviar otra estructura de datos.
  3. ESPNOW trabaja con funciones callback (de retorno) que serán llamadas cuando se produce un evento: se recibe o se envía un mensaje, o se produce un error en el envío.
  4. Respecto al emisor:
    1.  Se inicializa ESP-NOW
    2. Se creará una función callback (OnDataSent) que se ejecutará al enviar un mensaje, y así sabremos si el mensaje se ha enviado con éxito o no.
    3. Añadiremos un receptor a través de su dirección MAC.
    4. Enviaremos el mensaje a este receptor
  5. Respecto al receptor:
    1.  Se inicializa ESP-NOW
    2.  Se creará una función callback (OnDataRecv) que se ejecutará cuando se reciba un mensaje.
    3. Dentro de esa función, se almacenará una variable con el valor del mensaje, y se podrá realizar cualquier tarea con dicha información.
==============

Las funciones que usa el protocolo son:

  1. esp_now_init() --> Inicializa ESP-NOW. hay que inicializar Wi-Fi antes. Si tiene exito, retorna 0.
  2. esp_now_set_self_role(role) --> establece perfil; puede ser. ESP_NOW_ROLE_IDLE = 0,
    ESP_NOW_ROLE_CONTROLLER, ESP_NOW_ROLE_SLAVE, ESP_NOW_ROLE_COMBO, ESP_NOW_ROLE_MAX
  3. esp_now_add_peer (uint8 mac_addr, uint8 role, uint8 channel, uint8 key, uint8 key_len) --> llamar a esta función para emparejarse a otro nodeMCU
  4. esp_now_register_send_cb() --> registra una función callback que se dispara tras enviar datos, y devuelve si la entrega tuvo éxito o no.
  5. esp_now_register_rcv_cb() --> registra una función callback que se dispara tras recibir datos via ESP-NOW.

Más información en: 








NodeMCU: 01_ ESPNOW (Averiguar MAC)

En primer lugar, en enlace que contiene la guía que voy a seguir se encuentra en:

https://randomnerdtutorials.com/esp-now-esp8266-nodemcu-arduino-ide/

https://randomnerdtutorials.com/projects-esp8266/

Y, punto por punto:
  1. No instalo el gestor de tarjetas porque ya lo tenía instalado. De todas formas, la guía para hacerlo (https://randomnerdtutorials.com/how-to-install-esp8266-board-arduino-ide/) aparece en la web. 
  2. Cargo el siguiente programa para averiguar las MACs. Los "NodeMCU" se llevan mal con el puerto serie en el setup. Probablemente tendrás que pulsar RESET para que aparezca la información en la pantalla.
  3. La salida del puerto serie es algo como lo que sigue: "ESP8266 Board MAC Address:  DC:4F:11:22:AA:CC " (la MAC es inventada). Apunta la MAC.

============================================
BIBLIOGRAFÍA
============================================
https://hackaday.io/project/164132-hello-world-for-esp-now
https://www.fernandok.com/2018/03/esp32-com-protocolo-esp-now.html

https://www.instructables.com/id/ESP32-With-ESP-Now-Protocol/
https://espressif.com/sites/default/files/documentation/esp-now_user_guide_en.pdf

http://www.esploradores.com/practica-6-conexion-esp-now/

 https://youtu.be/6NsBN42B80Q

 Parece que no hay que instalar la librería espnow.h, solo llamarla ¿¿??