Curs pràctic de programació d'electrònica encastada de baix cost per a la Internet de les Coses. Edició 22 i 23 de febrer de 2023

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

Curs pràctic de programació d'electrònica "embedded low-cost" per a la IoT. Online en Directe a la pàgina del Centre de Formació i Ocupació del Col·legi d'Enginyers Industrials de Catalunya. Edició 22 i 23 de febrer de 2023

Moodle del curs

Microcontroladors d'escala petita[modifica]

Una introducció a Arduino

Microcontroladors d'escala mitjana[modifica]

Distribució de pins a l'ESP32-VROOM

Introducció a la placa IoT-02 (Formes de programar la placa IoT-02)

Exemples bàsics d'actuadors[modifica]

Carpeta de projectes a Wokwi

Control de 4 leds amb ESP32[modifica]

Control de quatre leds al Wokwi IoT-02_01_leds.ino al GitHub

Control d'un relé[modifica]

Pàgines 13, 17 i 18

Set / Reset amb un parell de relés sense microcontrolador simulat a Wokwi

Relé al TinkerCad

Circuit d'enclavament al TinkerCad

Arduino Uno[modifica]

Control d'un relé a Wokwi emprant Arduino Uno

ESP32[modifica]

Control d'un relé a Wokwi emprant ESP32

Servomotors[modifica]

Pàgines 31 a 40

Arduino Uno[modifica]

Potenciòmetre controlant la posició d'un servo emprant Arduino Uno

Escombrat de posicions d'un servo emprant Arduino Uno

Arduino Mega[modifica]

Exemple de control de 31 servos

ESP32[modifica]

Biblioteca de control de servomotors per a ESP32 a l'IDE d'Arduino

Simulació a Wokwi d'un servo amb ESP32 tenint permisos per a pujar biblioteques

Simulació a Wokwi d'un servo amb ESP32 sense tenir permisos per a pujar biblioteques

Exemples bàsics de sensòrica[modifica]

Entrades digitals: Pàgines 7 a 9

Detecció de final de carrera[modifica]

Control de leds amb botons al Wokwi IoT-02_03_inputs.ino al GitHub

Nivell de lluminositat[modifica]

Lectura de l'LDR al Wokwi IoT-02_05_ldr.ino al GitHub

Mesura de distància per ultrasons[modifica]

Mesura de distància per ultrasons amb ESP32 al Wokwi

Mesura d'inclinacions i acceleracions[modifica]

Mesura d'inclinacions i acceleracions. Arduino Uno + MPU6050 amb Arduino Uno al Wokwi

Visualització gràfica d'inclinacions i acceleracions. Arduino Uno + MPU6050 amb Arduino Uno al Wokwi

Plotter bàsic[modifica]

Plotter bàsic amb ESP32 al 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" }

Mesura d'humitat i temperatura[modifica]

Mesura d'humitat i temperatura amb ESP32 al Wokwi

Mesura de temperatura emprant un termistor de tipus NTC amb ESP32 al Wokwi

Sensors i actuadors en entorns industrials[modifica]

Entrades analògiques i digitals a 12V i 24V[modifica]

Esquema per a llegir entrades de 12 i 24 volts convertint-les a nivells de 3,3 volts

Control de dispositius 0-10V. Circuit. Conversió digital-analògica[modifica]

Esquema per a llegir entrades de -10 a +10 volts convertint-ho a un ventall entre 0 i 3,3 volts

Conversió digital/analògica (DAC)[modifica]

Seguint l'exemple ESP32 Arduino IDE code for DAC s'ha fet aquest exemple de DAC per a ESP32 a Wokwi. A la versió actual de Wokwi no es pot veure la il·luminació variant del led.

Exercicis[modifica]

Graficació dels valors de temperatura i humitat[modifica]

Basant-vos amb l'exemple Mesura d'humitat i temperatura amb ESP32 al Wokwi, visualitzeu gràficament els valors de temperatura i humitat. Recordeu de modificar l'arxiu diagram.json.

 Serial.print(data.temperature);
 Serial.print(",");
 Serial.print(data.humidity);
 Serial.println("");

Sistema de tres leds que ens indica la temperatura de comfort[modifica]

