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/M5Atom

ATOM API

https://docs.m5stack.com/en/api/atom/system
https://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で計算)