Come creare il proprio pulsante connesso Wi-Fi con ESP8266

Come creare il proprio pulsante connesso Wi-Fi con ESP8266 / Fai da te

L'Internet of Things ha un vasto potenziale DIY. Con un sufficiente know-how e alcuni componenti economici, è possibile creare un sistema complesso di dispositivi connessi.

A volte, tuttavia, vuoi qualcosa di semplice. Nessun campanello o fischietto, solo un pulsante che esegue un singolo compito. Potresti già avere familiarità con qualcosa del genere se hai mai usato un pulsante di Amazon Dash per riordinare gli oggetti domestici di uso quotidiano.

Oggi faremo un pulsante abilitato Wi-Fi usando un NodeMCU, e programmarlo per usare IFTTT per fare ... bene, qualsiasi cosa! Istruzioni scritte dopo il video, se preferisci.

Cosa ti serve

Avrai bisogno:

  • 1 scheda NodeMCU (ESP8266), disponibile per $ 2-3 su AliExpress
  • 1 x pulsante
  • 1 x LED (opzionale)
  • 1 resistenza da 220 Ohm (opzionale)
  • Fili di breadboard e di collegamento
  • Micro USB per la programmazione
  • Computer con l'IDE Arduino installato

Oltre al NodeMCU, dovresti riuscire a trovare la maggior parte di queste parti in qualsiasi kit di avvio Arduino 4 Migliori kit di avvio per Arduino Beginners 4 Migliori kit di avvio per i principianti Arduino Ci sono molti ottimi progetti per principianti Arduino che puoi utilizzare per iniziare ma per prima cosa avrai bisogno di un Arduino e alcuni componenti. Ecco la nostra selezione di 4 dei migliori kit di avvio per ... Per saperne di più. Questo tutorial presumerà che tu stia utilizzando il LED e il resistore opzionali, ma non sono essenziali.

Passaggio 1: impostazione del circuito

L'installazione dell'hardware è molto semplice per questo progetto. Imposta la tua scheda in base a questo diagramma.

Il filo viola si attacca pin D0 a un lato del pulsante. Il filo verde collega l'altro lato del pulsante al Pin RST. Il filo blu scorre da pin D1 alla resistenza e LED. La gamba negativa del LED si attacca al Pin GND del NodeMCU.

Quando la breadboard è impostata dovrebbe apparire in questo modo:

Se ti stai chiedendo come ho portato il mio LED al pin di messa a terra usando solo quei minuscoli pezzi di cavo, il nostro corso accelerato sulla breadboard What Is a Breadboard e come funziona? Un corso di accelerazione rapida Cos'è una breadboard e come funziona? Un corso di accelerazione rapida Vuoi imparare l'elettronica fai-da-te? Potresti aver ricevuto una breadboard nel tuo kit iniziale. Ma cos'è una breadboard e come funziona? Leggi di più dovrebbe aiutare a chiarire! Controllare la configurazione e collegare il NodeMCU al computer tramite USB.

Passaggio 2: impostazione dell'IDE

Prima di iniziare con la programmazione, è necessario fare alcuni preparativi. Se non lo hai già fatto, configura l'IDE Arduino per riconoscere la tua scheda NodeMCU. Puoi aggiungerlo all'elenco delle tue schede tramite File> Preferenze.

Puoi trovare una spiegazione più dettagliata di questo passaggio nel nostro articolo introduttivo su NodeMCU.

Per questo progetto sono necessarie due librerie. Navigare verso Schizzo> Includi libreria> Gestisci librerie. Cercare ESP8266WIFI di Ivan Grokhotkov e installarlo. Questa libreria è stata scritta per realizzare connessioni Wi-Fi con la scheda NodeMCU.


Prossima ricerca per il IFTTTWebhook da John Romkey e installare l'ultima versione. Questa libreria è progettata per semplificare il processo di invio di webhook a IFTTT.

Questa è tutta la preparazione di cui abbiamo bisogno, lasciamo il codice!

Come funzionerà il codice

Useremo il ESP8266WIFI libreria per stabilire una connessione Wi-Fi. Il IFTTTWebhooks la biblioteca fa una richiesta a IFTTT, in questo caso, per pubblicare su Twitter. Quindi, istruire la scheda NodeMCU per dormire quando non in uso per risparmiare energia.

Quando viene premuto il pulsante, collegherà il D0 e RST perni. Ciò ripristina la scheda e il processo si ripresenta.

La maggior parte del codice in questo tutorial è abbastanza semplice per i principianti. Detto questo, se stai iniziando, lo troverai molto più facile da capire dopo aver seguito la nostra guida per principianti Arduino.

