PR

序章:しまい込んでいた電子部品と、AIで形にできる温度監視システム

環境センサーデータサーバーシステム
記事内に広告が含まれています。

最初に

大きな建物の設備管理・ビルメンテナンス現場で働いている方、現場から「もう少しデータを見える化できたら…」と感じつつ、プログラミングは難しいそうだが可能性を感じている方に向けて書きます。

「子供の頃電気工作ではんだ付けしたことが有る」「ChatGPT / Claude 等の AI をなんとなく使ったことがある」程度の予備知識で読めるように書いていきます。コードやコマンドは全部貼りますが、初回のうちは「そういうものが動くのか」という空気だけ掴んでもらえれば十分です。そういう私も理解していません。

最終形

  • 温度センサー を建物の各所に置く
  • センサーは電池駆動で 数分に 1 度、無線でデータを飛ばす
  • Raspberry Pi (以下 Pi) が受信して温度履歴を蓄積、ブラウザでトレンドグラフを表示する
  • 温度センサー⇔Pi は建物の LAN に依存しない (ビル所有者側の業務用ネットワーク管理者にお願いしなくても勝手に設置できる独立したセンサーネットワークを持つ)
  • Pi がインターネットに接続できる環境なら現地に行かなくても どこからでも管理画面にアクセス できる (VPN)
USB WiFi ドングルを付けたケース入りの Raspberry Pi 4
完成した温度監視ダッシュボードの画面(センサーごとの最新値と温度推移グラフ)
ESP8266 の温度センサー子機をブレッドボードごと小型ケースに収めたところ

ざっくりとこんな流れで進めていく予定:

[温度センサー] × 何個か
    ↓ (電池・無線で自動送信)
[Pi の自作 WiFi]
    ↓
[Pi 上の Web サーバー]
    ↓ (VPN)
[自宅 or 出張先の PC/スマホ]

設置場所としては:
温度監視の設置先の例、屋上の冷却塔
  • 冷却塔・サーバー室・電気室
  • ボイラー等熱源機室
  • 冷凍機の吐出温度・還り温度
  • 屋外気温 (日射なし場所)
  • 温度ムラの有る大きな空間 (吹き抜けや西向きの大きな窓が有る)
Amazon.co.jp: 【国内正規代理店品】Raspberry Pi4 ModelB 4GB ラズベリーパイ4 技適対応品【RS・OKdo版】 : パソコン・周辺機器
Amazon.co.jp: 【国内正規代理店品】Raspberry Pi4 ModelB 4GB ラズベリーパイ4 技適対応品【RS・OKdo版】 : パソコン・周辺機器

動機

私は元々、総合病院や商用複合施設のビルメン (設備管理) をしていました。現場で「この機器の温度、後で確認できるようにデータ取れないかな」「わざわざ現場に行かなくても数値だけ拾えれば…」と思うことが何度もありました。

当時 Amazonやスイッチサイエンス・秋月電子 で ESP-WROOM-02 の生チップ、Raspberry Pi、DS18B20 温度センサー、ブレッドボード、抵抗、ジャンパ線、ハンダごて、LiPo バッテリー、USB WiFi ドングル…と、「いつか作ってみよう」と思って揃えた部品が秋月電子の箱の中に眠っていました。

本業が忙しかったのので、部品を購入して試行錯誤しながら勉強して現場で思い付きで変更を繰り返しました。その後、体調を崩して退職。「材料は買ったのに使わないままのセンサー・マイコン・ラズパイが大量に」というのが、心残りでした。

今、AI (Claude や ChatGPT) にコードを書かせながら電子工作すると、以前とは比較にならない速度で「動くもの」が組み上がる時代になっています。

「難しくてできない」と諦めていたことが、「AI と会話しながらなら手が動く」に変わりました。高齢者の未経験者ばかりを雇わざるを得ない現在の設備管理現場に、「AI と併走すれば実用的なものが作れる」実例を届けたい — それがこの記事を書く動機です。

ちなみにこの「作ったもの」は会社を辞める前に現場に出動させています。エコチューンの提案をするためのデータは取れたのですが、会社を辞めたので全部引き上げました。一度出来上がったものを再度最初からコードをAIに検証してもらいながら再現して、改良していきます。

先に、道具の名前だけ

この後の記事に、聞き慣れない名前がいくつも出てきます。全部を理解してから読み始める必要はありません。「何をするものか」だけ先に置いておきます。文法や細かい書き方は、その都度 AI に聞けば済みます。

名前ひとことで言うと出てくる回
Arduino IDEESP にプログラムを書き込むための道具第1回〜
PythonPi 側で動かすプログラムの言語第8回〜
FlaskPython で Web サーバーを書くための部品第8回
SQLiteファイル 1 個で完結するデータベース第8回〜
SQLデータベースに指示を出すための言葉第8回〜
systemdLinux で「勝手に起動させる」仕組み第9回

Python

Pi の上で動かす側のプログラムは、全部 Python で書きます。Raspberry Pi OS には最初から入っているので、入れる作業はありません。

他の言語と違うところが 1 つだけあります。行頭の空白に意味があることです。{ } で囲む代わりに、字下げの深さでまとまりを表します。だから、コピー&ペーストで字下げがずれると動きません。この連載でいちばん多い「動かない」の原因はこれです。

