In questo tutorial imparerai come creare un pulsante abilitato Wi-Fi usando NodeMCU e IFTTT.

Come creare il proprio pulsante di connessione Wi-Fi con ESP8266

Annuncio pubblicitario L'Internet of Things ha un enorme potenziale fai-da-te. Con abbastanza know-how e pochi componenti economici, potresti costruire un complesso sistema di dispositivi collegati. A volte, tuttavia, vuoi qualcosa di semplice. Niente campane o fischietti, solo un pulsante che esegue una singola attività.

Annuncio pubblicitario

L'Internet of Things ha un enorme potenziale fai-da-te. Con abbastanza know-how e pochi componenti economici, potresti costruire un complesso sistema di dispositivi collegati.

A volte, tuttavia, vuoi qualcosa di semplice. Niente campane o fischietti, solo un pulsante che esegue una singola attività. Potresti già avere familiarità con qualcosa di simile se hai mai usato un pulsante Amazon Dash per riordinare gli oggetti domestici di tutti i giorni.

Oggi creeremo un pulsante abilitato Wi-Fi usando un NodeMCU e lo programmeremo per usare IFTTT per fare ... beh, qualsiasi cosa! Se preferisci, istruzioni scritte dopo il video.

Cosa ti servirà

Parti del pulsante Wi-Fi necessarie

Avrai bisogno:

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

Oltre a NodeMCU, dovresti essere in grado di trovare la maggior parte di queste parti in qualsiasi Starter kit Arduino 4 Best Starter Kit per principianti Arduino 4 Best Starter Kit per principianti Arduino Ci sono molti progetti Arduino per principianti che puoi usare per iniziare, ma prima avrai bisogno di un Arduino e di alcuni componenti. Ecco la nostra selezione di 4 dei migliori kit di partenza per ... Altre informazioni. Questo tutorial supporrà che tu stia utilizzando il LED e la resistenza opzionali, ma non sono essenziali.

Passaggio 1: impostazione del circuito

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

Pulsante Wi-Fi NodeMCU Diagramma di fritz

Il filo viola collega il perno D0 a un lato del pulsante. Il filo verde collega l'altro lato del pulsante al pin RST . Il filo blu passa dal pin D1 al resistore e al LED. La gamba negativa del LED si collega al pin GND del NodeMCU.

Quando la breadboard è impostata, dovrebbe assomigliare a questa:

Impostazione del circuito del pulsante Wifi NodeMCU

Se ti stai chiedendo come ho fatto il mio LED andare al pin di terra usando solo quei piccoli pezzi di cavo, il nostro corso rapido crash breadboard Che cos'è una breadboard e come funziona? Un corso rapido di arresto Cos'è una breadboard e come funziona? Un corso rapido di crash Vuoi imparare l'elettronica fai-da-te? Potresti aver ricevuto una breadboard nel tuo kit di base. Ma cos'è una breadboard e come funziona? Leggi di più dovrebbe aiutarti a chiarirlo! Controlla la configurazione e collega NodeMCU al computer tramite USB.

Passaggio 2: impostazione dell'IDE

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

URL del board manager arduino

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

Per questo progetto sono necessarie due librerie. Passare a Schizzo> Includi libreria> Gestisci librerie . Cerca ESP8266WIFI di Ivan Grokhotkov e installalo. Questa libreria è stata scritta per effettuare connessioni Wi-Fi con la scheda NodeMCU.

Arduino IDE Library Manager
Quindi cerca IFTTTWebhook di John Romkey e installa l'ultima versione. Questa libreria è progettata per semplificare il processo di invio di webhook a IFTTT.

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

Come funzionerà il codice

Useremo la libreria ESP8266WIFI per stabilire una connessione Wi-Fi. La libreria IFTTTWebhooks invia una richiesta a IFTTT, in questo caso, per pubblicare su Twitter. Quindi, istruire la scheda NodeMCU a dormire quando non viene utilizzata per risparmiare energia.

Quando il pulsante viene premuto, collegherà i pin D0 e RST . Ciò reimposta la scheda e il processo si ripete.

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 di Arduino.

Questo tutorial passa attraverso il codice in blocchi per aiutare con la comprensione. Se vuoi andare direttamente al lavoro, puoi trovare il codice completo su Pastebin. Nota che dovrai ancora inserire le tue credenziali Wi-Fi e IFTTT in questo codice per farlo funzionare!

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.

 #include #include #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, oltre a definire alcune variabili di cui avremo bisogno nel nostro schizzo. Noterai che ledPin e wakePin sono numerati in modo diverso qui rispetto al diagramma di Fritzing sopra. NodeMCU ha una piedinatura diversa rispetto alle schede Arduino. Questo non è un problema, a causa di questo utile diagramma:

NodeMCU__v1.0_pinout

