Wifi-relais

Om vanaf een afstand een relais aan te schakelen kun je een relais koppelen aan een ESP8266. Handig om zo bijvoorbeeld je computer thuis aan/uit te kunnen schakelen vanaf je mobiel.

Wat gaan we doen?
We maken een embedded webserver waarmee we een relais kunnen schakelen.

Benodigdheden
1x Wifi-relais

De Arduino IDE
Om een ESP8266 te kunnen programmeren moet we eerst de Arduino IDE daartoe inrichten.Zie dit artikel hoe je dat kunt doen.

Programmeren
Als eerste test maakte ik een simpel programma waarmee het relais een tijdje aan en uit wordt geschakeld. Het is altijd slim om eerst een paar kleine testjes (POC’s) te maken zodat je zeker weet dat de hardware werkt.

Dit is de code:

// Wifi-relais demo
// (C) 2018 Bikkel & Ellis

#define RELAIS 0

void setup() {
 pinMode(RELAIS,OUTPUT); 
}

void loop() {
 // Schakel aan
 digitalWrite(RELAIS, HIGH);
 delay(1000);
 // Schakel uit
 digitalWrite(RELAIS, LOW); 
 delay(2000);
}

 

Webserver
En dan nu de webserver. Een supermooie toepassing van de ESP8266 is dat je er een webserver op kunt zetten. Voor het relais maakte ik een simpele server die ik vanuit thuis via mijn telefoon (en via de PC ook natuurlijk) kan bereiken om zo het relais aan en uit te kunnen schakelen.

ESP8266 weberver
Webserver aanroepen via IE

Hieronder staat de code van de webserver. Let op: programmeer hem met draadbrug zoals hier staat beschreven, haal dan de programmer van de USB af, haal dan de ESP8266 uit de programmer en plaats de ESP8266 terug in het Wifi relais. En dan pas de spanning (5V) aansluiten op het Wifi relais.

Kijk vervolgens in de router welk IP-adres je relais heeft gekregen en ga er dan met je PC of met je telefoon naar toe.

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

// Deze moet je invullen met de gegevens van jouw draadloos netwerk
const char* ssid = "Ziggo123";
const char* password = "geheim";

ESP8266WebServer server(80);

#define RELAIS 0 // GPIO0

void Homepagina() {  
  String Html =String("Welkom bij mijn relais!")+
   String("<div><a href=/Aan>Relais aan</a></div>")+
   String("<div><a href=/Uit>Relais uit</a></div>");
  server.send(200, "text/html", Html); 
}

void SchakelAan() {
  digitalWrite(RELAIS, HIGH);
  server.send(200, "text/plain", "Relais is aan!");  
}

void SchakelUit() {
  digitalWrite(RELAIS, LOW);
  server.send(200, "text/plain", "Relais is uit!");  
}

void handleNotFound(){
  server.send(404, "text/plain", "Ongeldige opdracht");  
}

void setup(void){
  delay(1000); // Deze laten staan (dan gaat het uploaden van nieuwe versies beter)
  pinMode(RELAIS, OUTPUT);
  digitalWrite(RELAIS, LOW);  
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
    // Wacht op verbinding met draadloos netwerk
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);   
  }  

  // Hier zet je al je webpagina's neer
  server.on("/", Homepagina);
  server.on("/Aan", SchakelAan);
  server.on("/Uit", SchakelUit);
  server.onNotFound(handleNotFound);

  server.begin();  
}

void loop(void){
  server.handleClient();
}