if temp > 30:
    print("暑い")      # ← 4 個の空白でぶら下がっている
print("おわり")         # ← ぶら下がっていないので必ず実行される

SQLite と「DB ファイル」

データベースというと、別に大きなソフトを立ち上げる印象があります。SQLite はそうではなく、ファイルが 1 個あるだけです。この連載では temperature.db という名前で作ります。中に表が入っていて、温度が 1 行ずつ増えていきます。

ファイル 1 個なので、コピーすればバックアップになります。ただしサーバーが動いている最中のコピーは壊れることがあるので、止めてからコピーするのが確実です。逆に、消したいときはファイルごと消せば全部消えます。

SQL

その temperature.db に「入れて」「出して」と指示するための言葉が SQL です。覚えることは実質 4 つしかありません。

INSERT1 行入れる
SELECT取り出す
UPDATEすでにある行を書き換える
DELETE消す

実際に第8回で書くのは、こういうものです。英語の語順のまま読めます。

SELECT device_id, temperature FROM temperatures
  ORDER BY timestamp DESC LIMIT 10;

-- 「temperatures という表から device_id と temperature を、
--   timestamp の新しい順に 10 件出せ」

書けるようになる必要はありません。読めれば足ります。AI に書かせて、「この行は何をしているのか」と聞き返す。それで十分に進みます。私もそうやってきました。


全体の目次

  1. 【序章】 この記事 — 全体像と動機、使う道具の名前
  2. 【第1回】 ESP-WROOM-02 に DS18B20 を繋いで、温度をシリアルに出す(開発ボード編と生チップ編。ブレッドボード配線、Arduino IDE 導入、最初のスケッチ)
  3. 【第2回】 XIAO ESP32-C3 で同じことをやる、ボード違いの意味
  4. 【第3回】 Raspberry Pi を買ってきて OS を入れ、SSH で入る
  5. 【第4回】 Pi に USB WiFi ドングルをつけて、そこに独立した無線 AP を立てる (hostapd / dnsmasq、ドライバ導入の落とし穴 RTL8821AU 系)
  6. 【第5回】 Pi のオンボード WiFi は「インターネット出口」に使う (家/現場ルーターに接続)
  7. 【第6回】 ESP から Pi の AP に接続、HTTP POST で温度データを送る (WiFi.begin() の使い方、電池運用と DeepSleep)
  8. 【第7回】 もう 1 つの選択肢: ESP-NOW でセンサー → 中継 ESP → Pi (電池寿命が長い代わりに配線が増える)
  9. 【第8回】 Pi 側に Flask サーバーを立てる、2 つの経路を 1 つに受けて SQLite に貯める
  10. 【第9回】 device_id に名前を付けて読めるようにする、systemd で置きっぱなしにする
  11. 【第10回】 出来上がったサーバーの中身を一通り見る、GitHub から取ってきて自分の環境で動かす手順
  12. 【最終回】 ブレッドボード基板に実装して「現地出動盤」にする、AI との付き合い方の総括
  13. 【番外編】 Tailscale でどこからでもダッシュボードを見る (オンボード WiFi 経由。ルーターの設定もポート開放も不要)

当初はこの後に「現地表示器 (I2C 液晶)」「USB カメラ」も予定していました。ただ、温度が見られて、置きっぱなしにできて、他人が同じものを作れるところまで来たら一度区切るべきだと思ったので、本編はここで完結させます。この 2 つをやるなら別の連載として立てます。

各回とも、AI に何を聞いたか、どこで詰まったか、どう解決したか をそのまま載せます。動くコードは全て GitHub に置いてあります:
https://github.com/whiskerpad/sensorserverwithESP

このシリーズで伝えたいこと

  1. AI とペアで電子工作すると、想像以上に早く「動く」に辿り着ける (何十時間かかっていた学習期間が、数時間の会話に置き換わる)
  2. 現場の困りごと > 技術の華やかさ (どんなに高度なものより「温度が見たい」を実装した方が現場は助かる)
  3. AI に丸投げしない、対話する (エラーが出た画面をそのまま貼って「これどう思う?」と聞くだけで、大抵は突破できる)

次回予告

第1回は ESP-WROOM-02 + DS18B20 で「温度を Arduino IDE のシリアルモニタに表示する」ところまで。ブレッドボードに部品を挿す写真、配線図、初めての void setup()、最初の「動いた!」までを 1 記事にまとめます。開発ボード(ESPr Developer)から始めるパート A と、コストを詰める生チップ編のパート B の 2 本立てです。

材料費は 3,500 円程度。開発ボードから始めるパート A は半田付け不要(ブレッドボードに挿すだけ)。生チップを使うパート B は、変換基板にピンヘッダを付けるハンダ付けが必要になります。


本連載のソースコードとドキュメントは全て以下で公開しています (公開時に SSID/パスワードなど個人情報はプレースホルダになっているので、ご自分の環境で書換えが必要です — 手順は同リポジトリの docs/初心者向け_WiFi設定ガイド.md を参照)。

GitHub: https://github.com/whiskerpad/sensorserverwithESP


← | 連載目次 | 第1回 →

コメント

タイトルとURLをコピーしました