前回試した、ESP-WROOM-02が面白くてブレッドボードで色々な方が公開してくれているスケッチを入れてみて楽しんでいます。

youtubeでも、素晴らしいものを公開されている方が多くいらっしゃいます。

中でも、お気に入りは、@shuuhorrさんの記事で「Web News記事自動取得 OLED 」と
Daniel Eichhorn氏が公開されている「ESP8266 WEATHER STATION」が
私のお気に入りです。



今日は、「ESP8266 Weather station」の備忘録を記事にしていきます。
(@shuuhorrさんの記事は日本語で非常にわかりやすい解説がありましたので、備忘録も必要なしでした・・・)

さて、本題ですが、部品は新たに、秋月さんでESP-WROOM-02 DIP化キットを購入しi2c ホワイトOLEDモジュール ディスプレイ 0.96インチはAMAZONで購入。(上記で紹介した@shuuhorrさんの記事でも使用しています)

スケッチを書く前に「nodemcu-flasher-master」を使ってフラッシュを書き込みが必要ですが、簡単なツールで書き込みができましたので、特に悩むことはありませんでした。

bandicam 2016-09-22 19-10-04-131

また、ハード的には、「NodeMCU ESP8266モジュール」を使用した記事でしたので、スケッチ上の使用ピンを書き換えるだけだったと思います。
IDEは最新の「1.6.11」(2016.9.22現在)ではコンパイルに失敗しましたので、「1.6.5」を使いました。

bandicam 2016-09-22 19-12-58-088


このスケッチは、室外の「気温」と「湿度」を「Thingspeak」からもらえるようになっていましたので、前回ESP-WROOM02を使って「気圧」と「気温」を取り込むようにしてみました。
(トラ技2016年9月号掲載の物は、「Ambient」に投げた後、今回新たに「Thingspeak」にもデータを投げる
ようにスケッチを書き換えています。)


◆トラ技2016年9月号記事のスケッチに下記を追加 (スケッチ名:expmple10c_hpa)◆
 ↓ ここは記事のスケッチ 
#define DEVICE "press_1,"                   // デバイス名(5文字+"_"+番号+",")
Ambient ambient;
WiFiClient client;
 ↓ この後に下記2行を追加
const char* host = "api.thingspeak.com";   // thingspeak URL
const char* thingspeak_key = "**************";   // thingspeak Write KEY

-----------------------------------------

 ↓ ここは記事のスケッチ 
        dtostrf(press,7,2,s);               // 気圧を文字列に変換
        ambient.set(3,s);                   // Ambient(データ3)へ気圧を送信
        ambient.send();                     // Ambient送信の終了(実際に送信する)
 ↓ この後に下記を追加
       //  ■ thingspeakへ送信 ■
        Serial.print("connecting to ");Serial.println(host);
        WiFiClient client;      // Use WiFiClient class to create TCP connections
        const int httpPort = 80;
        if (!client.connect(host,httpPort)){Serial.println("connection failed");return;}
        String url = "/update?key=";
        url += thingspeak_key;           // thingspeak Write KEY
        url += "&field1=";
        url += temp;                         // Temp
        url += "&field2=";
        url += press;                        // Pressure  
        //url += "&field3=";
        //url += humi;                       // Humidity

        Serial.print("Requesting URL: ");Serial.println(url);
        
        // This will send the request to the server
        client.print(String("GET ") + url + " HTTP/1.1\r\n" +
        "Host: " + host + "\r\n" + 
        "Connection: close\r\n\r\n"); 

image
タッパーに入れてベランダなに転がしているセンサーから
一旦 「Thingspeak」にアップしたデータを
室内のESPでダウンロードしています。
なんだか、凄く非効率な仕掛けに思えます・・・Hi