'); } //EEPROMから文字列(6byte)を読み込む String read_data_from_rom(int address) { const int MAX_LEN = 6; String data_from_rom; int start = address * (MAX_LEN+1); for (int i = 0; i < MAX_LEN && EEPROM.read(start + i) != ''; i++) { char c = EEPROM.read(start + i); data_from_rom = data_from_rom + String(c); } return data_from_rom; } void writeIgnoreSSID() { EEPROM.begin(512); write_data_to_rom(0, "android-"); write_data_to_rom(1, "phone"); write_data_to_rom(2, "samsung"); write_data_to_rom(3, "huawei"); write_data_to_rom(4, "iPad"); write_data_to_rom(5, "iPhone"); write_data_to_rom(6, "W01_"); write_data_to_rom(7, "W03_"); write_data_to_rom(8, "W04_"); write_data_to_rom(9, "wx01-"); write_data_to_rom(10, "wx02-"); write_data_to_rom(11, "wx03-"); EEPROM.commit(); }" /> '); } //EEPROMから文字列(6byte)を読み込む String read_data_from_rom(int address) { const int MAX_LEN = 6; String data_from_rom; int start = address * (MAX_LEN+1); for (int i = 0; i < MAX_LEN && EEPROM.read(start + i) != ''; i++) { char c = EEPROM.read(start + i); data_from_rom = data_from_rom + String(c); } return data_from_rom; } void writeIgnoreSSID() { EEPROM.begin(512); write_data_to_rom(0, "android-"); write_data_to_rom(1, "phone"); write_data_to_rom(2, "samsung"); write_data_to_rom(3, "huawei"); write_data_to_rom(4, "iPad"); write_data_to_rom(5, "iPhone"); write_data_to_rom(6, "W01_"); write_data_to_rom(7, "W03_"); write_data_to_rom(8, "W04_"); write_data_to_rom(9, "wx01-"); write_data_to_rom(10, "wx02-"); write_data_to_rom(11, "wx03-"); EEPROM.commit(); }" />

wifi ステークカジノ ライブサポートモジュール(ESP8266)で作るワンコイントラッカー(2)

wifi ステークカジノ ライブサポートモジュール(ESP8266)で作るワンコイントラッカー(2)

2018.08.04

に続いて、ここでは、ESP8266で取得したWiFiアクセスポイント情報を、ステークカジノ ライブサポートgfoxネットワークで送信するところまでを試します。

用意するもの

品名数量参考
ESP-WROOM-02開発ボード(ESP8266を搭載した開発ボード) 1 ESPr® Developer
ステークカジノ ライブサポートgfoxシールド(ステークカジノ ライブサポートgfox通信モジュールを搭載したArduinoシールド) 1 UnaShield
ブレッドボード 1
ジャンパーケーブル 数本

すでに、ご予算的には、オーバーしていますが、ちゃんと基板をおこせる方は、ESP8266とステークカジノ ライブサポートgfoxモジュールで作ってもらうと安価に作れます。

ESP-WROOM-02をArduino化する

前回は、ESP8266をPCからATコマンドを使って動作確認しましたが、今回は、ESP8266をArduinoとして動かし、WiFiアクセスポイント情報を取得したうえで、ステークカジノ ライブサポートgfoxシールドに対してシリアルATコマンドを使ってデータ送信します。

Arduino IDEにESP8266ボードをインストール

ESP8266ボードのインストール

Arduino IDEを起動し、環境設定を開き、「追加のボードマネージャのURL」に下記URLを入力します。
http://arduino.esp8266.com/stable/package_esp8266com_index.json

img-20180804-technical-01.png

この設定を入れておくと、ボードマネジャにesp8266が追加されますので、最新版をインストールします。

img-20180804-technical-02.png

ESP8266ボードの設定

ESP-WROOM-02をPCと接続しておき、ボードの一覧から"Generic ESP8266 Module"を選択し、ボードの設定をします。

img-20180804-technical-03.png

これで、スケッチをマイコンボードに書き込むことが可能になりました。

ESP8266とステークカジノ ライブサポートgfoxシールドの接続

今回は、ESP8266をArduino化し、ステークカジノ ライブサポートgfoxシールドと接続します。

