Wemos (d6) Weather Bureau 2
これまでWeather Station2回を制作、今回に合わせて三回の要点をリストする 一回目の Weather Stationはおもに気象情報の表示 二回のWeather Bureauは、気象情報の収集とクラウンに送信 今回はDeep sleep機能を利用して、節電する工夫 Deep sleepは、RST と GPIO16繋いたモード、Deep sleepに入ると消費電流は0.4〜0.8mA程度に下がる。 100均で購入した、ちゃんとしたケースに入れて、2個目のスイッチを追加した。 Switch 1: 電源スイッチ これは主に使わないとき、バッテリ充電不足のときにOff Switch 2: Deep sleepスイッチ プログラムを書き込みするとき、Deep sleepスイッチOffしないと、書き込めない場合がある 試作品は太陽光で充電している様子。充電ボードのLEDが見える。 ソースコードは TinyWebDB-WeatherStation を参考してください。
Wemos (d5) Weather Bureau
前回の Weather Stationはおもに気象情報の表示がメイン。 今回のWeather Bureauは、気象情報の収集とクラウンに送信するがメイン。 ソースコードは TinyWebDB-WeatherStation を参考してください。 無人でも長時間自動運用するために、太陽電池で発電、Li-po電池に充電、給電など機能追加された。 問題は、太陽電池の発電は、Weather Bureauの24時間持続運用には足りない。deep sleep機能を利用して、節電する工夫が必要である。 その部分できたらまた共有する。
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 (d3) Web LED Matrix
最初はプレゼントタイマーを作るつもり。 しかし、TinyebDBの文字列を表示する方がはるかも簡単、汎用性もいい。 できたものはこれ: 電源が繋いたら、WiFiを自動で接続、それからTinyWebDBから文字列を取得と表示する。 これならプレゼントタイマーだけじゃなく、お知らせ、顔認証して名前で挨拶とかにも活用できそう。 #include <SPI.h> #include <Adafruit_GFX.h> #include <Max72xxPanel.h> #include <time.h> #include <ArduinoJson.h> #include <ESP8266WiFi.h> #include <ESP8266HTTPClient.h> WiFiClient client; const char* resource = “http://tinydb.ml/api/”; // http resource const unsigned long BAUD_RATE = 9600; // serial connection speed const unsigned long HTTP_TIMEOUT = 10000; // max respone time from server const size_t MAX_CONTENT_SIZE = […]
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 (d1) RESTful API
JSONデータの扱いできて、今度RESTful APIに取り込む。まずRESTful APIのGETとPOSTを実現する。自作のTinyWebDB-APIプラグインでテストすることにした。 GETは簡単にできたが、POSTがなかなかうまくいかない。受信したデータは空になっている。いろいろGoogleして、ソースを書き換えてもうまくいかない、今度サーバ側様子をみると思い、Cloud9でデバッグしようとしても、なんとCloud9で弾けられ。普通のVPSでデバッグを続けてるうちに、自信喪失、TinyWebDB-APIに問題があると懐疑的に、cURLで検証しても、受信したデータは空。困った。 Postmanで試したら、なんとうまくいく。何か違うかな?簡単のHTMLフォームもうまくいく。やはり送信側ESP8266プログラムの問題。さらにGoogleして、ソースを書き換えていく。 一週間苦労して、ついに成功。 簡単に利用するために、TinyWebDB-APIライブラリを自作すると考える。