下記の記事で、洗濯物乾燥監視装置の本体部分について紹介した。今回は、その本体部分をプラスチックトレイに乗せ、洗濯物を吊り下げられるように構成して動作試験を行なったので紹介する。
洗濯物乾燥監視装置の本体部分、右側のグレーのユニットが計測ユニット(重量センサ)

ハードウェア
洗濯物乾燥監視装置の本体部分は、LEGOブロックを介してプラスチックトレイ上に固定し、計測ユニット(重量センサ)の天板に渡した細線ワイヤを、プラスチックトレイに開けた開口から下方に垂らしてハンガーを引っ掛けられるように構成した。
プラスチックトレイも物干し竿などから吊るせるように構成している。
モバイルバッテリーは、プラスチックトレイに乗せるとプラスチックトレイが傾いてしまうため、プラスチックトレイとは別に物干し竿などから吊るせるように構成し、M5Stack core2 V1.1とUSBケーブルで繋いでいる。
LEGOブロックのパーツは、パーツを単品売りしているサイトから購入し少し追加した。




動作仕様
M5Stack core2は、静電容量式の3つのボタン(タッチボタン)を備えているので、各ボタンに下記の動作を設定した。
1. ボタンA(計測ユニット校正)
ボタンAにタッチすると、計測ユニットのゼロ点調整が行われ、500g分銅を計測ユニットに乗せて、もう1度タッチすると、スケール校正が行われて、校正値はマイクロSDカードに記録され、電源投入時にマイクロSDカードから読み出される。
2. ボタンB(目標重量設定)
乾燥した状態の洗濯物をハンガーにかけ、ハンガーを細線ワイヤに引っ掛けて吊るした状態で、ボタンBにタッチすると、その時の重量(ハンガーの重量を含めた重量)が目標重量となり、マイクロSDカードにも記録される。
3. ボタンC(測定)
ボタンCにタッチすると、測定開始時刻が記録され、一定時間(5秒)ごとに、経過時間、温度、湿度、重量がマイクロSDカードに記録される。LCDにも、それらの値、および進捗度(パーセント表示)が表示される。
重量が目標重量に達したら(進捗度が100%になったら)、終了時刻を記録する。測定は、それから30分間行われた後、終了するように構成している。
ソフトウェアに関する補足説明
ChatGPT 4oや4o-miniに、Arduino IDEでコンパイルするM5Stack core2用のスケッチを作ってもらった。重量を測定・記録するスケッチの他に、M5Stack core2に内蔵されているリアルタイムクロック(専用のバックアップ電池内蔵)の日時を設定するためのスケッチも作ってもらって、リアルタイムクロックの日時を設定した。
重量を測定・記録するスケッチのライブラリは下記の通り。
#include <M5Unified.h>
#include “UNIT_SCALES.h”
#include <SD.h>
#include <Wire.h>
#include <Adafruit_SHT4x.h>
#include <math.h>
UNIT_SCALES.hは、重量センサである計測ユニット(MiniScales(HX711 STM) 5kgレンジ)に関連するGitHubから入手したライブラリである。計測ユニットのI2Cアドレスは26で、M5Stack Core2 V1.1のI2C仕様のポート(PORT A)のSDAは32、 SCLは33である。
温湿度センサは、「M5GO IoT Starter Kit V1.0」に付属していたI2C仕様の温湿度センサ(ENV SENSOR)を使う予定でスケッチを作成していたが、そのユニットが関連するコンパイルエラーを解消するのが困難だったため、そのユニットの詳細を確認する必要があった。そのユニットには複数のバージョンがあることが分かったが、バージョン表示がなく、どのバージョンのユニットか分からなかったので、Perplexity Proにそのユニットの外観画像を渡して調べてもらった。
添付画像の温湿度センサは、どのバージョンのものか分かりますか
Perplexity Proの回答
添付画像の環境センサバージョン判定の結論
添付画像のENV. SENSOR(環境センサ)は、「PORT. A I2C」と記載があり、かつ本体表面のデザインや「M5」刻印などから、M5Stack用ENV UNIT(初代モデル:ENV UNIT I)であると判断できます。
判別ポイント
- 表示ラベルに「PORT. A. I2C」「SCL SDA 5V GND」とある。
- 「M5」ロゴ刻印のあり方やセンサ形状が初代ENV UNIT(ENV I)に該当。
- ENV Iは温湿度にDHT12、気圧にBMP280を搭載し、「PORT A(I2C)」で接続。
- ENV II(SHT30搭載型)は本体横に「II」などのバージョン表記あり。
- ENV IIIはセンサICや外観ラベルが異なる。
参考:ENV各バージョンの違い(概要)
バージョン | 温湿度センサIC | 気圧センサIC | 主な外観ラベル | 特徴 |
---|---|---|---|---|
ENV UNIT I | DHT12 | BMP280 | 「ENV. SENSOR」表記のみ | 最初期モデル、I2Cアドレス0x5C,0x76 |
ENV UNIT II | SHT30 | BMP280 | 「ENV II」または専用ラベル | 性能向上、I2Cアドレス0x44,0x76 |
ENV UNIT III | SHT30 | QMP6988 | 「ENV III」など | さらに新型、QMP6988に変更 |
参考情報
- ENV Iの公式仕様やデザイン例はM5Stack公式GitHubおよび技術ドキュメントで確認できます。
- I2C通信でPORT Aに接続、センサIC(DHT12:0x5C、BMP280:0x76)が標準。
その温湿度センサは、「ENV Ⅰ」という古いユニットであることが分かった。温湿度センサICであるDHT12用のライブラリをAIに調べてもらって、コンパイルエラーを解消しようとしたが、解決が困難なようだったので、「ENV Ⅳ」という新しいユニットを使うことにした。「ENV Ⅳ」はSHT40(温度・湿度センサー、I2Cアドレス:0x44)を内蔵したモジュールで、そのユニットを使用するために、Adafruit_SHT4x.hのライブラリを導入した。
動作試験
プラスチックトレイをテーブルに置いて校正を行い、乾いた半袖シャツをハンガーに吊るして目標重量を設定した後、雫が垂れない程度に濡らした半袖シャツをハンガーにかけて測定を開始した。
測定終了後、マイクロSDカードに記録されたCSVファイルの中身は下記の通り。
マイクロSDカードに記録された内容
Target 158.71
START 2025/7/19 19:36

