ESP-WROOM-02 と Blynk でLEDコントロール

お父ちゃん  2016.5.26 
Home > 電子工作 > ESP-WROOM-02 と Blynk でLEDコントロール
すき 0
うんこ 0
過去に試しにやったものですが、完全に忘れてたので再度実施して備忘録を残したく候う。。。

ESP_LED
 
今回試したのは暗くなるとLEDが点滅して、色はスマホからコントロールできるものです。
CdSセルで光を感知してLED(Neopixel)の輝度をコントロールし、LED色はBlynkを用いてWiFi介してスマホから指定します。WiFiマイコンとしてESP-WROOM-02開発ボードを使用。

ESP-WROOM-02開発ボード

人気のESP8266 WiFiモジュールとUSBシリアル変換ICが載った、まさに開発にうってつけの使いやすい基板です!
Arduino IDE環境設定方法
こちらの通りですので割愛w
 

Blynk

blynk_architecture
BlynkはArduinoやラズパイなどを簡単に遠隔で操作できるスマホアプリです。
IoTでややこしくてネックになるサーバー設定や通信方式を意識しなくても色々出来てしまうのです(現状お父ちゃんicon-papaはこのへんはお母ちゃんicon-mamaに丸投げです。。。)
基本フリーソフトですがプロジェクトにウィジェットを追加するたびBlynk Energyというものが減り0になった場合はプロジェクトやウィジェットを削除するか、課金してBlynk Energyを購入する必要があります。
設定方法
こちらの公式ページの通り
  • スマホにアプリをインストール
  • アプリ立上げログイン登録
  • 以下でBlynk用ライブラリをダウンロードしArduinoのライブラリ保管場所に解凍
    https://github.com/blynkkk/blynk-library/releases/tag/v0.3.4   
    これでArduino IDEメニュー[ファイル]->[スケッチの例]の中に”Blynk”が追加され開発が可能になりました。

Blynkアプリでプロジェクトを作成

  • アプリを起動しCreate New Projectで新規プロジェクト作成

Screenshot_2016-05-26-17-40-46

  • Project Name指定(ここでは”ESP LED “)
  • HARDWARE MODEL: “ESP8266″を選択
  • AUTH TOKENをひかえる。E-mailタップで登録したアドレスにAUTH TOKENが届きます。
  • Createクリックで初期設定終了

Screenshot_2016-05-26-20-39-11

  • 画面をタップしウィジェットを配置
    ここではLEDの輝度を表示するValue Displayと色を指定するzeRGBaを配置
    zeRGBaはシマウマをタップするとその部位の色のRGB値を返すウィジェットです。

ESP-WROOM-02の設定

LEDテープNeopixelは独自の1線シリアル方式で連なった各LEDのRGB値を設定し光らせます。

Arduino IDE用ライブラリは以下にあります。
 https://github.com/adafruit/Adafruit_NeoPixel
ここでは20個のLEDを使用して色をBlynkで指定します。また乱数を用いてチラチラと瞬くようにしました。

  
CdSセルは光が当たると抵抗が減少する素子です。3.3Vを抵抗(5.1kohm)とCdSセルで分圧してアナログ入力できるTOUTピンに接続します。
以下のサイトの”ESP-WROOM-02でアナログ入力をするには”の通りTOUTピンには1V以上は入力できないため、1V以上にならないよう抵抗分圧してます。
Arduino IDE用コード

 

実行

Blynkアプリの再生ボタンをクリックでプロジェクト実行!

 

これ 別にわざわざWiFiじゃなくてBLEで十分なんだけど。。。
クリスマスになんかできそうかな 🙄 ?
まぁBlynk超便利ということで!
Blynkさん早くBLEも対応して—!!

追記(16/9/25)

現状まだベータ版ですがついにBLE対応されました!
これでスマホアプリ用コード書かなくても簡単にBLE搭載マイコンやラズパイを制御できます!

以下、試しに作ったものです。

Flood Error

loop内でデータ書き込みをすると接続エラーが出ることがあるらしい。1秒に10以上データをBlynkサーバーにあげないでほしいとのこと。

 http://docs.blynk.cc/#troubleshooting-flood-error

悪い例

loop内でヴァーチャルピンにデータ送信をしており、大量にBlynkサーバにデータが送られofflineエラーになる可能性がある。

良い例

delay()で遅延させてデータ量を制限するのは有効ではなく、改善するには BlynkTimer を使うべきらしい

例では1秒(1000msec)にタイマーを設定しているがエラーが起きない程度に早めて使用するよう推奨されています。

 

「ESP-WROOM-02 と Blynk でLEDコントロール」への8件のフィードバック

  1. blynkを実行するとdisconnectedになるのですが、Arduino IDE用コードそのままで実行できますか?

    1. コメントありがとうございます。
      古い記事なので心配になり試してみました。

      Blynkスマホアプリ (Android): ver. 2.26.7
      Blynk Arduinoライブラリ:ver 0.5.3
      で記事内コードそのまま実行しましたが問題なく動作しました。

      Blynkアプリで取得したAuth Tokenなどは正しくコードに記載されてますでしょうか?

      1. 確認ありがとうざいます。

        コードは正しく記載しており、コネクトはするのですが、すぐにTrouble detected: http://docs.blynk.cc/#troubleshooting-flood-error
        このようなエラーがシリアルモニターに表示をされつながったり切れたりしてしまいます。
        このエラーからサイトに飛ぶと解決方法が記載されているのですがうまく組み込めずできていません。
        もし解決方法をご存知でしたらお教えください。

        1. ご教示ありがとうございます。
          どうやらloop内でデータ送信を行わないほうが良いようですね。

          このページにFlood Error テストの節を追加して、データ送信の悪い例と良い例を追記しました。
          データ送信の際にはBlynkTimerを使用してサーバに大量にデータを送らないようにするべきのようです。

          しかし、私の環境ではloop内でデータ書き込んでもエラーは再現できませんでした。
          BlynkTimerの使用で改善ご確認いただければ幸いです。

          1. 追記していただきありがとうございます。

            無事に通信することができました。
            本当にありがとうございます。
            これからも参考にさせていただきます。

          2. ご確認ありがとうございます。
            こちらこそ勉強になりました!
            今後共宜しくお願い致します。

コメントはこちらから

メールアドレスが公開されることはありません。コメントのみでもOKです。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください