Simple Wi-Fi signal strength



  • It's like an icon of LTE signal strength, but...
    Of course, I wanted to do it in a way that everyone knows, but...It's too complicated. Does anyone have a simple implementation experience?

    void showWifiSignal()
    {

    int nWifi = getWifidBm();
    M5.Lcd.setCursor(2, 30);
    M5.Lcd.setTextSize(1);
    M5.Lcd.print(String(nWifi)+"dBm");

    if(nWifi < -50 && nWifi == 0 )
    {
    M5.Lcd.drawRoundRect(30, 12, 5, 16, 1, LIGHTGREY);

    }
    else
    {
    M5.Lcd.fillRoundRect(30, 12, 5, 16, 1, BLACK);
    }

    if(nWifi < -70 && nWifi == 0)
    {
    M5.Lcd.drawRoundRect(22, 16, 5, 12, 1, LIGHTGREY);

    }
    else
    {
    M5.Lcd.fillRoundRect(22, 16, 5, 12, 1, BLACK);
    }

    if(nWifi < -80 && nWifi == 0)
    {
    M5.Lcd.drawRoundRect(14, 20, 5, 8, 1, LIGHTGREY);

    }
    else
    {
    M5.Lcd.fillRoundRect(14, 20, 5, 8, 1, BLACK);
    }

    if(nWifi < -90 && nWifi == 0)
    {
    M5.Lcd.drawRoundRect(6, 23, 5, 5, 1, LIGHTGREY);
    }
    else
    {
    M5.Lcd.fillRoundRect(6, 23, 5, 5, 1, BLACK);
    }
    }



  • you can try this pice of code which is working for me:
    .

    .

    #include <WiFi.h>
    #include "Free_Fonts.h"
    #include <M5Stack.h>

    const char* ssid = "your_host";
    const char* password = "your_password";
    WiFiClient client;

    void setup() {
    M5.begin();
    // Connecting to WiFi:
    M5.Lcd.setFreeFont(FM9); M5.Lcd.setTextSize(1); M5.Lcd.setTextColor(TFT_WHITE);
    M5.Lcd.print("\n\nConnecting to ");
    M5.Lcd.println(ssid);
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
    M5.Lcd.setTextWrap(true);
    M5.Lcd.print(".");
    delay(500);
    }
    M5.Lcd.println("\nWiFi connected");
    delay(1000);
    M5.Lcd.fillScreen(TFT_BLACK);
    }

    void loop() {
    showWifiStrength();
    delay(2000);
    }

    // show Wifi-RSSI level (signal strength in 4 bars + dBm )
    void showWifiStrength() {
    int WifiRSSI = WiFi.RSSI();
    M5.Lcd.fillRect(40, 0, 68, 15, TFT_BLACK);
    M5.Lcd.setCursor(40, 14);
    M5.Lcd.print(String(WifiRSSI) + "dBm");
    if (WifiRSSI > -50 & ! WifiRSSI == 0 ) M5.Lcd.fillRoundRect(26, 1, 5, 12, 1, TFT_WHITE);
    else M5.Lcd.fillRoundRect(26, 1, 5, 12, 1, TFT_DARKGREY);
    if (WifiRSSI > -70 & ! WifiRSSI == 0) M5.Lcd.fillRoundRect(18, 3, 5, 10, 1, TFT_WHITE);
    else M5.Lcd.fillRoundRect(18, 3, 5, 10, 1, TFT_DARKGREY);
    if (WifiRSSI > -80 & ! WifiRSSI == 0) M5.Lcd.fillRoundRect(10, 5, 5, 8, 1, TFT_WHITE);
    else M5.Lcd.fillRoundRect(10, 5, 5, 8, 1, TFT_DARKGREY);
    if (WifiRSSI > -90 & ! WifiRSSI == 0)
    M5.Lcd.fillRoundRect(2, 7, 5, 6, 1, TFT_WHITE);
    else M5.Lcd.fillRoundRect(2, 7, 5, 6, 1, TFT_RED);
    }