Hoe maak je je eigen Wi-Fi verbonden knop met ESP8266
Het internet der dingen heeft enorm potentieel voor doe-het-zelvers. Met voldoende knowhow en een paar goedkope componenten zou je een complex systeem van verbonden apparaten kunnen bouwen.
Soms wil je echter iets eenvoudigs. Geen toeters of bellen, alleen een knop die één taak uitvoert. Wellicht kent u dit al als u ooit een Amazon Dash-knop hebt gebruikt voor het opnieuw ordenen van dagelijkse huishoudelijke artikelen.
Vandaag zullen we een knop maken voor Wi-Fi met behulp van een NodeMCU en het programmeren om IFTTT te gebruiken om ... nou ja, alles te doen! Schriftelijke instructies naar aanleiding van de video, als je dat wilt.
Wat je nodig hebt
Je zal nodig hebben:
- 1 x NodeMCU (ESP8266) bord, beschikbaar voor $ 2-3 op AliExpress
- 1 x drukknop
- 1 x LED (optioneel)
- 1 x 220 Ohm weerstand (optioneel)
- Broodplank 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-starterskit moeten kunnen vinden. 4 Beste starterskits voor Arduino Beginners 4 Beste starterskits voor Arduino-beginners Er zijn veel geweldige beginners Arduino-projecten die je kunt gebruiken om te beginnen, maar je hebt eerst een Arduino en een aantal componenten nodig. Hier is onze keuze uit 4 van de beste starterkits voor ... Lees meer. Deze tutorial gaat ervan uit dat je 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.
De paarse draad hecht pin D0 aan een 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. Het negatieve been van de LED hecht zich aan de GND-pin van de NodeMCU.
Wanneer het breadboard is opgezet, ziet het er ongeveer zo uit:
Als je je afvraagt hoe ik mijn LED naar de grondpin heb gebracht met alleen die kleine stukjes kabel, onze snelle breadboard crashcursus Wat is een breadboard en hoe werkt het? Een snelle crashcursus Wat is een breadboard en hoe werkt het? Een snelle spoedcursus Wil je DIY-elektronica leren? Mogelijk hebt u een breadboard in uw starterkit ontvangen. Maar wat is een breadboard en hoe werkt het? Meer lezen zou moeten helpen het op te ruimen! Controleer uw instellingen en sluit uw NodeMCU via USB aan op de computer.
Stap 2: De IDE instellen
Voordat u verder gaat met coderen, moet u een aantal voorbereidingen treffen. Als je dat nog niet hebt gedaan, moet je de Arduino IDE instellen om je NodeMCU-bord te herkennen. Je kunt het toevoegen aan je lijst met boards via Bestand> Voorkeuren.
U vindt een meer gedetailleerde uitleg van deze stap in ons NodeMCU introductieartikel.
Voor dit project zijn twee bibliotheken vereist. Navigeren naar Schets> Bibliotheek opnemen> Bibliotheken beheren. Zoeken ESP8266WIFI door Ivan Grokhotkov en installeer het. Deze bibliotheek is geschreven voor het maken van Wi-Fi-verbindingen met het NodeMCU-bord.
Volgende zoeken naar de IFTTTWebhook door John Romkey en installeer de nieuwste versie. Deze bibliotheek is ontworpen om het verzenden van webhooks naar IFTTT te vereenvoudigen.
Dat is al de voorbereiding die we nodig hebben, laat code!
Hoe de code zal werken
We zullen de gebruiken ESP8266WIFI bibliotheek om een Wi-Fi-verbinding tot stand te brengen. De IFTTTWebhooks bibliotheek doet een verzoek aan IFTTT - in dit geval om te posten op Twitter. Geef vervolgens het NodeMCU-bord de opdracht om te slapen wanneer het niet wordt gebruikt om stroom te sparen.
Wanneer op de knop wordt gedrukt, wordt de koppeling gekoppeld D0 en RST pinnen. Hierdoor wordt het bord gereset en het proces gebeurt opnieuw.
Het merendeel van de code in deze tutorial 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 tutorial doorloopt de code in stukjes om te helpen met begrip. Als u direct zaken wilt doen, vindt u de volledige code 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 diepe slaap 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 wachtwoord "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 enkele variabelen die we nodig zullen hebben in onze schets. Je zult zien dat de ledPin en de wakePin hier verschillend zijn genummerd in vergelijking met het diagram Fritzing hierboven. De NodeMCU heeft een andere pinout naar Arduino-kaarten. Dit is echter geen probleem, dankzij dit handige diagram:
Maak nu een setup-functie:
void setup () Serial.begin (115200); while (! Serial) Serial.println (""); // print een lege regel voor en na Button Druk op Serial.println ("Button Pressed"); Serial.println (""); // print een lege regel ESP.deepSleep (wakePin);
Hier stellen we onze seriële poort in en gebruiken een while-lus om te wachten totdat deze begint. Aangezien deze code wordt geactiveerd nadat op de resetknop is gedrukt, drukken we af “Knop ingedrukt” naar de seriële monitor. Vervolgens vertellen we de NodeMCU om in diepe slaap te gaan tot de knop die de wakePin naar de RST pin is ingedrukt.
Voeg ten slotte voor het testen dit toe aan uw lus() methode:
void loop () // als diepe slaap werkt, zal deze code nooit worden uitgevoerd. Serial.println ("Dit mag niet worden afgedrukt");
Doorgaans voeren Arduino-schetsen de loop-functie continu uit na de installatie. Omdat we het bord in slaapstand sturen voordat de installatie is voltooid, loopt de loop nooit door.
Sla je schets op en upload hem naar het bord. Open de seriële monitor en u zou moeten zien “Knop ingedrukt.” Telkens wanneer de knop wordt geactiveerd, wordt het bord gereset en wordt het bericht opnieuw afgedrukt. Het werkt!
Een opmerking over de seriële monitor
U hebt tijdens sommige van uw projecten mogelijk onzinfiguren opgemerkt op de seriële monitor. Dit komt meestal door het niet instellen van de seriële monitor op dezelfde baudsnelheid als de Serial.begin (XXXX) tarief.
Veel handleidingen 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 soorten brabbeltaal voor en na seriële berichten. Volgens verschillende forumberichten zou dit kunnen komen door een defect bord of softwarecompatibiliteitsprobleem. Omdat het het project niet te erg beïnvloedt, kies ik ervoor om te doen alsof het niet gebeurt.
Als u problemen ondervindt met de seriële monitor, probeert u verschillende baudsnelheden en ziet u welke het beste voor u werkt.
Stap 4: Verbinding maken met wifi
Maak nu een functie om verbinding te maken met uw Wi-Fi-netwerk.
void connectToWifi () Serial.print ("Connecting to: SSID NAME"); // uncomment volgende regel om SSID naam //Serial.print(ssid) te tonen; WiFi.begin (ssid, wachtwoord); Serial.println (""); // print een lege regel Serial.print ("Poging om verbinding te maken:"); // probeer gedurende 10 seconden verbinding te maken int i = 10; while (WiFi.status ()! = WL_CONNECTED && i> = 0) delay (1000); Serial.print (i); Serial.print (","); ik--; Serial.println (""); // een lege regel afdrukken // afdrukresultaat afdrukken als (WiFi.status () == WL_CONNECTED) Serial.print ("Connected."); Serial.println (""); // print een lege regel Serial.print ("NodeMCU ip-adres:"); Serial.println (WiFi.localIP ()); else Serial.println ("Verbinding mislukt - controleer uw inloggegevens of verbinding");
Deze methode probeert tien keer verbinding te maken met uw netwerk met een seconde daartussenin. Er wordt een verbinding of succes met de verbinding tot stand gebracht met de seriële monitor.
Stap 5: De verbindingsmethode bellen
Op dit moment is de connectToWifi () wordt nooit genoemd. Voeg een oproep toe aan uw setup-functie tussen de “Knop ingedrukt” bericht en stuurt het bord in slaap.
connectToWifi ();
In het geval dat je je afvraagt waar dit past, zou het er zo uit moeten zien:
Vervang bovenaan de schets ssid en wachtwoord variabelen met uw wifi-inloggegevens. Sla je schets op en upload deze naar het bord.
Als het board opstart, probeert het nu verbinding te maken met je wifi-netwerk voordat het terugkeert naar de setup-functie. Laten we nu de IFTTT-integratie instellen.
Stap 6: IFTTT-integratie instellen
IFTTT maakt integratie mogelijk met een breed scala aan webservices. We gebruikten het in onze zelfstudie over het gebruik van een Wi-Fi PC-tower LED om een waarschuwing te verzenden wanneer een nieuwe e-mail wordt ontvangen. Vandaag zullen we het gebruiken om een tweet te sturen met een druk op de knop.
Navigeer naar de Mijn applets pagina en selecteer Nieuwe applet
Klik op +deze en maak verbinding met webhooks. kiezen “Ontvang een webverzoek” en noem je evenement. Hou het simpel! Noteer de naam van de gebeurtenis; u moet deze later toevoegen aan uw NodeMCU-code. Klik “Trigger maken”.
Selecteer nu +dat. Zoeken naar de tjilpen dienst en maak er verbinding mee - u moet het autoriseren om op uw Twitter-account te posten. kiezen “Plaats een tweet” en kies je bericht.
In het volgende scherm wordt u gevraagd de applet te bekijken. Klik op voltooien. Dat is het!
Stap 7: IFTTT-referenties toevoegen aan de code
Terug in de Arduino IDE moet u uw IFTTT API-sleutel en gebeurtenisnaam toevoegen aan uw gedefinieerde variabelen. Om naar de API-sleutel te gaan, navigeert u naar Mijn applets en selecteer webhooks onder de Diensten tab. kiezen Documentatie om toegang te krijgen tot uw sleutel.
Kopieer de sleutel en de naam van de gebeurtenis naar uw code en vervang 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, vervang alleen de tekst.
Tussen het bellen van de connectToWifi () en stuur het bord in slaap, maak een instantie van het IFTTTWebhook bibliotheekobject. De LED geeft aan dat de taak is voltooid voordat de diepe slaap weer begint.
// net verbonden met wifi IFTTTWebhook hook (IFTTT_API_KEY, IFTTT_EVENT_NAME); hook.trigger (); pinMode (ledPin, OUTPUT); digitalWrite (ledPin, HIGH); vertraging (200); digitalWrite (ledPin, LOW); // nu stuurbord doorslapen
Oproep trigger op de haak object vuurt uit de IFTTT-applet en moet posten naar uw Twitter-account. Sla je schets op en upload hem. Je zou nu een volledig functionele tweeting-knop moeten hebben.
Als het niet lijkt te werken, controleer dan zorgvuldig op fouten in uw code en inloggegevens. Als u echt vastloopt, haalt u de volledige code van boven en vergelijkt u deze met de uwe.
Gedaan! Hoe kon 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-aansluiting hier gebruikt voor stroomvoorziening. Een batterij zou het geheel mobiel maken, en een behuizing die het circuit vasthoudt zou het perfecte 3D-afdrukproject voor beginners zijn.
Ondanks het gebruik van een diepe slaap, is het mogelijk dat een batterij snel leeg is. Er zijn veel energiebesparende tips van Arduino die helpen bij dit soort projecten. Hoewel moeilijker dan deze tutorial, als je je eigen, krachtige Arduino helemaal opnieuw hebt gemaakt, kan een Wi-Fi-knop op batterijen maanden meegaan!
Dit project zou perfect zijn voor een afstandsbediening voor slimme huistoepassingen. Er zijn al een aanzienlijk aantal huisautomatiseringsapplets 10 van de beste IFTTT-recepten voor slimme huisautomatisering 10 van de beste IFTTT-recepten voor slimme huisautomatisering De juiste IFTTT-recepten voor uw slimme huis kunnen u tijd, moeite en energie besparen. Hier zijn tien van onze favorieten om mee te beginnen. Lees meer beschikbaar op IFTTT. Als je eenmaal de basis hebt, kun je bijna elke sensor of schakelaar gebruiken om praktisch elke dienst die je je maar kunt bedenken te activeren.
Afbeelding Krediet: Vadmary / Depositphotos
Ontdek meer over: Arduino, DIY Project Tutorials.