M5Stick-Cを動かす

部屋の環境を測るためにVOCセンサを使ってみようと思い立ち、M5Stck-CというESP-32ベースのデバイスを使ってみました。
何故そう思い立ったかは、長くなるので、最後の方に書きます。

VOCセンサを使ったデバイス自体は、ここのサイトの記事そのままです。
kohacraft.com
kohacraft.com

M5Stck-Cというのは、ESP-32ベースのデバイスで、6軸センサー、液晶ディスプレイなどが一体になった指先大のデバイスです。

ESP-32自体は既に持っているし、液晶ディスプレイもあるので、センサーさえ購入すれば自分で組み立てることもできるのですが、今回は手っ取り早く済ませたかったので、M5Stck-Cと環境センサーをスイッチサイエンスから購入。
www.switch-science.com
参考にした記事はAdfruitのセンサーユニットを使っていますが、こちらのものはチップは同じなのでそのまま使うことができました。
また、記事をよく読むと、温湿度を与えてやった方が精度が良いということで、温湿度センサーを別途アマゾンから購入しました。(最初からよく読んでおかないから二度手間になる)

チップにBME280というのをつかった温湿度センサーユニットです。ただ、気を付けないといけないのは安いやつは似たような恰好をしていますが、チップにBMP280というのを使っていて、湿度が測定できないものになります。以前に間違えて買ったことがあるので(というか、商品のタイトルにBME280としっかり書いてあってもBMP280が来る)、注意が必要です。

M5Stck-CをArduino-IDEで動かす

M5Stck-Cをプログラムするには、色々あるみたいですが、今回は慣れている、Arduino-IDEを使ってみました。
使うにはライブラリーを追加する必要があります。ESP-32を使ったことがある場合は既にインストールされているかもしれません。
qiita.com
しかし、例によってすんなりとはいきません。
いつもは、マイコンのプログラムはノートPCで行うのですが、そっちは、牛乳パック解体機の方の開発に使っているので、メインマシンでやってみたらドライバーがインストールされていなかったらしく、USBで接続しても認識されませんでした。
そのあたりは、この記事が参考になりました。
lang-ship.com
ドライバーをインストールすると認識されて、プログラミングできるようになりました。しかし、コンパイルするとエラーが発生。
どうも、Arduino IDEが古かったのが問題らしく、バージョンを1.18.1から1.18.15に上げたら動くようになりました。
しかし、コンパイルがとっても遅い。ESP系は8266にしても、32にしても、コンパイルは普通のArduinoに比べて遅いが、このM5Stck-Cは異常に遅い。ネットで調べるとやはり遅いということで対策が書いてあったりする。

M5Stck-Cのコンパイルを早くする方法 その1 CCacheを使う。

Arduino IDEにCCacheを使うと早くなるらしい。
やり方はここのサイトが詳しい。
qiita.com
やってみたら確かに早くなったがこれでもまだまだ遅い。

M5Stck-Cのコンパイルを早くする方法 その2 Platform IOを使う。

Platform IOというのを使うともっと早くなるらしい。
こちらのサイトを参考にしました。
elchika.com
でもこのままでは動きませんでした。M5Stck-Cのライブラリをインストールする必要があるらしいです。
Platform IOのHomeへ行って、ライブラリの画面からM5Stck-CのライブラリをインストールするとHello Worldは動きました。
ただ、ライブラリをインストールして、Platform.iniを書き換えても、#include の波線が消えないので、カーソルを持って行って、電球マークをクリックすると、いくつかのサジェスチョンが出るので、その中から、”include Pathに追加xxxxxxx”と書いてあるのをクリックすると波線が消えました。
確かにplatform IOを使うと格段に速くなります。しかし、問題点もいくつか。

ライブラリはその都度インストールする必要がある。

プロジェクトを作成するたびに必要なライブラリをインストールする必要があります。インストールするライブラリが多いと結構手間です。

ないライブラリがある。

Arduino IDEにあって、Platform IOにないものがあります。今回は、Adfruit SGP30がありませんでした。これは致命的でこれがないとセンサーが動かない(正確に言うと、ライブラリを使わずに動かすようにプログラムしてやれば動く)ので、Platform IOを使うのを諦めました。
こちらのサイトにインストール方法が書いてありましたが、やってみてもファイルが見つからないと怒られるので今のところライブラリを使うなら手がない状態です。
platformio.org

2021/8/21追記
ちゃんと検索したらライブラリが見つかりました。検索の仕方が悪かったようです。
Platform IOでもSGP30を使うことができました。

そもそも、何故VOCセンサーなのか

まあ、たいていの人には興味ないと思うので最後に書くことにしました。
実は、家内が漂白剤を使って洗濯をして、それを部屋干ししたのですが、どうも分量を間違えたのか、何かとまぜて塩素が発生したのか、部屋中にえらい臭いが充満し、目は痛くなるし、のどがひりひりするし、そのうち喘息の症状も悪化してしまいました。おまけに、一緒に干してあった服やら、カーテンにまで臭いがうつってとんでもないことに。一週間以上たつのにいまだに家の場所によっては目がチカチカする。
そこで、どんなくらい空気が汚れているのが知りたくて作ろうと思い立ったという次第。なので、出来るだけ手っ取り早く済ませるように、なるべくありもののデバイスと公開されているプログラムがそのまま使える方法をとることにしたと言う訳です。装置の組み立てとすかった見た結果は次回に書きます。