M5 Atom S3 で ENV III を動かそう
M5Stack 社の Atom S3 を購入した。手元に同社の温湿度気圧センサーである ENV III があったので、 Arduino IDE で表示させてみようとした。
同社の解説ページ( https://docs.m5stack.com/en/unit/envIII ) の中の、Example 項にある「 M5Unit-ENV III with M5AtomS3」をクリックして表示されるソースを Arduino IDE にコピペして動かしてみたが、値がゼロだった。
Arduino IDE の環境設定
環境設定については、以下のサイトを参考にした。
Arduino IDE environment - ATOM S3 ←直リンク
上記のサイトにもありますが、追加のボード情報としてこのリンクを設定して、ボードの追加でできます。
https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json
コンパイル・書き込みはできたが...
Arduino IDE には、あらかじめ「M5AtomS3」ライブラリーを入れます。
コンパイル・ ボードへの書き込みはできたが、表示を見ると温度、湿度、気圧全てがゼロでした。ソースを見ると、センサーが読めない時にゼロで表示している。
試してみたこと
ピン番号などを指定してみた
ピン配列を見ると、SDA: 2、 SCL: 1 ということなので、Wire.begin();
を Wire.begin(2,1,100000);
にしてみたけど、結果は変わらず。
ENV III に問題がないか確認した
UIFlow2 を使って、ENV III ユニットのブロックを追加して試してみたら、ちゃんとセンサーの値を表示できた。
仕方なく、M5Stack 社のサポートに聞いてみた
サポートからは、同じ部分を Wire.begin(2,1,100000UL);
で試すようにとか、ピン番号を色々変えて試すとか、何回かやり取りがあったが、なかなか解決しなかった。
やっと解決!
やっと、ライブラリーに問題があったことがわかって、無事にセンサーからの情報が取れるようになった。
解決方法
- M5AtomS3 ライブラリーの最新版をインストール
- 関連するライブラリーを全てインストールする
- "SHT3X.cpp" を検索して開く
- ソース中の
Wire.begin()
をWire.begin(2,1,100000UL)
に書き換える - 変更したソースを保存
これでサンプルプログラムをコンパイルして書き込むと、ちゃんとセンサーから値を取ってきて表示できました! ビンゴ! (サンプルソースはWire.begin();
のままでOK)
おまけ
サンプルコードのままだと、文字が小さすぎるので、ちょっと修正した。
M5.Lcd.setCursor(0, 5);
← 文字位置を少し下げる(上が欠けて見えないのを補正)
M5.Lcd.setTextSize(2);
← 文字サイズを大きくするため追加
M5.Lcd.printf("Temp: %2.1f \nHumi: %2.0f%% \nPressure:\n %2.0fPa\r\n---", tmp,hum, pressure);
← 気圧が醜いので2行に分けた
これで、こんなふうに表示されます。
そのうちにライブラリーもアップデートされるでしょう。