Rpi Pico + micropython

Sitio: Facultad de Ingeniería U.Na.M.
Curso: IC511 - Internet de las Cosas, Sensores y Redes
Libro: Rpi Pico + micropython
Imprimido por: Invitado
Día: miércoles, 4 de diciembre de 2024, 23:19

1. Introducción

ESP32 es la denominación de una familia de chips SoC de bajo coste y consumo de energía, con tecnología Wi-Fi y Bluetooth de modo dual integrada.
El esp32 es el dispositivo por excelencia para proyectos IoT. Su amplio abanico de características y su costo accesible lo convierten en una elección muy tentadora para emprendimientos de este tipo. Se destaca sobre todo por contar con la pila TCP/IP que permite conectarse a internet. Siguiendo con las elecciones populares en el ámbito IoT, micropython es el lenguaje favorito de los desarrolladores debido a su simplicidad, gran cantidad de librerías y demás beneficios del hermano mayor Python.

¡IMPORTANTE! Rpi Pico trabaja con una tensión de 3,3 V y las entradas/salidas NO tienen protección de sobre tensión.


Distribución de pines no es estándar

Los códigos presentados en este libro también están disponible en github listos para clonar.

$ git clone https://github.com/GermanXander/rpipico.git

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 rpi pico además le agregaremos la extensión Raspberry Pi Pico.


3. Archivos

Los microcontroladores con micropython suelen trabajar con 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.

El archivo boot.py se ejecuta antes de que la placa esté totalmente configurada ya que el mismo puede contener parámetros de configuración. Los periféricos recién quedan activos después de que se ejecute boot.py, esto implica que las placas que utilizan comunicación directa por USB no dispondrán de la consola REPL durante la ejecución de boot.py.

La recomendación en el caso de raspberry pi pico es prescindir de boot.py y utilizar solo main.py

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/rpipico.git

# branch basico

5. WLAN

Un dispositivo sin conexión a internet no puede calificar para IoT, por eso el próximo paso es conectar la rpi pico a una red inalámbrica.

# main.py
# branch wlan

Ejemplo tomado de "Connecting to the Internet with Raspberry Pi Pico W-series."

6. DHT22

Sensor de humedad y temperatura

DHT22 Temperature and Humidity Sensor

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

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.

MQTT: publish / subscribe architecture

Vamos a utilizar el programa mqttx para recibir/transmitir mqtt
servidor: iotunam.duckdns.org
puerto: 8883


También existen muchos programas para android
https://play.google.com/store/apps/details?id=in.dc297.mqttclpro&pli=1

 

  

Se publica/suscribe a tópicos. Los tópicos tienen niveles separados por "/" y son jerárquicos.
existen 2 comodines para los niveles: el símbolo + para un solo nivel y el símbolo # para todos los subniveles.

➡️ micasa/plantabaja/+/temperatura
✅ micasa/plantabaja/sala/temperatura
✅ micasa/plantabaja/cocina/temperatura
❌ micasa/plantabaja/habitacion/humedad
❌ micasa/1erpiso/cocina/temperatura

➡️ micasa/plantabaja/#
✅ micasa/plantabaja/sala/temperatura
✅ micasa/plantabaja/cocina/temperatura
✅ micasa/plantabaja/habitacion/humedad
❌ micasa/1erpiso/cocina/temperatura

https://github.com/peterhinch/micropython-async/blob/master/v3/docs/TUTORIAL.md

# branch mqtta