neustes

Der WLAN-Signal-Monitor mit ESP8266 und OLED-Display

Autor: DerSchneider


Einleitung

In einer Zeit, in der drahtlose Kommunikation das Rückgrat unserer vernetzten Welt bildet, gewinnt die Fähigkeit, die Qualität dieser Verbindungen zu überwachen, zunehmend an Bedeutung. Ob im privaten Umfeld, in Bildungseinrichtungen oder in der Industrie – die Signalstärke eines WLAN-Netzwerks entscheidet maßgeblich über die Stabilität und Zuverlässigkeit der Datenübertragung. Die IEEE-802.11-Standard basierte Funktechnik ist allgegenwärtig und dennoch bleibt ihre Signalqualität für den Anwender oft unsichtbar .

Dieser Artikel beleuchtet die Entwicklung und den Einsatz eines eigenständigen WLAN-Signal-Monitors, der auf dem preisgünstigen ESP8266-Mikrocontroller basiert. Das Gerät scannt in definierten Intervallen die Umgebung nach konfigurierbaren Netzwerken, bewertet deren Signalstärke anhand des RSSI-Werts (Received Signal Strength Indicator) und stellt die Ergebnisse übersichtlich auf einem OLED-Display dar. Ein integrierter Webserver ermöglicht die bequeme Konfiguration per Smartphone oder Computer, ohne dass eine Neuprogrammierung erforderlich ist.


Die Gedankenwelt hinter dem Gerät: Technische Hintergründe

Der RSSI-Wert als Qualitätsmaßstab

Die Signalstärke eines WLAN-Netzwerks wird typischerweise durch den RSSI-Wert ausgedrückt, der in der Einheit dBm (Dezibel-Milliwatt) angegeben wird. Dieser Wert liegt bei den meisten Routern und Empfängern zwischen -30 dBm (sehr gutes Signal) und -100 dBm (kein Signal).  beschreibt, dass die gemessenen RSSI-Werte in Signalqualitätsprozentsätze und qualitative Stufen wie „ausgezeichnet“, „gut“, „mittel“ und „schlecht“ umgewandelt werden können. Diese Klassifizierung ermöglicht es auch technisch weniger versierten Nutzern, die Qualität ihrer Verbindung intuitiv zu erfassen.

Der ESP8266 als Herzstück

Der ESP8266-Mikrocontroller ist aufgrund seiner integrierten WLAN-Funktionalität, seines geringen Stromverbrauchs und seines niedrigen Preises ideal für solche Projekte . Verschiedene Entwicklungsboards wie das NodeMCU oder das Wemos D1 Mini bieten eine benutzerfreundliche Plattform für die Realisierung von IoT-Anwendungen. Der ESP8266 kann sowohl als Access Point (AP) fungieren, um eine eigene Konfigurationsumgebung bereitzustellen , als auch im Station-Modus (STA) Netzwerke scannen .

Alternative Ansätze und Erweiterungen

Die Grundidee des WLAN-Scanners lässt sich auf interessante Weise erweitern.  zeigt, dass ein ESP8266 sogar zur Bewegungserkennung genutzt werden kann: Ein sich bewegender Körper verändert die Mehrwegeausbreitung des 2,4-GHz-Signals im Raum, was zu messbaren Schwankungen des RSSI-Werts führt. Das System lernt eine Basislinie des leeren Raums und erkennt Bewegungen, wenn die Fluktuation diese Schwelle überschreitet. Dies eröffnet faszinierende Perspektiven für die präsenzbasierte Steuerung von Gebäudetechnik oder Sicherheitssystemen – und das ohne zusätzliche Sensoren.

Andere Projekte wie „SignalSeeker“ kombinieren den ESP8266 mit einem GPS-Modul, um WLAN-Netzwerke zu bestimmten geografischen Koordinaten zu erfassen (Wardriving) .  zeigt die Entwicklung eines Detektors für WLAN-Deauthentication-Angriffe, der Alarme auslöst, wenn eine bestimmte Schwelle an Deauth-Paketen überschritten wird. Dies unterstreicht die Vielseitigkeit der Plattform.


Der vollständige Code: Ein detaillierter Blick

Im Mittelpunkt dieses Artikels steht der vollständige Quellcode des WLAN-Signal-Monitors. Der Code ist modular aufgebaut und gut kommentiert. Er integriert alle zuvor beschriebenen Funktionen: WLAN-Scan, OLED-Anzeige, Webserver-Konfiguration und EEPROM-Speicherung der Einstellungen.

