Relative Content

IoT Study Kit

Wemos (d4) WiFi sniffing

最近力を入れる所は、WiFi sniffingという技術。 WiFi sniffingとは ーーーーここからは中国語ーーーー 那么什么是snffer呢?sniffer可以翻译为混杂模式,ESP8266可以进入该模式,接收空中的 IEEE802.11 包。SDK主要提供的接口有: 接口 说明 wifi_promiscuous_enable 开启混杂模式 wifi_promiscuous_set_mac 设置 sniffer 模式时的 MAC 地址过滤 wifi_set_promiscuous_rx_cb 注册混杂模式下的接收数据回调函数,每收到一包数据,都会进入注册的回调函数。 wifi_get_channel 获取信道号 wifi_set_channel 设置信道号,用于混杂模式 ーーーーここまでは中国語ーーーー 応用例として、Amazon bottonをIoT bottonに改造する。そのカギは、このWiFi sniffing技術。Amazon bottonから出るWiFi信号をキャッチし、botton押されたとわかった。 IoT-Cloud-Mobile Kitの対応 推進するIoT-Cloud-Mobile Kitもそれに対応すべく、しばらくsniffingとPOSTの共存、メモリの制限などと格闘して、何度も諦めかけて、遂に安定して動作するようになった。   (IoT-Cloud-Mobile Kit)ブレッドボード プロトタイプボードで実装もした。 Wemosが周りのMAC addressとRSSIは取得でき、TinyWebDB-APIでクラウドに蓄積できた。   さらに室内位置情報 蓄積されたMAC addressとRSSIは、出席確認などに活用でき、室内位置情報(Indoor Positioning)のシステムも作りたいね。   参考 https://www.hackster.io/rayburne/esp8266-mini-sniff-f6b93a http://www.whiskeytangohotel.com/2016/12/portesp8266-wifi-sniffer-arduino-ide.html Indoor Positioning ESP32 基于 Wi-Fi sniffer […]

WeMos (d2) Home Automation

