ESP-WROOM-02

ESP-WROOM-02単体でWi-Fi通信とNeoPixel両方動かしたい(2)


ESP-WROOM-02単体でWi-Fi通信とNeoPixel両方動かしたい(1)の続きです。
給電の問題がまだ解決できていません。

ESP-WROOM-02単体の給電でどのくらいのことができるのか?

各所の記事を見ていると、やはりWi-Fi通信するときにかなりの電力を消費するので電源は頭を悩ませるようです。

ちなみに私が使っているのはこのボード。

これは5Vを出力できるピンがついていて、NeoPixelに対してはここから給電しています。
NeoPixel16連リングは、動作電圧:5V(最大7V)、最大消費電流(LED1つにつき):18mAとのことなので、まあ動くかなと思ってつないだら動いてる、という感じです。

5Vを出力できるのはUSB給電時のみらしい。
ということは、もしこの開発ボードを使わないのであれば、

・WROOM02に対する給電
・NeoPixelに対する給電
・CDSセンサーに対する給電

を何か別の大きな電源から分圧?なりなんなりしなければいけないと思われます。
WROOM02とNeoPixelへの給電を分けるのであれば、CDSセンサーはWROOM02の3V3あたりから流せばいいのかな?とは思いますが…

今までに試したこととその結果としては

  1. WROOM02でWi-Fi通信せずにNeoPixelを光らせる
    →安定して動く。
  2. WROOM02でWi-Fi通信してCDSセンサーの値を送信する
    →安定して動く。
  3. WROOM02でWi-Fi通信してdelayしながらNeoPixelを光らせる
    →たぶん安定して動いてる。
  4. WROOM02でWi-Fi通信しながらNeoPixelを光らせる
    →ときどきWi-Fiが切れる
  5. WROOM02でWi-Fi通信しながらCDSセンサーの値を送受信してNeoPixelを光らせる
    →光らなかったりセンサーの値がずっと1桁

という感じ。

Milkcocoaを使ってNeoPixelのサンプルアニメを切り替える

前述の「4. WROOM02でWi-Fi通信しながらNeoPixelを光らせる」について、どのくらい動かせてどのくらい不安定なのかというのがわかる微妙なシステムを作りました。

動画ではわかりませんが、WROOM02を起動してWi-Fi接続が成功したあと、1~9まで順番にクリックしていくとだいたい10をクリックするときに固まります。
2、3回クリックして放っておくと、しばらくしてダダダッと3回分のログがシリアルモニタに流れて、10番のアニメーションになったりします。

それくらいならまだいいほうで、止まったかと思ったらそのままWi-Fi再接続、なんてことになります。
10番が悪いというわけでもなく、固まったあとは1番でも5番でも、クリックしてもなかなか反映されません。

ただ気になっているのは、8番9番のアニメーションが全LEDが同時に点灯していて輝度も高いということです。
ここで電力が足りなくなってWROOM02が落ちている可能性もあるのかなと思っています。

やってることは、
・ブラウザ側は、ボタンを押すとそれぞれの番号をMilkcocoaにsendするプログラムを実装
・MilkcocoaのArduino/ESP8266用のSDKを使ってWi-Fi接続
・Milkcocoaのデータストアをonsendで監視
・onsendで取れた値に応じてNeoPixelのサンプルスケッチ「strandtest」の各アニメーションを実行

MilkcocoaのライブラリとNeoPixelのライブラリを共存させるのはそれほど大変ではありませんでした。

ただ、サンプルスケッチのままコピーすると前の記事で書いたようにコンパイル時にエラーが出ます。
アニメーションやMilkcocoaのonsendは、loopよりあとにあるとエラーになりましたので手前に持ってきます。
さらに、WheelPosはアニメーションの中で使われる設定なので、これもアニメーションの記述よりも手前に持ってこないとダメでした。

ソースを公開してみます。
NeoPixel使ってる人以外にはあんまり意味ないですが、コピってWi-Fi設定のところとMilkcocoaアプリIDを変更してもらえれば、動くと思います。

ひとまずここまで…

スポンサードリンク

菜摘

Web制作がメインですがときどきフライヤーデザインやCDラベルなどDTP系もやってます。 デザイナーだったはずがhtml/cssコーディングに目覚めた。 黒い画面は相変わらず怖い。 javascriptはこのごろちょっと頑張ってるよ。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です