Diferència entre revisions de la pàgina «Actualización del firmware MQTTS para la placa IoT-02 el día 30/5/2020»
(Es crea la pàgina amb «= Nuevas necesidades = El [https://binefa.cat/training/upcSchool/20200516/IoT-02_mqtts_09.zip ''Firmware'' usado el 23/5/2020] ( [https://github.com/jordibinefa/IoT-02...».) |
m |
||
Línia 79: | Línia 79: | ||
[https://binefa.cat/training/upcSchool/20200530/IoT-02_mqtts_freeRTOS_json_12.zip IoT-02_mqtts_freeRTOS_json_12.zip] [https://github.com/jordibinefa/IoT-02/tree/master/codes/IoT-02_mqtts_freeRTOS_json_12 IoT-02_mqtts_freeRTOS_json_12 en GitHub] | [https://binefa.cat/training/upcSchool/20200530/IoT-02_mqtts_freeRTOS_json_12.zip IoT-02_mqtts_freeRTOS_json_12.zip] [https://github.com/jordibinefa/IoT-02/tree/master/codes/IoT-02_mqtts_freeRTOS_json_12 IoT-02_mqtts_freeRTOS_json_12 en GitHub] | ||
+ | |||
+ | = Verificación de funcionamiento = | ||
+ | |||
+ | [[Image:43mqtts.png|center|Gestión de la MAC con JavaScript en HTML]] | ||
+ | |||
+ | [http://www.electronics.cat/mac_IoT-02/ Enlace con la herramienta de gestión de MAC via web]. [https://binefa.cat/training/upcSchool/20200523/mac_IoT-02.zip Código de la herramienta de gestión de MAC via web] |
Revisió de 12:20, 28 maig 2020
Contingut
Nuevas necesidades[modifica]
El Firmware usado el 23/5/2020 ( IoT-02_mqtts_09 en GitHub ) puede manejar correctamente los temas MQTT mientras las peticiones tengan un intervalo mínimo de tiempo entre ellas.
En la clase de hoy vamos a estresar la placa IoT-02 haciéndole peticiones de temas (topics) cada segundo. Debido a la latencia de la red, es muy probable que algunas peticiones sean recibidas casi al mismo tiempo. ¿Y qué pasa si recibimos órdenes simultáneamente? Si las órdenes simultáneas son muy seguidas habrá dos procesos simultáneos de acceso al bus I2C, provocando la lectura errónea del sensor I2C.
Fuente de las imágenes de las señales I2C
El tiempo de una comunicación I2C, en la foto de la señales en la pantalla del osciloscopio, es de 150 microsegundos (el tiempo dependerá de la velocidad del dispositivo I2C maestro).
Tecnologías añadidas[modifica]
Uso de FreeRTOS[modifica]
No hace falta añadir ninguna biblioteca para usar FreeRTOS en el ESP32. Ya viene por defecto en el IDE de Arduino configurado fara funcionar con el ESP32.
FreeRTOS. Real-time operating system for microcontrollers
Multitasking on ESP32 with Arduino and FreeRTOS
Uso de Mutex. IoT-02_freeRTOS_04[modifica]
Uso de un mutex para asegurar que la lectura del bus I2C se completa antes de requerir otra lectura. El mutex da exclusividad al primer proceso que lo solicita. Es una manera típica de sincronizar tareas ejectutándose en paralelo.
Terminal serie con la salida del firmware' IoT-02_freeRTOS_04 (en GitHub):
/home/jordi/Arduino/IoT-02_freeRTOS_04/IoT-02_freeRTOS_04.ino Task 1 (0) --> T: 25.12 Task 2 (0) --> T: 25.12 Task 2 (1) --> T: 25.12 Task 1 (1) --> T: 25.12 Task 2 (2) --> T: 25.12 Task 2 (3) --> T: 25.13 Task 1 (2) --> T: 25.14 Task 2 (4) --> T: 25.14 Task 2 (5) --> T: 25.14 Task 1 (3) --> T: 25.15 Task 2 (6) --> T: 25.15 Task 2 (7) --> T: 25.16 Task 1 (4) --> T: 25.16 Task 2 (8) --> T: 25.16 Task 2 (9) --> T: 25.17 Task 1 (5) --> T: 25.17 Ending task 2 Task 1 (6) --> T: 25.17 Task 1 (7) --> T: 25.18 Task 1 (8) --> T: 25.18 Task 1 (9) --> T: 25.19 Ending task 1
En la tarea task 1 se bloquea el acceso al bus I2C (lectura de temperatura) en cada llamada:
for ( int i = 0; i < 10; i++ ) { xSemaphoreTake(xMutex, portMAX_DELAY); Serial.print("Task 1 ("); Serial.print(i); Serial.print(") --> "); vReadTemperature(); xSemaphoreGive(xMutex); vTaskDelay(xDelay); } Serial.println("Ending task 1");
En la tarea task 2 se bloquea el acceso al bus I2C (lectura de temperatura) leyendo de dos en dos:
for ( int n = 0; n < 5; n++) { xSemaphoreTake(xMutex, portMAX_DELAY); for ( int i = 0; i < 2; i++ ) { Serial.print("Task 2 ("); Serial.print(nC); Serial.print(") --> "); vReadTemperature(); vTaskDelay(xDelay); nC++; } xSemaphoreGive(xMutex); }
Bibliotecas (libraries)[modifica]
Nuevo firmware[modifica]
IoT-02_mqtts_freeRTOS_json_12.zip IoT-02_mqtts_freeRTOS_json_12 en GitHub
Verificación de funcionamiento[modifica]
Enlace con la herramienta de gestión de MAC via web. Código de la herramienta de gestión de MAC via web