
Ziel des Projekts
Mit einem ESP-Mikrocontroller soll die Signalstärke (RSSI) von verfügbaren WiFi-Netzen (SSID) auf einem OLED-Display angezeigt ewerden. Eine Powerbank sorgt für die Stromversorgung.

Der RSSI-Wert (Received Signal Strength Indication) gibt Auskunft über die Signalstärke des WiFi-Netzes. Der in dBm (Dezibel Milliwatt) angegebene negative Wert bewegt sich theoretisch zwischen 0 und -100. Je näher der Wert an die 0 heranrückt, desto besser ist die Signalstärke.
Die Balkenanzeige orientiert sich an den Werten zwischen 0 und -100 und überträgt mit ⇒map die Länge des Balkens auf Werte zwischen 0 und 128.
Konfiguration der Mikrocontroller
- ESP32-Wroom
- ESP32C6
- ESP32-C6 Zero
- ESP32-S3
- Arduino Nano ESP32
- XIAO-ESP32-C3
- ESP32-C3-Zero
- ESP32-C3 Super Mini
- Wemos D1
- NodeMCU
I²C-Pins der Mikrocontroller
- ESP32-Wroom
- ESP32C6
- ESP32-C6 Zero
- ESP32-S3
- Arduino Nano ESP32
- XIAO-ESP32-C3
- ESP32-C3 Zero
- ESP32-C3 Super Mini
- Wemos D1
- NodeMCU
Benötigte Bibliothek

