Com crear el vostre propi botó connectat a Wi-Fi amb ESP8266

Com crear el vostre propi botó connectat a Wi-Fi amb ESP8266

Internet de les coses té un gran potencial de bricolatge. Amb un coneixement suficient i uns quants components econòmics, podríeu construir un sistema complex de dispositius connectats.





De vegades, però, voleu alguna cosa senzilla. No hi ha campanes ni xiulets, només un botó que realitza una sola tasca. És possible que ja conegueu alguna cosa com aquesta si heu utilitzat mai un botó Amazon Dash per reordenar els articles de la llar quotidians.





Avui crearem un botó habilitat per a Wi-Fi mitjançant un NodeMCU i el programarem perquè utilitzi IFTTT per fer ... bé, qualsevol cosa! Si preferiu instruccions escrites després del vídeo.





El que necessiteu

Necessitarà:

  • 1 x placa NodeMCU (ESP8266), disponible per a 2-3 dòlars a AliExpress
  • 1 x polsador
  • 1 x LED (opcional)
  • 1 x 220 Ohm resistència (opcional)
  • Taula de pa i cables de connexió
  • Micro USB per a la programació
  • Ordinador amb l’IDE ​​Arduino instal·lat

A part del NodeMCU, hauríeu de poder trobar la majoria d’aquestes peces en qualsevol kit d’arrencada Arduino. Aquest tutorial suposarà que utilitzeu el LED i la resistència opcionals, però no són essencials.



Pas 1: Configuració del circuit

La configuració del maquinari és molt senzilla per a aquest projecte. Configureu el tauler segons aquest diagrama.

Es fixa el fil morat pin D0 a un costat del botó. El cable verd connecta l'altre costat del botó a la Pin RST . El fil blau surt de pin D1 a la resistència i al LED. La pota negativa del LED es fixa al Pin GND del NodeMCU.





Quan el tauler de configuració estigui configurat, hauria de ser semblant a aquest:

per què no envien els meus missatges?

Si us pregunteu com he aconseguit que el meu LED es dirigeixi cap a la clavilla de terra utilitzant només aquests petits trossos de cable, el nostre ràpid curs de xoc de taulers de suport hauria d’ajudar a aclarir-ho! Comproveu la configuració i connecteu el NodeMCU a l’ordinador mitjançant USB.





Pas 2: Configuració de l'IDE

Abans de continuar amb la codificació, heu de fer alguns preparatius. Si encara no ho heu configurat, configureu l'IDE Arduino per reconèixer la vostra placa NodeMCU. Podeu afegir-lo a la llista de taulers mitjançant Fitxer> Preferències .

Podeu trobar una explicació més detallada d’aquest pas al nostre article d’introducció de NodeMCU.

Calen dues biblioteques per a aquest projecte. Aneu a Esbós> Inclou biblioteca> Gestiona les biblioteques . Buscar ESP8266WIFI per Ivan Grokhotkov i instal·leu-lo. Aquesta biblioteca està escrita per fer connexions Wi-Fi amb la placa NodeMCU.

Següent cerca del fitxer IFTTTWebhook de John Romkey i instal·leu la versió més recent. Aquesta biblioteca està dissenyada per simplificar el procés d’enviament de webhooks a IFTTT.

Això és tota la preparació que necessitem, permetem codificar!

Com funcionarà el codi

Farem servir el fitxer ESP8266WIFI biblioteca per establir una connexió Wi-Fi. El IFTTTWhhooks biblioteca fa una sol·licitud a IFTTT --- en aquest cas, per publicar a Twitter. A continuació, indiqueu a la placa NodeMCU que dormi quan no s’utilitza per estalviar energia.

Quan es prem el botó, enllaçarà el fitxer D0 i RST pins. Això restableix el tauler i el procés torna a passar.

La majoria del codi d’aquest tutorial és prou senzill per a principiants. Dit això, si esteu començant, us resultarà molt més fàcil d’entendre després de seguir el nostre Guia per a principiants Arduino .

Aquest tutorial repassa el codi en trossos per ajudar a comprendre. Si voleu començar directament al negoci, podeu trobar el codi complet a Pastebin . Tingueu en compte que caldrà que empleneu les vostres credencials Wi-Fi i IFTTT en aquest codi perquè funcioni.

