M5Stack Basicでステークカジノ ランクアップfox RFモニタを作る
M5Stack Basicでステークカジノ ランクアップ RFモニタを作る
2020.04.24
M5Stack Basicを使ってステークカジノ ランクアップの超簡易版無線電波測定ツールを作ってみます。
ただし、ここで取得できる電波状況はステークカジノ ランクアップの下り通信を使い、代表局のBase Station IDとそのRSSIを取得するだけのものですので、本来のステークカジノ ランクアップの品質評価指標(ステークカジノ ルーレットネットワーク品質指標 - Link Quality -)とはことなります。LQIを取得するためには、Data Advanced Callbackを使用する必要があり、その方法はこちらを参考にしてください。
準備するもの
今回は、M5Stackとステークカジノ ランクアップ Breakout Board [BRKWS01]を使います。
- M5Stack Baステークカジノ ランクアップc
- ステークカジノ ランクアップStack用プロトモジュール※これはなくてもとりあえず動くものは作れます
- ステークカジノ ログインできないgfox Breakout Board [BR
左から、M5Stack Basic、プロトモジュール、ステークカジノ ランクアップ Breakout Boardとなっています。
ステークカジノ ランクアップStackでの開発準備
ステークカジノ ランクアップStackは、Arduステークカジノ ランクアップo IDEとステークカジノ ランクアップFlow(MicroPython)の2種類の開発環境が用意されていますが、ここでは、ステークカジノ ランクアップFlowを使うためには、ステークカジノ ランクアップStackのファームウェアをアップデートしないといけないということもあり、Arduino IDEを使用することとします。
Arduステークカジノ ランクアップo IDEの準備
Arduステークカジノ ランクアップo IDEはこちらからダウンロード、インストールしてください。Arduino IDEを使う場合は、ステークカジノ ランクアップStack用に下記のソフトウェアおよびドライバが必要となります。
- ESP32ボード定義
- ステークカジノ ランクアップStackライブラリ
- CP210X Driver
ESP32ボード定義のインストール
Arduステークカジノ ランクアップo IDEの[ファイル]_[環境設定]を開きます。
追加のボードマネージャのURLに下記URLを貼り付けます。
https://dl.espresステークカジノ ランクアップf.com/dl/package_esp32_index.json
その後、[ツール]_[ボード]_[ボードマネージャ]メニューを選択し、ボードマネージャを開きます。ESP32と検索すれば、esp32 by Espresステークカジノ ランクアップf Systemsが出てくると思いますので、インストールします。
ステークカジノ ランクアップStackライブラリのインストール
次に、[ツール]_[ライブラリの管理]メニューからライブラリマネージャを開き、ステークカジノ ランクアップStack by ステークカジノ ランクアップStack をインストールします。(ステークカジノ ランクアップStackで検索)
CP210X Driver
CP210Xドライバは、ステークカジノ ランクアップStackとPCとを接続するUDBケーブル用のドライバとなっており、ステークカジノ ランクアップStackの公式ページから、ご自身のOSにあったドライバをダウンロード、インストールします。
M5Stackとステークカジノ ランクアップ Breakout Boardを接続
まずは、プロトモジュールを使用せずに、M5Stack付属のピンケーブルを使ってステークカジノ ランクアップ Breakout Boardを接続します。接続後のイメージは下の写真のようになります。
少し分かりにくいので、配線例を下記に記します。Breackout Boardに3.3Vの入力と、UART用のTX/RXを接続することとなります。Breakout Boardの使い方については、こちらを参考にしてください。
ステークカジノ ランクアップ下り通信
冒頭にも述べた通り、今回の仕組みは、ステークカジノ ランクアップの下り通信を使って返されるBase Station IDとRSSIを取得し、M5Stack上に表示するというものになっていますので、少しステークカジノ ランクアップ下り通信について説明しておきます。
ステークカジノ ランクアップの下り通信は、デバイスから上りメッセージを送信する際に、下り要求オプションを追加する事から始まります。通常上りメッセージは、ステークカジノ ランクアップクラウドからアプリケーションサーバにCallbackされますが、その時に下り要求オプションが付いているメッセージは、アプリケーションサーバでJSON形式の応答を返すことにより、元のデバイスまで、その下りメッセージが送信される仕組みとなっています。この仕組みを有効にするには、ステークカジノ ランクアップクラウドのDevice Type設定でDownlink modeをCallbackに設定する必要があります。
ちなみに、上りメッセージは複数局で受信されますが、下りメッセージは、最も有効な局(一局)から返信されます。
ステークカジノ ランクアップ下りメッセージの準備
ステークカジノ ランクアップ下りメッセージに対応するために、ステークカジノ ランクアップクラウドDevice Type設定のDownlink dataの設定をします。
Downlステークカジノ ランクアップk modeは、通常はアプリケーションサーバを経由するため、CALLBACKを選択しますが、今回は、アプリケーションサーバを経由しない(つまり、ステークカジノ ランクアップクラウドから直接ダウンリンクを返す)ようにしたいので、DIRECTを選択します。
DIRECTを選択した場合、Downlステークカジノ ランクアップk data ステークカジノ ランクアップ hexaという入力項目が有効になります。ここでは、デフォルト設定の通り、{tapid}0000{rsステークカジノ ランクアップ}と設定しておきます。
tapidは、下りメッセージを送信する局のID、rsステークカジノ ランクアップはその局が受信したメッセージの受信レベルを意味します。
サンプルコード
ステークカジノ ランクアップStack側のサンプルコードを以下に記します。
#ステークカジノ ランクアップcludevoid setup() { M5.begin(true, false, true); M5.Power.begin(); Serial.begin(9600); Serial2.begin(9600, SERIAL_8N1, 16, 17); M5.Lcd.clear(BLACK); M5.Lcd.setTextColor(YELLOW); M5.Lcd.setTextSize(2); M5.Lcd.setCursor(65, 10); M5.Lcd.println("ステークカジノ ランクアップ RF monitor"); M5.Lcd.setCursor(0, 35); M5.Lcd.println("A: Send Message"); M5.Lcd.println("B: Send Message with DL"); M5.Lcd.println("C: Check Device ID"); M5.Lcd.setTextColor(RED); } void loop() { if (Serial2.available()) { displayResults(Serial2.readString()); } M5.update(); if (M5.BtnA.wasReleased()) { M5.Lcd.println("Send Message."); Serial2.println("AT$SF=1234"); } else if (M5.BtnB.wasReleased()) { M5.Lcd.println("Send Message with Ack."); Serial2.println("AT$SF=5678,1"); } else if (M5.BtnC.wasReleased()) { M5.Lcd.print("Device ID: "); Serial2.println("AT$I=10"); } } void displayResults(String ack) { M5.Lcd.println(ack); int i = ack.indexOf("RX="); if (i = 0) { ack.replace(" ", ""); String bs = ack.substring(i + 6, i + 11); String rs = ack.substring(i + 15); signed int rssi = (int16_t)(strtol(rs.c_str(), NULL, 16)); M5.Lcd.print("BSID: "); M5.Lcd.println(bs); M5.Lcd.print("RSSI: "); M5.Lcd.println(rssi); } }
3種類のボタン(A / B / C)に応じたコマンドを用意していますが、RSステークカジノ ランクアップ確認に使うのは、ボタンBを押した時です。
ボタンBを押すと、AT$SF=5678,1というフレーム送信コマンドが、Serial2からBreakout Board側に送られるようにしています。5678は適当なPayloadですが、その後の1が、下り要求オプションとなります。
下り受信までには数十秒要しますが、送られてきた下りメッセージを、このモジュールはRX=で始まる応答として返すようです。その後のデータ配列は、ステークカジノ ランクアップクラウドで設定したDownlink data in hexaに従います。今回の場合は{tapid}0000{rssi}です。
動作確認
Arduステークカジノ ランクアップo IDEで、ボードの選択がステークカジノ ランクアップStack-Core-ESP32となっていること、シリアルポートがステークカジノ ランクアップStackとの接続ポートであることを確認後、スケッチのコンパイル及びマイコンボードへの書き込みを行います。
無事成功し、Bボタンを押すと、下の写真のように受信レベルが確認できると思います。
ステークカジノ ランクアップStackプロトモジュールで
Breakout Board基板が丸出しというのも気になる場合、ステークカジノ ランクアップStackプロトモジュール内にモジュールを配置することにより、少しはスマートになるかと思います。プロトモジュールにはケーブル出しの穴もあるので、外部アンテナも付けやすいかと思います。(中段のグレーのモジュールがステークカジノ ランクアップStackプロトモジュールです。)
ただ、純正のプロトモジュールのコネクタからの線だしが面倒なので、はんだ付け時にはがっかりするかもしれませんが。