Cómo controlar un relé (encender/apagar) con MicroPython en una Raspberry Pi Pico W con Thonny

En esta guía te mostramos cómo instalar MicroPython en tu Raspberry Pi Pico W, crear un interruptor inteligente de Sinric Pro y controlarlo con plataformas domóticas populares como Alexa, Google Home y SmartThings.

Requisitos previos :

  1. Placa de desarrollo Raspberry Pi Pico W x 1.
  2. Controlador de relé SPDT x 1.
  3. Cables jumper.

Instala MicroPython en tu Raspberry Pi Pico W

  1. Descarga el firmware de MicroPython más reciente para la Raspberry Pi Pico W desde: https://rpf.io/pico-w-firmware

  2. Conecta un extremo de un cable micro USB a tu Raspberry Pi Pico W.

  3. Mantén pulsado el botón BOOTSEL de la Pico W.

  4. Conecta el otro extremo del cable USB a tu ordenador (de escritorio, portátil o Raspberry Pi).

  5. La Pico W aparecerá como una unidad extraíble (normalmente llamada RPI-RP2) en tu explorador de archivos.
    Arrastra y suelta el archivo .uf2 de MicroPython descargado en esta unidad.

La Pico W se reiniciará y se desconectará automáticamente; esto es normal. Una vez completado, MicroPython estará instalado y listo para usarse.

Comprueba la instalación:

  1. Abre el editor Thonny.

  2. En la esquina inferior derecha, haz clic en el texto y selecciona MicroPython (Raspberry Pi Pico) entre las opciones.

sinricpro micropython thonny

En la shell, escribe

print("Hello, MicroPython!")

sinricpro micropython thonny hello world

Configura la librería SinricPro

  1. Descarga el Wheel .whl más reciente desde https://github.com/sinricpro/micropython-sinricpro-sdk/releases

  2. En Thonny, selecciona Tools > Manage packages.

  3. Haz clic en Here en la sección Install from Local File y continúa la instalación.

Sinric Pro Pymakr

Sinric Pro Pymakr

Sinric Pro Pymakr

Integración con Sinric Pro

Paso 1 : Crea un nuevo dispositivo en Sinric Pro

Sinric Pro create device alexa

Sinric Pro online offline push notifications

Para recibir notificaciones push cuando tu dispositivo se conecte o desconecte, activa la opción “Connect and Disconnect” en la app de Sinric Pro. Para recibir notificaciones push cuando tu dispositivo se encienda o se apague, activa la opción “On and Off”.

Sinric Pro copy device id

Paso 2 : Programación

Pega el siguiente código en main.py

from sinricpro import SinricPro
from sinricpro.devices.sinricpro_switch import SinricProSwitch
from machine import Pin

import uasyncio as a
import network

# enter wifi details
ssid = ""
ssid_password = ""

# enter appkey, appsecret and device id from above
app_key    = ""
app_secret = ""
device_id  = ""

# relay is connected to GPIO 16
relay = Pin(16, Pin.OUT)

async def on_disconnected():
    print('Disconnected from SinricPro...reboot?')

async def on_connected():
    print('Connected to SinricPro...')

async def on_power_state_callback(device_id: str, state: bool):
    print(f'device id: {device_id} state: {state}')

    if state:
        relay.value(1)
    else:
        relay.value(0)

    return True

# connect to wifi
def do_connect():
    sta_if = network.WLAN(network.STA_IF)
    ap = network.WLAN(network.AP_IF) # create access-point interface
    ap.active(False)         # deactivate the interface
    if not sta_if.isconnected():
        print('Connecting to network...')
        sta_if.active(True)
        sta_if.connect(ssid, ssid_password)
        while not sta_if.isconnected():
            pass
    print('Connected network config:', sta_if.ifconfig())

# start sinricpro
def do_sinricpro():
    sinricpro = SinricPro()
    sinricpro.on_connected(on_connected)
    sinricpro.on_disconnected(on_disconnected)

    sinricpro_switch = SinricProSwitch(device_id)
    sinricpro_switch.on_power_state(on_power_state_callback)

    sinricpro.add_device(sinricpro_switch)
    sinricpro.start(app_key, app_secret)

# main coroutine
async def main():
    do_connect()
    do_sinricpro()

    while True:
        await a.sleep_ms(10_000)

# start asyncio task and loop
try:
    # start the main async tasks
    a.run(main())
finally:
    # reset and start a new event loop for the task scheduler
    a.new_event_loop()

Eso es todo.

Sinric Pro MicroPython Connected

Ahora el dispositivo está conectado al servidor de Sinric Pro y puedes controlarlo desde la app de Sinric Pro, la skill de Alexa, la action de Google Home o SmartThings

Tutoriales relacionados

Este documento es de código abierto. ¿Has visto una errata? Crea una issue