長期計測 には独特の難しさがあります。「24 時間取れた」の次に挑む「1 週間取れた」「1 ヶ月取れた」を実現するための実装パターン集です。
1. 長期計測の 3 大課題
- ストレージ: 内蔵フラッシュは小さい (micro:bit 約 32 KB)。SD カードを使う
- 時刻精度: マイコン単独では時刻がずれる。RTC + NTP で同期
- 電源: USB 給電 or 大容量モバイルバッテリー or 省電力スリープ
2. SD カード書込み (M5Stack)
M5Stack: 1 分間隔で SD カードに追記
Python
from m5stack import sdcardimport os, time
sdcard.SDCard()LOG_DIR = '/sd/logs'os.makedirs(LOG_DIR, exist_ok=True)
def get_log_path(): """日次でファイルを切替: /sd/logs/2026-05-15.csv""" t = time.localtime() return f'{LOG_DIR}/{t[0]:04d}-{t[1]:02d}-{t[2]:02d}.csv'
def log_row(values: list): """1 行を CSV に追記、毎回 flush""" path = get_log_path() is_new = not os.path.exists(path) with open(path, 'a') as f: if is_new: f.write('timestamp,temp,humidity,pressure\n') f.write(','.join(str(v) for v in values) + '\n') f.flush()3. RTC と NTP 同期
起動時に NTP で時刻取得
Python
import network, ntptime, machine
# WiFi 接続wifi = network.WLAN(network.STA_IF)wifi.active(True)wifi.connect('YOUR_SSID', 'YOUR_PASSWORD')while not wifi.isconnected(): time.sleep(0.5)
# NTP で同期 (UTC が返るので日本時間 +9h する場合は別途)ntptime.host = 'ntp.nict.jp'ntptime.settime()print('Time synced:', time.localtime())4. 電源持続のテクニック
| パターン | 持続目安 | 向き |
|---|---|---|
| USB 常時給電 | 永久 | 据え置き計測 (室内) |
| M5Stack 内蔵リポのみ | 6〜12 時間 | 短期計測 (1 日以内) |
| モバイルバッテリー 10000 mAh | 1〜2 週間 | 屋外・移動計測 |
| 測定 → 深いスリープ → 起動 のループ | 1〜3 ヶ月 | 省電力本格運用 |
| ソーラー + バッテリー充電 | 理論的には永久 | 完全屋外、上級 |
5. データの破損対策
- 毎行 flush(): 書込みバッファを残さず即時保存
- 日次でファイル分割: 1 ヶ月のデータが 1 ファイルだと、壊れた時の被害が大きい
- バックアップ: 週 1 回 SD カードを抜いて PC にコピー
- チェックサム: 高度なら CSV 末尾に各行のハッシュ
6. データ取得後の Colab 解析
1 週間分のファイルをまとめて読み込み
Python
import pandas as pdimport glob
# /sd/logs/*.csv を全部読み込む (PC にコピー後)files = sorted(glob.glob('logs/*.csv'))dfs = [pd.read_csv(f) for f in files]df = pd.concat(dfs, ignore_index=True)df['time'] = pd.to_datetime(df['timestamp'], unit='s')print(df.info())print(df.describe())7. 次の話
EP.09 では取れたデータの 「ノイズ」 にどう向き合うかを扱います。移動平均・外れ値除去・スムージングといった、生データから意味を引き出す前処理の技術です。
この記事の感想を教えてください
あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。