GW中の自粛期間を活用して、前々からやりたかった自宅のPM2.5計測を試してみました。
環境
- 開発PC(Mac Catalina 10.15.3)
- waves ESP32 ESPDuino-32
- GROVE - ダストセンサ
- ジャンパーワイヤー3本(オス - オス)
- Arduino IDE
開発環境の準備
Arduino IDEのセットアップ
-
IDEのインストール
以前の記事参照。
今回の作業ではMosquittoのセットアップ
とUSB変換チップのドライバインストール
は不要です。 -
ESPDuino-32用ライブラリをインストール
-
こちらの記事の
2.Stable 版(安定版) Arduino – ESP32 のインストール
の手順でインストールしました。インストール
-
こちらの記事の
-
ボードの設定
- ボードは、
ESP32 Dev Module
を選択します。 - ボードの設定については以下のとおりです。
-
こちらの記事の
【stable ver 1.0.4で、ESP32, Dev-KitC, M5Stack Basicの場合】
の設定に概ね合わせました。 - ただし、Upload Speedについては
921600
だとエラーで書き込めなかったため、Amazonの商品説明に記載のとおり115200
にしました。 - ↓が設定した内容です。
-
こちらの記事の
- ボードは、
プログラム書き込みテスト
こちらのサンプルコードを用いて書き込みテストをおこないました。
- ESPDuino-32への書き込み方法は少しクセがあります、こちらのコメントに書き込み手順が記載されています。
- 書き込みが成功したら、シリアルモニターで動作確認します(↓のようにHello Worldと出ていればOK)
- なお、一度、書き込み途中で
A fatal error occurred: Timed out waiting for packet content
というエラーが発生しました。- ダストセンサーと接続してるジャンパーピンを外したら、書き込み成功しました。
- 原因の参考になった記事は[こちら]。(https://github.com/espressif/esptool/issues/394)
配線
配線イメージ
(配線の仕方はこちらを参考にしました)
測定プログラムについて
- 測定プログラムはこちらのサンプルコードでほぼそのまま動きました。
- サンプルコードと違う点は、ピン番号のところです。
#include "ESPDuino32PinMapping.h" //変えた部分
int pin = ESPDUINO32_D8; //変えた部分
unsigned long t0;
unsigned long ts = 30000; // 30000ms
(以下略)
- 変更内容
- サンプルコードはArduino UNOで動かすもので、信号ピンのピン番号が8(D8ピン)でした。
- ESPDuinoではD8の位置のピンがIO12にあたるのですが、番号は12です。
- なので、
12
と直に番号を指定するか、ESPDuino32PinMapping.h
をincludeしてESPDUINO32_D8
などと指定するとOKです。 - Arduinoのピン番号とESPDuinoのピン番号のマッピングについては、こちらを参照(
ESPDuino32PinMapping.h
もこのサイトの「Resources」でダウンロードできます)。
- 正常動作すると、以下のイメージのとおり測定結果が出力されます。
次やろうと思うこと
前に別のボードで温度とか計測してAWSにデータを蓄積させる、というのをやりましたが、ESPDuinoに温度センサーをつけて、PM2.5と一緒に測定してGCPにデータを蓄積させて分析する、というところまでやってみたいなと。。。