Air Quality SEN55 センサー関連の API とサンプルプログラム。
#include <M5Unified.h>#include <Wire.h>#include <SensirionI2CSen5x.h> // SEN55 インスタンスSensirionI2CSen5x sen5x; void setup() { // シリアルデバッグ Serial.begin(115200); // 画面を初期化 M5.begin(); M5.Display.clear(TFT_BLACK); M5.Display.setTextSize(1); M5.Display.setTextColor(TFT_WHITE, TFT_BLACK); // I2C ピン (SDA=11, SCL=12)、データ取得済みの設定と同じ Wire.begin(11, 12); // AirQ 外部センサー有効化ピン、LOW を維持 pinMode(10, OUTPUT); digitalWrite(10, LOW); // SEN55 を初期化 sen5x.begin(Wire); uint16_t err; char msg[128]; err = sen5x.deviceReset(); if (err) { errorToString(err, msg, sizeof(msg)); Serial.println("SEN55 リセットに失敗: " + String(msg)); } // 測定を開始 err = sen5x.startMeasurement(); if (err) { errorToString(err, msg, sizeof(msg)); Serial.println("SEN55 測定開始に失敗: " + String(msg)); }} void loop() { // 1 秒ごとに読み取り delay(1000); float pm1, pm2_5, pm4, pm10, hum, temp, voc, nox; uint16_t err = sen5x.readMeasuredValues( pm1, pm2_5, pm4, pm10, hum, temp, voc, nox ); // 画面をクリアしてカーソルをリセット M5.Display.fillScreen(TFT_BLACK); M5.Display.setCursor(10, 10); if (err) { // 読み取りエラー M5.Display.setTextColor(TFT_RED, TFT_BLACK); char em[64]; errorToString(err, em, sizeof(em)); M5.Display.printf("Read Error:\n%s", em); } else { // 各値を表示 M5.Display.setTextColor(TFT_WHITE, TFT_BLACK); M5.Display.printf("PM1.0 : %.1f ug/m3\n", pm1); M5.Display.printf("PM2.5 : %.1f ug/m3\n", pm2_5); M5.Display.printf("PM4.0 : %.1f ug/m3\n", pm4); M5.Display.printf("PM10 : %.1f ug/m3\n\n", pm10); M5.Display.printf("Hum : %.1f %%\n", hum); M5.Display.printf("Temp : %.1f C\n\n", temp); M5.Display.printf("VOC : %.1f\n", voc); M5.Display.printf("NOx : %.1f\n", nox); } // M5 イベントを更新(必須) M5.update();}
アップロード後、以下のような画面が表示されます: