Raspberry Pi 4(以下、ラズパイ4)+DAC(SB32+PRO DoP)+Volumio2の構成でハイレゾ連続再生時のラズパイ4のCPU温度は約60℃でした。今回、ケース内部(ラズパイ4とDAC基板の間の空間)の温度変化を測定しました。温度測定は長時間になるので、Arduino+SHT31センサモジュールを簡易的なデータロガーとして使えるように、温度データをテキスト形式でPCに保存できる設定にしました。
SHT31温度センサをArduinoのI/Oピンからラズパイ4ケースまでケーブル延長
SHT31センサモジュールにはプルアップ抵抗が内蔵されていますが、バッファ無しでI/Oピンからケーブル延長するとノイズを受けやすくなるので短く配線します
SHT31センサをラズパイとDAC基板の間の中間地点で固定となるように、SHT31センサ基板のセンサから離れた端子側の両面に被覆チューブ(白いパイプ状の筒)をクッション材として挟んで間隔調整しました。
スケッチ:Arduinoプログラムの出力形式変更
SHT31センサモジュール動作させるスケッチから、
・LCDモジュール用のライブラリとコードを除去
・測定データをEXCELに取り込んでグラフ化しやすいように「カンマ」セパレータ形式のCSV出力
に変更しました。
「AE_SHT31.h」は秋月電子通商の「SHT31使用 高精度温湿度センサモジュールキット」サイトに掲載の「Arduinoスケッチ」zipのインストールでライブラリを追加できます。「Arduino.h」と「Wire.h」は「Arduino IDE」に含まれてるI2C用ライブラリです。
SHT31_Sample_CSV.ino
※ここをクリックするとコード表示を開閉できます。
#include <Arduino.h>
#include <Wire.h>
#include "AE_SHT31.h"
// SHT31のアドレスを設定
AE_SHT31 SHT31 = AE_SHT31(0x45);
void setup() {
// シリアル通信を9600bpsに設定
Serial.begin(9600);
// SHT31をソフトリセット
SHT31.SoftReset();
// 内蔵ヒーター 0:OFF 1:ON
SHT31.Heater(0);
}
void loop()
{
// SHT31から温湿度データを取得
SHT31.GetTempHum();
// カンマ挿入
Serial.print(",");
// SHT31.Temperature() より温度データ取得
Serial.print(SHT31.Temperature());
// カンマ挿入
Serial.print(",");
// SHT31.Humidity() より相対湿度データ取得
Serial.println(SHT31.Humidity());
// 待ち時間
delay(800);
}
Tera Termのシリアル通信で温度データをPCに保存
Arduino IDEのシリアルモニタの代わりに、Tera Termでシリアル通信を行い、TeraTermのログとして時刻を加えた測定データをテキスト形式でPCに保存できるように設定します。
(1)Tera Termの接続画面で「シリアル」のチェックボックスを選択します。
(2)Tera Termのログ出力はメニューで「ログ(L)」を選択。初回接続時にログ(テキストファイル)の出力先とファイル名を指定します。
(3)Tera Termのログに時刻(タイムスタンプ)を加える設定です。
・C:\Program Files (x86)\teraterm フォルダ内の「TERATERM.INI」を編集
358行付近にある LogTimestamp= を on に変更
・日付の形式を変更するときは下記を変更(任意)。今回は時刻のみの記録に変更
565行付近にある LogTimestampFormat= を %H:%M:%S.%N に変更
PCにテキスト保存した測定データをEXCELでグラフ化
TetaTermのログファイルとして受信したケース内温度の測定データからTera Termが追加した時刻の両側の ” [ ”、” ]” やスペースをテキストエディタで一括削除して整形した後EXCELに取り込みます。
EXCELでグラフ化すると、ケース内温度は30分程度で約45℃に達し、それ以降は平衡状態でした。
夏場に向けて顕著な温度上昇がみられるようであれば、このケースの底面には空きスペースがあるので冷却ファンの実装を検討しようと思っています。