ESP8266 WiFi Project – Relais schakelen via internet
In dit voorbeeld laat ik zien hoe je een relais kan schakelen met een ESP/Wemos module op ArduinoIDE, het relais is aangesloten op D1.
Script – Relais aan/uit
Het script hieronder start een server (via poort 80) op de ESP, door middel van een HREF link en 2 knoppen wordt een PHP GET commando uitgevoerd op dezelfde pagina, dat wordt uitgelezen door het script welke vervolgens een relais aanstuurt:
Ps. vergeet niet het SSID en wachtwoord in te vullen!
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 |
#include "ESP8266WiFi.h" const int relayPin = D1; // WiFi parameters to be configured const char* ssid = ""; // Hoofdlettergevoelig const char* password = ""; // Hoofdlettergevoelig WiFiServer server(80); void setup(void) { pinMode(relayPin, OUTPUT); Serial.begin(9600); Serial.print("Bezig met verbinden"); WiFi.begin(ssid, password); // Connect to WiFi // while wifi not connected yet, print '.' // then after it connected, get out of the loop while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } // Verbonden. Serial.println("OK!"); // Access Point (SSID). Serial.print("SSID: "); Serial.println(WiFi.SSID()); // IP adres. Serial.print("IP: "); Serial.println(WiFi.localIP()); // Gateway Serial.print("Gateway: "); Serial.println(WiFi.gatewayIP()); // Signaalsterkte. long rssi = WiFi.RSSI(); Serial.print("Signaal sterkte (RSSI): "); Serial.print(rssi); Serial.println(" dBm"); // MAC adres Serial.print("ESP MAC: "); Serial.println(WiFi.macAddress()); // Start server Serial.print("Start server..."); server.begin(); Serial.println("OK!"); } 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, checking to see what the currect state is int value = digitalRead(relayPin); if (request.indexOf("/relais=AAN") != -1) { digitalWrite(relayPin, HIGH); value = HIGH; } if (request.indexOf("/relais=UIT") != -1){ digitalWrite(relayPin, LOW); value = LOW; } // Return the response, build the html page client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.print("Relais status: "); if(value == HIGH) { client.print("AAN"); } else { client.print("UIT"); } client.println("<br><br>"); client.println("<a href=\"/relais=AAN\"><button>Relais AAN</button></a> "); client.println("<a href=\"/relais=UIT\"><button>Relais UIT</button></a>"); client.println("</html>"); delay(1); Serial.println("Client disconnected"); Serial.println(""); } |
Webinterface:
Script – Deur open
Onderstaand script zet het relais voor een aantal seconden aan, handig als bijvoorbeeld deur opener.
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 |
#include "ESP8266WiFi.h" const int relayPin = D1; // WiFi parameters to be configured const char* ssid = ""; // Hoofdlettergevoelig const char* password = ""; // Hoofdlettergevoelig WiFiServer server(80); void setup(void) { pinMode(LED_BUILTIN, OUTPUT); pinMode(relayPin, OUTPUT); Serial.begin(9600); Serial.print("Bezig met verbinden"); WiFi.begin(ssid, password); // Connect to WiFi // while wifi not connected yet, print '.' // then after it connected, get out of the loop while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } // Verbonden. Serial.println("OK!"); // Access Point (SSID). Serial.print("SSID: "); Serial.println(WiFi.SSID()); // IP adres. Serial.print("IP: "); Serial.println(WiFi.localIP()); // Gateway Serial.print("Gateway: "); Serial.println(WiFi.gatewayIP()); // Signaalsterkte. long rssi = WiFi.RSSI(); Serial.print("Signaal sterkte (RSSI): "); Serial.print(rssi); Serial.println(" dBm"); // MAC adres Serial.print("ESP MAC: "); Serial.println(WiFi.macAddress()); // Start server Serial.print("Start server..."); server.begin(); Serial.println("OK!"); // Knipper LED indien goed opgestart en verbinding. digitalWrite(LED_BUILTIN, LOW); delay(200); digitalWrite(LED_BUILTIN, HIGH); delay(200); digitalWrite(LED_BUILTIN, LOW); delay(200); digitalWrite(LED_BUILTIN, HIGH); delay(200); digitalWrite(LED_BUILTIN, LOW); delay(200); digitalWrite(LED_BUILTIN, HIGH); } 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, checking to see what the currect state is int value = digitalRead(relayPin); if (request.indexOf("/deur=open") != -1) { digitalWrite(relayPin, HIGH); delay(5000); digitalWrite(relayPin, LOW); } // Return the response, build the html page client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); client.println("<!DOCTYPE HTML>"); client.println("<html><br>"); client.println("<a href=\"/deur=open\"><button>DEUR OPEN</button></a> "); client.println("</html>"); delay(1); Serial.println("Client disconnected"); Serial.println(""); } |