Curso práctico de programación de electrónica embebida de bajo coste para la Internet de las Cosas. Edición del 13 al 16 de Mayo de 2024. Días 14 y 15
Contingut
Programa
Videoconferencia en Zoom (ID de reunión: 861 0410 1719) Os han enviado un código de acceso por correo electrónico.
Los sistemas embebidos
Microcontroladores de escala pequeña
Una introducción a Arduino (Comentado el primer día)
Microcontroladores de escala mediana
Placa IoT-02 (Introducción a la placa IoT-02 en pdf)
Microcontroladores de escala sofisticada
Un ejemplo de electrónica embebida controlada por una Raspberry Pi: IoT-Vertebrae (MAC ESP32: 70B8F662BC7C )
Gemelos digitales
TinkerCAD
Ejemplo de Arduino con electrónica exterior (dos potenciómetros para la lectura analógica y leds):
- Comunicación básica con el ejemplo: Desde el terminal e enciende un led i con a apaga el led (carácteres 101 y 97 del código ASCII).
- Graficación del nivel de los potenciómetros del ejemplo: Permite visión graficada quitándole los paréntesis.
Wokwi
Ejemplo de control de 31 servos simulando un Arduino Mega en Wokwi.
Ejemplo de entradas y salidas digitales simulando un ESP32 en Wokwi (Código IoT-02_03_inputs.ino en Github)
Simulación del código en MicroPython uPython_00_blinky.py en wokwi
Snap! y Wokwi combinados
Primer uso del protocolo más usado en Internet de las Cosas (MQTT):
ESP32 programado en MicroPython usando MQTT en Wokwi interaccionando con un ESP32 en Snap!
Comunicación con componentes
Protocolos internos: I2C, SPI y UART
I2C
Escaneo de direcciones I2C Códigos IoT-02_06_i2cScanner al GitHub
Lectura de la LDR en la pantalla OLED al Wokwi Codis IoT-02_07_SSD1306 al GitHub
Ejercicios
Graficación de los valores de temperatura y humedad
Basándoos en el ejemplo Medida de humedad y temperatura con ESP32 al Wokwi, visualizad gráficamente los valores de temperatura y humedad. Acordaos de modificar el archivo diagram.json (después de "connections":[] añadid ,serialMonitor": { "display": "plotter" }). Para dar más inmediatez podéis bajar el tiempo entre lecturas analógicas.
Serial.print(data.temperature); Serial.print(","); Serial.print(data.humidity); Serial.println("");
Sistema de tres leds que indica la temperatura de confort
Siguiendo los consejos de Determining Thermal Comfort Using a Humidity and Temperature Sensor queremos hacer un sistema con tres ledes de colores. Basándoos en el ejemplo Medida de temperatura empleando un termistor de tipo NTC con ESP32 al Wokwi y el artículo anterior siguiendo la norma ISO7730 (e ignorando el efecto de la humedad relativa), añadid tres ledes de colores (azul, verde y rojo). El led azul se encenderá cuando la temperatura esté por debajo de 20 °C (los otros dos leds tendrán que estar apagados). El led verde se encenderá cuando la temperatura esté entre 20 °C y 26 °C (los otros dos leds tendrán que estar apagados). El led rojo se encenderá cuando la temperatura sea superior a 26 °C (los otros dos leds tendrán que estar apagados).
Propuesta de distribución de pines:
#define LED_R 23 #define LED_G 27 #define LED_B 32
Parte del código json de distribución de componentes:
"parts": [ { "type": "wokwi-esp32-devkit-v1", "id": "esp", "top": -108.67, "left": 55.33, "attrs": {} }, { "type": "wokwi-ntc-temperature-sensor", "id": "ntc1", "top": -101.06, "left": -211.45, "attrs": {} }, { "type": "wokwi-led", "id": "led1", "top": -224.4, "left": 359.4, "attrs": { "color": "red", "flip": "1" } }, { "type": "wokwi-resistor", "id": "r1", "top": -188.05, "left": 288, "attrs": { "value": "1000" } }, { "type": "wokwi-led", "id": "led2", "top": -157.2, "left": 359.4, "attrs": { "color": "green", "flip": "1" } },
MQTT
Conexión entre la placa IoT-02 y Snap! v9 mediante MQTT