Questo tutorial passa attraverso il codice in blocchi per aiutare con la comprensione. Se vuoi essere direttamente al lavoro, puoi trovare il codice completo a Pastebin. Tieni presente che dovrai comunque inserire le credenziali Wi-Fi e IFTTT in questo codice affinché funzioni!

Passaggio 3: test del sonno profondo

Per iniziare, creeremo un semplice test per mostrare come funziona il sonno profondo. Apri un nuovo schizzo nell'IDE di Arduino. Immettere i seguenti due blocchi di codice.

#includere  #includere  #define ledPin 5 #define wakePin 16 #define ssid "YOUR_WIFI_SSID" #define password "YOUR_WIFI_PASSWORD" #define IFTTT_API_KEY "IFTTT_KEY_GOES_HERE" #define IFTTT_EVENT_NAME "IFTTT_EVENT_NAME_HERE" 

Qui, includiamo le nostre librerie, insieme alla definizione di alcune variabili di cui avremo bisogno nel nostro schizzo. Noterai che ledPin e wakePin sono numerati diversamente rispetto al diagramma di Fritzing sopra. Il NodeMCU ha un pinout differente per le schede Arduino. Questo non è un problema, grazie a questo comodo diagramma:

Ora crea una funzione di configurazione:

void setup () Serial.begin (115200); while (! Serial)  Serial.println (""); // stampa una riga vuota prima e dopo il pulsante Premere Serial.println ("Button Pressed"); Serial.println (""); // stampa una linea vuota ESP.deepSleep (wakePin);  

Qui, impostiamo la nostra porta seriale e usiamo un ciclo while per aspettare che inizi. Poiché questo codice si innesca dopo aver premuto il pulsante di ripristino, viene stampato “Pulsante premuto” al monitor seriale. Quindi, diciamo al NodeMCU di andare in deep sleep fino a quando il pulsante non connette il wakePin al RST pin è premuto.

Infine, per i test, aggiungi questo al tuo ciclo continuo() metodo:

void loop () // se il sonno profondo funziona, questo codice non verrà mai eseguito. Serial.println ("Questo non dovrebbe essere stampato");  

Solitamente, gli schizzi di Arduino eseguono continuamente la funzione di loop dopo l'installazione. Poiché inviamo la scheda in modalità di sospensione prima della fine dell'installazione, il ciclo non viene mai eseguito.

Salva il tuo schizzo e caricalo alla lavagna. Apri il monitor seriale e dovresti vedere “Pulsante premuto.” Ogni volta che si attiva il pulsante, la scheda si reimposta e il messaggio viene stampato nuovamente. Funziona!

Una nota sul monitor seriale

Potresti aver notato alcuni personaggi senza senso nel monitor seriale durante alcuni dei tuoi progetti. Questo di solito è dovuto a non impostare il monitor seriale sulla stessa velocità di trasmissione di Serial.begin (XXXX) Vota.

Molte guide suggeriscono di avviare la connessione seriale con una velocità di trasmissione di 115200 per un progetto come questo. Ho provato molte combinazioni e tutte hanno avuto vari gradi di incomprensione prima e dopo i messaggi seriali. Secondo vari post del forum, questo potrebbe essere dovuto a una scheda difettosa oa un problema di compatibilità del software. Dato che non influisce negativamente sul progetto, sto scegliendo di far finta che non stia succedendo.

Se si verificano problemi con il monitor seriale, provare diversi baud rate e vedere quale funziona meglio per voi.

Passaggio 4: connessione a Wi-Fi

Ora crea una funzione per la connessione alla tua rete Wi-Fi.

void connectToWifi () Serial.print ("Connecting to: SSID NAME"); // decommentare la riga successiva per mostrare il nome SSID //Serial.print(ssid); WiFi.begin (ssid, password); Serial.println (""); // stampa una linea vuota Serial.print ("Tentativo di connessione:"); // prova a connetterti per 10 secondi int i = 10; while (WiFi.status ()! = WL_CONNECTED && i> = 0) delay (1000); Serial.print (i); Serial.print (","); io--;  Serial.println (""); // stampa una linea vuota // stampa il risultato della connessione if (WiFi.status () == WL_CONNECTED) Serial.print ("Connected."); Serial.println (""); // stampa una linea vuota Serial.print ("Indirizzo IP NodeMCU:"); Serial.println (WiFi.localIP ());  else Serial.println ("Connessione fallita - controlla le tue credenziali o connessione");  

Questo metodo tenta di connettersi alla rete dieci volte con un secondo in mezzo. Il successo o il fallimento della connessione viene stampato sul monitor seriale.

Passaggio 5: chiamata del metodo di connessione

In questo momento, il connectToWifi () non viene mai chiamato. Aggiungi una chiamata alla tua funzione di configurazione tra il “Pulsante premuto” messaggio e invio della scheda per dormire.

connectToWifi (); 

