03.ATOM Liteで温湿度&気圧測定
03.ATOM Liteで温湿度&気圧測定
温湿度&気圧を測定し、シリアルモニタに表示します。今回は、過去の"Arduinoの覚書"と重複します。
https://arduino.hatenadiary.com/entry/AtomLiteTempHumPres
必要なハード
・ATOM Lite・M5Stack用環境センサENV2
センサENV2
温度 : (0~40)±0.2℃ (SHT30)湿度 : (10~90)±2% (SHT30)
気圧 : (300~1100)±1hPa (BMP280)
I2C通信プロトコル:SHT30(0x44), BMP280(0x76)
コネクタ
センサのCNはATOM Liteの下側のCNに接続。全て正面から見て
裏側の左CN
上から見てG21 : GPIO21, I2C_SCL
G25 : GPIO25, I2C_SDA, DAC
5V
GND
下CN
左から見てG32 : GPIO32, ADC
G26 : GPIO26, DAC
5V
GND
裏側の右CN
上から見て3.3V
G22 : GPIO22
G19 : GPIO19, SPI_MOSI
G23 : GPIO23, SPI_CLK
G33 : GPIO33, SPI_MISO, ADC
その他
GP12 : (OUT) IR赤外線送信GP27 : (OUT) RGB LED
GP39 : (IN) Btn
---- : (IN) Reset
ボードのインストール
Arduino-IDE > ファイル > 環境設定 > 設定タブ下をコピーして、"追加のボードマネージャーのURL:"に張付ける。(Ctrl+v) > OK > OK
https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json
Arduino-IDE > ツール > ボード:xxxxx > ボードマネージャ... > M5Stackで検索
M5Stack by M5Stack official Ver2.0.3
更新 > 閉じる
Arduino-IDE > スケッチ > ライブラリをインクルード > ライブラリを管理... > ATOMで検索
M5Atom by M5Stack Ver 0.1.0
インストール > Install all > OK > 閉じる
ボードの設定
Arduino-IDE > ツール > ボード:xxxxx > M5Stack Arduino > M5Stack-ATOM・ボード:"M5Stack-ATOM"
・Upload Speed:"1500000" (最高速)
・CPU Frequency:"240MHz(WiWi/BT)" (最高速)
・Partition Scheme:"初期値"
・Core Debug Level:"なし"
・シリアルポート:"COM□"
ライブラリ
ATOM Library
https://github.com/m5stack/M5AtomATOM API
https://docs.m5stack.com/en/api/atom/systemhttps://docs.m5stack.com/en/api/atom/led_display
https://docs.m5stack.com/en/api/atom/button
https://docs.m5stack.com/en/api/atom/mpu
色
一部です。0x000000 黒
0x0000FF 青
0x008000 緑
0x00FF00 lime 黄みの緑
0x00FFFF 水 aqua
0x800000 茶
0x800080 紫
0x808080 灰
0xFF0000 赤
0xFF00FF 赤紫
0xFFFF00 黄
0xFFFFFF 白
スケッチ
// 温湿度&気圧を測定しシリアルモニタに表示
// SHT30(±0.2℃,±2%), BMP280(±1hPa)
#include <M5Atom.h> // ATOMを使用
#include <Adafruit_SHT31.h> // 温湿度センサを使用
#include <Adafruit_BMP280.h> // 気圧センサを使用
Adafruit_SHT31 sht = Adafruit_SHT31(&Wire); //
Adafruit_BMP280 bme = Adafruit_BMP280(&Wire); //
float tmp = 0.0, hum = 0.0, pre = 0.0; // 温度,湿度,気圧変数
void setup() {
M5.begin(true, false, true); // 初期化(Serial,I2C?,Display)
Wire.begin(26, 32); // I2CでG26とG32を使用
while (!bme.begin(0x76)) { // BMP280(スレーブアドレス)を初期化できなければ
Serial.println("BMP280が未接続"); // 表示
}
while (!sht.begin(0x44)) { // SHT30を初期化できなければ
Serial.println("SHT30が未接続"); // 表示
}
// M5.dis.setBrightness(10); // LED輝度 変化しない
}
void loop() {
M5.dis.drawpix(0, 0x00FF00); // (点灯LED位置,緑) 点灯時間が短いと光らない
tmp = sht.readTemperature(); // センサーの温度を読む
hum = sht.readHumidity(); // センサーの湿度を読む
pre = bme.readPressure(); // センサーの圧力を読む
M5.dis.clear(); // 全照消灯
Serial.printf("%4.1f'C%3.0f%%%5.0fhPa\r\n", tmp, hum, pre / 100);//表示
delay(10000); // 10秒待つ
}
フラッシュメモリ(1.3Mbyte)をスケッチが21%使用。RAM(327kbyte)をグローバル変数が5%使用、ローカル変数で309kbyte使用可能。(1000byte=1kbyteで計算)