Arduino Shield – Ethernet W5100 – Schakelen via webbrowser
Dit voorbeeld laat zien hoe je (een relais) kan schakelen met een arduino via een webbrowser.
Hardware: Arduino + Ethernet shield (W5100)
Wat heb je nodig?
Standaard wordt de ethernet bibliotheek al meegeleverd met de Arduino IDE
Script
Ik heb hieronder het standaard script uit de voorbeelden een beetje aangepast, vereenvoudigd en de commentaar regels vertaald.
Wat doet het script?
Het script geeft een knop weer welke je kan indrukken, daarmee word een POST commando gedaan op het IP adres, welke de arduino oppikt en dan schakelt.
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 |
#include <SPI.h> // Importeer de SPI bibliotheek. #include <Ethernet.h> // Importeer de ehternet bibliotheek. // [INSTELLINGEN] const int relayPin = 2; byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // Vul het MAC address van de shield in (deze mag je ook verzinnen). int poort = 80; //80 is standaard HTTP. //Onderstaande IP invullen als je een vast ip wilt gebruiken. //IPAddress ip(192, 168, 0, 109); // Kies een vast IP adres in de range van je subnet. // Variabelen EthernetServer server(poort); // Intialiseer de ethernet server bibliotheek met de poort om te gebruiken. void setup() { pinMode(relayPin, OUTPUT); Serial.begin(9600); // Start de seriele poort. //Ethernet.begin(mac, ip); // Start de ethernet connectie met vaste IP (zie boven) Ethernet.begin(mac); // Start de ethernet connectie. server.begin(); // Start de server. delay(50); Serial.print("server IP: "); Serial.print(Ethernet.localIP()); } void loop() { // Luister naar aanvraag van clienten EthernetClient 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 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>"); client.stop(); // Sluit de connectie. Serial.println("Client disconnected"); Serial.println(""); } |