久しぶりの投稿です。
1年近く放置してましたが、またちょくちょく更新していけたらいいなと思います。
今回は、ATOM LiteとATOM Mate、ENV HATをつかって気温と湿度を測定していきます。
用意したもの
ATOM Lite
ESP32を積んだマイコン。Wi-Fiが使えるし、USBで書き込みできるし、筐体に入ってるしでお気に入り。
ENV HAT
温度、湿度、気圧、磁界といろいろ測れるセンサー類が一つにまとまったHAT。
それぞれのセンサーの役割はこんな感じ。今回は、DHT12を使います。
- DHT12(気温、湿度)
- BMP280(気圧)
- BMM150(磁気)
新バージョンの「ENV II Hat」が出てるみたいですが、持っていないので今回は旧バージョンの「ENV HAT」を使いました。新バージョンでは、温度・湿度センサーが「DHT12」から「SHT30」に変更されているようです。
ATOM Mate
M5StickCで使えるHATをM5Atomでも使えるようにするアダプタ。
HATをつかえるようにピンの配置を変換しているだけなので、なくてもいいけど、M5Atom底面のピンから線を取り回したりしなくて済むのでおすすめ。
ちなみに、ATOM MateとM5StickCとでは、HATピンに割り当てられているGPIOの番号が違うのでM5StickCのプログラムを流用してHATを使うときは注意が必要です。
つかったライブラリ
M5AtomとDHT12のライブラリがないときは、インストールしておきましょう。
今回は、下記のものを使っています。
※DHT12の方のURLはArduinoIDEのライブラリマネージャで「DHT12」と検索した時に出てくる「DHT12 sensor library」と同一のものです。どちらからインストールしても構いません。
プログラム
プログラムはこんな感じ。センサーの値は、シリアルモニタ*1で確認できます。
#include <M5Atom.h> #include "DHT12.h" #include <Wire.h> DHT12 dht12; void setup() { M5.begin(); Wire.begin(19, 22); } void loop() { //温度 Serial.print("Temp: "); Serial.println(dht12.readTemperature()); //湿度 Serial.print("Humi: "); Serial.println(dht12.readHumidity()); //1秒待つ delay(1000); }
電源投入後2秒間は
non
が返ってきてセンサーの値が取得できません。これは、ライブラリの仕様に依るものです。void setup
内にdelay(2000)
あたりを書き加えて少し待たせてもいいかもしれません。ENV HATのDHT12とはGPIOの19番と22番でI2C通信しています。M5StickCにENV HATをつないでこのプログラムを動かすときは
Wire.begin(19, 22)
をWire.begin(0, 26)
に変更してください。
*1:ArduinoIDEでは画面右上にある虫眼鏡のアイコンのやつです。