esp32のハードウェア的な強制リセット方法

はじめに

土壌水分計の測定はwifiを使用すると1回目の測定は上手くいくのですが、2回目以降は上手く測定ができないという問題が生じました。
そのため、1回の測定ごとに回路をリセットして測定する必要がでました。
ESP.restart();をしてソフトウェア的に解決できないかトライしたのですがうまくいきませんでした。
そのため今回はハードウェア的にリセットしたので、その方法についてまとめます。

使用する部品

回路図

esp32のENピンはLOWになったら電源OFF、HIGHになったら電源ONになるピンです。 そのため、ENピンをLOWからHIGHにすることで回路をリセットすることができます。 上手くいかなかった回路はこちら。(回路図と言えるかわかりませんが...) esp32のENピンとDigitalWriteできるピンをつないで、ENピンをGNDまで落とそうとしましたが、落ちませんでした。

f:id:GypsophilaRupi:20200104231328p:plain

そこでトランジスタを使用したところ、上手く動作しました。
その際の回路がこちら。

f:id:GypsophilaRupi:20200104231258p:plain

ソースコード

const int PIN_DIGITAL_OUTPUT3 = 32;
void setup() {
  pinMode(PIN_DIGITAL_OUTPUT3, OUTPUT);
  Serial.begin(115200);
}
void loop() {
  digitalWrite(PIN_DIGITAL_OUTPUT3, LOW);
  delay(3000);
  digitalWrite(PIN_DIGITAL_OUTPUT3, HIGH);//esp32の再起動
  delay(3000);
}  

結果

トランジスタを使用することで、強制的にリセットをかけることに成功しました。