You are here

ESP8266-LEAF-R5ではじめてのBlynk

Blynkの最小スケッチ

ESP8266-LEAF-R5でBlynkで遊ぶ最少のスケッチ。

このスケッチはBlynkの実質的に最少のスケッチで、ESP8266-LEAF-R5の構成に合わせた特別なコードは含まれていません。
実質的に、初期化のbegin()メソッドと、基本的な処理のrun()メソッドだけで何ができるでしょう?

#define BLYNK_PRINT Serial

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

// BlynkのAuth Tokenを設定
char auth[] = "YOURAPPAUTHTOKEN" ;

char ssid[] = "YOURSSID" ;
char pass[] = "YOURPASSWORD" ;

void setup()
{
  // Debug console
  Serial.begin(115200) ;

  Blynk.begin(auth, ssid, pass) ;
}

void loop()
{
  Blynk.run() ;
}

システムの概要

このスケッチのみで、以下のようなBlynk用スマートフォンアプリで、ESP8266-LEAF-R5の組込みのLED操作と、明るさセンサーの計測値の取得を行えるIoT(遠隔監視、操作)システムを作成することができます。

スマートフォンのBlynkアプリ

アプリの左上のボタンで、ESP8266-LEAF-R5のLEDのオン/オフを切り替えることができます。
また、アプリの中央上の丸いゲージに、ESP8266-LEAF-R5に搭載されている明るさセンサー(フォトトランジスタ)の計測値が表示されます。
ESP8266-LEAF-R5の明るさセンサーを明るい方に向けたり、暗い方に向けたりすると、丸いゲージの表示が変化するのがわかります。

ESP8266-LEAF-R5のLED操作


スマートフォンアプリの構成

先に示したように、ESP8266-LEAF-R5のBlynkスケッチは極めて単純で、スケッチだけを見ると何ができるのかよくわからない状態ではないでしょうか。

Blynkでは、スマートフォン側でアプリケーションの画面構成と簡単な機能を設定していきます。
スマートフォンの画面(アプリケーション)の構成法を以下に示します。

作業の開始

画面上部の"New Project"をタップして、新たなアプリケーションの作成を開始します。

アプリケーション名とデバイスの指定

個の画面では、新たなアプリケーションの名称を入力し、接続するIoTデバイスの種類を指定します。
アプリケーション(プロジェクト)の名称はあとで変更ができます。
IoTデバイスは、今回はESP-WROOM-02のコアチップのESP8266とします。

入力したら"Create"ボタンを押します。

Auth Token送信の確認

このアプリケーション用のIoTデバイス側で指定するAuth Tokenが登録したメイルアドレスに送られたことが示されます。
画面の赤枠の中には、Auth Tokenが送られたメイルアドレスが示されています。
Auth Tokenがメイルで送られてきていることを確認して"OK"ボタンを押します。

アプリケーションのオーサリング画面

アプリケーションのオーサリング画面が出てきますので、画面をタップしてください。

Widgetのリスト

画面上に配置できる部品のリストが表示されます。
部品にはそれぞれ消費するエネルギー(ポイント)が定められており、自分が持っているエネルギーの範囲で部品を選択してアプリケーションを構成することができます。
自分が利用できるエネルギー量はリストの上部に表示されており、Blynkにサインアップした時点で無償で2000ポイントが提供されます。
2000ポイントは、Blynkの基本を習得するためにはそれなりに役立つエネルギー量なのですが、少し頑張ろうとすると、あっという間にポイントが足りなくなります。
ポイントはオンラインで購入することができます。
私もいろいろと試してみたいのと、開発者に敬意を払って、5000ポイントほど購入しました。
私が購入した時点では、5000ポイントは440円でした。
部品を画面に配置していくと自分が持っているエネルギー量は減っていきますが、使わない部品を画面から削除すると、その部品のポイントは元に戻されますので、安心して試行錯誤ができます。

部品の配置

Widgetのリストの"Button"と"Guage"ををそれぞれタップしてこれらの部品を画面上に配置します。
画面上に配置された部品は、ロングタップすると選択状態になるので、その状態でスワイプして部品の配置位置を変更したり、部品の上下左右に現れるコントロールポイントをスワイプして、部品の大きさを変更することができます。

部品を削除したい場合には、その部品をタップすると、下の画面例のような設定画面が出てきます。
その下部に、"Delete"ボタンがありますので、それを押すと削除することができます。

Buttonの設定画面

このButtonとESP8266-LEAF-R5の端子の関係を設定するために、PINボタンを押します。

Buttonとデバイスの端子との接続

このButtonをLEDの点灯制御に利用するため、Buttonの状態とESP8266-LEAF-R5でLEDが接続されているD16(GPIO16)を関連付けます。

Buttonの機能の設定

Buttonの設定が完了したら、画面左上の左矢印を押して設定画面を閉じます。

Guageの設定画面

このGuageとESP8266-LEAF-R5の明るさセンサーが接続されたAD変換端子の関係を設定するために、PINボタンを押します。

Guageとデバイスの端子との接続

Analogのadc0端子を選択します。

スマートフォンのBlynkアプリ


上記のプログラムでは、IoTデバイス(ESP8266-LEAF-R5)が何らかの理由で再起動された(一度電源が切れた)場合に、スマートフォンのBlynkアプリの状態と、IoTデバイスの状態が一致しなくなります。

このような不一致があると様々な問題が生じるため、IoTデバイスが再起動した場合には、IoTの状態とスマートフォンのBlynkアプリの状態(正確にはそれがサーバーに記録されているもの)を一致させる必要があります。
このような一致処理は、Blynk.syncAll()で行うことができます。
Blynk.syncAll()はBlynk.begin()の直後に記述します。

#define BLYNK_PRINT Serial

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

// BlynkのAuth Tokenを設定
char auth[] = "YOURAPPAUTHTOKEN" ;

char ssid[] = "YOURSSID" ;
char pass[] = "YOURPASSWORD" ;

void setup()
{
  // Debug console
  Serial.begin(115200) ;

  Blynk.begin(auth, ssid, pass) ;
  Blynk.syncAll() ; // サーバーに記録されているピンの状態を復元
}

void loop()
{
  Blynk.run() ;
}

例えば、BlynkアプリでLEDを点灯させた状態でIoTデバイスをリセット等で再起動させると、前のスケッチを書き込んだIoTデバイスでは、再起動後にBlynkアプリでLEDの点灯状態の操作を行わないと、LEDは消灯したままとなりBlynkアプリと状態が異なる問題が生じます。

一方、Blynk.syncAll()を加えたスケッチを書き込んだIoTデバイスでは、再起動後ネットワークとの接続が再確立されると、IoTデバイスの状態をBlynkサーバーから取得して再設定するため、LEDが点灯しBlynkアプリと状態が自動的に一致します。


利用したパーツ



開発ソフト: 
チップファミリー: 
MCUチップ: 
技術: