さて、ラジエター式クーラーですが、実践で使えそうな見込みになってきました。
前回の記事↓
ということで、最終的に温度制御を行うことにしましょう。
夏場の車中泊に最適な温度は何度なのかは、これから探るとして、氷の消費を抑えるためにも最終的には、温度制御が大事だと思います。
電子工作が好きな方ならコピペで出来ますので、参考にしてくださいね。
どういったことを目指しているのか。
27℃を超えたら、ポンプとラジエターのファンを回して、27℃を下回ったら、ポンプもファンも止めたい。
(ここでは27℃としていますが、26~8℃位の間のどこかだと思います。)
これによって氷を長持ちさせたいと思います。
1.部品の準備
では、部品ですね。
1). ESP32 DevKitC
いわゆるマイコンです。こいつにプログラミングして制御します。
技適マークがあるものを選んでください。
2).5V 2チャンネル リレー モジュール
これで、ポンプとファンをON、OFFします。
3).温度センサー DHT11
これがないと温度が測れません。
で、こいつは温度と湿度を同時に測れます。
そして、紹介しているものは、抵抗が付いているものなので、回路が簡単になりますので、抵抗を買わないで済みますよ。
4).SDカードモジュール
温度と湿度をCSVファイルで記録します。
これに関しては、Micro SDカードでもいいですね。↓
五個セットですねこれ。けど安い。
5).ブレッドボード
配線を挿すためのものですね。これ、片側6列の物を買ってくださいね。
ESP32は片側5列のものだと配線がやりにくいのですよね。
6).ジャンプワイヤー
これが無いと、肝心の配線ができません。
7).コンセント オス
9).ケーブル コンセント用
赤黒で分かれている方が初心者の方は分かりやすいと思います。
10).端子台
途中、ケーブルをつなぐ場合に必要になります。
部品代は以上で、約5千円位だと思います。
細かい所だと、圧着端子、とそのペンチとニッパーは必要です。
工具も一応、出して置きますか。
1).ニッパー
ほんとはケーブルストリッパーが、いいのですがあんまり使わない人はニッパーで充分です。
ニッパーもホーザンとかがおススメですが。。
今回は安いやつで。
2).圧着工具
これも今回は安いのを出して置きます。
コンセント内での配線を安全に配線するためですね。
2.配線図
配線図、左側のリレーの先に9vバッテリーとLEDがありますが、9vバッテリーはポータブル電源で、LEDはポンプとファンを意味します。
リレーは指定の温度でON、OFFをしますので、例えば27℃以上になるとLEDが点く(自分の場合はポンプとファンが回る)ということです。
ポータブル電源とファンまで書ききれないもので、意味が分かればいいかなと思ってます。
で、右上のDHT11(温度センサー)で、温度を測り、右下のSDカードモジュールで温度と湿度を記録します。
DHT11、SDカードモジュール、リレーモジュールの配線図ですが、物によってピン配列の意味が違っていることがあるので、現物優先でお願いします。
上が現物の写真です。
現物は、コンセントのオスが、ポータブル電源の100vへ繋ぎます。
メス側は、リレーで制御されるので、ポンプとファンの電源を繋げばよい訳ですね。
3.プログラミング
実際には、arduino IDE上でプログラミングするわけですが、その環境まで準備するところは、ここでは書きませんので、ご自身でその辺りは頑張って見てください。
プログラミングだけは記載しておきます。
#include <FS.h>
#include <SD.h>
#include <SPI.h>
#include <DHT.h>
#include <DHT_U.h>
#include <Ticker.h>
#define DHTPIN 16 // 温湿度センサーのピン番号
#define DHTTYPE DHT11 // 温湿度センサーの型番
#define RELAY 4
DHT dht(DHTPIN, DHTTYPE); // 温湿度センサの設定
Ticker ticker;
// SDカードに追記
void appendFile(fs::FS &fs, const char * path, String message){
// 三番目の引数"message"はString型にするとポインタ渡しが出来なかったので値渡しにした
Serial.printf("Appending to file: %s\n", path);
File file = fs.open(path, FILE_APPEND);
if(!file){
Serial.println("Failed to open file for appending");
return;
}
if(file.print(message)){
Serial.println("Message appended");
} else {
Serial.println("Append failed");
}
file.close();
}
// 温湿度測定
void measure() {
// 温湿度を測定してSDカードに保存
String dataString = "";
dataString += String(millis() / 1000); // 起動後の経過時間を秒に変換
dataString += ",";
float t = dht.readTemperature(); // 温度測定(℃)
if(!isnan(t)){
dataString += String(t);
}else{
dataString += " ";
}
dataString += ",";
float h = dht.readHumidity(); // 湿度測定(%))
if(!isnan(h)){
dataString += String(h);
}else{
dataString += " ";
}
dataString += "\n";
// ファイルにデータを追記する
appendFile(SD, "/LOGGING.CSV", dataString);
Serial.println(dataString);
}
void setup() {
pinMode(RELAY, OUTPUT);
Serial.begin(115200);
while (!Serial) {
}
Serial.println("Initializing SD card...");
// SD カード初期化
if(!SD.begin()){
Serial.println("Card Mount Failed");
return;
}
Serial.println("card initialized.");
dht.begin(); // 温湿度センサー開始
ticker.attach_ms(60000, measure); // 60秒毎に”measure”関数を割り込みで呼び出す
}
void loop() {
Serial.println(dht.readTemperature());
// 温度が27.5℃を超えたらon、27.5℃を下回ったらoffする。
if (dht.readTemperature() >= 27.5) {
digitalWrite(RELAY ,HIGH);
Serial.println("27.5℃ over");
}
else {
digitalWrite(RELAY ,LOW);
Serial.println("27.5℃ under");
}
delay(10000); //10秒毎に見回り
}
このプログラミングで、SDカードに1分間毎にデータ保存され、27.5℃以上だったらポンプとファンがON、下回ったらOFFです。
これで、ほぼ車中泊用のクーラーが、自分の思ったような形になったかな。と思います。
参考にさせて頂いたサイト↓
正直、SDカードを利用するところのコードは参考にさせて頂いたサイトほぼそのままに近いです。
また、実践(車中泊)で使ってみますので、その時は報告します。
この記事の続きがあります、テストした見た結果の改良版です。
あと、関連記事は、トップにあるカテゴリーから一番左にある「車とバイク」→「車中泊」→「車中泊用自作クーラー」でもOKです。