クリスマスなのでローストビーフ食べたいですよね
家にあるものを使って作っていきます。
そこはチキンだろという意見は認めません
どうやってつくるか
低温調理器で作るレシピを参考に電気ケトルの水温をESP32で計りながらリレーを使って水温をコントロールします。調理は今回60度を2時間半で行きます。(この辺りは自己責任で)
調理完了したらslackへ通知を飛ばします。
用意するもの
- ESP32
- DS18B20(防水仕様)
- G5LE-14
- 電気ケトル
- 牛肉
ESP32は最近手に入りにくいという話を聞きますが、みなさん家にありますね()
回路図
ざっくり書いたのが以下の通りです。
電気ケトルの線の間にリレーを噛ませることで水温をコントロールします。
直接電気ケトルの線を剥くのが嫌だったので今回は延長コードの間にリレーを噛ましてます。
プログラム
#include <OneWire.h>
#include <DallasTemperature.h>
#include <ArduinoJson.h>
#include <HTTPClient.h>
#include <WiFi.h>
#include "esp32/rom/rtc.h"
#define ONE_WIRE_BUS 33 // DS18B20
#define RELAY_BUS 23 // リレー
#define SENSER_BIT 9 // 精度の設定bit
const char* ssid = "SSID";
const char* password = "PASSWORD";
const char* webhook_url = "https://hooks.slack.com/services/XXXXXX";
HTTPClient httpClient;
unsigned long startTime;
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup(void) {
Serial.begin(115200);
wifi_connect();
slack_post("<!channel> 調理開始します");
// センサーセットアップ
sensors.setResolution(SENSER_BIT);
pinMode(RELAY_BUS, OUTPUT);
startTime = millis();
}
void loop(void) {
unsigned long elapsedTime = millis() - startTime;
if (elapsedTime > 9000 * 1000) {
slack_post("<!channel> 調理完了しました。");
esp_deep_sleep_start();
return;
}
sensors.requestTemperatures();
float temp = sensors.getTempCByIndex(0);
Serial.println(temp);
if(temp > 60){
digitalWrite(RELAY_BUS, LOW);
} else {
digitalWrite(RELAY_BUS, HIGH);
}
}
void wifi_connect(){
WiFi.begin(ssid, password);
Serial.println("Connecting");
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to WiFi network with IP Address: ");
Serial.println(WiFi.localIP());
}
void slack_post(const char* message){
WiFi.reconnect();
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("Connected to WiFi.");
StaticJsonDocument<JSON_OBJECT_SIZE(1)> json_array;
char json_string[255];
Serial.println(message);
json_array["text"] = message;
serializeJson(json_array, json_string, sizeof(json_string));
httpClient.begin(webhook_url);
httpClient.addHeader("Content-Type", "application/json");
httpClient.POST((uint8_t *)json_string, strlen(json_string));
httpClient.end();
}
調理の様子
電気ケトルの中に下処理してジップロックに入れた肉と温度計を入れてESP32の電源を入れて2時間半待ちます。
最後にフライパンで表面を焼きましょう。
完成
おいしかったです。
夜食べるのに合わせて作っていたらアドベントカレンダーぎりぎりになりました 遅刻しました
最後
本当はブラウザからタイマーと温度を設定できるようにしたかったのと、このプログラムだと60度付近になった時のリレーのON・OFFが機敏すぎるので改善の余地はありそうです。
完成したローストビーフとテストするのに作った温泉卵はおいしくいただきました。