In deze zelfstudie leert u hoe u een knop met Wi-Fi maakt met behulp van NodeMCU en IFTTT.

Hoe maak je je eigen wifi-verbonden knop met ESP8266

Advertentie Het internet der dingen heeft een enorm doe-het-zelf potentieel. Met voldoende knowhow en een paar goedkope componenten kunt u een complex systeem van aangesloten apparaten bouwen. Soms wilt u echter iets eenvoudigs. Geen toeters of bellen, alleen een knop die een enkele taak uitvoert. Je bent misschien al bekend met zoiets als je ooit een Amazon Dash-knop hebt gebruikt om alledaagse huishoudelijke artikelen opnieuw te ordenen

Advertentie

Het internet der dingen heeft een enorm doe-het-zelf potentieel. Met voldoende knowhow en een paar goedkope componenten kunt u een complex systeem van aangesloten apparaten bouwen.

Soms wilt u echter iets eenvoudigs. Geen toeters of bellen, alleen een knop die een enkele taak uitvoert. Je bent misschien al bekend met zoiets als je ooit een Amazon Dash-knop hebt gebruikt om alledaagse huishoudelijke artikelen opnieuw te ordenen.

Vandaag zullen we een Wi-Fi-knop maken met behulp van een NodeMCU, en deze programmeren om IFTTT te gebruiken om ... nou ja, alles! Schriftelijke instructies na de video, als je dat liever hebt.

Wat je nodig hebt

Wi-Fi-knoponderdelen nodig

Je zal nodig hebben:

  • 1 x NodeMCU (ESP8266) -kaart, beschikbaar voor $ 2-3 op AliExpress
  • 1 x drukknop
  • 1 x LED (optioneel)
  • 1 x 220 Ohm weerstand (optioneel)
  • Breadboard en aansluitdraden
  • Micro-USB voor programmeren
  • Computer met de Arduino IDE geïnstalleerd

Afgezien van de NodeMCU, zou je de meeste van deze onderdelen in elke Arduino-starterkit moeten kunnen vinden 4 Beste starterkits voor Arduino-beginners 4 Beste starterkits voor Arduino-beginners Er zijn veel geweldige Arduino-projecten voor beginners die je kunt gebruiken om aan de slag te gaan, maar je hebt eerst een Arduino en enkele componenten nodig. Hier is onze keuze uit 4 van de beste starterkits voor ... Lees meer. In deze zelfstudie wordt ervan uitgegaan dat u de optionele LED en weerstand gebruikt, maar deze zijn niet essentieel.

Stap 1: het circuit instellen

De hardware-installatie is heel eenvoudig voor dit project. Stel je bord in volgens dit diagram.

NodeMCU Wi-Fi-knop Fritzing diagram

De paarse draad bevestigt pin D0 aan één kant van de knop. De groene draad verbindt de andere kant van de knop met de RST-pin . De blauwe draad loopt van pin D1 naar de weerstand en LED. De negatieve poot van de LED wordt bevestigd aan de GND-pin van de NodeMCU.

Wanneer het breadboard is ingesteld, moet het er ongeveer zo uitzien:

NodeMCU Wifi knop circuit setup

Als je je afvraagt ​​hoe ik mijn LED met alleen die kleine stukjes kabel naar de grondpen ga, onze snelle broodplankcursus Wat is een broodplank en hoe werkt het? Een snelle crashcursus Wat is een breadboard en hoe werkt het? Een snelle spoedcursus Wilt u doe-het-zelf-elektronica leren? Mogelijk heeft u een broodplank ontvangen in uw startpakket. Maar wat is een breadboard en hoe werkt het? Lees meer zou moeten helpen het op te ruimen! Controleer uw instellingen en sluit uw NodeMCU via USB aan op de computer.

Stap 2: IDE instellen

Voordat u verder gaat met coderen, moet u enkele voorbereidingen treffen. Als u dit nog niet hebt gedaan, stelt u de Arduino IDE in om uw NodeMCU-bord te herkennen. Je kunt het toevoegen aan je boardslijst via Bestand> Voorkeuren .

Arduino board manager URL's

U vindt een meer gedetailleerde uitleg van deze stap in ons introductie-artikel over NodeMCU.

Voor dit project zijn twee bibliotheken vereist. Navigeer naar Sketch> Inclusief bibliotheek> Bibliotheken beheren . Zoek naar ESP8266WIFI van Ivan Grokhotkov en installeer het. Deze bibliotheek is geschreven voor het maken van Wi-Fi-verbindingen met het NodeMCU-bord.

