前回、ESP32でにおいセンサーを利用することが出来たので、意気揚々と回路を作成してWiFi接続して取得値をサーバーに送ろうとしましたところ、、、
センサー値
0,0,0,0,0,0,0,0,0,0
「え?え?え?え???なんで????
もしかして半田ごての熱でセンサー壊れた?」
試しにテストコードを書き込んだらきちんと値が出る。
コードの問題だということで、いろいろ試した結果、「WiFi接続を試みると取得値が0になる。」という事実が判明しました。
回路組んだ後でしたので結構ショックです。
調べるとこの記事を発見。
GPIOの2,4,12,14,15,26,27はWiFi.beginを実行したら使えなくなるというのです。
これも環境によるのかもしれません。試しに21,22,23などを試したところ、それも駄目。(もともとアナログ入力ポートでは無かったのに気が付かず…)
「え?待って!これ使えるA/D変換ピン無いんじゃないの?」
とこちらの、デフォルトで入力と無設定になっているピンをすべて試してみました。
コードはこのように
結果・・・・
32と33が辛うじて使えるようです。
32は値が安定しないのですが、33はプルダウンされている様子で、ピンに触れないと値は変わりませんでした。
他のピンはすべて駄目!?(←アナログ入力ピンでないことに気付かないまま)
結果的に33をニオイセンサー用に使うようにしました。
過去にESP32を使ったコントローラーを作った時にはもっとたくさんアナログ入力ができた気がするのですが、たまたま使えるピンを採用していたようで…
どうやらWiFi使用中はADC1(IO32~IO36,IO39)の6ポートだけしか使用できないという情報を得ました。
これはかなり落とし穴でした。