Benötigte Bibliotheken

cpp

#include <U8g2lib.h>          // Grafikbibliothek für OLED-Display
#include <Wire.h>             // I2C-Kommunikation für das Display
#include <ESP8266WiFi.h>      // WLAN-Funktionen des ESP8266
#include <ESP8266WebServer.h> // Webserver-Funktionalität
#include <EEPROM.h>           // Persistente Speicherung

Wichtige Parameter und Standardwerte

cpp

// EEPROM Adressen für Einstellungen
#define EEPROM_SIZE 128
#define ADDR_SSID1 0    // 32 Bytes
#define ADDR_SSID2 32   // 32 Bytes
#define ADDR_SCAN_INT 64 // 4 Bytes
#define ADDR_THRESHOLD 68 // 4 Bytes

// Standardwerte
String network1 = "FRITZI";
String network2 = "Smu";
int scanInterval = 10;      // Sekunden
int alarmThreshold = -80;   // dBm

Die Signalqualitätsbewertung

cpp

String getSignalQuality(int rssi) {
  if (rssi >= -70) return "GUT";
  if (rssi >= -85) return "MITTEL";
  if (rssi >= -100) return "SCHLECHT";
  return "NICHT GEFUNDEN";
}

Diese einfache Klassifizierung orientiert sich an den in  beschriebenen Methoden.

Speicherverwaltung im EEPROM

Die Funktionen loadSettings() und saveSettings() gewährleisten, dass die vom Benutzer konfigurierten Netzwerknamen und Parameter auch nach einem Neustart erhalten bleiben. Die Validierung der gelesenen Werte verhindert Fehlfunktionen durch beschädigte EEPROM-Daten.

Der WLAN-Scan mit Case-Insensitive-Suche

cpp

void scanWifi() {
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  delay(100);
  
  int n = WiFi.scanNetworks(false, true);
  scanCount = n;
  
  rssi1 = -100;
  rssi2 = -100;
  found1 = false;
  found2 = false;
  alarmActive = false;
  
  for (int i = 0; i < n; i++) {
    String ssid = WiFi.SSID(i);
    int rssi = WiFi.RSSI(i);
    
    // Case-insensitive Vergleich (Groß-/Kleinschreibung egal!)
    if (ssid.equalsIgnoreCase(network1)) {
      rssi1 = rssi;
      found1 = true;
      if (rssi <= alarmThreshold) alarmActive = true;
    } else if (ssid.equalsIgnoreCase(network2)) {
      rssi2 = rssi;
      found2 = true;
      if (rssi <= alarmThreshold) alarmActive = true;
    }
  }
  
  WiFi.scanDelete();
}

Die Verwendung von equalsIgnoreCase() vermeidet das häufige Problem, dass Netzwerke aufgrund von Groß- und Kleinschreibung nicht erkannt werden.

Die OLED-Anzeige

Die Aktualisierung des Displays erfolgt in der updateDisplay()-Funktion:

cpp

// Netzwerk 1 (links)
u8g2.setFont(u8g2_font_7x13_tf);
u8g2.setCursor(0, 25);
String n1 = network1.substring(0, 6);
u8g2.print(n1);
u8g2.setCursor(58, 25);
u8g2.print(found1 ? "✓" : "✗");

// Signal-Balken
int bars1 = getSignalBars(found1 ? rssi1 : -100);
u8g2.setFont(u8g2_font_unifont_t_symbols);
u8g2.setCursor(0, 42);
u8g2.print(signalBars[bars1]);

u8g2.setFont(u8g2_font_6x10_tf);
u8g2.setCursor(0, 58);
u8g2.print(getSignalQuality(found1 ? rssi1 : -100));

Die Darstellung erfolgt übersichtlich mit Netzwerknamen, Statusindikator, Signal-Balken und Qualitätsstufe. Die Größe des Arrays der Signal-Balken wird automatisch ermittelt, was die Wartbarkeit des Codes verbessert.

cpp

const char* signalBars[] = {
  "░░░░░░░░░░",  // 0/10
  // ... 10 weitere Stufen ...
};
const int numSignalBars = sizeof(signalBars) / sizeof(signalBars[0]);

Der Webserver zur Konfiguration

Der eingebaute Webserver  ermöglicht die bequeme Konfiguration per Browser:

cpp

server.on("/", handleRoot);
server.on("/save", handleSave);
server.on("/scan", handleScan);
server.on("/reset", handleReset);
server.on("/reboot", handleReboot);