Pas 3: provar el son profund

Per començar, crearem una prova senzilla per mostrar el funcionament del son profund. Obriu un nou esbós a l'IDE Arduino. Introduïu els dos trossos de codi següents.

#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'

Aquí incloem les nostres biblioteques, juntament amb la definició d'algunes variables que necessitarem al nostre esbós. Notareu que el ledPin i el wakePin es numeren de manera diferent en comparació amb el diagrama de Fritzing anterior. El NodeMCU té un pinout diferent a les plaques Arduino. Tot i això, no és un problema, a causa d’aquest útil diagrama:

Ara creeu una funció de configuració:

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);
}

Aquí configurem el nostre port sèrie i fem servir un bucle while per esperar fins que comenci. Com que aquest codi s'activarà després de prémer el botó de reinici, imprimim 'Botó premut' al monitor sèrie. A continuació, li diem al NodeMCU que dormi profundament fins que es faci clic al botó que connecta el fitxer wakePin fins al RST es prem el pin.

Finalment, per fer proves, afegiu-lo al vostre loop () mètode:

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

Normalment, els croquis d’Arduino executen la funció de bucle contínuament després de la configuració. Com que enviem el tauler a dormir abans que finalitzi la configuració, el bucle no s’executa mai.

Deseu el vostre esbós i pengeu-lo al tauler. Obriu el monitor sèrie i hauríeu de veure 'S'ha premut el botó'. Cada vegada que s’activa el botó, el tauler es reinicia i el missatge s’imprimeix de nou. Funciona!

Una nota sobre el monitor de sèrie

És possible que hagueu notat alguns personatges sense sentit al monitor de sèrie durant alguns dels vostres projectes. Normalment, això es deu al fet que el monitor sèrie no s'estableix a la mateixa velocitat de transmissió que el Serial.begin (XXXX) taxa.

Moltes guies suggereixen iniciar la connexió sèrie a una velocitat de transmissió de 115200 per a un projecte com aquest. Vaig provar moltes combinacions, i totes tenien diferents graus de galimaties abans i després dels missatges en sèrie. Segons diverses publicacions del fòrum, això podria derivar-se d'un problema de compatibilitat de programari o de tauler defectuós. Com que no afecta massa malament el projecte, estic decidint fingir que no passa.

com desactivar un MacBook Pro

Si teniu problemes amb el monitor sèrie, proveu diferents velocitats de transmissió i consulteu quin us funciona millor.

Pas 4: Connexió a Wi-Fi

Ara creeu una funció per connectar-vos a la vostra xarxa 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');
}
}

Aquest mètode intenta connectar-se a la vostra xarxa deu vegades amb un segon intermedi. L'èxit o el fracàs de la connexió s'imprimeix al monitor sèrie.

Pas 5: trucar al mètode de connexió

Ara mateix, el connectToWifi () mai es diu. Afegiu una trucada a la funció de configuració entre el missatge 'Botó premut' i envieu el tauler a dormir.

connectToWifi();

En cas que us pregunteu on encaixa això, hauria de ser així:

A la part superior de l'esbós substituïu el fitxer ssid i contrasenya variables amb les vostres credencials de Wi-Fi. Deseu el vostre esbós i pengeu-lo al tauler.

Ara, quan arrenca la placa, intentarà connectar-se a la vostra xarxa Wi-Fi abans de tornar a la funció de configuració. Ara, configurem la integració IFTTT.

Pas 6: Configuració de la integració IFTTT

IFTTT permet la integració amb una àmplia gamma de serveis web. L'hem utilitzat al nostre tutorial LED de torre Wi-Fi per a PC per enviar una alerta cada vegada que es rep un correu electrònic nou. Avui l’utilitzarem per enviar un tuit amb només prémer un botó.

Aneu a Els meus applets pàgina i seleccioneu Nou applet

Fer clic a + això i connecteu-vos a Webhooks . Seleccioneu 'Rebre una sol·licitud web' i posa un nom al teu esdeveniment. Fes-ho simple ! Anoteu el nom de l'esdeveniment, més endavant l'haureu d'afegir al vostre codi NodeMCU. Feu clic a 'Crea un activador' .

