ESP32 + micropython
Sitio: | Facultad de Ingeniería U.Na.M. |
Curso: | IC511 - Internet de las Cosas, Sensores y Redes |
Libro: | ESP32 + micropython |
Imprimido por: | Invitado |
Día: | miércoles, 4 de diciembre de 2024, 23:19 |
1. Introducción
¡IMPORTANTE! los ESP32 trabajan con una tensión de 3,3 V y las entradas/salidas NO tienen protección de sobre tensión.
Existen muchos fabricantes de estos módulos y la distribución de pines no es estándar. La cátedra dispone de módulos esp32 del fabricante DIYMALL cuya distribución de pines es la siguiente
Los códigos presentados en este libro también están disponible en github listos para clonar.
$ git clone https://github.com/GermanXander/esp32
En cada ejemplo se especifica la rama (branch) correspondiente y es posible acceder a las mismas con el comando checkout.
Por ejemplo:
$ git checkout basico
2. IDE
Para programar en python usuaremos VSCodium que es la versión libre de VSCode
Este programa tiene una muy buena integración con git. Para trabajar con los esp32 además le agregaremos la extensión PyMakr.
Existen otros IDEs que también pueden usarse par programar esp32 con micropython tales como Thonny y Atom (con pymakr).
3. Archivos
En el esp32 con micropython encontraremos dos archivos principales: boot.py y main.py. El primero se ejecuta solo una vez cuando se inicia el dispositivo y se utiliza para la configuración del mismo. El segundo se ejecuta a continuación del boot.py y es en este archivo que se encuentra nuestro programa principal.
Los archivos correspondientes a librerías adicionales que se quieran utilizar se suelen guardar en el directorio lib.
4. LED + Pulsador
En este primer programa vamos a implementar un pulsador que al ser activado alterna el estado del led (onboard) Pin2.
https://github.com/GermanXander/esp32.git
# branch basico
https://wokwi.com/projects/364739178773309441
5. WLAN
Un dispositivo sin conexión a internet no puede calificar para IoT, por eso el próximo paso es conectar el esp32 a una red inalámbrica.
Esta vez implementamos la conexión en el archivo boot.py
# boot.py
# branch wlan
# main.py
# branch wlan
Recién cuando el método isconnected() devuelve True termina de ejecutarse el script boot.py y pasa a main.py.
Nótese que estamos usando el objeto wlan en main.py a pesar de que fue creado en boot.py. Esto es posible porque en el firmware ambos archivos pertenecen al mismo ámbito.
6. DHT22
Sensor de humedad y temperatura
este sensor usa una comunicación similar a I2C por lo que requiere una resistencia pull-up en la línea de datos. Micropython ya incluye la librería para los sensores dht, basta con importarla
#branch dht22
https://wokwi.com/projects/364736088234950657
7. MQTT
MQTT es considerado el estándar para mensajes en IoT
MQTT es un protocolo estándar OASIS para mensajería en internet de las cosas. Está diseñado para permitir publicar/suscribir mensajes utilizando extremadamente pocos recursos, ideal para dispositivos remotos con códigos simples y un uso mínimo del canal de comunicaciones. MQTT es apto para industria y se utiliza en automotriz, fábricas, telecomunicaciones, petróleo y gas, etc.
https://github.com/peterhinch/micropython-async/blob/master/v3/docs/TUTORIAL.md
# branch mqttahttps://wokwi.com/projects/372763059106802689