Raspberry PiとVS CodeでArduinoを同時監視

~初心者が試行錯誤して完成させたPC健康診断システム~

はじめに

以前の記事では、Arduino Nanoを用いてPCケース内8か所の温度を測定し、シリアルモニタへ表示するところまで完成しました。

しかし、それだけでは長時間の温度変化を分析することはできません。

そこで今回は、

  • Raspberry Pi
  • Python
  • Visual Studio Code(VS Code)

を利用して、温度と騒音を同時に記録するデータロガーの製作に挑戦しました。

完成してみればシンプルなシステムですが、そこへ至るまでには数多くの壁がありました。

この記事では、完成までの試行錯誤をそのまま紹介します。


今回の目標

今回作成するシステムの構成は次のようになります。

Arduino Nano
 │
 ├─ PCケース内温度(8点)
 │
Arduino UNO
 │
 └─ 騒音レベル

    ↓

  Raspberry Pi

    ↓

   Python

    ↓

   CSV保存

最終的には、

  • 温度(8点)
  • 騒音レベル
  • 日時

を1つのCSVファイルへ自動保存することを目標としました。


最初の壁

USBポート番号が毎回変わる

最初は、

/dev/ttyUSB0

がNano、

/dev/ttyUSB1

がUNOだと思っていました。

しかし、USBを挿す順番によって番号が入れ替わることが判明しました。

そのため毎回、

ls /dev/ttyUSB*

で確認するようにしました。

原因が分かってしまえば簡単ですが、初心者には意外と分かりにくいポイントでした。


二つ目の壁

UNOだけ文字化けする

Nanoは正常なのに、

UNOだけが意味不明な文字列になってしまいました。

原因は通信速度でした。

Nano

9600bps

UNO

115200bps

通信速度が異なるため、

stty -F /dev/ttyUSB0 115200

で設定すると正常に表示されました。

通信速度が一致していなければ、正常なデータでも文字化けしてしまいます。


三つ目の壁

VS Codeからラズパイへ接続できない

VS CodeのRemote SSHを利用しましたが、

Could not establish connection

というエラーが表示されました。

原因を一つずつ確認し、

  • SSH設定
  • Linuxの選択
  • パスワード認証

を順番に確認した結果、無事に接続できました。

Windowsから直接ラズパイ上のPythonを編集できる環境が完成した瞬間でした。


四つ目の壁

CSVの時間が7時間ずれる

CSVを見ると、

12:08

Windowsでは、

19:08

原因はラズパイのタイムゾーンでした。

ラズパイは英国夏時間(BST)になっていました。

そこで、

sudo timedatectl set-timezone Asia/Tokyo

を実行し、日本時間(JST)へ変更しました。

これでCSVも正しい時刻で保存されるようになりました。


五つ目の壁

騒音だけCSVへ保存されない

温度は保存されるのに、

Noiseだけ空欄になってしまいました。

原因はUNOのデータ形式でした。

UNOは、

Time_ms,Min,Max,PeakToPeak,Level

という形式で送信していました。

Python側で最後の

Level

だけを取り出すよう修正したところ、

無事にNoiseとして保存できるようになりました。


ついに完成

完成したCSVには、

DateTime
T0
T1
T2
T3
T4
T5
T6
T7
Noise

が毎秒自動で保存されます。

VS Codeからリアルタイムにデータを確認しながら開発できる環境も完成しました。


今回学んだこと

今回改めて感じたことがあります。

ものづくりは、完成品よりも完成するまでの過程に価値があるということです。

USB番号が変わる。

通信速度が違う。

SSHが接続できない。

タイムゾーンが違う。

CSVに保存されない。

一つ一つは小さな問題ですが、原因を切り分けながら解決していくことで、最終的には目的のシステムを完成させることができました。

これは、私がブログで書いている「現場・現物・現実」の考え方そのものです。

困ったときこそ現象をよく観察し、思い込みを捨て、一つずつ原因を確認する。

遠回りに見えても、それが最も確実な近道でした。


次回予告

今回完成したのは、データを記録する「データロガー」です。

次回は、このCSVデータを利用して、

温度と騒音をリアルタイムグラフで表示する「PC健康診断システム」

へ発展させていきます。

温度変化や騒音の推移を一目で確認できるようにし、異常の早期発見につながるシステムを目指します。

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