Arduino IDE Library Manager
Zoek vervolgens naar de IFTTTWebhook van John Romkey en installeer de nieuwste versie. Deze bibliotheek is ontworpen om het verzenden van webhooks naar IFTTT te vereenvoudigen.

Dat is alles wat we nodig hebben, laat code!

Hoe de code zal werken

We zullen de ESP8266WIFI- bibliotheek gebruiken om een ​​wifi-verbinding tot stand te brengen. De bibliotheek IFTTTWebhooks doet een verzoek aan IFTTT - in dit geval om op Twitter te posten. Laat het NodeMCU-bord vervolgens slapen wanneer het niet in gebruik is om energie te besparen.

Wanneer de knop wordt ingedrukt, worden de D0- en RST- pinnen gekoppeld. Dit reset het bord en het proces gebeurt opnieuw.

De meeste code in deze zelfstudie is eenvoudig genoeg voor beginners. Dat gezegd hebbende, als je begint, zul je het een stuk gemakkelijker te begrijpen vinden na het volgen van onze Arduino beginnersgids.

Deze zelfstudie doorloopt de code in brokken om te helpen bij het begrijpen. Als u meteen aan de slag wilt, kunt u de volledige code vinden op Pastebin. Merk op dat u nog steeds uw Wi-Fi- en IFTTT-inloggegevens in deze code moet invullen om te kunnen functioneren!

Stap 3: Diepe slaap testen

Om te beginnen maken we een eenvoudige test om te laten zien hoe diep slapen werkt. Open een nieuwe schets in de Arduino IDE. Voer de volgende twee codebrokken in.

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

Hier nemen we onze bibliotheken op, samen met het definiëren van een paar variabelen die we nodig hebben in onze schets. U zult merken dat de ledPin en wakePin hier anders genummerd zijn in vergelijking met het bovenstaande Fritzing-diagram. De NodeMCU heeft een andere pinout dan Arduino-boards. Dit is echter geen probleem vanwege dit handige diagram:

NodeMCU__v1.0_pinout

Maak nu een instellingsfunctie:

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

Hier stellen we onze seriële poort in en gebruiken we een while-lus om te wachten tot deze begint. Omdat deze code wordt geactiveerd na het indrukken van de resetknop, drukken we "Button Pressed" af naar de seriële monitor. Vervolgens vertellen we de NodeMCU om in diepe slaap te gaan totdat de knop wordt ingedrukt die de wakePin verbindt met de RST- pin.

Voeg dit voor het testen toe aan de methode loop () :

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

Meestal voeren Arduino-schetsen de loop-functie na de installatie continu uit. Omdat we het bord in slaapstand zetten voordat de installatie eindigt, loopt de lus nooit.

Sla uw schets op en upload deze naar het bord. Open de seriële monitor en u zou 'Button ingedrukt ' moeten zien . Elke keer dat de knop wordt geactiveerd, wordt het bord gereset en wordt het bericht opnieuw afgedrukt. Het werkt!

Knop ingedrukt Seriële monitortest

Een opmerking over de seriële monitor

Je hebt misschien enkele onzin-tekens opgemerkt in de seriële monitor tijdens sommige van je projecten. Dit komt meestal doordat de seriële monitor niet op dezelfde baudrate is ingesteld als de snelheid Serial.begin (XXXX) .

Veel gidsen stellen voor om de seriële verbinding te starten met een baudrate van 115200 voor een project als dit. Ik heb veel combinaties geprobeerd, en ze hadden allemaal verschillende gradaties van gebrabbel voor en na seriële berichten. Volgens verschillende forumberichten kan dit te wijten zijn aan een probleem met de board of softwarecompatibiliteit. Omdat het het project niet zo erg beïnvloedt, kies ik ervoor om te doen alsof het niet gebeurt.

Als u problemen ondervindt met de seriële monitor, probeer dan verschillende baudrates en kijk welke het beste voor u werkt.

Stap 4: Verbinding maken met Wi-Fi

Maak nu een functie om verbinding te maken met uw wifi-netwerk.

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

Deze methode probeert tien keer verbinding te maken met uw netwerk met een seconde ertussen. De verbinding met de seriële monitor is geslaagd of mislukt.

Stap 5: De verbindingsmethode oproepen

Op dit moment wordt connectToWifi () nooit aangeroepen. Voeg een oproep toe aan uw setup-functie tussen het bericht "Knop ingedrukt" en het in slaapstand brengen van het bord.

 connectToWifi(); 

Als je je afvraagt ​​waar dit past, zou het er zo uit moeten zien:

Waar connectToWifi () past
Vervang bovenaan de schets de ssid- en wachtwoordvariabelen door uw wifi-inloggegevens. Sla je schets op en upload naar het bord.

Wanneer het board nu opstart, zal het proberen verbinding te maken met uw Wi-Fi-netwerk voordat het terugkeert naar de setup-functie. Laten we nu de IFTTT-integratie instellen.

Stap 6: IFTTT-integratie instellen

IFTTT maakt integratie met een breed scala aan webservices mogelijk. We hebben het in onze Wi-Fi PC tower LED-zelfstudie gebruikt om een ​​melding te verzenden wanneer een nieuwe e-mail wordt ontvangen. Vandaag gebruiken we het om een ​​tweet te verzenden met een druk op de knop.

Navigeer naar de pagina Mijn applets en selecteer Nieuwe applet

Klik op + dit en maak verbinding met Webhooks . Selecteer "Een webverzoek ontvangen" en geef uw evenement een naam. Houd het simpel ! Noteer de naam van de gebeurtenis, u moet deze later toevoegen aan uw NodeMCU-code. Klik op "Trigger maken" .

Webverzoek met IFTTT Webhooks
Selecteer nu + dat . Zoek naar de Twitter- service en maak er verbinding mee - u moet deze autoriseren om op uw Twitter-account te posten. Selecteer "Post een tweet" en kies uw bericht.

IFTTT - Verzenden Tweet
In het volgende scherm wordt u gevraagd om de applet te bekijken. Klik op voltooien. Dat is het!

Stap 7: IFTTT-referenties aan de code toevoegen

Terug in de Arduino IDE moet u uw IFTTT API-sleutel en gebeurtenisnaam toevoegen aan uw gedefinieerde variabelen. Om de API-sleutel te vinden, navigeert u naar Mijn applets en selecteert u Webhooks op het tabblad Services . Selecteer Documentatie om toegang te krijgen tot uw sleutel.

Kopieer de sleutel en de naam van de gebeurtenis in uw code, ter vervanging van de tijdelijke namen die voor hen zijn ingesteld.

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

Let op, de omgekeerde komma's moeten blijven, alleen de tekst vervangen.

Maak een exemplaar van het bibliotheekobject IFTTTWebhook tussen het aanroepen van de connectToWifi () en het verzenden van het bord naar de slaapstand. De LED geeft aan dat de taak is voltooid voordat de diepe slaap opnieuw begint.

 //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 

Als de trigger op het hook- object wordt geactiveerd, wordt de IFTTT-applet afgevuurd en moet deze op uw Twitter-account worden geplaatst. Sla uw schets op en upload deze. U zou nu een volledig functionele tweet-knop moeten hebben.

Werkende Wi-Fi-knop Gif

Als het niet lijkt te werken, controleer je code en inloggegevens zorgvuldig op fouten. Als je echt vastloopt, haal dan de volledige code van bovenaf en vergelijk deze met die van jezelf.

Gedaan! Hoe kun je het verder verbeteren?

Dit is een basisversie van een Wi-Fi-knop, maar er zijn veel manieren waarop deze kan worden verbeterd. Voor de eenvoud wordt de USB-verbinding hier voor stroom gebruikt. Een batterij zou het volledig mobiel maken, en een hoes met het circuit zou het perfecte 3D-printproject voor beginners zijn.

Ondanks het gebruik van diepe slaap, kan het zijn dat een batterij vrij snel leeg raakt. Er zijn veel Arduino-energiebesparende tips die helpen bij dit soort projecten. Hoewel moeilijker dan deze tutorial, als je je eigen energiebewuste Arduino helemaal opnieuw hebt gemaakt, kan een op batterijen werkende Wi-Fi-knop maanden duren!

Dit project zou perfect zijn voor een afstandsbediening voor smart home-toepassingen. Er zijn al een behoorlijk aantal applets voor huisautomatisering 10 van de beste IFTTT-recepten voor slimme domotica 10 van de beste IFTTT-recepten voor slimme domotica De juiste IFTTT-recepten voor uw slimme woning kunnen u tijd, moeite en energie besparen. Hier zijn tien van onze favorieten om mee te beginnen. Meer informatie beschikbaar op IFTTT. Zodra je de basis hebt begrepen, kun je bijna elke sensor of schakelaar gebruiken om vrijwel elke dienst te activeren die je je kunt voorstellen.

Beeldtegoed: Vadmary / Depositphotos

Ontdek meer over: Arduino, DIY Project Tutorials.