プログラミング不要でiPhoneからLEDをオン・オフするIoTを作る(ESP8266使用)
たとえば、「iPhone や Android アプリを起動して、アプリ上のボタンを押すと Wi-Fi 経由で指令が送られ LED(ライト)が点灯する IoT を作る」というと、色々と高度なハードウェアを購入する必要があったり、お金がかかったり、Swift やC言語など高度なプログラミングの知識が必要であるように感じられるかもしれません。
しかし、ESP8266(日本では ESP-WROOM-02 という技適を通っているモジュールを使うのが一般的)を使用すれば、プログラミング不要で、1,000円程度(部品代のみ。ハンダゴテや書き込み時に必要な USB シリアル変換アダプターを除く)でできます。 Raspberry Pi や Arduino 本体も不要です。 制作に必要な時間も、慣れれば1時間ほどでできると思います。
※この記事は、ESP8266 Advent Calendar 2015 23日目の記事です。
必要なもの
- Wi-Fiモジュール ESP-WROOM-02 DIP化キット ¥650
- 超高輝度5mm白色LED(5個入) ¥120
- ミニブレッドボード BB-601(白) ¥120
- ブレッドボード・ジャンパーコード(オス-オス)(10cm)20本セット ¥180
その他必要なもの
以下のものを持っていない方は、必要になります。これは今回だけでなく、他のものを作る際にも使い回すことができる便利な道具です。
- はんだごて
- はんだ
- FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き) ¥1,500 程度
- USB micro-B ケーブル(A to microB タイプ: PC と USBシリアル変換アダプターの接続に使用)
- Windows PC または Mac
- 電池ボックス(単三電池など2本: 乾電池で動作させたい場合のみ必要)
ダウンロードするもの
- Arduino IDE
- Blynk for iPhone または Android
- Blynk ライブラリ(最新の
Source code (zip)
をダウンロード)
BlynkでiPhone側の設定をする
Blynk for iPhone または Android アプリを起動し、Create New Project
を選択し、適当なプロジェクト名(スクリーンショットでは LED
)を入力し、HARDWARE MODEL
から ESP8266
を選択します。
AUTH TOKEN
の E-mail
をタップし、トークン番号を自分にメールしておきます。
Create Project
をタップし、次の画面で真ん中付近をタップし、Button
をタップで追加します。
追加された Button
をタップし、PIN
をタップして、どのピンから LED に電気を送るか決めます。
今回は Digital | ~gp4
をスワイプで選択し、OK
をタップしましょう。
MODE
は PUSH
のまま、右上の OK
をタップします。
ESP-WROOM-02のはんだ付けとブレッドボードの配線
ESP-WROOM-02 DIP化キットに付属のピンヘッダーをハンダ付けします。そして、ブレッドボードの溝を挟むように差し込みます。
ジャンパーコードを使用して、以下の端子同士で繋がるように接続します。
- 3V3 と EN
- GND と IO15
- 3V3 と IO2
- GND と IO0
写真では、見やすいように 短いジャンパーワイヤ)を使用していますが、この記事の「必要なもの」に記載のブレッドボード・ジャンパーコードを使用して構いません。
LEDの接続
写真のように、LED の長い方の脚を IO4、LED の短い方の脚を GND に接続します。
※本当は、LED の長い方の脚と IO04 はジャンパーコードではなく抵抗(150Ω 程度)を使って接続したほうが良いですが、短時間の点灯であれば LED が壊れることはないため省略しました。
※「IO4」とは、正式には「GPIO 4」と呼びます。先ほど Blynk アプリで選択した「~gp4」と「IO4」は、どちらも「GPIO 4」の省略表記です。
FTDI USBシリアル変換アダプターとブレッドボードの接続
FTDI USBシリアル変換アダプターには黒いジャンパーピンが付いており、これを差し替えることで 5V 出力と 3.3V 出力を切り替えることができます。
ESP-WROOM-02 は 3.3V で動作しますので、この黒いジャンパーピンを、必ず 3.3V 側に差し込んでおいてください。
そして、ジャンパーコードを使ってUSBシリアル変換アダプターと ESP-WROOM-02 の以下の端子が繋がるように接続します。
- VCC と 3V3
- GND と GND
- RX と TXD
- TX と RXD
Arduino IDEでBlynkライブラリをESP-WROOM-02に書き込む
Arduino IDE をインストールした後起動し、メニューの スケッチ>Include Library>Add >ZIP Library
を選択し、先ほどダウンロードした Source code (zip)
ファイルを選択します。
Source code (zip)
を解凍し、Finder やエクスプローラーのファイル検索機能を使って ESP8266_Standalone.ino
を探すか、または解凍してできたフォルダー内の Blynk/examples/BoardsAndShields/ESP8266_Standalone/ESP8266_Standalone.ino
ファイルを開くと、以下のようなソースコードが表示されます。
(ファイル先頭のコメント部分は省略しています)
#define BLYNK_PRINT Serial // Comment this out to disable prints and save space
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "YourAuthToken";
void setup()
{
Serial.begin(9600);
Blynk.begin(auth, "ssid", "pass");
}
void loop()
{
Blynk.run();
}
自宅などの Wi-Fi の名前とパスワードを "ssid" と "pass" 部分に書きます。(ダブルクォーテーション "" は残します) 無線ルーターがなければ、スマートフォンのテザリングでも良いと思います。
メールで送られてきたトークン番号をコピーし、"YourAuthToken" 部分にペーストします。
Arduino IDEでESP-WROOM-02の開発ができるようにする
USBケーブルを使って、PC とUSBシリアル変換アダプターを接続します。
Windows の場合、Arduino IDE のメニューから ファイル>環境設定
、Mac の場合は Arduino>Preferences
を選択します。
Additional Boards Manager URLs
に以下の文字列をペーストします。
http://arduino.esp8266.com/stable/package_esp8266com_index.json
メニューの ツール>ボード>Boards Manager
を開き、一覧のダウンロードが終わったら下にスクロールして ESP8266
をインストールします。
メニューの ツール>ボード>Generic ESP8266 Module
を選択します。
メニューの ツール>ポート>/dev/usbserial-…
のような項目を選択します。(Windowsの場合、適切な COM ポートを選択します)
この項目については下記ページに詳しく書いてありますので、うまくいかない方はこちらをご覧ください。
技適済み格安高性能Wi-FiモジュールESP8266をArduinoIDEを使ってIoT開発する為の環境準備を10分でやる方法 - Qiita
ソースコードのウインドウの上にある(→)(マイコンボードに書き込む)ボタンを押し、Blynkライブラリを ESP-WROOM-02 に書き込みます。
もし、赤文字で以下のようなエラーが表示された場合は、USBケーブルを一旦 PC から抜いて、再び接続してすぐに(→)(マイコンボードに書き込む)ボタンを押します。
warning: espcomm_sync failed
error: espcomm_open failed
動作確認
iPhone の Blynk アプリを起動し、右上の再生ボタンを押します。 エラーメッセージのようなものが表示されなければ、ESP-WROOM-02 と接続されています。
ここで、画面に表示されている BUTTON
を押している間だけ LED が点灯するはずです。
画面右上の停止ボタンを押してから BUTTON
をタップし、 MODE
を SWITCH
にすると、タップするたびに LED のオン・オフが切り替わります。
乾電池で動作させたい場合
ESP-WROOM-02 は、3V(単3電池などであれば2本直列)で動作させることもできます。
ただし、USBシリアル変換アダプター以外で動作させる場合は ESP-WROOM-02 の起動モードを切り替える必要があるため、GND と IO0 を接続していたジャンパーコードを3V3 と IO0 に接続し直します。
そして電池ボックスのプラスを 3V3 に、マイナスを GND に接続すれば動作します。(これが冒頭の動画です)
注意事項
Blynk アプリは、2015年12月時点では無料で利用できますが、将来有料化される可能性が高いと考えています。 有料化された場合は
- 別のアプリを利用する
- HTML・Ajax などを利用してWebアプリを実装する
- お金を払って Blynk を利用する
などの方法が考えられます。