/** * WLAN Monitor mit ESP-01 Modul. * * Kontrolliert die Erreichbarkeit eines Internet Servers * und zeigt den Status mit einer bunten LED an. * * Grün = Alles Ok * Blau = Verbindung ist langsam * Rot = Verbindung ist ausgefallen * Aus = Keine Verbindung zum AP * * Ein leichtes Flackern der LED bestätigt, dass das Modul arbeitet. * * Die Schaltung ist ganz einfach: * Das ESP-01 Modul wird mit einem Steckernetzteil und LF33CV versorgt. * Die RGB-LED ist so angeschlossen: * * LED 3x 220 Ohm * VCC o---+---|>|---[===]-------o GPIO2 blau (=TxD) * | * +---|>|---[===]-------o GPIO1 rot * | * +---|>|---[===]---+---o GPIO0 grün * ____ | * GND |--------------- ----+ * Taster * * Mit dem Taster aktiviert man den Firmware-Upload. */ #include // Name und Passwort des Access Points #define SSID "Muschikatze" #define PASSWORD "supergeheim" // Webserver, dessen Erreichbarkeit getestet wird #define HOST "deinserver.de" #define PORT 80 // Wenn der Verbindungsaufbau länger dauert, geht die Anzeige auf blau. #define MAX_CONNECT_MS 100 // Intervall für die Verbindungstests #define INTERVAL_MS 10000 // Wird verwendet, um Verbindungen zu testen. WiFiClient client; /** Wird beim Start einmal ausgeführt */ void setup() { // Seriellen Port nicht verwenden //Serial.end(); // LED's aus pinMode(0, OUTPUT); pinMode(1, OUTPUT); pinMode(2, OUTPUT); // WLAN Parameter setzen WiFi.mode(WIFI_AP); WiFi.begin(SSID, PASSWORD); } /** Hauptschleife, wird wiederholt ausgeführt. */ void loop() { // Sind wird mit dem AP verbunden? if (WiFi.status()!=WL_CONNECTED) { led_rot(); delay(50); led_aus(); } else { // Verbinde mit einem Webserver und messe die Zeit unsigned long start=millis(); if (client.connect(HOST, PORT)) { unsigned long end=millis(); if (end-start > MAX_CONNECT_MS) { // Hat zu lange gedauert led_aus(); delay(50); led_blau(); } else { // War schnell genug led_aus(); delay(50); led_gruen(); } } else { // Hat nicht geklappt, der Internet Zugang ist gestört led_aus(); delay(50); led_rot(); } client.stop(); } delay(INTERVAL_MS); } void led_aus() { digitalWrite(0, HIGH); digitalWrite(1, HIGH); digitalWrite(2, HIGH); } void led_gruen() { digitalWrite(0, LOW); digitalWrite(1, HIGH); digitalWrite(2, HIGH); } void led_rot() { digitalWrite(0, HIGH); digitalWrite(1, HIGH); digitalWrite(2, LOW); } void led_blau() { digitalWrite(0, HIGH); digitalWrite(1, LOW); digitalWrite(2, HIGH); }