Wio Termステークカジノ

Wio Terminalとステークカジノ 5chでWiFi位置情報推定

2020.12.21

Wio Terminal内蔵のWi-FiがスキャンしたパブリックWi-Fiアクセスポイントの情報から、ステークカジノ 5ch Atlas Wifiを使用し、位置推定する方法を説明します。

img-20201221-technical-01.png

Wio Termステークカジノ 5chalの準備

RTL8720ファームウェアアップロード

Wio Termステークカジノ 5chal搭載のWi-Fiチップ(RTL8720)のファームウェアアップデートが必要です。アップデート方法は、公式ステークカジノ 5chkiに記載されていますが、大きな流れは、

  1. ファームウェア書き込み用ファイル(rtl8720_updステークカジノ 5che_v2.uf2)のダウンロード
  2. ブートローダ起動(Wio Termステークカジノ 5chal側面スイッチを2回スライド: here
  3. ブートローダモードになり、PC上に"Arduステークカジノ 5cho"外部ドライブが表示されれば、上記1.でダウンロードしたuf2ファイルを移動. (移動すると、Wio Termステークカジノ 5chalの画面に"Burn RTL8720 fw"と表示)
  4. 最新ファームウェアをダウンロード
  5. ファームウェア書き込みツール(ambd_flash_tool)のダウンロード。 git clone https://github.com/LynnL4/ambd_flash_tool
  6. 初期ファームウェアを削除 ambd_flash_tool eraステークカジノ 5ch
  7. 新ファームウェアの書き込み ambd_flash_tool flash -d [上記4.でダウンロードしたファイルフォルダのパス]

WiFi Scannステークカジノ 5chg用のライブラリをインストール

  1. Seeed_Arduステークカジノ 5cho_rpcWiFiリポジトリをZIPダウンロード
  2. Arduステークカジノ 5cho IDEの[スケッチ] _ [ライブラリをインクルード] _ [ZIP形式のライブラリをインストール]メニューから、1.でダウンロードしたファイルをインストール
  3. インストールされると、[ライブラリをインクルード]メニューにSeeed Arduステークカジノ 5cho WiFiが追加されます。
  4. 同様にSeeed_Arduステークカジノ 5cho_rpcUnifiedSeeed_Arduステークカジノ 5cho_mbedtlsWio Termステークカジノ 5chal FSSeeed_Arduステークカジノ 5cho_SFUDSeeed_Arduステークカジノ 5cho_LCDをインストール

ステークカジノ 5ch Breakout BoardとWio Terminalの接続

ステークカジノ 5ch Breakout Board(BRKWS01 RC3)とWio Terminalの接続は、下図のように、3.3V電源入力とシリアルTx / Rxを接続してください。
img-20201221-technical-02.png
img-20201221-technical-03.png

サンプルスケッチ

Wio Terminal内蔵のWi-FiモジュールでWi-Fiネットワークスキャンを行い、受信した上位2つのMACアドレスを、ステークカジノ 5chで送信するスケッチとなります。

wio.ステークカジノ 5cho.c
#ステークカジノ 5chclude "rpcWiFi.h"
#ステークカジノ 5chclude "TFT_eSPI.h"
#ステークカジノ 5chclude
TFT_eSPI tft; struct AP { String ssid = ""; int rssi = INT_MIN; String mac = ""; }; void setup() { Serial.begin(9600); Serial1.begin(9600); // Set WiFi to station mode and disconnect from an AP if it was previously connected WiFi.mode(WIFI_STA); WiFi.disconnect(); delay(100); //for button A pinMode(WIO_KEY_C, INPUT_PULLUP); tft.begin(); tft.setRotation(3); tft.fillScreen(TFT_BLACK); tft.setTextSize(2); debugDisplay("Setup Done"); Serial1.print("AT$I=10\r"); } void loop() { displaySerial1(); if (digitalRead(WIO_KEY_C) == LOW) { wifiScan(); } delay(100); } void wifiScan() { tft.fillScreen(TFT_BLACK); tft.setCursor(0,0); AP ap[2]; //RSSI上位2局のWiFi AP情報 debugDisplay("Wifi Scan Start"); // WiFi.scanNetworks will return the number of networks found int n = WiFi.scanNetworks(); debugDisplay("Wifi Scan Done"); if (n == 0) { debugDisplay("No Networks Found"); } else { debugDisplay("Networks Found"); for (int i = 0; i < n; ++i) { // Print SSID and RSSI for each network found Serial.print(i + 1); Serial.print(": "); Serial.print(WiFi.SSID(i)); Serial.print(" ("); Serial.print(WiFi.RSSI(i)); Serial.print(") "); String mac = WiFi.BSSIDstr(i); Serial.println(mac); mac.replace(":", ""); // ステークカジノ 5chメッセージとして送信するWiFi MACアドレスを最大2つに絞る filterAP(ap, WiFi.SSID(i), WiFi.RSSI(i), mac); } } String msg = "AT$SF=" + ap[0].mac + ap[1].mac; //ステークカジノ 5chメッセージ debugDisplay("ステークカジノ 5ch Send Message"); debugDisplay(msg); Serial1.println(msg); delay(5000); } void filterAP(AP* ap, String ssid, int rssi, String mac) { if (filterMac(mac)) { if (ap[0].rssi < rssi) { ap[1] = ap[0]; ap[0].ssid = ssid; ap[0].rssi = rssi; ap[0].mac = mac; } else if (ap[1].rssi < rssi) { ap[1].ssid = ssid; ap[1].rssi = rssi; ap[1].mac = mac; } } } bool filterMac(String mac) { bool pass = true; if (mac.length() != 12) pass = false; //リザーブMACアドレスならフィルタリング if (pass) { if (mac.equalsIgnoreCase("000000000000") || mac.equalsIgnoreCase("FFFFFFFFFFFF")) { pass = false; } } //マルチキャストMACアドレスならフィルタリング if (pass) { long LSBbit_1stOct = strtol(mac.substring(0,2).c_str(), NULL, 16); if (LSBbit_1stOct % 2 == 1) { pass = false; } } return pass; } void displaySerial1() { if (Serial1.available()) { int w = Serial1.read(); tft.print(char(w)); Serial.write(w); } } void debugDisplay(String s) { tft.println(s); Serial.println(s); }
上記サンプルスケッチをコンパイル・書き込みすることにより、Wio Terminalの"Cボタン"をプッシュすると、Wi-Fiスキャンとステークカジノ 5chメッセージの送信ができ、下図のようにステークカジノ 5chクラウドに2つのMACアドレスが送信されます。

img-20201221-technical-04.png

Atlas ステークカジノ 5ch-Fiによる位置情報推定

スキャンしたMACアドレスをステークカジノ 5chクラウドに送信できるようになれば、最後にDステークカジノ 5cha Advanced Callbackを設定することにより、位置ステークカジノ 5chを取得することができます。

img-20201221-technical-05.png

CallbackされるJSON Bodyのうち、[computedLocatステークカジノ 5chn]という変数に計算された位置ステークカジノ 5chが取り込まれます。

dステークカジノ 5cha_advanced_callback.json
{ "ステークカジノ 5chviceId": "73E6BB",
"time": 1607677923,
"ステークカジノ 5chqNumber": 50,
"computedLocatステークカジノ 5chn": {"lat":35.75xxxxx,"lng":139.71xxxxx,"radius":250,"source":6,"status":1} }

ステークカジノ 5ch Atlas WiFiの仕組み

ステークカジノ 5ch Atlas WiFiは、IoTデバイスの位置情報をGPSよりも安価・低消費電力で提供可能なステークカジノ 5ch Atlasサービスのひとつです。
Atlas ステークカジノ 5ch-Fiの仕組みや注意事項はHERE Poステークカジノ リロードtioning APIとステークカジノ リロードgfox Atlasで確認してください。

本記事で利用するステークカジノ 5chvkitはこちら

著者ステークカジノ 5ch

研究部責任者 日比学

京セラコミュニケーションシステム株式会社(KCCS)の経営企画部門で新規事業・研究開発に従事。
ステークカジノ 5chネットワークの更なる普及にむけて、IoT、LPWA(ステークカジノ 5ch)関連の情報を発信しています。

【Tステークカジノ 5chtter】https://tステークカジノ 5chtter.com/ghibi

ステークカジノ 5ch