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

De binefa.com
Salta a la navegació Salta a la cerca

Programa[modifica]

Programa de K-LAGAN Curso práctico de programación electrónica "embeded low-cost para la IOT. Edición del 13 al 16 de Mayo de 2024.

Acceso al Moodle del curso

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[modifica]

Microcontroladores de escala pequeña[modifica]

Una introducción a Arduino (Comentado el primer día)

Microcontroladores de escala mediana[modifica]

Distribución de pines en el ESP32-VROOM

Placa IoT-02 (Introducción a la placa IoT-02 en pdf)

Microcontroladores de escala sofisticada[modifica]

Un ejemplo de electrónica embebida controlada por una Raspberry Pi: IoT-Vertebrae (MAC ESP32: 70B8F662BC7C )

Gemelos digitales[modifica]

TinkerCAD[modifica]

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[modifica]

Zona de proyectos en 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)

Visión graficada usando Wokwi

Simulación del código en MicroPython uPython_00_blinky.py en wokwi

Ejemplos básicos de actuadores[modifica]

Carpeta de proyectos en Wokwi

Control de 4 leds con ESP32[modifica]

Control de cuatro leds en Wokwi IoT-02_01_leds.ino en GitHub

Control de un relé[modifica]

Páginas 13, 17 y 18

Set / Reset con un par de relés sin microcontrolador simulado en Wokwi

Relé en TinkerCad

Circuit de enclavamiento en TinkerCad

Arduino Uno[modifica]

Control de un relé en Wokwi usando Arduino Uno

ESP32[modifica]

Control de un relé en Wokwi usando ESP32

Servomotores[modifica]

Páginas 31 a 40

Arduino Uno[modifica]

Potenciómetro controlando la posición de un servo usando Arduino Uno

Barrido de posiciones de un servo usando Arduino Uno

Arduino Mega[modifica]

Ejemplo de control de 31 servos

ESP32[modifica]

Biblioteca de control de servomotores para ESP32 en el IDE de Arduino

Simulación en Wokwi de un servo con ESP32 teniendo permisos para subir bibliotecas

Simulació en Wokwi de un servo con ESP32 sin tener permisos para subir biblioteques

Ejemplos básicos de sensórica[modifica]

Entradas digitales: Páginas 7 a 9

Detección de final de carrera[modifica]

Control de leds con botones en Wokwi IoT-02_03_inputs.ino en GitHub

Nivel de lluminosidad[modifica]

Lectura de la LDR en Wokwi IoT-02_05_ldr.ino al GitHub

Medida de la distancia por ultrasonidos[modifica]

Medida de la distancia por ultrasonidos con ESP32 en Wokwi

Medida de inclinaciones y aceleraciones[modifica]

Medida de inclinaciones y aceleraciones. Arduino Uno + MPU6050 con Arduino Uno en Wokwi

Visualización gráfica de inclinaciones y aceleraciones. Arduino Uno + MPU6050 con Arduino Uno en Wokwi

Plotter básico[modifica]

Plotter básico con ESP32 en Wokwi

Recordando añadir una coma al principio para mantener el formato json, hemos añadido al final del archivo diagram.json:

"serialMonitor": { "display": "plotter" }

Medida de humedad y temperatura[modifica]

Medida de humedad y temperatura con ESP32 el Wokwi

Medida de temperatura usando un termistor de tipo NTC con ESP32 en Wokwi

Snap! y Wokwi combinados[modifica]

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[modifica]

Páginas 49 a 79

Protocolos internos: I2C, SPI y UART[modifica]

I2C[modifica]

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

Protocolos externos: ModBus, CanBus[modifica]

Modbus RTU

Resumen del ModBus RTU y ModBus TCP

Ejercicios[modifica]

Graficación de los valores de temperatura y humedad[modifica]

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[modifica]

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

Indicador de temperatura de confort

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[modifica]

El protocolo MQTT

Conexión entre la placa IoT-02 y Snap! v9 mediante MQTT

Gemelo digital[modifica]

Gemelo digital para el uso práctico de MQTT con Snap! y Node-RED

Gemelo digital en Wokwi para interactuar con MQTT. Cambiad en la línea 81 los cuatro últimos números de la MAC por los de vuestro puerto asignado.

stMac = "7C9EBDF872FC_2893"; // <-- Cambiad 2893 por el número de vuestro puerto asignado

Node-RED[modifica]

Asignación de puertos para el curso de electrónica embebida de bajo coste para la Internet de las Cosas. Edición del 13 al 16 de Mayo de 2024

Node-RED interactuando con el gemelo digital usando MQTT

Uso del NodeRED

Haced un flujo que lea el valor de la LDR y lo traduzca a un porcentaje entre 0 y 100. Haced que se visualize en un reloj (gauge) y en una gráfica.

Uso de la base de datos MariaDB desde Node-RED

Uso de Telegram desde NodeRED