M5StickCからM5AtomS3へ!環境センシングシステムを最新技術で小型・効率化したお話

みなさん、こんにちは!

以前、M5StickCAmbientを使って、部屋の温度や湿度を手軽に可視化する環境センシングシステムの構築についてご紹介しました。

今回は、そのシステムをM5AtomS3へとアップデートした体験談をお届けします。

 


 

M5AtomS3へ更新する理由

 

これまで頑張ってくれたM5StickCも非常に優秀でしたが、導入から7年目に突入。さすがに内蔵バッテリーの劣化が気になり始めました。

後継機の「M5StickC Plus2」への買い替えも検討しましたが、今回はさらなる小型化・効率化・コストパフォーマンスを重視して、M5AtomS3をチョイスしました。新しいSoC(ESP32-S3)による性能向上で、レスポンスの改善も期待できるのが大きなポイントです。

もともとのシステムは「部屋の環境データを5分毎に取得してAmbientに送る」というシンプルなもの。改めて要件を整理したところ、M5AtomS3が最適だという結論に至りました。

  • バッテリー不要の割り切り
    据え置きでUSB給電するため、バッテリーは不要でした。
  • ディスプレイの役割
    値の確認はWEBもしくはスマホアプリがメイン。本体ディスプレイは「動いているな」という確認ができれば十分です。
  • 超コンパクト
    24x24mmという驚きの小ささ。
  • 低消費電力&高性能
    最新のESP32-S3チップにより、Wi-Fi通信やデータ処理がよりスムーズになりました。
  • Groveポートの存在
    手元にあった環境センサー(Groveポート対応のENVユニット)をそのまま使いたかったため、Groveポートを備えたAtomS3が最適でした。

 


 

スムーズだった移行作業

 

「ハードウェアを変えるとプログラムを書き直すのが大変そう……」と思うかもしれませんが、移行は驚くほどスムーズでした。

  1. ハードウェア
    EnvハットとEnvユニットは同じチップを使っていたため、GroveポートにEnvユニットを接続すればそのまま使えます。
  2. ソフトウェア
    Arduino IDEでボード設定を「M5AtomS3」に変更し、ライブラリをS3用に差し替えて表示を少し調整するだけ。

M5Stack Coreシリーズのライブラリ周りは少し複雑で、先日挫折した記事を書いたばかりですが、StickCからAtomS3への移行はエコシステムがしっかりしているおかげで非常に楽でした。

参考:M5AtomS3用のコード

実際に動作させているコードをご紹介します。M5StickC用のコードを移植したものです。

#include <M5AtomS3.h>
#include "DHT12.h"
#include <Wire.h> 
#include "Adafruit_Sensor.h"
#include <Adafruit_BMP280.h>
#include "Ambient.h"

DHT12 dht12; 
Adafruit_BMP280 bme;

WiFiClient client;
Ambient ambient;

const char* ssid = "{your_SSID}"; 
const char* password = "{your_PASSWORD}"; 

unsigned int channelId = {ChannelID}; 
const char* writeKey = "{WriteKey}"; 

void setup() {
    M5.begin();
    Wire.begin();

    M5.Lcd.setTextSize(3);
    M5.Lcd.setTextColor(WHITE, BLACK);

    Serial.println(F("ENV Unit(DHT12 and BMP280) test..."));

    while (!bme.begin(0x76)){  
      Serial.println("Could not find a valid BMP280 sensor, check wiring!");
    }
    
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }
    Serial.println("\nWiFi connected");
}

void loop() {
    float tmp = dht12.readTemperature();
    float hum = dht12.readHumidity();
    float pressure = bme.readPressure();

    // 本体ディスプレイに表示
    M5.Lcd.clear(BLACK);
    M5.Lcd.setCursor(0, 10);
    M5.Lcd.printf("%.1f C\n", tmp);
    M5.Lcd.printf("%.0f%%\n", hum);
    M5.Lcd.printf("%.0fhPa", pressure / 100);

    // Ambientへデータ送信
    ambient.begin(channelId, writeKey, &client);
    ambient.set(1, tmp);
    ambient.set(2, hum);
    ambient.set(3, pressure / 100);
    ambient.send(); 
    
    delay(300000); // 5分間隔で計測
}

 


 

更新してみた感想 – これは大満足!

 

新システムに更新してから数日経ちますが、期待以上の仕上がりです。

  • 設置性が抜群
    小さくなったことで、棚の隙間などどこにでも置けるようになりました。
  • 十分な視認性
    0.85インチの画面ですが、フォントサイズを工夫すればパッと見て数値を確認するには十分です。
  • 高い安定性
    24時間365日の稼働でも今のところ非常に安定しています。

「据え置きメインで、スマホからデータを見たい」という方にとって、M5AtomS3を使った環境センシングは最も効率的で賢い選択肢の一つだと思います。M5StickCユーザーなら、AtomS3へアップグレードして後悔することはないと思います!

 

本日も最後までお読みいただきありがとうございました。

それでは、よいIoTライフを!

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール