De ESP8266 is een module waarmee je Arduino WiFi verbindingen kunt laten maken. Een ESP8266 kun je voor veel doelen inzetten en is erg eenvoudig in gebruik. De modules zijn klein en erg geschikt voor Domotica en IOT toepassingen. Maar hoe begin je? Dat lees je hier.
Wat gaan we maken?
We gaan de ESP8266 WiFi module installeren, programmeren en configureren voor het gebruik in je thuisnetwerk. Zodra je module gereed hebt voor gebruik kun je alle kanten op. Van Wifi thermometers tot Wifi deurbellen of dimmers. Je kunt het zo gek niet bedenken. De mogelijkheden zijn zo groot omdat de bordjes compatibel zijn met Arduino.
Wat heb je nodig?
- ESP8266 op een Arduino board, zoals de Wemos D1 mini
- USB kabel (in mijn geval microUSB)
- Soldeerbout voor de headers
- ESPeasy firmware
Het voordeel van het gebruik van een Wemos D1 mini of een gelijkwaardig bordje is dat ie gewoon via USB direct te gebruiken is. De losse ESP module zul je via kabeltjes op je Arduino moeten aansluiten.
Aansluiten en installeren
- Sluit het board aan op een USB poort.
- Windows zal gaan zoeken naar de juiste drivers, vaak de CH340 driver
- Zodra Windows de driver geïnstalleerd heeft zie je in het Apparaatbeheer een nieuwe COM poort staan. Schijf dit op of onthoud het poortnummer.
- Installeer als laatste de Arduino IDE, uit de Windows Store (als je Windows 10 hebt) of van de website van Arduino
Zo. De voorbereidingen zijn klaar. We gaan nu de programmeer software, Arduino IDE, opstarten en gebruiken.
Arduino IDE
- Start de Arduino IDE op
- Ga naar Preferences (of Voorkeuren) en voer de volgende url in bij Additional Board Manager URLs
http://arduino.esp8266.co...age_esp8266com_index.json
Hiermee voeg je ondersteuning toe voor Arduino bordjes van derden, zoals de Wemos D1 mini bijvoorbeeld. Als je bordje in deze lijst staat, hoef je verder niets in te stellen en te configureren.
- Ga naar Hulpmiddelen -> Board -> Board Manager. Zoek op Wemos en installeer.
- Stel de COM poort in die je op geschreven hebt. De rest staat goed.
- In het programma, de sketch (het witte venster in het midden), kun je je programma gaan maken. We zullen eerst makkelijk beginnen door een voorbeeld uit te proberen.
- Je kunt eerst het Blink example proberen. Klik op Bestand -> Voorbeelden -> 01. Basics -> Blink. Je scherm komt vol te staan met code.
- Klik op upload (de pijl) en het programma wordt op de esp8266 geschreven. Als het goed is, gaat de led knipperen. (want dat is het voorbeeld programma.)
- Nu we zeker weten dat het werkt gaan we aan de slag met de Wifi
LED aan en uitzetten met WiFi!
- Maak een nieuwe Sketch
- kopieer en plak onderstaande code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
#include <ESP8266WiFi.h> const char* ssid = "ssid name"; const char* password = "ssid password"; int ledPin = LED_BUILTIN; WiFiServer server(80); IPAddress ip(192, 168, 1, 99); // where xx is the desired IP Address IPAddress gateway(192, 168, 1, 1); // set gateway to match your network void setup() { Serial.begin(115200); delay(10); pinMode(ledPin, OUTPUT); digitalWrite(ledPin, LOW); Serial.print(F("Setting static ip to : ")); Serial.println(ip); // Connect to WiFi network Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); IPAddress subnet(255, 255, 255, 0); // set subnet mask to match your network WiFi.config(ip, gateway, subnet); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); // Start the server server.begin(); Serial.println("Server started"); // Print the IP address Serial.print("Use this URL : "); Serial.print("http://"); Serial.print(WiFi.localIP()); Serial.println("/"); } void loop() { // Check if a client has connected WiFiClient client = server.available(); if (!client) { return; } // Wait until the client sends some data Serial.println("new client"); while(!client.available()){ delay(1); } // Read the first line of the request String request = client.readStringUntil('\r'); Serial.println(request); client.flush(); // Match the request int value = LOW; if (request.indexOf("/LED=ON") != -1) { digitalWrite(ledPin, HIGH); value = HIGH; } if (request.indexOf("/LED=OFF") != -1){ digitalWrite(ledPin, LOW); value = LOW; } // Return the response client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); // do not forget this one client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.print("Led pin is now: "); if(value == HIGH) { client.print("On"); } else { client.print("Off"); } client.println("<br><br>"); client.println("Click <a href=\"/LED=ON\">here</a> turn the LED on pin 5 ON<br>"); client.println("Click <a href=\"/LED=OFF\">here</a> turn the LED on pin 5 OFF<br>"); client.println("</html>"); delay(1); Serial.println("Client disconnected"); Serial.println(""); }
- Verander de ip adressen, ssid en wachtwoord naar die van je netwerk.
- Open de Serial Monitor via Hulpmiddelen -> Serial Monitor en zet ‘m op 115200 baud. Je kunt nu de meldingen zien die de module laat zien. In de code staat aangegeven op welke ‘baud’ de module dat doet:
Serial.begin(115200);
De regels die beginnen met:
Serial.println(
zijn de regels die de module zal weergeven in de Serial Monitor.
- In de Serial Monitor zie je nu het IP-Adres en dat de verbinding gemaakt is.
- Als je in je browser het IP adres invoert kun je de led aan en uit zetten.
- De LED op je Arduinobordje schakelt in of uit als je op ‘here’ klikt. Het werkt
Je kunt nu verder met andere toepassingen zoals bijvoorbeeld een LED dimmer, of WiFi Temperatuurmeter!
Hey handige script en makkelijk om de verbinding te testen.
ik heb alleen 1 puntje wat opviel in het script en werking van het bordje als led off moet zijn is deze aan en anders om
in mijn monitor komt te staan verbinding maken met telbo (mijn internet) ………………………………………..
maar krijg geen verbinding wat doe ik fout.
Goedemorgen,
Kloppen je WiFi gegevens in de code? SSID, wachtwoord en ip adressen? Ik weet natuurlijk je doel niet, maar je kunt ook ESPeasy proberen te flashen. Dit is net wat gebruiksvriendelijker. Zie mijn blog:
https://www.twoenter.nl/blog/arduino-esp/hoe-flash-espeasy-op-wemos-d1-mini/
Groet Wouter