5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ビットスターAdvent Calendar 2022

Day 24

クリスマスなのでローストビーフ作る

Last updated at Posted at 2022-12-24

クリスマスなのでローストビーフ食べたいですよね
家にあるものを使って作っていきます。
そこはチキンだろという意見は認めません

どうやってつくるか

低温調理器で作るレシピを参考に電気ケトルの水温をESP32で計りながらリレーを使って水温をコントロールします。調理は今回60度を2時間半で行きます。(この辺りは自己責任で)
調理完了したらslackへ通知を飛ばします。

用意するもの

  • ESP32
  • DS18B20(防水仕様)
  • G5LE-14
  • 電気ケトル
  • 牛肉

ESP32は最近手に入りにくいという話を聞きますが、みなさん家にありますね()

回路図

ざっくり書いたのが以下の通りです。
電気ケトルの線の間にリレーを噛ませることで水温をコントロールします。
直接電気ケトルの線を剥くのが嫌だったので今回は延長コードの間にリレーを噛ましてます。
Untitled(1).png

プログラム

#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時間半待ちます。
最後にフライパンで表面を焼きましょう。
IMG_7664.jpg

完成

おいしかったです。
夜食べるのに合わせて作っていたらアドベントカレンダーぎりぎりになりました 遅刻しました

IMG_7666.jpg

最後

本当はブラウザからタイマーと温度を設定できるようにしたかったのと、このプログラムだと60度付近になった時のリレーのON・OFFが機敏すぎるので改善の余地はありそうです。
完成したローストビーフとテストするのに作った温泉卵はおいしくいただきました。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?