¡Conectar nuestros proyectos a Internet se ha vuelto mucho más fácil y económico! los $6 Frambuesa Pi Pico W, una actualización del Raspberry Pi Pico original, trajo una gran actualización: Wi-Fi Esta actualización, junto con el precio de $ 6, permite a los fabricantes aprovechar la potencia del SoC RP2040 para una gran cantidad de aplicaciones de Internet de las cosas. El Pico W también encabeza nuestra lista de mejores tarjetas RP2040.
Ya hemos explicado cómo transmitir datos hacia y desde un Raspberry Pi Pico W a otro servicio web, AnviYO. Pero, ¿qué sucede si solo desea recopilar datos y enviarlos al mundo? Hay muchas formas de hacer esto, pero la más fácil tiene que ser IFTTT.
IFTTT (If This Then That) es un servicio web que puede tomar datos de muchas entradas diferentes (Twitter, domótica, Google, Facebook, etc.) y enviarlos a otros servicios.
En este proyecto, utilizaremos el servicio más básico, los webhooks, para enviar una solicitud HTTP POST desde una Raspberry Pi Pico W al servicio IFTTT. En IFTTT, crearemos un subprograma que interceptará el webhook y activará un tweet para enviarlo en Twitter.
Para este proyecto necesitarás
El circuito del sensor de temperatura
Nuestro circuito es simple, consiste solo en el Raspberry Pi Pico W y un sensor de temperatura. El DHT11 es un sensor de temperatura de cuatro pines de bajo costo que es omnipresente en la comunidad de fabricantes. Mirando desde el frente (la "jaula" azul), conectamos a la Raspberry Pi Pico W de la siguiente manera:
Alfiler 1: (Cable rojo) Conecte VCC a 3V3 (SALIDA) de Pico W.
Alfiler 2: (Cable amarillo) Conecte la salida de datos a GP4 de Pico W.
Alfiler 3: Sin conexión.
Alfiler 4: (Cable negro) Conecte GND a GND de Pico W.
Configurar IFTTT
IFTTT (If This, Then That) es el conducto que conecta nuestra Raspberry Pi Pico W con Twitter. IFTTT es un servicio gratuito que ofrece innumerables formas de conectar diferentes servicios de datos.
Crearemos un subprograma que reaccione a un webhook (una URL personalizada) que envíe datos a IFTTT. Luego, IFTTT agregará los datos en un mensaje que se enviará a nuestros seguidores en Twitter.
1. en un navegador visita IFTTT e iniciar sesión / crear una cuenta.
2. Haz clic en Crear.
3. Haga clic en Agregar. Este es nuestro evento desencadenante. Si esto sucede, nuestro applet se inicia. En nuestro caso si se envía un webhook desde la Raspberry Pi Pico W.
4. Busque webhook, luego haga clic en el icono de webhook.
5. Haga clic en Recibir solicitud web. Esta es nuestra petición, enviada por el Raspberry Pi Pico W.
6. Establezca el nombre del evento en Post_Tweet, luego haga clic en Create Trigger.
7. Haga clic en Luego agregue esto. Este es el resultado de nuestro activador, en este caso se envía un Tweet.
8. Busque Twitter, luego haga clic en el icono de Twitter.
9. Seleccione Publicar un Tweet.
diez. Verifique que se haya seleccionado la cuenta de Twitter correcta, es posible que deba vincular su cuenta de Twitter a IFTTT. Reemplace el texto del tweet con su propio mensaje personalizado. Vincular su cuenta de Twitter a IFTTT es un proceso automatizado, que IFTTT activará y le pedirá que confirme.
11 Haga clic en Agregar ingrediente y seleccione Valor 1. Luego complete el resto del mensaje, en este caso especificando que la temperatura está en grados Celsius. Haga clic en Crear acción para guardar. Los ingredientes son cómo IFTTT agrega información adicional a nuestro tweet al extraer datos de nuestra URL mnemónica.
12 Haga clic en Continuar.
13. Revise los detalles del subprograma, habilite la opción de notificación y haga clic en Finalizar cuando esté listo. Las notificaciones nos permiten depurar el applet si algo sale mal.
Se ha creado el subprograma IFTTT, pero aún no tenemos la URL del webhook. Esta URL es la que envía los datos de temperatura del Raspberry Pi Pico W a nuestro servicio IFTTT. La URL requiere nuestro activador (Post_Tweet) y una clave API, lo que desbloquea el acceso IFTTT.
1.Visitar este enlace en una nueva pestaña/ventana del navegador.
2. Copie el enlace Hacer una solicitud POST o GET web en el Bloc de notas o en un editor de texto. Su texto mostrará una clave API correcta, por razones de seguridad hemos cambiado el texto.
https://maker.ifttt.com/trigger/{event}/json/with/key/YOUR API KEY HERE
3. Elimine /json y reemplace {event} con Post_Tweet.
https://maker.ifttt.com/trigger/Post_Tweet/with/key/YOUR API KEY HERE
Ahora tiene una URL de webhook válida que vinculará su Raspberry Pi Pico W a Twitter a través de IFTTT.
Configuración de Raspberry Pi Pico W
Nuestro Raspberry Pi Pico W actúa como un dispositivo de recopilación de datos. Se conecta a nuestro Wi-Fi y toma una lectura de temperatura cada hora. Esto luego se envía a IFTTT usando una URL de webhook personalizada. IFTTT luego envía el mensaje a Twitter de acuerdo con el applet que acabamos de crear.
Nuestro objetivo ahora es instalar el firmware MicroPython más reciente para nuestro Raspberry Pi Pico W, luego escribir algunas líneas de código MicroPython para conectarnos a nuestro Wi-Fi, tomar una lectura de temperatura y luego enviar esos datos a IFTTT.
1. Seguir esta guía para descargar e instalar el firmware de MicroPython y configurar Thonny.
2. Abra Thonny y cree un nuevo archivo.
3. Importe tres módulos de código. Network permite que Pico W se conecte a una red Wi-Fi. Urequests es una versión de consultas, una forma de trabajar con datos web, para MicroPython. DHT se refiere al sensor de temperatura DHT11 utilizado en el proyecto.
import network
import urequests
import dht
4. Importe dos módulos de código más. Desde el módulo de Tiempo, importe la función de suspensión, la usaremos para agregar una pausa al proyecto. Desde el pin de importación del módulo Machine, esto permite que nuestro código interactúe con el GPIO.
from time import sleep
from machine import Pin
5. Cree un objeto, "sensor" que vincule nuestro código al DHT11 conectado a través del GPIO. Este objeto nos permite interactuar con el sensor conectado en el pin 2, consultando los datos de temperatura.
sensor = dht.DHT11(Pin(2))
6. Cree un objeto "wlan" y utilícelo para conectar el código a Wi-Fi en Raspberry Pi Pico W, luego habilite Wi-Fi.
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
siete. Conecte su Pico W a su punto de acceso Wi-Fi usando su SSID y contraseña.
wlan.connect("SSID","PASSWORD")
8. Haga una pausa de cinco segundos antes de continuar. Esto no es estrictamente necesario ya que la conexión Wi-Fi anterior es una llamada de bloqueo que se conectará o fallará y luego liberará el bloqueo. Este descanso está ahí para dejar un poco más de libertad de acción.
sleep(5)
9. Imprime el estado actual de la conexión Wi-Fi. Será Verdadero para una conexión exitosa o Falso si no pudo conectarse.
print(wlan.isconnected())
diez. Agregue un bucle para ejecutar continuamente el siguiente código. Un ciclo while True ejecutará el código continuamente hasta que se apague el Pico W. Tenga en cuenta que el código que sigue a esta línea está sangrado para mostrar que es parte del ciclo.
while True:
11 Tome una lectura con el DHT11. Necesitamos hacer esto para obtener los datos sin procesar.
sensor.measure()
12 Guarda la temperatura actual en un objeto, la temperatura.
temperature = sensor.temperature()
13 Imprime la temperatura en Python Shell (REPL). Esto es útil para depurar cualquier problema. Debe mostrar la temperatura en cada iteración del bucle.
print(temperature)
14 Cree un objeto, mensaje, para almacenar la URL de webhook única que creamos anteriormente. Al final de la URL, agregue ?value1= y asegúrese de que esté entre comillas " ". No olvide agregar su clave API IFTTT única.
message = "https://maker.ifttt.com/trigger/Post_Tweet/with/key/YOUR IFTTT API KEY HERE?value1="
15. En la misma línea, agregue la temperatura actual almacenada en el objeto "temperatura". Tenga en cuenta que necesitamos convertir la temperatura de un número entero/flotante a una cadena usando la función str(). Su línea de mensaje ahora debería decir lo siguiente.
message = "https://maker.ifttt.com/trigger/Post_Tweet/with/key/YOUR IFTTT API KEY HERE?value1="+str(temperature)
dieciséis. Publique el mensaje en Twitter usando urequests.post. Básicamente, esto envía los datos a IFTTT a través de la URL del webhook, y luego IFTTT los envía a Twitter.
urequests.post(message)
17 Haga una pausa en el código durante una hora (3600 segundos) antes de permitir que se repita el ciclo. IFTTT tiene un límite de frecuencia de 25 tweets por día, por lo que para tener un flujo constante de datos, debemos limitar los tweets a uno por hora. Si excede este límite, IFTTT deshabilita el applet durante la noche.
sleep(3600)
18 Guarde el código en su Raspberry Pi Pico W como tweet_temp.py
Lista completa de códigos.
import network
import urequests
import dht
from time import sleep
from machine import Pin
sensor = dht.DHT11(Pin(2))
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("SSID","PASSWORD")
sleep(5)
print(wlan.isconnected())
while True:
sensor.measure()
temperature = sensor.temperature()
print(temperature)
message = "https://maker.ifttt.com/trigger/Post_Tweet/with/key/YOUR IFTTT API KEY HERE?value1="+str(temperature)
urequests.post(message)
sleep(3600)
Probar y ejecutar el código
Antes de implementar con éxito el proyecto, debemos probar que el código funciona.
1. Haga clic en el botón Ejecutar, ubicado en la esquina superior izquierda de Thonny.
2. Compruebe la salida. Debería ver True, confirmando que estamos conectados a Wi-Fi, luego debería aparecer la temperatura.
3. Visite su cuenta de Twitter y verifique que el mensaje fue publicado. Debería tardar entre 10 y 20 segundos en aparecer.
4. Haga clic en Detener para detener la ejecución del código.
Con el código probado con éxito, ahora podemos configurar el código para que se ejecute automáticamente cuando se inicia Raspberry Pi Pico W.
1. Guarde el código en su Raspberry Pi Pico W como main.py. MicroPython (en cualquier dispositivo) buscará main.py cuando se encienda. Si está presente, el código dentro de este archivo se ejecuta automáticamente.
2. Desconecte el cable micro USB del Pico W, luego vuelva a insertarlo para forzar un reinicio.
3. Revisa tu cuenta de Twitter para ver el tweet correspondiente.
Deja una respuesta