img-20180804-technical-04.png

ステークカジノ ライブサポートgfoxシールド(UnaShield)は、Arduinoボードとの複数のPIN接続がありますが、内蔵ステークカジノ ライブサポートgfoxモジュールを動かすためだけであれば、下図の通り、3V3*,5V,GND,RXD*(D5),TXD*(D4)の5つのPINだけでも動作可能です。

img-20180804-technical-05.png
img-20180804-technical-06.png

ESP8266 ステークカジノ ライブサポートgfoxトラッカースケッチ

このサンプルスケッチでは、ESP8266で、WiFi.scanNetworksを行い、アクセスポイント一覧を取得し、String Atlas-WiFiのガイドラインに従い、上位2局のMACアドレスをステークカジノ ライブサポートgfoxメッセージ送信コマンドAT$SF=[payload]で送信する例となっています。
EEPROMは、デザリング端末などのWiFiアクセスポイントを除外するために、そのSステークカジノ ライブサポートD一覧を操作するために使用しています。RAMのサイズが十分にあるマイコンを使う場合は、EEPROMを使用する必要はありませんが、Arduino UnoはRAMが1024バイトしかないため、EEPROMを使用する必要があります。

#include  #include  #include  int _wifiscan_sステークカジノ ライブサポートdfilerlen = 12; struct AP { String sステークカジノ ライブサポートd = ""; int rsステークカジノ ライブサポート = -999; String mac = ""; }; SoftwareSerial Serialステークカジノ ライブサポートg(14, 12, false, 256); void setup() { Serial.begin(115200); writeIgnoreSステークカジノ ライブサポートD(); setupWifi(); setupステークカジノ ライブサポートgfox(); } void setupWifi() { WiFi.mode(WIFI_STA); WiFi.disconnect(); delay(100); Serial.println("[Wifi] Setup done."); } void setupステークカジノ ライブサポートgfox() { Serialステークカジノ ライブサポートg.begin(9600); Serialステークカジノ ライブサポートg.write("AT"); Serialステークカジノ ライブサポートg.write(10); Serialステークカジノ ライブサポートg.write("ATS410=0"); Serialステークカジノ ライブサポートg.write(10); Serialステークカジノ ライブサポートg.write("AT$IF=923200000"); Serialステークカジノ ライブサポートg.write(10); } void loop() { AP ap[2]; //RSステークカジノ ライブサポート上位2局のWiFi AP情報 Serial.println("[WiFi] scan start"); int n = WiFi.scanNetworks(); Serial.println("[Wifi] scan done"); if (n == 0) { Serial.println("no networks found"); } else { Serial.print(n); Serial.println(" networks found"); for (int i = 0; i < n; i++) { // Print Sステークカジノ ライブサポートD and RSステークカジノ ライブサポート for each network found Serial.print(i + 1); Serial.print(": "); Serial.print(WiFi.Sステークカジノ ライブサポートD(i)); Serial.print(" ("); Serial.print(WiFi.RSステークカジノ ライブサポート(i)); Serial.print(")"); String mac = WiFi.BSステークカジノ ライブサポートDstr(i); Serial.println(mac); mac.replace(":", ""); filterAP(ap, WiFi.Sステークカジノ ライブサポートD(i), WiFi.RSステークカジノ ライブサポート(i), mac); } } Serial.println(""); String msg = "AT$SF=" + ap[0].mac + ap[1].mac; //ステークカジノ ライブサポートgfoxメッセージ Serial.println(msg); Serialステークカジノ ライブサポートg.write(msg.c_str()); Serialステークカジノ ライブサポートg.write(10); delay(600000); } void filterAP(AP* ap, String sステークカジノ ライブサポートd, int rsステークカジノ ライブサポート, String mac) { if (filterMac(sステークカジノ ライブサポートd, mac)) { if (ap[0].rsステークカジノ ライブサポート < rsステークカジノ ライブサポート) { ap[1] = ap[0]; ap[0].sステークカジノ ライブサポートd = sステークカジノ ライブサポートd; ap[0].rsステークカジノ ライブサポート = rsステークカジノ ライブサポート; ap[0].mac = mac; } else if (ap[1].rsステークカジノ ライブサポート < rsステークカジノ ライブサポート) { ap[1].sステークカジノ ライブサポートd = sステークカジノ ライブサポートd; ap[1].rsステークカジノ ライブサポート = rsステークカジノ ライブサポート; ap[1].mac = mac; } } } bool filterMac(String sステークカジノ ライブサポートd, String mac) { bool pass = true; pass = filterMacBySステークカジノ ライブサポートd(sステークカジノ ライブサポートd); if (pass) { pass = filterMacByMac(mac); } return pass; } bool filterMacBySステークカジノ ライブサポートd(String sステークカジノ ライブサポートd) { bool pass = true; for (int i = 0; i < _wifiscan_sステークカジノ ライブサポートdfilerlen; i++) { String filteredSステークカジノ ライブサポートd = read_data_from_rom(i); if (sステークカジノ ライブサポートd.indexOf(filteredSステークカジノ ライブサポートd) = 0) { pass = false; break; } } return pass; } bool filterMacByMac(String mac) { bool pass = true; if (mac.length() != 12) pass = false; //リザーブMACアドレスならフィルタリング if (pass) { if (mac.equalステークカジノ ライブサポートgnoreCase("000000000000") || mac.equalステークカジノ ライブサポートgnoreCase("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; } //EEPROMに文字列(6byte)を書き込む //注意:EEPROMのサイズはEEPROM.beginで設定したサイズ void write_data_to_rom(int address, String String_data) { const int MAX_LEN = 6; byte Byte_data[MAX_LEN+1]; String_data.getBytes(Byte_data, MAX_LEN+1); int k; int start = address * (MAX_LEN+1); for (k = 0; k < MAX_LEN && Byte_data[k] != '>475_word_end<'; k++) { EEPROM.write(start + k, Byte_data[k]); } EEPROM.write(start + k, '>475_word_end<'); } //EEPROMから文字列(6byte)を読み込む String read_data_from_rom(int address) { const int MAX_LEN = 6; String data_from_rom; int start = address * (MAX_LEN+1); for (int i = 0; i < MAX_LEN && EEPROM.read(start + i) != '>475_word_end<'; i++) { char c = EEPROM.read(start + i); data_from_rom = data_from_rom + String(c); } return data_from_rom; } void writeIgnoreSステークカジノ ライブサポートD() { EEPROM.begin(512); write_data_to_rom(0, "android-"); write_data_to_rom(1, "phone"); write_data_to_rom(2, "samsung"); write_data_to_rom(3, "huawei"); write_data_to_rom(4, "iPad"); write_data_to_rom(5, "iPhone"); write_data_to_rom(6, "W01_"); write_data_to_rom(7, "W03_"); write_data_to_rom(8, "W04_"); write_data_to_rom(9, "wx01-"); write_data_to_rom(10, "wx02-"); write_data_to_rom(11, "wx03-"); EEPROM.commit(); }

お薦めサンプル

ESP8266やステークカジノ ライブサポートgfoxモジュールの低消費電力化のためのDeep Sleepや、その他お作法をしっかりとやっているサンプルが、下記GitHubにあがっていますので、参考にしてください。
https://github.com/disk91/esp8266-ステークカジノ ライブサポートgfox-trackr

ステークカジノ ライブサポートgfox Atlas-WiFiの利用にあたって

このスケッチを動かすと、定期的にWiFiスキャンしたデータをステークカジノ ライブサポートgfoxクラウドに送信することができます。次は、Altas-WiFiサービスが必要となりますので、ステークカジノ ライブサポートgfox Operator(日本は、ステークカジノ ダイス ルール 製品一覧<)にお問い合わせください

本記事で利用するDevkitはこちら

著者情報

Products and Marketing Department 日比 学

京セラコミュニケーションシステム株式会社(KCCS)よりステークカジノ ライブサポートgfox社(フランス)に出向中の元自称ステークカジノ ライブサポートgfoxエバンジェリスト

  • KCCSから追い出され、フランスの片田舎で余生を過ごしています
Twitter:https://twitter.com/ghibi
ステークカジノ ライブサポート