Nel caso ti stia chiedendo dove questo si adatta, dovrebbe assomigliare a questo:


Nella parte superiore dello schizzo sostituire il ssid e parola d'ordine variabili con le tue credenziali Wi-Fi. Salva il tuo schizzo e caricalo alla lavagna.

Ora, quando la scheda si avvia, tenterà di connettersi alla rete Wi-Fi, prima di tornare alla funzione di configurazione. Ora, consente di configurare l'integrazione IFTTT.

Passaggio 6: impostazione dell'integrazione IFTTT

IFTTT consente l'integrazione con una vasta gamma di servizi Web. L'abbiamo utilizzato nel tutorial Wi-Fi PC tower LED per inviare un avviso ogni volta che viene ricevuta una nuova email. Oggi lo useremo per inviare un tweet con la semplice pressione di un pulsante.

Vai a Le mie applet pagina e selezionare Nuova applet

Clicca su +Questo e connettersi a Webhooks. Selezionare “Ricevi una richiesta web” e dai il nome al tuo evento. Mantienilo semplice! Annota il nome dell'evento, dovrai aggiungerlo successivamente al tuo codice NodeMCU. Clic “Crea trigger”.


Ora seleziona +quello. Cerca il cinguettio servizio e connettersi ad esso - è necessario autorizzarlo per pubblicare sul tuo account Twitter. Selezionare “Pubblica un tweet” e scegli il tuo messaggio.


La schermata successiva ti chiederà di rivedere l'applet. Fare clic su Fine. Questo è tutto!

Passaggio 7: aggiunta delle credenziali IFTTT al codice

Tornando all'IDE di Arduino è necessario aggiungere la chiave API IFTTT e il nome dell'evento alle variabili definite. Per trovare la chiave API, vai a Le mie applet e selezionare Webhooks sotto il Servizi scheda. Selezionare Documentazione per accedere alla tua chiave.

Copia la chiave e il nome dell'evento nel tuo codice, sostituendo i nomi temporanei impostati per loro.

#define IFTTT_API_KEY "IFTTT_KEY_GOES_HERE" #define IFTTT_EVENT_NAME "IFTTT_EVENT_NAME_HERE" 

Nota, le virgolette devono rimanere, solo sostituire il testo.

Tra chiamare il connectToWifi () e mandando la scheda a dormire, crea un'istanza dell'oggetto libreria IFTTTWebhook. Il LED segnala il completamento dell'attività prima che il sonno profondo ricominci.

// solo collegato al gancio Wi-Fi IFTTTWebhook (IFTTT_API_KEY, IFTTT_EVENT_NAME); hook.trigger (); pinMode (ledPin, OUTPUT); digitalWrite (ledPin, HIGH); ritardo (200); digitalWrite (ledPin, LOW); // ora sto mandando la pensione a dormire 

Chiamando trigger sul gancio l'oggetto si spegne dall'applet IFTTT e deve essere inserito nel tuo account Twitter. Salva il tuo schizzo e caricalo. Ora dovresti avere un pulsante tweeting completamente funzionale.

Se non sembra funzionare, controlla attentamente il codice e le credenziali per eventuali errori. Se rimani veramente bloccato, prendi il codice completo da sopra e confrontalo con il tuo.

Fatto! Come potresti migliorarlo ulteriormente?

Questa è una versione base di un pulsante Wi-Fi, ma ci sono molti modi per migliorarla. Per semplicità, qui viene utilizzata la connessione USB per alimentare. Una batteria lo renderebbe completamente mobile e una custodia contenente il circuito sarebbe il perfetto progetto di stampa 3D per principianti.

Nonostante si utilizzi un sonno profondo, è possibile che una batteria si esaurisca abbastanza rapidamente. Ci sono molti suggerimenti per il risparmio energetico Arduino che aiutano in questo tipo di progetti. Anche se più difficile di questo tutorial, se hai creato il tuo Arduino potente dal punto di vista energetico, un pulsante Wi-Fi a batteria potrebbe durare per mesi!

Questo progetto sarebbe perfetto per un telecomando per applicazioni domestiche intelligenti. Esistono già una quantità considerevole di applet per la domotica 10 delle migliori ricette IFTTT per la Smart Home Automation 10 delle migliori ricette IFTTT per l'automazione domestica intelligente Le giuste ricette IFTTT per la tua casa intelligente possono farti risparmiare tempo, fatica ed energia. Ecco dieci dei nostri preferiti per iniziare. Ulteriori informazioni disponibili su IFTTT. Una volta che hai le nozioni di base, puoi utilizzare praticamente qualsiasi sensore o interruttore per attivare praticamente qualsiasi servizio tu possa immaginare.

Immagine di credito: Vadmary / Depositphotos

Scopri di più su: Arduino, tutorial sul progetto fai-da-te.