ESP8266-01 Relais mit Website steuern

In unserem eBook für den ESP8266-01 mit Relais haben wir euch erklärt, wie ihr mit den AT befehlen und einem Serial Terminal Programm das Relais schalten könnt. Heute möchten wir euch hier zeigen, wie das mit einer Website funktioniert. Am Ende haben wir 2 Buttons mit Ein und Aus.

Legen wir los:

Wir benötigen für dieses Projekt ein ESP8266-01 mit Relais und einen entsprechenden Programmieradapter.

Damit das Relais schalten wird, müssen wir 2 Befehle an das Relais (bzw. an den Steuer-IC des Relais) senden.

A00100A1                AUS

          byte open[] = {0xA0, 0x01, 0x00, 0xA1};
          Serial.write(open, sizeof(open));

 

A00101A2                EIN

          byte close[] = {0xA0, 0x01, 0x01, 0xA2};
          Serial.write(close, sizeof(close));


Das bauen wir nun in ein Arduino-Sketch:

 

#include <ESP8266WiFi.h>

const char* ssid     = "SSID";
const char* password = "PASSWORT";

WiFiServer server(80);

void setup()
{
  Serial.begin(9600);
  Serial.println("Starten");
    delay(10);
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
    }
    server.begin();
    Serial.println("IP: ");
    Serial.println(WiFi.localIP());
}
int value = 0;
void loop(){
 WiFiClient client = server.available();
  if (client) {
    String currentLine = "";
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        if (c == '\n') {
          if (currentLine.length() == 0) {
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println();
            client.print("Relais <a href=\"/H\">Einschalten</a><br>");
            client.print("Relais <a href=\"/L\">Ausschalten</a><br>");
            client.println();
            break;
          } else {
            currentLine = "";
          }
        } else if (c != '\r') { 
          currentLine += c;
        }
        if (currentLine.endsWith("GET /H")) {
          Serial.println("EIN");
          delay(10);
          byte close[] = {0xA0, 0x01, 0x01, 0xA2};
          Serial.write(close, sizeof(close));
        }
        if (currentLine.endsWith("GET /L")) {
          Serial.println("AUS");
          delay(10);
          byte open[] = {0xA0, 0x01, 0x00, 0xA1};
          Serial.write(open, sizeof(open));
        }
      }
    }
    client.stop();
  }
}

Wenn wir diesen Sketch nun mit richtigen WLAN-Informationen abändern und auf den ESP übertragen, kann die Website gestartet werden und das Relais geschalten werden.

Viel Spass beim Nachbauen und entwickeln eigener Projekte.

Letzter Artikel Epoxidharz, eine wasserdichte Sache

Kommentar

Andreas - Dezember 9, 2018

Keiner eine Lösung?
So nur Elektronik Schrott. Da sollte man den Verkauf einstellen. Auch das eBook hilft nicht.

Andreas - Dezember 3, 2018

Was mir seltsam vorkommt, ist die RX/TX Verschaltung vom ESP8266 mit max 3,3V auf den STC15F104 als 5V Variante. Hab so meine bedenken, das die Pegel nicht zusammenpassen. Wäre da der STC15L104 (bis 3,6V)nicht besser gewesen?
Beschaltung der RX/TX mit Widerständen verhindert jede serielle Kommunikation. Daher der Verdacht des zu niedrigen Pegel. Nach wie vor nicht EMV fest.

Andreas - November 12, 2018

Hallo, ich habe es mit einer Firmware mit AT Befehlen hinbekommen auch mit ESPeasy mit P165. Gleiches Verhalten. Das Problem ist eher das Relaismodul. Scheint anfällig gegen äußere Einflüsse auf die RX/TX Leitungen zu sein. Ohne das Seriell der Befehl zum abfallen des Relais kommt, schaltet es, wenn man nur mit der Hand in die Nähe kommt. Die Relais LED blinkt da auch manchmal schwach. Da sind wohl ein paar Widerstände/Kondensatoren nötig.
Hat jemand eine Idee?

Gerhard - November 8, 2018

Hallo ,
habe obiges Sketch aufgespielt, leider Schaltet das Relais nicht.
Habe Firmware update gemacht, Baud-Rate 9600 belassen und verschiedene ESP8266 Platinen versucht. Das ESP8266 Modul reagiert zwar auf die Webseite mit Ein- und Ausschalbefehle (LED blinkt kurz) nur das Relais macht nichts.

Hilfe wird sehr gerne angenommen :-)

Gruß Gerhard

Jürgen - Oktober 29, 2018

Wie auch bei allen anderen funktionierte das Schalten über die Webseite leider nicht – zumindest nicht auf Anhieb ;)
Wie sich bei mir herausstellte, braucht so mancher ESP8266-01 ein kleines Update.
Erst als ich den ESP mit folgender Anleitung flashte funktionierte nach dem Hochladen auch der Sketch einwandfrei.
Wichtig ist dabei auch eine konstante Spannungsquelle. Das Relais wir mit 5V versorgt (2pol-Klemme). Auf der Platine ist ein Spanungswandler für den ESP verbaut, so dass dieser keinen Schaden nimmt.
Wie bei mir Tests zeigten ist es auch Wichtig die Baud-Rate unbedingt auf 9600 zu lassen, da sonst auch keine Schaltungen erfolgen „ (Serial.begin(9600); „
Das Flashen des ESP8266 führte ich nach folgender Anleitung aus:
https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/firmware-flashen-esp8622-01s?ls=de
Ein Update auf eine noch höhere Version findet ihr hier:
https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/firmwareupdate-fur-esp8266-01s?ls=de

cosi - Oktober 1, 2018

ESP läuft mit 3,3v und das. Relais mit. 5v
Relaiskarte hat einen 3,3v Spannungsregler ffür. Den ESP verbaut.
War bei mir das Problem

Rainer.H - September 12, 2018

Hallo ,
ich habe das selbe Problem.
Webseite startet aber das Relais schaltet nicht :-(

VG,
Rainer

Dirk Schweitzer - August 13, 2018

Mir geht es ähnlich :-(

Benjamin - August 5, 2018

Hallo,

mein ESP-01 war fix geliefert, in der Arduino IDE eingerichtet und mit obigem Beispiel geflasht. Hab mich schon gefreut, dass ich bald einen meiner Monitore fernsteuern kann.

Leider funktioniert obiges Bespiel nicht wirklich. Der ESP hat eine IP, der Webserver läuft und die Webseite ist aufrufbar.

Jedoch wird das Relais nicht geschalten… Hab ich ein kaputtes erwischt? Hab ich etwas vergessen?

Über Hilfe würde ich mich sehr freuen.

Viele Grüße,
Benjamin

Hinterlasse einen Kommentar

Kommentare müssen vor der Veröffentlichung überprüft werden

Erforderliche Angabe