Creare un campanello Wi-Fi con un Raspberry Pi Pico W
Ecco un tutorial semplice ma pratico che vi aiuterà a capire come attivare l'invio di un'e-mail (o la comparsa di una notifica sul vostro telefono) quando viene premuto un pulsante collegato al Raspberry Pi Pico W. In questo modo, potrete utilizzare il vostro Pico W come campanello Wi-Fi!
Con questo progetto, imparerete a fare richieste HTTP per connettervi agli endpoint di IFTTT.
Video
Parti necessarie
Raspberry Pi Pico W con intestazioni
Cablaggio del Raspberry Pi
Per collegare il Raspberry Pi Pico W al pulsante:
- Collegare un lato del pulsante a un GPIO14
- Collegare l'altro lato di un pulsante a un pin da 3,3 V
Si noti che esistono pulsanti con quattro punte e pulsanti con due punte.
Se si dispone di un pulsante a quattro poli, è possibile collegare i fili del ponticello in diagonale per assicurarsi che si trovino su lati opposti.
Se si dispone di un pin a due poli, è sufficiente collegare i poli opposti.
Impostazione di IFTTT per l'invio di un'e-mail
IFTTT sta per SE Til suo, Tgallina Tcappello.
Invece di scrivere il vostro codice, utilizzeremo IFTTT per rendere tutto più semplice.
Clicca qui per andare a IFTTT.com e registrarsi per un account.
Una volta effettuata la registrazione, fare clic su "Crea".
Nella parte "Se questo", fare clic su "Aggiungi" per impostare un evento. In questo modo si impostano le condizioni necessarie per attivare la parte "Then That", che consiste nell'inviare una notifica.
Nella schermata seguente, "Scegliere un servizio", digitare "Webhooks" e fare clic su di esso.
Quindi, fare clic su "Ricevere una richiesta web".
Digitare il nome dell'evento pico_w_request e scorrere verso il basso e "Crea trigger".
Si tornerà alla schermata "Se questo allora quello". È il momento di impostare la parte "Then That", quindi fate clic su di essa.
Cercate Gmail e cliccateci sopra. Quindi fare clic su "Invia un'e-mail".
Scegliete il vostro indirizzo e-mail.
Quindi digitare un argomento. Noi abbiamo scritto "Qualcuno ha suonato il campanello!".
Nel corpo, abbiamo più o meno duplicato il messaggio dell'oggetto, tranne che per l'inserimento di
{{OccurredAt}} per mostrare a che ora è stato attivato.
Clicca "Creare azione". Nella schermata successiva, fare clic su "Continua".
Digitare quindi un nome per l'applet. Noi abbiamo usato "Pico W to Gmail".
Bene! È ora di fare clic su "Fine".
Impostazione di IFTTT per l'invio di notifiche all'app del telefono
È anche possibile far sì che IFTTT invii una notifica all'app ogni volta che qualcuno suona il campanello.
Il processo è molto simile a quello della notifica via e-mail.
Per la parte "If This", scegliere "Webhooks" come servizio e scegliere "Receive a web request". Digitare un nome per l'evento. Noi abbiamo usato "door_bell_rang".
Per quanto riguarda la parte "Poi che", è qui che si differenzia.
Dovrete invece scegliere un servizio "Notifiche" e poi "Invia una notifica dall'app IFTTT".
Una volta compilati i campi "If This" e "Then That", fare clic su "continue". Digitare il titolo dell'applet e fare clic su Fine.
Trovare le credenziali IFTTT
Ora che l'applet If-Then è stata configurata, si può procedere alla ricerca delle credenziali in modo che Pico W possa connettersi a IFTTT.
Per fare questo:
- Cliccate sulla vostra immagine del profilo in alto a destra
- Cliccate su "I miei servizi".
- Fare clic su Webhooks
- Fare clic sul pulsante Documentazione.
In questa pagina vengono visualizzate alcune informazioni, tra cui la chiave segreta.
Collegamento di Raspberry Pi Pico W a IFTTT
Tutti il nostro codice è ora sul nostro repo Githubche potete trovare qui.
Scaricare il codice e decomprimerlo. Copiare il codice sul Raspberry Pi Pico W.
È necessario modificare segreti.py.
Sostituire ssid con l'SSID della rete WiFi, quindi inserire la password nel campo pw campo.
Utilizzate la chiave ottenuta nella sezione precedente e incollatela nel file ifttt_keyil valore di questo parametro.
Codice del campanello
Il codice del campanello si basa sulle esercitazioni precedenti. In breve, ecco cosa fa il codice:
- Importa i pacchetti necessari
- Imposta il WiFi e si connette alla rete
Ecco il codice specifico per il campanello:
door_bell = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)
last_state = False
current_state = False
while True:
current_state = door_bell.value()
if last_state == False and current_state == True:
# Make a GET request to trigger webhook on IFTTT
# ifttt_url = 'https://maker.ifttt.com/trigger/pico_w_request/with/key/'+secrets['ifttt'_key']
ifttt_url = 'https://maker.ifttt.com/trigger/door_bell_rang/with/key/'+secrets['ifttt_key']
request = requests.get(ifttt_url)
print(request.content)
request.close()
time.sleep(2)
last_state = current_state
Se ricordate, abbiamo collegato il pulsante al GPIO14. Pertanto, vogliamo creare un oggetto che legga il valore di tale GPIO.
door_bell = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)
Vogliamo che IFTTT invii una notifica solo se lo stato cambia da Falso a Vero. Vogliamo anche evitare che IFTTT invii più notifiche se il pulsante è stato premuto una volta.
Da qui, queste misure di salvaguardia:
last_state = False
current_state = False
while True:
current_state = door_bell.value()
if last_state == False and current_state == True:
# Make a GET request to trigger webhook on IFTTT
# ifttt_url = 'https://maker.ifttt.com/trigger/pico_w_request/with/key/'+secrets['ifttt'_key']
ifttt_url = 'https://maker.ifttt.com/trigger/door_bell_rang/with/key/'+secrets['ifttt_key']
request = requests.get(ifttt_url)
print(request.content)
request.close()
time.sleep(2)
last_state = current_state
Il problema è che quando si preme il pulsante, lo si può tenere premuto per un po' senza nemmeno accorgersene. A voi potrebbe sembrare una sola pressione, ma per il Pico W potrebbero essere cinque. Quindi, vogliamo evitare di ricevere cinque notifiche.
Questo è il punto in cui il ultimo_stato e stato_attuale Le variabili entrano in gioco.
Quando si preme il pulsante, stato_attuale diventa Vero.
Questo attiva il codice che si collega a IFTTT.
Una volta terminata questa operazione, c'è una pausa di due secondi grazie a time.sleep(2).
Allora, ultimo_stato diventa Vero perché assume il valore di stato_attuale.
In questo modo si impedisce a qualsiasi ulteriore pressione registrata di attivare altre notifiche, in quanto entrambe le variabili sono ora Vero, a causa di questa linea:
if last_state == False and current_state == True:
Una volta che le presse supplementari sono passate, ultimo_stato ritorna a False e quindi è pronto a ricevere un messaggio Vero per attivare nuovamente la connessione a IFTTT.
Scegliere il metodo di notifica
È qui che si sceglie il proprio percorso.
Se è stata creata una notifica di invio via e-mail, questa riga può essere decommentata:
# ifttt_url = 'https://maker.ifttt.com/trigger/pico_w_request/with/key/'+secrets['ifttt'_key']
Questo presuppone che l'evento sia stato chiamato "pico_w_request". In alternativa, cambiare la parte dell'URL con il nome che gli si è dato.
Se si desidera una notifica dell'applicazione, è necessario utilizzare la riga successiva:
ifttt_url = 'https://maker.ifttt.com/trigger/door_bell_rang/with/key/'+secrets['ifttt_key']
Dove si va a finire?
Con questo semplice progetto si può andare lontano.
Un pulsante può essere usato per attivare molte cose, una volta che si ha familiarità con l'interazione con le API.
Ad esempio, è possibile programmare il pulsante in modo che colpisca l'API di Spotify per interrompere la musica o saltare un brano.
Volete rimanere aggiornati sulle novità e sugli altri progetti Pico? Cliccate qui:
Come impostereste questo campanello Wi-Fi Pico in base alle vostre esigenze?
Saluti
Volevo provare alcuni dei vostri progetti RPI Pico W, cioè IFTT send mail e il progetto webpage. Ho incontrato un problema: quando ho eseguito l'esempio IFTT, il programma micropython cercava un modulo 'sockets'. Non sono riuscito a trovare un modulo sockets per consentire al programma di funzionare correttamente. Potete consigliarmi come risolvere correttamente il problema?
[...] 参考にしたサイト:Tutorial sul campanello Wi-Fi di Raspberry Pi Pico W (richieste HTTP e IFTTT) [...]
[...] In particolare, questo progetto non è molto diverso dalla nostra esercitazione sul campanello Pico W che abbiamo condiviso nel luglio dello scorso anno. [...]
[...] Volete rendere la vostra casa più intelligente? Un Raspberry Pi può servire sia come dispositivo centrale che periferico per automatizzare tutto. Per esempio, potete trasformarlo in una telecamera di sorveglianza o in un sistema di sicurezza, potete usarlo come assistente vocale, potete creare uno specchio intelligente o usarlo per l'illuminazione intelligente. Potreste persino usarlo per innaffiare le piante, monitorare gli uccelli nel vostro giardino o per un campanello intelligente! [...]