Die HTML-Seite wird dynamisch generiert und zeigt den aktuellen Status sowie ein Formular zur Bearbeitung der Einstellungen. Dies macht das Gerät auch für Anwender zugänglich, die keinen Zugriff auf die Entwicklungsumgebung haben.


Anwendungen und Nutzen

Netzwerkdiagnose und -optimierung

Der WLAN-Signal-Monitor ermöglicht eine schnelle und intuitive Beurteilung der Netzwerkqualität an verschiedenen Orten. Durch das Scannen in regelmäßigen Abständen können Schwankungen der Signalstärke erkannt und problematische Bereiche identifiziert werden. Dies ist besonders nützlich für:

  • Privatanwender: Optimierung der Router-Platzierung für bessere Abdeckung
  • Bildungseinrichtungen: Überwachung der WLAN-Versorgung in Hörsälen und Laboren 
  • Industrie 4.0: Sicherstellung zuverlässiger Verbindungen für IoT-Geräte 

Ausbildung und Lehre

Das Projekt eignet sich hervorragend für den Einsatz in der Ausbildung. Es vermittelt grundlegende Konzepte der drahtlosen Kommunikation, der Mikrocontroller-Programmierung und der Sensorik. Die Kombination aus Hardware und Software fördert das Verständnis für:

  • Die Funktionsweise des IEEE-802.11-Standards
  • Die Bedeutung der Signalstärke für die Übertragungsqualität
  • Die Entwicklung eingebetteter Systeme mit Webserver-Schnittstelle

Erweiterungsmöglichkeiten

Die offene Architektur des Systems lädt zu Erweiterungen ein:

  • Datenerfassung: Speicherung der Messwerte auf einer SD-Karte 
  • Fernüberwachung: Übertragung der Daten an einen zentralen Server
  • Bewegungserkennung: Nutzung der RSSI-Fluktuationen zur Präsenzerkennung 
  • Visualisierung: Entwicklung einer detaillierteren grafischen Oberfläche

Fazit und Ausblick

Der entwickelte WLAN-Signal-Monitor ist ein leistungsfähiges Werkzeug zur Überwachung und Bewertung von WLAN-Netzwerken. Er verbindet die Vorteile des kostengünstigen ESP8266 mit einer intuitiven Benutzeroberfläche und bietet vielfältige Einsatzmöglichkeiten. Die Kombination aus lokaler Anzeige und webbasierter Konfiguration macht das Gerät sowohl für technisch versierte Anwender als auch für Einsteiger zugänglich.

Die zukünftige Entwicklung könnte in Richtung einer noch tieferen Integration mit bestehenden Netzwerkmanagementsystemen gehen. Die fortschreitende Verbreitung von 5G- und Wi-Fi-6-Netzen stellt neue Anforderungen an die Messtechnik – der ESP8266 und seine Nachfolger werden hier weiterhin eine Rolle als flexible, anpassbare Plattform für Bildungs- und Diagnosezwecke spielen.


Quellen

  1. „Wireless communication based on the IEEE 802.11 standard is widely implemented in Internet of Things (IoT) and wireless network systems.“ – Garuda (Garba Rujukan Digital), 2026 
  2. „Motion and presence detection on a bare ESP8266 using only WiFi signal strength (RSSI)“ – GitHub (mandarwagh9/esp8266-wifi-radar), 2026 
  3. „ESP8266 Wi-Fi Scanner with OLED Display“ – GitHub (Kenibolone/esp8266-wifi-scanner), 2025 
  4. „ESP8266 WiFi Analyzer is a WiFi channel analysis project“ – GitHub (TriDEntApollO/ESP8266_WiFi_Analyzer), 2025 
  5. „SignalSeeker is a wardriving device based on the ESP8266 microcontroller“ – GitHub (HackerNowful/SignalSeeker), 2024 
  6. „Wi-Fi Access Point Example“ – ESP-IDF Component Registry (qb4-dev/settings), 2025 
  7. „This project utilizes the ESP8266 Wi-Fi module to detect the location and distance of devices based on Wi-Fi signals“ – GitHub (MertCinerkan/Location-Detection-with-ESP8266-Wi-Fi-Module), 2024 
  8. „ESP8266 Web Server Timer Project“ – GitHub (sylvain-lp/ESP8266_Web_Timer), 2024 
  9. „WiFi Jamming Detector“ – GitHub (roycuadra/WiFi-Jamming-Detector), 2026 

Post Comment

You May Have Missed