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

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

L'Internet of Things ha un vasto potenziale fai-da-te. Con sufficiente know-how e pochi componenti economici, potresti costruire 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 di simile se hai mai usato un pulsante Amazon Dash per riordinare gli articoli per la casa di tutti i giorni.





Oggi creeremo un pulsante abilitato Wi-Fi utilizzando un NodeMCU e lo programmeremo per utilizzare IFTTT per fare... beh, qualsiasi cosa! Istruzioni scritte seguendo il video, se preferisci.





Cosa ti servirà

Avrai bisogno:

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

Oltre al NodeMCU, dovresti essere in grado di trovare la maggior parte di queste parti in qualsiasi kit di avvio Arduino. Questo tutorial presumerà che tu stia utilizzando il LED e il resistore opzionali, ma non sono essenziali.



Passaggio 1: configurazione del circuito

La configurazione hardware è molto semplice per questo progetto. Imposta la tua scheda secondo questo diagramma.

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





Quando la breadboard è impostata, dovrebbe assomigliare a questo:

elimina i file da onedrive ma non dal computer

Se ti stai chiedendo come ho fatto a collegare il mio LED al pin di terra usando solo quei piccoli pezzi di cavo, il nostro rapido corso accelerato breadboard dovrebbe aiutare a chiarire! Controlla la tua configurazione e collega il tuo NodeMCU al computer tramite USB.





Passaggio 2: configurazione dell'IDE

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

Puoi trovare una spiegazione più dettagliata di questo passaggio nel nostro articolo di introduzione a NodeMCU.

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

Prossima ricerca per il 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 il codice!

Come funzionerà il codice?

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

Quando il pulsante viene premuto, collegherà il D0 e RST perni. Questo ripristina 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 il nostro Guida per principianti Arduino .

Questo tutorial esamina il codice in blocchi per facilitare la comprensione. Se vuoi metterti subito al lavoro, puoi trovare il codice completo su Pastebin . Nota che dovrai comunque inserire le tue 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.

#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. Il NodeMCU ha un pinout diverso rispetto alle schede Arduino. Tuttavia, questo non è un problema, grazie a questo pratico diagramma:

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 che inizi. Poiché questo codice si attiverà dopo aver premuto il pulsante di ripristino, stampiamo 'Pulsante premuto' al monitor seriale. Quindi, diciamo al NodeMCU di andare in sospensione profonda fino al pulsante che collega il sveglia al RST il perno è premuto.

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

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 la funzione loop continuamente dopo l'installazione. Dal momento che inviamo la scheda a dormire prima del termine dell'installazione, il ciclo non viene mai eseguito.

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 resetta e il messaggio viene nuovamente stampato. Funziona!

Una nota sul monitor seriale

Potresti aver notato alcuni caratteri senza senso nel monitor seriale durante alcuni dei tuoi progetti. Questo di solito è dovuto al fatto che il monitor seriale non è stato impostato sulla stessa velocità di trasmissione del Serial.begin(XXXX) Vota.

Molte guide suggeriscono di avviare la connessione seriale a un baud rate di 115200 per un progetto come questo. Ho provato molte combinazioni e tutte avevano vari gradi di incomprensioni prima e dopo i messaggi seriali. Secondo vari post del forum, ciò potrebbe essere dovuto a una scheda difettosa o a un problema di compatibilità del software. Dato che non influisce troppo sul progetto, ho scelto di fingere che non stia accadendo.

il mio disco rigido esterno non funziona

Se hai problemi con il monitor seriale, prova velocità di trasmissione diverse e vedi 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

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

connectToWifi();

Nel caso ti stia chiedendo dove 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 sulla lavagna.

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

Passaggio 6: configurazione dell'integrazione IFTTT

IFTTT consente l'integrazione con una vasta gamma di servizi web. L'abbiamo usato nel nostro tutorial sui 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 premendo un pulsante.

Vai a Le mie applet pagina e selezionare Nuova applet

Clicca su +questo e connettiti a Webhook . Selezionare 'Ricevi una richiesta web' e dai un nome al tuo evento. Mantienilo semplice ! Annota il nome dell'evento, dovrai aggiungerlo al tuo codice NodeMCU in un secondo momento. Clic 'Crea attivatore' .

Ora seleziona +quello . Cerca il Twitter servizio e connettersi ad esso --- sarà necessario autorizzarlo a 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

Di nuovo nell'IDE di Arduino dovrai aggiungere la tua chiave API IFTTT e il nome dell'evento alle variabili definite. Per trovare la chiave API, vai a Le mie applet e seleziona Webhook 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, sostituire solo il testo.

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

come ottenere la password wifi da Android?
//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

Attivazione della chiamata sul gancio l'oggetto viene attivato dall'applet IFTTT e dovrebbe essere pubblicato sul tuo account Twitter. Salva il tuo schizzo e caricalo. Ora dovresti avere un pulsante di tweet completamente funzionante.

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 in cui potrebbe essere migliorata. Per semplicità, qui viene utilizzata la connessione USB per l'alimentazione. Una batteria lo renderebbe completamente mobile e una custodia che contiene il circuito sarebbe il perfetto progetto di stampa 3D per principianti.

Nonostante l'utilizzo della modalità di sospensione profonda, potresti scoprire che la batteria si esaurirebbe abbastanza rapidamente. Ci sono 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 ai consumi da zero, un pulsante Wi-Fi alimentato a batteria potrebbe durare per mesi!

Questo progetto sarebbe perfetto per un telecomando per applicazioni domestiche intelligenti. Ci sono già una notevole quantità di applet domotica disponibile su IFTTT. Una volta apprese le basi, puoi utilizzare quasi tutti i sensori o interruttori per attivare praticamente qualsiasi servizio tu possa immaginare.

Credito di immagine: Vadmary/ Depositphotos

Condividere Condividere Tweet E-mail 6 alternative udibili: le migliori app di audiolibri gratuite o economiche

Se non ti va di pagare per gli audiolibri, ecco alcune fantastiche app che ti consentono di ascoltarli gratuitamente e legalmente.

Leggi Avanti
Argomenti correlati
  • Fai da te
  • Arduino
  • Tutorial progetto fai da te
Circa l'autore Ian Buckley(216 articoli pubblicati)

Ian Buckley è un giornalista freelance, musicista, performer e produttore di video che vive a Berlino, in Germania. Quando non sta scrivendo o sul palco, armeggia con l'elettronica o il codice fai-da-te nella speranza di diventare uno scienziato pazzo.

Altro da Ian Buckley

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!

Clicca qui per iscriverti