(途中省略)

重量変化グラフ(横軸は経過時間、左側の主軸は重量(g)、右側の第2軸は湿度(%))

測定を開始した頃のLCD表示例
「Elap」は経過時間、「Target」は目標重量、「Weight」は現在の重量、「Prog」は進捗度

目標重量に達した頃のLCD表示例
進捗度「Prog」は100.0%、Progが100.0%となった後も、30分間、計測を継続させている

試験結果
マイクロSDカードに記録された測定開始時刻(START)は2025/7/19 19:36であり、測定終了時刻(FINISH)は2025/7/19 21:50であるため、乾くまでの時間は、2時間14分だった。
現在の重量(測定重量)が目標重量以下になった場合に進捗度「Prog」は100.0%となり、洗濯物は乾いたと判断され、測定終了時刻(FINISH)が記録されるようにスケッチは構成されていたので、現在の重量が目標重量より初めて小さくなったときに測定終了と判断され、測定終了時刻が記録された。
試験では、濡らしただけの洗濯物を用いたので、洗濯の影響を受けず、想定した通りに動作した。洗濯を行うと、残留物の影響などで、測定重量がなかなか目標重量に到達せず、いつまでたっても測定が終了しないというような状況が発生し、終了判定要領を工夫しないといけないかもしれない。
冷房の効いた部屋で、クーラーの風が少し洗濯物に当たっている状態での測定であるため、クーラーの動作状態・除湿状態の変化が原因で、湿度の急激な変化が発生したのかもしれない。
試験に用いたシャツは、乾きやすそうな鹿子編みのシャツであり、冷房(除湿)の効いた部屋での測定であったため、比較的乾くのが早かったように思われるが、今後、より湿度の高い脱衣場などで、ハンガー、サーキュレータ、下図のような衣類乾燥除湿機の影響などを調べたい。
