// WiFi_Signal-Level_Meter_OLED_V2 // // "FRC" の電波強度を距離に換算し,OLEDに表示 // 距離に対応した効果音を発する.近い→高い,遠い→低い // // ssid ... FRC passwd ... Non // 2022.4.18(Mon.) // ************ OLED 情報 ************* // DiyStudio 0.91インチESP8266 OLED // ディスプレイ0.91インチOLED // ESP8266 WIFI開発ボードWIFIキット8 // CP2104 IOTサポート // Arduino IDE NodeMCU LUA // 白い底板+ブルースクリーンOLED // ¥1,199 アマゾン 2021/6/9 購入(2枚) // https://www.amazon.co.jp/gp/product/B07R33RSKN/ref=ppx_yo // _dt_b_asin_title_o01_s00?ie=UTF8&psc=1 // ********** コンパイル情報  ************ // CP210x USB to UART Bridge VCP Drivers // Board ==> Generic ESP8266 Module // Port ==> CP210x USB to UART Bridge (COM14, COM13 ...) // **** コンパイル 手順 **** // ファイル → 環境設定 // http://arduino.esp8266.com/stable/package_esp8266com_index.json // "esp8266 by ES8266 Community" → インストール // ボードマネージャー → "Generic ESP8266 Module" // ※以上で コンパイル&書き込みできる 但し,時間がかかる // ソースコード // https://www.elekit.co.jp/product/docs/PU-2709Wi-ficar.pdf // 日本語指定 // http://mukujii.sakura.ne.jp/esp1.html // OLED Display // https://qiita.com/jakalada/items/793a6cf5ff2796db4e86 /************************************************************ https://a-tomi.hatenablog.com/entry/2020/11/28/181757 WiFi Signal-Level Meter V.00 Initial version: November 28th, 2020 Function: Measures WiFi dBm(dB milli watt ) i.e.: 1nW = -60 dBm 1μW = -30 dBm 1mW = ± 0 dBm 1W = +30 dBm Shows dBm value on TM1637-display Remarks: use ESP32 or Arduino with wiFi (c)2020 Akira Tominaga, All rights reserved ************************************************************/ #include #include #include #include #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 32 #define trig 12 // // define target SSID and password #define ssid "FRC" // set SSID to be measured #define pass "" // set its password // Declaration for an SSD1306 display connected to I2C (SDA, SCL pins) #define OLED_RESET 16 // Reset pin # (or -1 if sharing Arduino reset pin) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); ESP8266WebServer server(80); void setup() { // ***** ESP32 setup ***** delay(300); // just wait for ESP8266 enough stability wdt_reset(); // wdt_disable(); Serial.begin(115200); while (!Serial); Serial.println(); Serial.println("WiFi Signal-Level Meter"); if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x32 Serial.println(F("SSD1306 allocation failed")); for (;;); } display.clearDisplay(); display.setTextSize(3); display.setTextColor(WHITE); display.setCursor(0, 10); display.println("FRC !!"); display.display(); WiFi.begin(ssid, pass); /* 以下のstatus read でwdt interruption 発生 while (WiFi.status() != WL_CONNECTED) { delay(tD); */ delay(700); noTone(trig); } void loop () { wdt_reset(); float x = WiFi.RSSI(); // rcvd sig strength indicator(dBm) // y = 0.0061e-0.101x Fit function by EXCEL float y; //y = 0.0061 * exp(-0.101 * x) ; y = 0.00305 * exp(-0.101 * x) ; Serial.print(x); Serial.print(" "); Serial.print(String(y, 2)); Serial.println(" m"); display.clearDisplay(); display.setTextSize(3); display.setTextColor(WHITE); display.setCursor(0, 10); display.print(String(y, 2)); display.println("m"); display.display(); int pitch = map(x, -80, -16, 600, 5000); tone(trig, pitch, 300); delay(70); noTone(trig); delay(20); } // end of program