Wissen

ESP8266 – bei WiFi Verbindung – Programm ausführen

Heute habe ich wieder einen sehr spezielles Code Schnipsel für Euch mit dem es möglich ist, sich mit einem bestimmten WLAN Netz zu verbinden und wenn die WiFi Verbindung zustande kommt eine Aktion auszulösen, bzw. Programm Code auszuführen. Ändert sich danach der Wifi-Status, wird der Vorgang zurück gesetzt und Neustart der WLAN-Suche gestartet. Findet ein erneuter Autoconnect des WiFi Netzes statt, wird wieder einmalig der hinterlegte Code ausgeführt. Die Zeilen habe ich für Euch gut dokumentiert und sollten sich im Grunde selbst erklären.

Bekommt der ESP8266 Spannung, wird nach dem zuvor definierten WLAN gesucht und in diesem Beispiel ein Relais angezogen. Kommt der ESP nun in den definierten WiFi Bereich, wird eine Verbindung zu diesem Netz aufgebaut und ein kleines Script gestartet, welches das Relay mehrfach kurz an- und wieder abfallen lässt um beim letzten Befehl nicht mehr an zu gehen. Danach fällt der ESP in einen Wartemodus der immer den WiFi Status abfrägt, ob man noch verbunden ist. Wird die Verbindung zum WLAN Netzwerk getrennt, zieht das Relais wieder an und er wird erneut auf das Vorhandensein eines WiFi Netzes gewartet. Danach beginnt das Programm von vorne.

Anwendung:
Ich habe die paar Zeilen Code für einen Halloween Geisterlauf geschrieben. Der ESP wird in eine LED Taschenlampe verbaut, welche sich ganz normal bedienen lässt. Kommen die Beteiligen nun in einen Bereich des Waldes in dem ein Batterie-WLAN-Router liegt, fängt die Taschenlampe zuerst zum blinken an und geht danach aus. Laufen die Leute dann im Parkour weiter, wird die WLAN Verbindung zum Router unterbrochen und die LED-Taschenlampe lässt sich wieder ganz normal verwenden.

Und hier der Code für dieses Projekt:

#include <ESP8266WiFi.h>
#define WIFI_SSID "iPhone von Martin"
#define WIFI_PASS "itlernet"
#define SERIAL_BAUDRATE                 115200
#define RELAY_PIN 13
int counter=1; 
void setup() {
// PIN definieren
pinMode(RELAY_PIN, OUTPUT);
// PIN auf HIGH setzen    
digitalWrite(RELAY_PIN, HIGH);
// Serial Bautrate setzen
Serial.begin(SERIAL_BAUDRATE);
// Wifi Verbinung starten
wifiSetup();
}
// Wifi Verbindung erstellen
void wifiSetup() {
// WiFi Modus in STA setzen
WiFi.mode(WIFI_STA);
// Verbindung
Serial.printf("[WIFI] Verbindung mit %s ", WIFI_SSID);
WiFi.begin(WIFI_SSID, WIFI_PASS);
// Warten
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(100);
}
Serial.println();
// Verbindung erfolgreich
Serial.printf("[WIFI] STATION Mode, SSID: %s, IP Addresse: %s\n", WiFi.SSID().c_str(), WiFi.localIP().toString().c_str());
}
// Checken ob WiFi verbunden - wenn Verbunden einmal das Programm abfahren
void loop() {
while (WiFi.status() == WL_CONNECTED) {
for (counter; counter<=1; counter = counter+1){
Serial.println("letsgooooooooo");
digitalWrite(RELAY_PIN, LOW);
delay(100);  
digitalWrite(RELAY_PIN, HIGH);
delay(100);
digitalWrite(RELAY_PIN, LOW);
delay(300);
digitalWrite(RELAY_PIN, HIGH);
delay(600);
digitalWrite(RELAY_PIN, LOW);
delay(100);
digitalWrite(RELAY_PIN, HIGH);
delay(600);
digitalWrite(RELAY_PIN, LOW);
delay(200);
digitalWrite(RELAY_PIN, HIGH);
delay(800);
digitalWrite(RELAY_PIN, LOW);
delay(200);        
digitalWrite(RELAY_PIN, HIGH);
delay(700);        
digitalWrite(RELAY_PIN, LOW);
delay(300); 
digitalWrite(RELAY_PIN, HIGH);
delay(800);
digitalWrite(RELAY_PIN, LOW);
delay(100);
digitalWrite(RELAY_PIN, HIGH);
delay(100);    
digitalWrite(RELAY_PIN, LOW);
delay(100);                                     
}
// Warten bis WLAN Aenderung eintritt
delay(500);
Serial.println("kurze Pause");
}
// WLAN unterbrochen - LED und Counter zuruecksetzen - WiFi Suche starten
digitalWrite(RELAY_PIN, HIGH);
counter=1;
wifiSetup();
}

Beim Relay PIN müsst ihr bei Eurem Modell sehen, ob der PIN 13 verfügbar ist. Ich habe zur Programmierung einen NodeMCU verwendet, bei dem der PIN13 auf D7 liegt.

Der Rest sollte sich selbst erklären, bzw. sehr einfach an die eigenen Bedürfnisse anpassen lassen.

So sieht die Ausgabe in der Konsole aus:

Viel Spaß bei Eurem Projekt wünsche ich!


Tags

Ähnliche Artikel

1 thought on “ESP8266 – bei WiFi Verbindung – Programm ausführen”

Kommentar verfassen

Close

Adblock Entdeckt

Bitte unterstütze uns in dem Du AdBlock deaktivierst.

Send this to a friend