2015年08月09日

ESP-WROOM-02 & Blynk

技適を取得したWiFiモジュールは先日紹介しましたが、これが結構人気のようで、aitendoだけでなく秋月でも販売が開始されたようです。
最初に販売されたショップよりも安く販売され(aitendo¥580、秋月¥550)今日の時点では、秋月のショップでは既に売り切れでした。一方、aitendoでは秋月対抗なのか、レジのところで¥500で売っていました。こちらは在庫が沢山あったようです。
秋月での型名(正式型名)は、ESP-WROOM-02(以前同じ型名で技適未取得のものが他で売られていたので要注意)です。
問題は、モジュールのピッチ変換でaitendoでは基板だけ売られています。AタイプとBタイプがあり、ブレッドボードではAタイプが使い安いのですが、今日の時点で売り切れでした。Bタイプは以前からあるESP8266と同じ配列なんでしょう、ブレッドボードでは使いにくく在庫がありました。

DSC01367.jpg

 さて本題です。温湿度センサーからのデータ取り込みWEBでの表示については参考にさせていただいたサイトオーナーashiyuさんからの支援で何とか使えるようになりました。
 自宅内ではこれでもいいのですが、最近はIoTという言葉とともにデータを外部のクラウドサーバにおいて、iPhoneやAndroid等の端末でどこからでもデータを見れたり逆に制御をしたりすることがはやっているようです。
実験用に無料で提供しているところもいくつか見られます。また、端末側のグラフィカルな表示やボタンなども簡単にできるアプリも提供されています。
今回は、その中で「Blynk」というものを使ってみました。

http://www.blynk.cc/
https://itunes.apple.com/us/app/blynk-control-arduino-raspberry/id808760481?ls=1&mt=8

参考になるサイトも紹介されており、端末側のアプリもマニュアル無しでもとりあえず作れました。

DSC01366.jpg

写真のような情報を外出先から見ることができます。On/Offボタンなども作れるので、外からエアコンなどのOn/Offとか、植物の水遣りとか色々応用が考えられているようです。

以下、このWiFiモジュールに書き込んだプログラムです。
GPIO13に温湿度センサー、GPIO12にWifi接続確認用のLEDを接続しています。
殆どがサイトで紹介されているプログラムでオリジナルは殆どありませんが、実験されるかの参考になればと思って掲載しました。
※実験用でごみプログラムもありますが、それらは全てコメント処理しています。

/**************************************************************
* Blynk is a platform with iOS and Android apps to control
* Arduino, Raspberry Pi and the likes over the Internet.
* You can easily build graphic interfaces for all your
* projects by simply dragging and dropping widgets.
*
* Downloads, docs, tutorials: http://www.blynk.cc
* Blynk community: http://community.blynk.cc
* Social networks: http://www.fb.com/blynkapp
* http://twitter.com/blynk_app
*
* Blynk library is licensed under MIT license
* This example code is in public domain.
*
**************************************************************
* This example runs directly on ESP8266 chip.
*
* You need to install this for ESP8266 development:
* https://github.com/esp8266/Arduino
*
* Change WiFi ssid, pass, and Blynk auth token to run :)
*
**************************************************************/
#define BLYNK_PRINT Serial // Comment this out to disable prints and save space
#include
#include
#include
#define DHTTYPE DHT22
#define DHTPIN 13

DHT dht(DHTPIN, DHTTYPE,11);
float humidity, temp_f; // Values read from sensor

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "1f5088a7bda5*******1e5ca97d9e8";

void setup()
{
Serial.begin(115200);
Blynk.begin(auth, "****", "****");
dht.begin(); // initialize temperature sensor
pinMode(12, OUTPUT);
// digitalWrite(12, HIGH );

}

BLYNK_READ(1)
{
temp_f = dht.readTemperature(false);// Read temperature as Celsius
int value=temp_f*10;
String str;
char result[5];
result[0]=(value/100)+'0';
result[1]=((value/10)%10)+'0';
result[2]='.';
result[3]=(value%10)+'0';
result[4]='\0';
str +=result;
str +="℃";
//char buf[str.length()+1];
char buf[8];
str.toCharArray(buf,sizeof(buf));
Blynk.virtualWrite(1,buf);
}
BLYNK_READ(2)
{
humidity = dht.readHumidity(); // Read humidity (percent)
int value=humidity*10;
String str;
char result[5];
result[0]=(value/100)+'0';
result[1]=((value/10)%10)+'0';
result[2]='.';
result[3]=(value%10)+'0';
result[4]='\0';
str +=result;
str +="%";
//char buf[str.length()+1];
char buf[8];
str.toCharArray(buf,sizeof(buf));
Blynk.virtualWrite(2,buf);
}

void loop()
{
Blynk.run();

if (WiFi.status() != WL_CONNECTED) {
// コネクション確立済み以外のステータスなので
// 無線LAN接続NG LED消灯
digitalWrite(12, LOW);
} else {
//コネクションOKなので、点灯
digitalWrite(12, HIGH );
}
// delay(1000);

// delay(1000000);
/*
//1:μ秒での復帰までのタイマー時間設定 2:復帰するきっかけの設定(モード設定)
ESP.deepSleep(30 * 1000 * 1000 , WAKE_RF_DEFAULT);

//deepsleepモード移行までのダミー命令
delay(1000);
*/

}


posted by ja6irk at 19:17| Comment(2) | TrackBack(0) | AVR&Arduino