Ora crea una funzione di configurazione:

 void setup() { Serial.begin(115200); while(!Serial) { } Serial.println(" ");// print an empty line before and after Button Press Serial.println("Button Pressed"); Serial.println(" ");// print an empty line ESP.deepSleep(wakePin); } 

Qui, impostiamo la nostra porta seriale e usiamo un ciclo while per attendere fino a quando inizia. Poiché questo codice si attiverà dopo aver premuto il pulsante di ripristino, stampiamo "Pulsante premuto" sul monitor seriale. Quindi, diciamo a NodeMCU di andare in modalità deep sleep fino a quando non viene premuto il pulsante che collega wakePin al pin RST .

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

 void loop(){ //if deep sleep is working, this code will never run. Serial.println("This shouldn't get printed"); } 

Di solito, gli schizzi di Arduino eseguono continuamente la funzione loop dopo l'installazione. Dal momento che mandiamo la scheda in modalità sleep prima che l'installazione termini, il loop non funziona mai.

Salva il tuo schizzo e caricalo sulla lavagna. Apri il monitor seriale e dovresti vedere "Pulsante premuto". Ogni volta che il pulsante si attiva, la scheda si reimposta e il messaggio viene stampato di nuovo. Funziona!

Pulsante premuto Test monitor seriale

Una nota sul monitor seriale

Potresti aver notato alcuni personaggi senza senso nel monitor seriale durante alcuni dei tuoi progetti. Ciò è generalmente dovuto al fatto che il monitor seriale non è impostato sulla stessa velocità di trasmissione della velocità seriale (XXXX) .

Molte guide suggeriscono di avviare la connessione seriale a una velocità di trasmissione di 115200 per un progetto come questo. Ho provato molte combinazioni e tutte avevano vari gradi di incomprensibili messaggi prima e dopo i messaggi seriali. Secondo vari post del forum, ciò potrebbe dipendere da una scheda difettosa o da un problema di compatibilità del software. Poiché non influisce troppo sul progetto, sto scegliendo di fingere che non stia accadendo.

Se si verificano problemi con il monitor seriale, provare diverse velocità di trasmissione e vedere quale funziona meglio per te.

Passaggio 4: connessione al Wi-Fi

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

 void connectToWifi() { Serial.print("Connecting to: SSID NAME"); //uncomment next line to show SSID name //Serial.print(ssid); WiFi.begin(ssid, password); Serial.println(" ");// print an empty line Serial.print("Attempting to connect: "); //try to connect for 10 seconds int i = 10; while(WiFi.status() != WL_CONNECTED && i >=0) { delay(1000); Serial.print(i); Serial.print(", "); i--; } Serial.println(" ");// print an empty line //print connection result if(WiFi.status() == WL_CONNECTED){ Serial.print("Connected."); Serial.println(" ");// print an empty line Serial.print("NodeMCU ip address: "); Serial.println(WiFi.localIP()); } else { Serial.println("Connection failed - check your credentials or connection"); } } 

Questo metodo tenta di connettersi alla rete dieci volte con un secondo in mezzo. L'esito positivo o negativo della connessione viene stampato sul monitor seriale.

Passaggio 5: chiamare il metodo di connessione

Al momento, connectToWifi () non viene mai chiamato. Aggiungi una chiamata alla funzione di impostazione tra il messaggio "Pulsante premuto" e l'invio della scheda in modalità sospensione.

 connectToWifi(); 

Nel caso ti stia chiedendo dove si adatta, dovrebbe apparire così:

Dove si adatta connectToWifi ()
Nella parte superiore dello schizzo sostituisci le variabili ssid e password con le tue credenziali Wi-Fi. Salva il tuo schizzo e carica sulla 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. Lo abbiamo utilizzato nel nostro tutorial LED tower per PC Wi-Fi per inviare un avviso ogni volta che viene ricevuta una nuova e-mail. Oggi lo useremo per inviare un tweet con la semplice pressione di un pulsante.

Passare alla pagina Le mie applet e selezionare Nuova applet

Fai clic su + questo e connettiti a Webhooks . Seleziona "Ricevi una richiesta web" e dai un nome al tuo evento. Keep it simple ! Annota il nome dell'evento, dovrai aggiungerlo in seguito al tuo codice NodeMCU. Fai clic su "Crea trigger" .

Richiesta Web con Webhook IFTTT
Ora seleziona + quello . Cerca il servizio Twitter e connettiti ad esso: dovrai autorizzarlo per pubblicare sul tuo account Twitter. Seleziona "Pubblica un tweet" e scegli il tuo messaggio.

IFTTT - Invia Tweet
La schermata successiva ti chiederà di rivedere l'applet. Fai clic su Fine. Questo è tutto!

Passaggio 7: aggiunta di credenziali IFTTT al codice

Nell'IDE di Arduino dovrai aggiungere la chiave API IFTTT e il nome dell'evento alle variabili definite. Per trovare la chiave API, accedere a Le mie applet e selezionare Webhooks nella scheda Servizi . Seleziona 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, sostituisci solo il testo.

Tra la chiamata a connectToWifi () e l'invio della scheda in modalità sospensione, creare un'istanza dell'oggetto libreria IFTTTWebhook. Il LED segnala il completamento dell'attività prima che ricomincia il sonno profondo.

 //just connected to Wi-Fi IFTTTWebhook hook(IFTTT_API_KEY, IFTTT_EVENT_NAME); hook.trigger(); pinMode(ledPin, OUTPUT); digitalWrite(ledPin, HIGH); delay(200); digitalWrite(ledPin, LOW); //now sending board to sleep 

La chiamata del trigger sull'oggetto hook fa scattare l'applet IFTTT e dovrebbe essere postata sul tuo account Twitter. Salva il tuo schizzo e caricalo. Ora dovresti avere un pulsante tweeting completamente funzionale.

Pulsante Wi-Fi funzionante Gif

Se non sembra funzionare, controlla attentamente il codice e le credenziali per eventuali errori. Se rimani davvero bloccato, prendi il codice completo dall'alto 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 l'alimentazione. Una batteria lo renderebbe completamente mobile e un caso che regge il circuito sarebbe il perfetto progetto di stampa 3D per principianti.

Nonostante usi il sonno profondo, potresti scoprire che una batteria si esaurirebbe abbastanza rapidamente. Esistono molti suggerimenti per il risparmio energetico di Arduino che aiutano in questo tipo di progetti. Sebbene sia più difficile di questo tutorial, se hai creato il tuo Arduino attento al consumo da zero, un pulsante Wi-Fi a batteria potrebbe durare per mesi!

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

Credito di immagine: Vadmary / Depositphotos

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