Relative Content

Author Archive for chen

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 &lt;ArduinoJson.h&gt; #include &lt;Arduino.h&gt; […]

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ライブラリを自作すると考える。

WeMos Smart Car Motor Shield

学園祭のため、IoTぼいのスマート車を作る。 しかし、注文したMotor Shield とは、違うもの(base only)が来たので、急遽自作する。 そのためのコントロールするAppも作りたいが、時間がなくって、ネットからWebページでコントロールするものを探して、沢山手直して、動くようになった。 車数台用意して、各車のIPは固定にしたいので、WiFiManager使わない方法をとった。 Webページでコントロールするから、遅延は目たつ。 時間があったら、ちゃんとアクセルペダルなど追加して、アプリの形にしたい。 // include libraries #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #define motor_lf D3 #define motor_lb D4 #define motor_rf D6 #define motor_rb D5 // configure server ESP8266WebServer server(80); const char *form = “<!DOCTYPE HTML>” “<meta name=’viewport’ content=’width=device-width’>” “<html>” “<center><form action=’/’>” “<button name=’dir’ type=’submit’ value=’4′>Forward</button><p>” “<button name=’dir’ type=’submit’ value=’1′>Left</button> ” “<button […]

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自動接続 […]