ArduinoIDEを使ってESP8266をプログラムする上でハマったことを、随時更新していく予定です。
ストックしてもらえれば、更新時に適宜通知させてもらいます。
WDTの発動調整
2015.08.17追記
SDKでの対応が行われたようで、ArduinoIDE向けのStaging versionには、8/10リリース分で正式な対応が行われました。ESP.wdtFeed()
が使える様になっています。(バージョンとしては、1.6.5-1044-g170995aになります。)
2015.08.05記載の旧版(WDTについての記載として古いです)
setup()
や、loop()
内で、while(true)
などやると、1秒ぐらいでWDTが更新できずに、強制リセットがかかります。
while(true)
内に、delay(1)
を入れておけば、WDTがリセットされるらしく問題になりません。
本来はESP.wdtFeed()
が使えれば良いのですが、ソースを確認したところ中身がまだ空っぽで役に立たなかったので、取りあえずの回避策としてdelay(1)
を使っています。
電源の確保
2015.08.07記載
Deep-Sleepモードで消費電力が少ないとか書いていますが、無線LANの稼働中は大きな電力を消費します。他の方のブログを読んでも皆さん同じ所でハマっていたりするので、まとめの意味も込めてココに書いておきます。
例えば、こんな使い方だと上手く動かないことがほとんどです。
- ArduinoUNOから3.3V電源を取り出した。
- USBシリアル変換ユニットから3.3Vを取り出した。
- たくさんのIOを同時に動かした。IOピンの電流を大きく流してしまった。(LED駆動のための電流制限抵抗が小さい、など)
そんなときは、3.3Vの電源ラインに電解コンデンサを追加して足りない電力を補えるようにしましょう。
私は、手元に転がっていた、一番大きな1000μFの電解コンデンサを繋いで動かしています。
470μFでも動かせます。一番正しいのは、ちゃんと大きな電源を用意して動かす事だと思いますが、取りあえず大きい電解コンデンサを追加して済ましています。
2016.04.18記載
http://takehikoshimojima.tumblr.com/post/138379135064/esp8266%E3%81%AE%E6%B6%88%E8%B2%BB%E9%9B%BB%E6%B5%81%E3%82%92%E8%AA%BF%E3%81%B9%E3%82%8B
上の投稿によると、起動時にはWiFiにつながなくとも300mAぐらい電流が流れるとのこと。皆様注意しましょう。