Das Programm
Alle WiFi-Netze scannen
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
#ifdef ESP32 #include "WiFi.h" #else #include "ESP8266WiFi.h" #endif #include "U8g2lib.h" // 0,96 Zoll SSD1306 U8G2_SSD1306_128X64_NONAME_F_HW_I2C oled(U8G2_R0); // 1,3 Zoll SH1106 // U8G2_SH1106_128X64_NONAME_F_HW_I2C oled(U8G2_R0); // 1,5 Zoll SH1107 // U8G2_SH1107_SEEED_128X128_F_HW_I2C oled(U8G2_R0); // 1,54 Zoll SSD1309/SH1106 // U8G2_SSD1309_128X64_NONAME0_F_HW_I2C oled(U8G2_R0); // oder: // U8G2_SH1106_128X64_NONAME_F_HW_I2C oled(U8G2_R0); void setup() { oled.begin(); } void loop() { // WiFi-Netzwerke suchen int Anzahl = WiFi.scanNetworks(); // kein WiFi-Netz gefunden if (Anzahl == 0) { // Programm beenden while (1); } else { for (int i = 0; i < Anzahl; ++i) { oled.setFont(u8g2_font_helvB10_tf); // kleinere Schrift // oled.setFont(u8g2_font_t0_13_te); oled.setCursor(10, 20); oled.print(WiFi.SSID(i)); oled.setCursor(10, 50); oled.setFont(u8g2_font_helvB18_tf); oled.print(String(WiFi.RSSI(i))); // map -> Wert auf die Breite des OLEDs übertragen int BalkenGroesse = map(100 - WiFi.RSSI(i) * -1, 0, 100, 0, oled.getDisplayWidth()); oled.drawBox(1, 54, BalkenGroesse, 10); oled.sendBuffer(); oled.clearBuffer(); delay(5000); } } } |
Ausgewählte WiFi-Netze scannen
Du musst in Zeile 24 den zu suchenden Router eintragen. Das Programm sucht auch nach einem Teilstring.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
#ifdef ESP32 #include "WiFi.h" #else #include "ESP8266WiFi.h" #endif #include "U8g2lib.h" // 0,96 Zoll SSD1306 U8G2_SSD1306_128X64_NONAME_F_HW_I2C oled(U8G2_R0); // 1,3 Zoll SH1106 // U8G2_SH1106_128X64_NONAME_F_HW_I2C oled(U8G2_R0); // 1,5 Zoll SH1107 // U8G2_SH1107_SEEED_128X128_1_HW_I2C oled(U8G2_R0); // 1,54 Zoll SSD1309/SH1106 // U8G2_SSD1309_128X64_NONAME0_F_HW_I2C oled(U8G2_R0); // oder: // U8G2_SH1106_128X64_NONAME_F_HW_I2C oled(U8G2_R0); // Namen der zu suchenden Router String Router = "Repeater"; void setup() { oled.begin(); Serial.begin(9600); } void loop() { // WiFi-Netzwerke suchen int Anzahl = WiFi.scanNetworks(); // kein WiFi-Netz gefunden if (Anzahl == 0) { // Programm beenden while (1); } else { for (int i = 0; i < Anzahl; ++i) { // Suche Router if(WiFi.SSID(i).indexOf(Router) == 0) { oled.setFont(u8g2_font_helvB10_tf); oled.setFont(u8g2_font_helvB10_tf); // kleinere Schrift // oled.setFont(u8g2_font_t0_13_te); oled.setCursor(10, 20); oled.print(WiFi.SSID(i)); oled.setCursor(10, 50); oled.setFont(u8g2_font_helvB18_tf); // map -> Wert auf die Breite des OLEDs übertragen int BalkenGroesse = map(100 - WiFi.RSSI(i) * -1, 0, 100, 0, oled.getDisplayWidth()); oled.drawBox(1, 54, BalkenGroesse, 10); oled.print(String(WiFi.RSSI(i))); oled.sendBuffer(); oled.clearBuffer(); delay(5000); } } } } |
Die zu suchenden Router als Array eintragen:
Wenn du das Array vergrößern willst, musst du die Zeile 49 ergänzen.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
#ifdef ESP32 #include "WiFi.h" #else #include "ESP8266WiFi.h" #endif #include "U8g2lib.h" // 0,96 Zoll SSD1306 U8G2_SSD1306_128X64_NONAME_F_HW_I2C oled(U8G2_R0); // 1,3 Zoll SH1106 // U8G2_SH1106_128X64_NONAME_F_HW_I2C oled(U8G2_R0); // 1,5 Zoll SH1107 // U8G2_SH1107_SEEED_128X128_1_HW_I2C oled(U8G2_R0); // 1,54 Zoll SSD1309/SH1106 // U8G2_SSD1309_128X64_NONAME0_F_HW_I2C oled(U8G2_R0); // oder: // U8G2_SH1106_128X64_NONAME_F_HW_I2C oled(U8G2_R0); // Namen der zu suchenden Router String Router[] = {"Repeater", "Gast", "FRITZ!"}; void setup() { oled.begin(); Serial.begin(9600); } void loop() { // WiFi-Netzwerke suchen int Anzahl = WiFi.scanNetworks(); // kein WiFi-Netz gefunden if (Anzahl == 0) { // Programm beenden while (1); } else { for (int i = 0; i < Anzahl; ++i) { // Suche Router if(WiFi.SSID(i).indexOf(Router[0]) == 0 || WiFi.SSID(i).indexOf(Router[1]) == 0 || WiFi.SSID(i).indexOf(Router[2]) == 0) { oled.setFont(u8g2_font_helvB10_tf); oled.setFont(u8g2_font_helvB10_tf); // kleinere Schrift // oled.setFont(u8g2_font_t0_13_te); oled.setCursor(10, 20); oled.print(WiFi.SSID(i)); oled.setCursor(10, 50); oled.setFont(u8g2_font_helvB18_tf); // map -> Wert auf die Breite des OLEDs übertragen int BalkenGroesse = map(100 - WiFi.RSSI(i) * -1, 0, 100, 0, oled.getDisplayWidth()); oled.drawBox(1, 54, BalkenGroesse, 10); oled.print(String(WiFi.RSSI(i))); oled.sendBuffer(); oled.clearBuffer(); delay(5000); } } } } |
Quellen
Letzte Aktualisierung: