勝手な電子工作・・

勝手なオリジナル電子工作に関する記事を書きます

かんたんにできるWiFi信号レベル表示器(テレワークに便利)

f:id:a-tomi:20201128163004j:plain

WiFiアクセスポイントからの受信信号レベルを、dBm(デシベル・ミリワット)で表示する装置の試作品です。この週末で作れるかなと構想してましたが、いざ作ってみると半日であっけなく完成 \(^o^)/ プログラムは後のほうにつけますがごく小さくできました。

WiFi信号強度はルーターから少し遠いと、ちょっとした位置の違いでかなり変化しますね。金属製の雨戸の開けたてで違ったりもしますし・・。なので、テレワーク場所の移動には気を使うことが多いです。

PCにもスマホにも大体の信号強度は表示されますが、詳しく測れる測定器を作れば最適な場所が一発で決められかと思いました!作ってみると表示は安定していて、我ながらこれは便利!!

部品はESP32 Development Boardと4桁LED表示器(TM1637)、それに3Vの電池ホルダー(スイッチ付)だけです。

まず、回路(配線図)は次です。

f:id:a-tomi:20201128165520j:plain

電源としては上図の赤と黒に電池で3Vを供給すれば、ただちに測定が開始できます。

ただし、WiFiがあまりにも弱いとそもそも接続がしにくいですから、-60 dBm台以上のところでつないでから弱い場所に行けばOKです。

一般の家庭用ルーターの近くでは-20dBmほどの値で、それを逆算すれば受信信号は0.01mWほどだとわかります。

f:id:a-tomi:20201128170658j:plain

同じ部屋の中ですと、広くなければ大体どこに行っても-30dBm~-40dBm台でたいへん強い状態です。

f:id:a-tomi:20201128170748j:plain

しかし、階の違う別の部屋ですと:

f:id:a-tomi:20201128170928j:plain

逆算すると1ナノワットぐらいなのですが、これでも今どきの優秀な機器なら何も問題なくつながります。

ところが、離れたところでは場所によって電波の死角があります。

f:id:a-tomi:20201128171324j:plain

この値では接続は心細く、だいたいの機器は接続できません。しかし数十センチ位置を変えるだけで簡単に10dB以上改善するのに気づきます。

よって、テレワークで作業する位置が、PCなどの機器の単純な表示よりもずっと簡単に選べてすぐに決められるというわけです。

f:id:a-tomi:20201128171924j:plain

 

考えてきたプログラムは次のように簡単にできました。Arduino-IDEで書き込みますが、対応するライブラリーの入れ方はこのブログのカテゴリー"ESP32 Develoment Board"をご参照ください。なお、次の記事には具体的な入れ方を書きました。

ESP32のアクセスポイント (つまりスタンドアローンWiFi-LAN) - 勝手な電子工作・・

TM1637DisplayはArduino用のライブラリーがそのままで動きます。

/************************************************************
 *  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 "WiFi.h"
#include "TM1637Display.h"
#define DIO GPIO_NUM_22       	// DIO for TM1637 LED
#define CLK GPIO_NUM_21       	// CLK for TM1637 LED
TM1637Display display(CLK, DIO);
uint8_t Data[] = { 0x40, 0x40, 0x40, 0x40 }; // dashes
#define tD 500                	// time (mS) for display

// define target SSID and password
#define ssid "your-SSID" 	// set SSID to be measured
#define pass "yourpassword"  	// set its password

void setup() { // ***** ESP32 setup *****
  delay(100);  // just wait for ESP32 enough stability
  display.setBrightness(0x0c); // set LED duty rate
  delay(1);
  display.setSegments(Data);   // display dashes
  WiFi.begin(ssid, pass);
  while (WiFi.status() != WL_CONNECTED) {
    display.setSegments(Data);  // display dashes
    delay(tD/2);
    display.clear(); // blink dashes while connecting done
    delay(tD/2);
  }
}

void loop () { // ***** ESP32 loop *****
  long rssi = WiFi.RSSI(); // rcvd sig strength indicator(dBm)
  display.showNumberDec(rssi, false); // show dB-milliWatt
  delay(tD);
}
// end of program

 

上のプログラムで、SSIDとpasswordの#defineを測定したいWiFiルーターに変えるだけです。

ESP32としては日本の技適付きのEspressif社純正品が載っていて、WiFi802.11b/g/n/e/iに対応しています。強弱で選定されますがふつうはこれで十分ではないかと思います。これで対応しない高速版はそもそも電波が強いところでしか使えないわけなので。

 

蛇足かもしれませんが、受信信号強度(RSSI)について付記します。

RSSIはreceived signal strength indicatorの略です。単位dBm(デシベルミリワット)は受信電力PmWの場合、次の常用対数式で計算されます。

RSSI = 10 x log (PmW/1mW)

受信信号電力に逆算するときは次の式になりますかね。^は累乗(Excel等での表現)。

P mW = 10^(RSSI / 10)  mW

 

ついでながら、試作用のブレッドボードの作りかたを少し書き足しておきます。

f:id:a-tomi:20201128174153j:plain

ESP32-Development Boardなどにはこの形が最適ですね。こんなブレッドボードはどこで買えるかといえば、今のところどこにもありませんね^^; 生活の知恵として、普通にある次のようなブレッドボードを真ん中の溝でカットして、上下端の凹凸がガッチリはまるように上下を逆に組み合わせます^^ 

f:id:a-tomi:20201128174357j:plain

 ブレッドボードをどうやって切るかといえば、金属の入っていない真ん中の溝を普通の金鋸で切ってしまえばよいのです。電池ボックスやTM1637ディスプレイは厚い両面テープでくっつければ使いやすいですね。

ちなみに私は時間節約のために、ずいぶん昔に次のような小さな道具を無理に購入して、長年大事に使ってます。これだとすぐに切れますが、基板などを直線切りするのにも楽です。歯も変えられます。

f:id:a-tomi:20201128174912j:plain

 

では今回はこのへんで。

 

どなたかのお役に立てば幸いです。

 

©2020 Akira Tominaga, All rights reserved.