takashiskiのブログ

覚書の殴り書き

他のESP32ボードに手を出した

前回のCO2測定に引き続きESP32を使って部屋の環境測定(のはずだった)。Arduino IDE使ってます。

忙しい人のための要点

  • Arduino IDEでやってます。
  • Wemos D1 R32なる怪しい基板使ってます。
  • UploadSpeedを256,000か115,200にしないと書き込めませんでした。
  • I2CピンはSCL=22, SDA=21でした。
  • UARTは問題なし。

takashiski.hatenablog.com

mBaaSにデータあげるのを先にやろうと思ったのだけど、NiftyCloudMobileBackendのデータを上げる際にHMACの計算が必要で、それがArduino向けはあるけどスタンドアローンなpure Cライブラリがなかったので諦めてしばらくはローカルでやります。

前回前々回と、ESP32にOLEDが載った謎基板を使っていましたが、ArduinoUNO配置に拡張されたものを見つけたので購入してみました。Groveシールドとかそういう類のもの使えればちょっと楽だなーという理由による判断です。

なおググるとこんなURLが…

Index of /images/WeMos-fake/D1-R32

トラブル

書き込めなかった

とりあえず動確用に、setup()でシリアル開いてloop()で一秒に一回適当な文字列を吐き続けるコードを書きました。コンパイルして書き込みます。書き込めないです。 色々確認した結果、UploadSpeedを下げれば何故か書き込めることがわかりました。それも、ただ下げるのではなく、特定の2速度のみ。

  • 115200
  • 256000

230400はダメでした。256000より速いのもダメでした。この二つにした場合のみ書き込めました。よくわからないですけど書き込めて、とりあえず動きました。

I2Cピン出してあるけど何番?

ピン配置が、Arduino UNO R3準拠(?)なので、デジタルピン側にSDAピン、SCLピンが出ています。この2ピンがないと、Arduino UNO用GroveシールドのI2Cコネクタが使えません。以前Seeeduino megaで嵌りました。(Seeduino megaは、アナログピンの横に[VCC,GND,SCL,SDA]のよくある順でI2C用ピンが引き出してあるので、これはこれで便利でした。)

前回のOLED付きボードでもそうでしたが、ボードによって割り当てがまちまちです。 とりあえず動けばいいやなのでテスター当ててみてみます。その結果以下のようになりました。

  • SCLピン=22
  • SDAピン=21

これはESP32 Arduino core最下部のdev boardのpin mapと同じですね。

UART(問題なし)

UART自体では特に問題なかったけど処理を雑に書いてたら配列領域外参照してることに気づかず、CPU haltして悩みました。

まとめ

  • とりあえず当初の目的のGroveシールド(でI2CとUART)を使うということは達成。
  • 端々怪しいけどなんとか使えてるよ。