TinyWebDB-APIを利用した、Home Automationの例。 ハードウェア “IoT-Cloud-Mobile Study Kit”を利用 データ送信 下記のは操作中、数分起き温度、気圧センサーのデータをTinyWebDB-APIテストサーバ(http://tinydb.ml/api/)へ送信する。 送信したデータは、http://tinydb.ml/status/で確認できる。 データ受信 スマートフォンからLED On/Off の指令は受信すると、ESP8266内蔵LEDは点/滅可能になった。 ソースコード // Sample Arduino Json Web Client // Downloads and parse http://jsonplaceholder.typicode.com/users/1 // // Copyright Benoit Blanchon 2014-2017 // MIT License // // Arduino JSON library // https://bblanchon.github.io/ArduinoJson/ // If you like this project, please add a star! #include <ArduinoJson.h> #include <Arduino.h> […]

WeMos (c6) Thingspeak

数回JSON関連の実験をしたが、いざTinyWebDBのAPIの実験を始まると、また引っかかるところが多い。 色々と検索してところ、ThingspeakのAPIサンプルが見つかったので、ちょっと曲がり道して試すことに。 センサーの温度と気圧をThingspeakにアップして、動きを見て見る。 まずThingspeakのアカウントを申請して、THINGSPEAK_API_KEYを取得する。 https://thingspeak.com/users/sign_up 次はサンプルを見ながら、プログラミング。 #include <Adafruit_BMP280.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define OLED_RESET 0 // GPIO0 Adafruit_SSD1306 OLED(OLED_RESET); #define BMP_SCK 13 #define BMP_MISO 12 #define BMP_MOSI 11 #define BMP_CS 10 Adafruit_BMP280 bmp; // I2C //Adafruit_BMP280 bmp(BMP_CS); // hardware SPI //Adafruit_BMP280 bmp(BMP_CS, BMP_MOSI, BMP_MISO, BMP_SCK); #include <ESP8266WiFi.h> #include <ESP8266HTTPClient.h> /*************************** * Begin Settings **************************/ const […]

WeMos (c5) JSON exchange rate

WeMosをRESPのクライアントとして機能するため、JSONと、HTTPClientを検証する。 前回ArduinoJsonというライブラリを使用したので、ESP8266ならではのWiFi機能を使い、インターネットから情報を取得して表示させてみる。 JSON データ形式 為替レートの情報は、 Foreign exchange rates and currency conversion JSON API から取得する。 ドル円レートの情報を取得する場合、URLはhttp://api.fixer.io/latest?base=USD&symbols=JPY 応答は下記の通り HTTP/1.1 200 OK Server: nginx/1.13.6 Date: Sat, 04 Nov 2017 13:40:46 GMT Content-Type: application/json Content-Length: 57 Connection: close Cache-Control: public, must-revalidate, max-age=900 Last-Modified: Fri, 03 Nov 2017 00:00:00 GMT Vary: Origin X-Content-Type-Options: nosniff {“base”:”USD”,”date”:”2017-11-03″,”rates”:{“JPY”:113.94}} closing connection プログラム 下記の処理をする  WiFiManagerでWiFi自動接続 […]

WeMos (c4) JSON

WeMosをRESPのクライアントとして機能するため、JSONと、HTTPClientを検証する。 ライブラリの追加 JSONを扱うライブラリに「ArduinoJSON」というのがあるので、ライブラリの追加で、リストが出てくるので、JSONと入力し絞込。 (2018/7現在、5.x と6.x が共存して、6.xはまたベター版のため、エラーが発生する。5.xを利用する) ArduinoJSONの動作、JsonBuffer size、Parsing program、Serializing programは、下記のURLで確認しながら進める方が便利でしょう。 https://bblanchon.github.io/ArduinoJson/assistant/ 動作確認 公式のサンプルJsonParserExampleをそのまんま。 // Copyright Benoit Blanchon 2014-2017 // MIT License // // Arduino JSON library // https://bblanchon.github.io/ArduinoJson/ // If you like this project, please add a star! #include <ArduinoJson.h> void setup() { Serial.begin(9600); while (!Serial) { // wait serial port initialization } // Memory […]

WeMos (c3) Home IoT Server

いよいよWiFiManagerを組み込み、理想のIoT-Cloud-Mobile Study Kit (IoT実験キット)の形ができた。 今回の実験はWeMosにhttpサーバを立ち上げて、ブラウザーから接続 を待機;接続するとBMP280センサー情報を返送する。 つまり、スマートフォンまたはPCから直接接続して利用する。この場合ローカル環境の利用に限られ、出かける時でも利用するため、クラウド(例えばTinyWebDB API)が必要だ。 WiFiManagerを組み込みだ、Home IoT Server。 /* * */ #include <Wire.h> #include <Adafruit_BMP280.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define OLED_RESET 0 // GPIO0 Adafruit_SSD1306 OLED(OLED_RESET); #define BMP_SCK 13 #define BMP_MISO 12 #define BMP_MOSI 11 #define BMP_CS 10 Adafruit_BMP280 bmp; // I2C //Adafruit_BMP280 bmp(BMP_CS); // hardware SPI //Adafruit_BMP280 bmp(BMP_CS, BMP_MOSI, BMP_MISO, BMP_SCK); […]

WeMos (c2) WiFiManager

WeMos のWiFiが、前回のようにSSIDとPASSWORDをコードに書き込む方法の他に、オンライン変更できるような方法もある。 WiFiManager というライブラリを使うと簡単にできる https://github.com/tzapu/WiFiManager このソースを参考に試してみる。 まず、ライブラリマネージャーから、WiFiManagerを検索して、インストールする。 ライブラリを使える状態にすると,下記のサンプルで、接続するだけで上のユースケースが満たされて大変便利だ…。標準でWebUIもついてる。 #include <ESP8266WiFi.h> //https://github.com/esp8266/Arduino //needed for library #include <DNSServer.h> #include <ESP8266WebServer.h> #include “WiFiManager.h” //https://github.com/tzapu/WiFiManager void configModeCallback (WiFiManager *myWiFiManager) { Serial.println(“Entered config mode”); Serial.println(WiFi.softAPIP()); //if you used auto generated SSID, print it Serial.println(myWiFiManager->getConfigPortalSSID()); } void setup() { // put your setup code here, to run once: Serial.begin(115200); //WiFiManager //Local intialization. […]

WeMos (7) I2C OLED SSD1306 (Adafruit)

仕様 [0.96 インチ 4Pin IIC I2C ブルー OLED ディスプレイ モジュール Arduino対応]を使ってみる。 主な仕様は次のようになっています。 I2C通信 ディスプレイコントローラ: SSD1306 解像度: 128×64 電圧: 3.3V-5V ライブラリ 次の2つライブラリが必要 Adafruit_GFX Adafruit_SSD1306 こちらを参考にして、すんなりできた。下記の2つライブラリもSSD1306対応だ。 ThingPulseのライブラリ(SSD1306, SH1106対応) U8g2ライブラリ(多数OLED対応) 結線 I2Cの場合、デフォルトはSDA、SCLはD1、D2。 サンプルコード デフォルトはSDA、SCLはD1、D2。変更する場合、 Wire.begin(4,5); // OLED:SDA,SCL 行を変更して対応できるらしい。 #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define OLED_RESET 0 // GPIO0 Adafruit_SSD1306 OLED(OLED_RESET); void setup() { // Wire.begin(4,5); // OLED:SDA,SCL OLED.begin(); OLED.clearDisplay(); //Add stuff […]

WeMos (b3) BMP280 I2C

BMP280センサーの利用し、 I2Cで気圧温度を測って見る。 ライブラリの追加 “Adafruit Unified Sensor”ライブラリの追加 センサーをライブラリ追加 BMP280センサーを利用する ライブラリからBMP280を検索して、追加してください 測定プログラム   /*************************************************************************** This is a library for the BMP280 humidity, temperature & pressure sensor Designed specifically to work with the Adafruit BMEP280 Breakout —-> http://www.adafruit.com/products/2651 These sensors use I2C or SPI to communicate, 2 or 4 pins are required to interface. Adafruit invests time and […]

WeMos (1) Blink

事前準備 事前に下記のソフトウェアを準備してください。 Arduino IDE ソフトウェア 「D1 Mini & D1 R2」のボード情報 ESP8266用のAddOn CH340に割り当てた通信ポートドライバ(Windows | MacOS) Blink 動作確認のため、まずLちか(Blink)をする。 ボードから、WeMosには「D1 Mini & D1 R2」を選択する。 通信ポートは、デバイスマネージャーから見えた、CH340に割り当てた通信ポート(COM3など)も設定して下さい。 MacOSの場合、次のように設定する。 (LEDはGPIO 5 に接続)の場合のスケッチ。 WeMosの内蔵LEDを利用する場合、プリグラムは次のように #define ESP8266_LED BUILTIN_LED void setup() { pinMode(ESP8266_LED, OUTPUT); } void loop() { digitalWrite(ESP8266_LED, HIGH); delay(500); digitalWrite(ESP8266_LED, LOW); delay(500); } 参考 http://www.esp8266learning.com/ https://www.baldengineer.com/esp8266-5-reasons-to-use-one.html