Diferència entre revisions de la pàgina «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»
Línia 74: | Línia 74: | ||
[https://wokwi.com/projects/329900810993402450 Simulació en Wokwi de un servo con ESP32 sin tener permisos para subir biblioteques] | [https://wokwi.com/projects/329900810993402450 Simulació en Wokwi de un servo con ESP32 sin tener permisos para subir biblioteques] | ||
+ | |||
+ | = Ejemplos básicos de sensórica = | ||
+ | [https://www.binefa.cat/training/ceic/20220330/s4a/20181031_ceic_02.pdf Entradas digitales: Páginas 7 a 9] | ||
+ | |||
+ | == Detección de final de carrera == | ||
+ | [https://wokwi.com/projects/329840862091543122 Control de leds con botones en Wokwi] [https://github.com/jordibinefa/IoT-02/blob/master/codes/IoT-02_03_inputs/IoT-02_03_inputs.ino IoT-02_03_inputs.ino en GitHub] | ||
+ | |||
+ | == Nivel de lluminosidad == | ||
+ | [https://wokwi.com/projects/329839893260796499 Lectura de la LDR en Wokwi] [https://github.com/jordibinefa/IoT-02/blob/master/codes/IoT-02_05_ldr/IoT-02_05_ldr.ino IoT-02_05_ldr.ino al GitHub] | ||
+ | |||
+ | == Medida de la distancia por ultrasonidos == | ||
+ | [https://wokwi.com/projects/330033931816534611 Medida de la distancia por ultrasonidos con ESP32 en Wokwi] | ||
+ | |||
+ | == Medida de inclinaciones y aceleraciones == | ||
+ | [https://wokwi.com/projects/305936654686749250 Medida de inclinaciones y aceleraciones. Arduino Uno + MPU6050 con Arduino Uno en Wokwi] | ||
+ | |||
+ | [https://wokwi.com/projects/305937156771152449 Visualización gráfica de inclinaciones y aceleraciones. Arduino Uno + MPU6050 con Arduino Uno en Wokwi] | ||
+ | |||
+ | == Plotter básico == | ||
+ | [https://wokwi.com/projects/330035502407221843 Plotter básico con ESP32 en Wokwi] | ||
+ | |||
+ | Recordant d'afegir una coma al principi per a mantenir el format ''json'', hem afegit al final de l'arxiu ''diagram.json'': | ||
+ | "serialMonitor": { "display": "plotter" } | ||
+ | |||
+ | * Exemple amb dispositiu físic: [https://www.binefa.cat/training/ceic/20220427/s4a_joystick_grafica.zip s4a_joystick_grafica.zip] | ||
+ | |||
+ | == Mesura d'humitat i temperatura == | ||
+ | [https://wokwi.com/projects/322410731508073042 Mesura d'humitat i temperatura amb ESP32 al Wokwi] | ||
+ | |||
+ | [https://wokwi.com/projects/330040082126864980 Mesura de temperatura emprant un termistor de tipus NTC amb ESP32 al Wokwi] | ||
= Snap! y Wokwi combinados = | = Snap! y Wokwi combinados = |
Revisió del 18:25, 13 maig 2024
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
Distribución de pines en el ESP32-VROOM
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
Ejemplos básicos de actuadores
Control de 4 leds con ESP32
Control de cuatro leds en Wokwi IoT-02_01_leds.ino en GitHub
Control de un relé
Set / Reset con un par de relés sin microcontrolador simulado en Wokwi
Circuit de enclavamiento en TinkerCad
Arduino Uno
Control de un relé en Wokwi usando Arduino Uno
ESP32
Control de un relé en Wokwi usando ESP32
Servomotors
Arduino Uno
Potenciómetro controlando la posición de un servo usando Arduino Uno
Barrido de posiciones de un servo usando Arduino Uno
Arduino Mega
Ejemplo de control de 31 servos
ESP32
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
Entradas digitales: Páginas 7 a 9
Detección de final de carrera
Control de leds con botones en Wokwi IoT-02_03_inputs.ino en GitHub
Nivel de lluminosidad
Lectura de la LDR en Wokwi IoT-02_05_ldr.ino al GitHub
Medida de la distancia por ultrasonidos
Medida de la distancia por ultrasonidos con ESP32 en Wokwi
Medida de inclinaciones y aceleraciones
Medida de inclinaciones y aceleraciones. Arduino Uno + MPU6050 con Arduino Uno en Wokwi
Plotter básico
Plotter básico con ESP32 en Wokwi
Recordant d'afegir una coma al principi per a mantenir el format json, hem afegit al final de l'arxiu diagram.json:
"serialMonitor": { "display": "plotter" }
- Exemple amb dispositiu físic: s4a_joystick_grafica.zip
Mesura d'humitat i temperatura
Mesura d'humitat i temperatura amb ESP32 al Wokwi
Mesura de temperatura emprant un termistor de tipus NTC amb ESP32 al 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
Protocolos externos: ModBus, CanBus
Resumen del ModBus RTU y ModBus TCP
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