工房開設に伴いブログはこちらに引っ越しました。
前回、ESP-WROOM-02の動作確認をした時に、Macアドレスを調べる前にArduino IDEからプログラムをロードしました。プログラムをロードするとファームウェアの書き換えになるので、Arduino IDEのシリアルモニター送信したATコマンドをESP-WROOM-02が処理しませんから、ATコマンドを使ってMacアドレスを調べるということができません。ファームウェアを書き換えて出荷時の状態に戻す作業をすればATコマンドが使えるようになりますが、そこまでしなくてもプログラムでMacアドレスを調べることができます。
自分の書いたプログラムを実行する前に一通りATコマンドを試して、必要な情報はメモしておくのが良いかもしれません。(Macアドレスを調べるコマンドはAT+CIPSTAMAC?です)あるいはファームウェアを書き換える方法を事前に調べておくのも良いかもしれませんね。コマンドはたくさんあるので調べ甲斐があります。
Macアドレスを調べるには、こんなプログラム(スケッチ)をArduino IDEで書いてESP-WROOM-02にロードして実行します。プログラムをロードするときはあらかじめシリアルモニターを開いておきます。
プログラムのロードが終わるとすぐにプログラムが実行されて、こんな結果が出ます。
次はサンプルプログラムの簡単なWebServerを動かしてみます。Arduino IDEでesp8266のボードをインストールした時に入ったサンプルプログラムの中に HelloServerというのがあったのでそれを使います。
ESP-WROOM-02の方は前回動作確認のためにLEDを点滅させる回路を組みましたが、その時のものです。(13番ピンからLEDに信号を送る回路)これは、サンプルプログラムがクライアントからのHTTPリクエストを受け取った時にLEDを点灯させるように書かれていたために、素直にそのプログラムに従いました。
HelloServerのサンプルプログラムをコピーして自分のソースコードにペーストし、WiFiルーターのSSIDとパスワードの部分を自分の環境に合わせて実行するだけです。
上のプログラムは、WiFiルーターに接続した時にシリアルモニターに自IPアドレスを表示しますので、そのIPアドレスを使ってWebブラウザーからhttp://IPアドレスとしてアクセスします。このプログラムはブラウザに”hello from esp8266!”という文字列を含んだHTMLを返すだけの簡単なものです。
ESP-WROOM-02のWiFi機能はIEEE 802.11b/g/n に対応(2.4 GHz)ですので、この仕様と異なるWiFiルーターには接続できません。
次は同じくインストールされているサンプルのNTPClientをコピーして、10分おきにIFTTTに時間を送って、iPhoneに通知を送信する実験です。
IFTTTにはMakerチャネルというものがあって、HTTPのGETやPOSTで送信したデータをトリガーにしてアクションを起こす(この場合はiPhoneの通知)ということができます。
事前にITFFFにMakerチャネルを使ったレシピを用意しておきます。(詳細はIFTTTのMakerチャネルのページを参照のこと)
今回はesp8266-ntpというイベントを作り、HTTPのGETでvalue1という引数に時刻を設定してmaker.ifttt.comに送信します。
IFTTTにHTTPリクエストを送信する部分のコードはこんな感じです。{key}の部分にはIFTTTでレシピを作ったときに発行されるキーの値です。
void reportTime(int hour, int minute, int second) { char buff[200]; sprintf(buff, "GET http://maker.ifttt.com/trigger/esp8266-ntp/with/key/{key}?value1=%02d%%3a%02d%%3a%02d HTTP/1.1", hour, minute, second); Serial.println("Sending notification"); WiFiClient client; if (!client.connect(host, 80)) { Serial.println("connection failed"); return; } Serial.println("connected"); Serial.print("Send request: "); Serial.println(buff); client.println(buff); client.println("Host: maker.ifttt.com"); client.println("Connection: close"); client.println(); while(client.available()) { char c = client.read(); Serial.write(c); } }
IFTTTにイベントが送信されるとiPhoneに通知が届きます。
非常に手軽にマイコンからインターネットにデータを送信できるのはすごいですねー。これにセンサーを繋いで、現象を捉えたら手元のスマートフォンに通知するなんていうアプリケーションが容易に作れますね。
近いうちに、自宅のサーバーでMQTT(MQ Telemetry Transport)のブローカーを動かして、モノからデータの受け取りと配信をするシステムを作ってみようと思います。データを分析するとかグラフ化するといった使い方をするなら、何らかの記憶装置にデータを蓄積する必要があるので、サーバー側のプログラムを作る必要がある場合もありますね。
ブログを書いている間に、注文してあった温湿度センサーが届いていました。
ブレイクアウトボードに乗ったESP-WROOM-02は一通り勉強したら、実際に漆の乾燥室に設置する機器を作るために購入しておいたものです。またまだ調べないといけないことがたくさんあります。
ディスカッション
コメントはまだありません。