Ara seleccioneu + això . Cerqueu el fitxer Twitter servei i connecteu-vos-hi; haureu d'autoritzar-lo per publicar al vostre compte de Twitter. Seleccioneu 'Publica un tuit' i trieu el vostre missatge.

La següent pantalla us demanarà que reviseu la miniaplicació. Feu clic a Finalitza. Això és!

Pas 7: afegir credencials IFTTT al codi

De nou a l'IDE Arduino, haureu d'afegir la clau de l'API IFTTT i el nom de l'esdeveniment a les variables definides. Per trobar la clau API, aneu a Els meus applets i seleccioneu Webhooks sota la Serveis fitxa. Seleccioneu Documentació per accedir a la vostra clau.

Copieu la clau i el nom de l'esdeveniment al vostre codi, substituint els noms temporals configurats per a ells.

#define IFTTT_API_KEY 'IFTTT_KEY_GOES_HERE'
#define IFTTT_EVENT_NAME 'IFTTT_EVENT_NAME_HERE'

Tingueu en compte que les comes invertides han de romandre, només substituir el text.

Entre trucar al connectToWifi () i enviant el tauler a dormir, creeu una instància de l'objecte de la biblioteca IFTTTWebhook. El LED indica la finalització de la tasca abans de començar de nou el son profund.

pel·lícules relaxants per adormir-se
//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

Activador de trucades al ganxo l'objecte s'activa des de la miniaplicació IFTTT i s'hauria de publicar al vostre compte de Twitter. Deseu el vostre esbós i pengeu-lo. Ara hauríeu de tenir un botó de piulades completament funcional.

Si sembla que no funciona, comproveu detingudament el vostre codi i les vostres credencials si hi ha errors. Si realment us quedeu atrapats, obteniu el codi complet des de dalt i compareu-lo amb el vostre.

Fet! Com es podria millorar encara més?

Es tracta d’una versió bàsica d’un botó Wi-Fi, però hi ha moltes maneres de millorar-lo. Per simplicitat, la connexió USB s'utilitza aquí per alimentar-se. Una bateria el faria completament mòbil i una caixa que contenia el circuit seria el projecte d’impressió 3D per a principiants perfecte.

Tot i utilitzar un son profund, és possible que trobeu que la bateria s’esgotarà bastant ràpidament. Hi ha molts Consells per estalviar energia Arduino que ajuden en aquest tipus de projectes. Tot i que és més difícil que aquest tutorial, si heu creat el vostre propi Arduino conscient de l'energia des de zero, un botó Wi-Fi alimentat per bateria podria durar mesos.

Aquest projecte seria el perfecte per a un control remot per a aplicacions domèstiques intel·ligents. Ja n’hi ha una quantitat considerable applets domòtics disponible a IFTTT. Un cop hàgiu baixat els conceptes bàsics, podeu utilitzar gairebé qualsevol sensor o commutador per activar pràcticament qualsevol servei que pugueu imaginar.

Crèdit de la imatge: Vadmary / Depositphotos

Compartir Compartir Tweet Correu electrònic 6 alternatives audibles: les millors aplicacions de llibres d’àudio gratuïtes o econòmiques

Si no us ve de gust pagar audiollibres, aquí teniu algunes aplicacions fantàstiques que us permeten escoltar-les de forma gratuïta i legal.

Llegiu a continuació
Temes relacionats
  • Bricolatge
  • Arduino
  • Tutorials de projectes de bricolatge
Sobre l'autor Ian Buckley(216 articles publicats)

Ian Buckley és periodista, músic, intèrpret i productor de vídeo independent que viu a Berlín, Alemanya. Quan no escriu ni està a l’escenari, juga amb electrònica o codi de bricolatge amb l’esperança de convertir-se en un científic boig.

Més de Ian Buckley

Subscriu-te al nostre butlletí

Uniu-vos al nostre butlletí per obtenir consells tècnics, ressenyes, llibres electrònics gratuïts i ofertes exclusives.

Feu clic aquí per subscriure-us