Seguint els consells de Determining Thermal Comfort Using a Humidity and Temperature Sensor volem fer un sistema amb tres leds de colors. Basant-vos en l'exemple Mesura de temperatura emprant un termistor de tipus NTC amb ESP32 al Wokwi i l'article anterior seguint la norma ISO7730 (i ignorant l'efecte de la humitat relativa), afegiu tres leds de colors (blau, verd i vermell). El led blau s'encendrà quan la temperatura estigui per sota de 20ºC (els altres dos leds hauran d'estar apagats). El led verd s'encendrà quan la temperatura estigui entre 20ºC i 26ºC (els altres dos leds hauran d'estar apagats). El led vermell s'encendrà quan la temperatura sigui superior a 26ºC (els altres dos leds hauran d'estar apagats).

Comunicació amb components. Protocols I2C, SPI i UART[modifica]

Pàgines 49 a 79

I2C[modifica]

Escaneig d'adreces I2C Codis IoT-02_06_i2cScanner al GitHub

Lectura de l'LDR a la pantalla OLED al Wokwi Codis IoT-02_07_SSD1306 al GitHub

MQTT[modifica]

Introducció al protocol MQTT, el protocol més emprat a Internet de les Coses.

Demostració d'us d'MQTT emprant Snap! v8

codi amb Snap! v8 funcionant amb un exemple Qt amb WebAssembly

codi amb Snap! v7 funcionant amb un exemple Qt amb WebAssembly

ESP32 amb MicroPython emprant MQTT funcionant amb un exemple Qt amb WebAssembly

Microprogramari emprant MQTT a la placa IoT-02

Protocol HTTP. Noció d'URL. Bridge HTTP-MQTT. Dashboards amb Node-RED. Control de dispositius amb el telèfon mòbil[modifica]

Tauler de control (dashboard) amb Node-RED

Pont (bridge) HTTP --> MQTT (Codi del flux Node-RED del pont)

Bot de Telegram

Ciberseguretat[modifica]

Certificats digitals[modifica]

What Is a Digital Certificate? (by fortinet.com)

A certificate for every connected thing (by digicert.com)

Comunicacions segures amb MQTTS[modifica]

Codi per a ESP32 emprant certificat digital per a MQTTS

Creating and Using Client Certificates with MQTT and Mosquitto

Comunicacions segures amb HTTPS[modifica]

Demostració d'ús d'MQTT sobre sòcols web no segurs i pàgina HTTP no segura

Demostració d'ús d'MQTTS sobre sòcols web segurs i pàgina HTTPS segura

Exemples avançats[modifica]

Visualització amb Node-RED[modifica]

Exemple de tauler de control

Accés a instàncies d'un NodeRED[modifica]

Instàncies actives durant la durada del curs:

http://vps656540.ovh.net:188X

Ara repartirem el número X entre els assistents. 1 <= X <= 9

Usuari: curs2202 / Contrasenya: <La diem durant la presentació>

Tema d'exemple: /10521C66908C/btI35

Emmagatzemament de dades amb Influxdb[modifica]

Pàgina de l'empresa desenvolupadora d'InfluxDB

Exemple d'ús amb InfluxDB

Visualització amb Grafana[modifica]

Captures de configuració emprant NodeRed, InfluxDB i Grafana

Pàgina de Grafana

Exemple d'ús amb Grafana (usuari/contrasenya: convidat/convidat)

Sistemes complets[modifica]

Ús de les dades generades pels sensors LoRaWAN i arquitectura del sistema. Rubí 2020

Simuladors en línia[modifica]

Un simulador ladder en línia

Tinkercad

Wokwi

onlinegdb. Simulador de codi en diferents llenguatges de programació

Simulador SPICE d'Infineon (cal registrar-se)

Més documentació[modifica]

Biblioteca MQTT4Snap! al GitHub desenvolupada per en Xavier Pi.

Uso del NodeRED

Afegir l'ESP32 a l'IDE d'Arduino

Vídeo introductorio a la placa IoT-02 basada en ESP32

Vídeo de instalación del IDE de Arduino para la placa IoT-02 basada en ESP32

Arduino i Raspberry Pi (1/4), Arduino i Raspberry Pi (2/4), Arduino i Raspberry Pi (3/4) i Arduino i Raspberry Pi (4/4)

Repositori amb els materials del curset del 27 d'abril de 2022