RSSIの取得(ThingSpeak使用)

目次

 

はじめに

先日製作した洗濯物 取り込み忘れ防止機器を製作する際に屋外にあるか、屋内にあるか判別するため電波強度(RSSI)のしきい値を決めました。その際に屋内、屋外に機器がある状態のRSSI測定を行いました。今回はその時の構成と方法について説明していきます。

 

nandechang.hatenadiary.com

 

測定構成

場所を移動しながら、RSSIを記録し、スマホで確認したいと考えました。そこで、取得したRSSIをWIFI経由で何処かのクラウドデータサービスに送信しようと考えました。クラウドデータサービスについては、無料で使用でき、グラフ表示もできるため、ThingSpeakを用いました。

f:id:nandechang:20220414072051p:plain

 

ThingSpeak

ThingSpeakはIoT向けのクラウドデータサービスです。デバイスから送られた来たデータを貯めて、グラフに表示したり、データをトリガに何かのアクションを起こすことができます。下記制限がありますが、無料で使用することができます。制限としては以下になります。

・メッセージ間隔15秒以上

・年間300万メッセージまで

・商用利用禁止

 

ThingSpeakの登録

①下記リンクをクリックし、「Get Started For Free」をクリックする

https://thingspeak.com/

f:id:nandechang:20220412234213p:plain

 

②ログインするかアカウントを作成するか を選択するので、左下の

「Create One!」をクリック

f:id:nandechang:20220412235036p:plain

③下記画面の項目を記載し、登録する

・メールアドレス
・国
・パスワード
・名前
・名前(英字)
全項目を埋め、「Continue」をクリック

f:id:nandechang:20220413000758p:plain

④入力したEmailアドレスが記載されているので、Continueをクリック

f:id:nandechang:20220413002259p:plain

⑤メールが届いているので確認し、「Verify email」をクリック

⑥下記のContinueをクリック

f:id:nandechang:20220413002238p:plain

⑦Passwordを入力し、「I accept theOnline Services Agreement Online Services Agreement」にチェックを入れ、Continueをクリックする

f:id:nandechang:20220413002550p:plain

⑧「Sign-up successful」と表示されるので、「OK」をクリックする

⑨利用目的を聞かれているので、「Personal,non-commercial projects」を選択し、「OK」をクリックする

f:id:nandechang:20220413003420p:plain

 

ThingSpeak Channel作成

①「New Channel」をクリックする

f:id:nandechang:20220413003709p:plain

②Name:測定プロジェクト名, Field1:測定項目を入れて、右へチェックを付ける

その他の項目は入力しなくても大丈夫

「Save Channel」をクリック

f:id:nandechang:20220413004626p:plain

③Channelが作成される

④「Channel Setting」タブを選択し、「Channel ID」を確認する

⑤「API Keys」タブを選択し、「Write API Key」を確認する

 

Arduinoプログラムコード

#include <ThingSpeak.h>
#include <ESP8266WiFi.h>

//ネットワーク情報
char* ssid = "********"; //””で囲まれた中にWiFiルーターssid
char* password = "*******"; //””で囲まれた中にWiFiルーターのpassword


WiFiServer server(80);//webサーバーをポート80に設定する

String header;//HTTPリクエストのヘッダーを格納する変数

// ThingSpeak設定(チャンネルIDと書き込み用APIキーを変更してください)
const unsigned long myChannelNumber = ********; //********にChannel ID
const char * myWriteAPIKey = "********"; //””で囲まれた中にWriteAPIKey

// ThingSpeak接続用
WiFiClient  client;


void setup(void)
{
  Serial.begin(115200);
  Serial.print("Connecting to ");
  Serial.println(ssid);
  //Wi-Fi接続を開始する
  WiFi.begin(ssid, password);
  //接続が開始するのを待つ
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
    yield(); //WDTを動作させるために必要
  } 
  //通信ができたら、ESP32に割り当てられたIPアドレスを表示する
  Serial.println("");
  Serial.println("WiFi connected.");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  //WiFiServer server(80);で作成したサーバーを開始
  server.begin();
}

void loop(void)

  //無線の強さ
  long rssi = WiFi.RSSI();


  // センサーデータアップロード開始
  ThingSpeak.begin(client);

  // フィードに値を設定
  ThingSpeak.setField(1, rssi);

  // ThingSpeakに送信
  Serial.println();
  Serial.print("Write fields...");
  ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
  Serial.println("done");
}

 

ThingSpeak設定の部分にThingSpeak Channel作成の項で確認したチャンネルIDと書き込み用APIキーを入力して、ThingSpeakへデータを送信できます。

 

測定結果

f:id:nandechang:20220413011840p:plain

上記のように測定結果が取得できました。

屋外にある場合は-67を下回り、屋内にある場合は-67を上回ったため、しきい値を-67としました。


おわりに

ThingSpeakは無料で使用することができ、グラフ表示もできるので、移動しながらのRSSIの測定には便利でした。