Summary
'Brownout detector was triggered'
เป็น Error ที่มักเกิดขึ้นกับ ESP32-cam เกิดจากแรงดันไฟต่ำกว่าค่ามาตรฐานที่ตั้งไว้ โดยส่วนใหญ่จะตั้งไว้ที่่ < 2.4v จะมีการแจ้งเตือน Error นี้ออกมา และ Chip จะทำการรีเซ็ตตัวเองอัตโนมัติ
สาเหตุหนึ่งของการที่แรงดันไฟต่ำถึงขั้นขึ้น Error นี้ได้ คือกำลังไฟที่จ่ายให้ตัวอุปกรณ์ไม่เพียงพอ เช่น ใช้ USB
จากคอมพิวเตอร์ที่โดยปกติจะมีไฟเลี้ยงแค่ไม่เกิน 500mA หรืออาจต่ำถึง 250mA ในคอมพิวเตอร์บางรุ่น ดังนั้น ESP32-camที่มีอัตราการใช้กระแสสูงกว่า ESP32 Dev module อยู่แล้ว จึงมีกำลังไฟฟ้าไม่พอใช้ แรงดันที่
ปล่อยออกจาก Regulator จึงดรอปลง
วิธีแก้ไขที่ดีที่สุดคือ การเพิ่มแหล่งจ่ายไฟ 5V เพื่อจ่ายให้ตัว Regulator บน ESP32-cam อย่างเพียงพอ อย่างไรก็ตามเราสามารถยับยั้งการเกิด Error นี้ได้ด้วย Software เช่นกัน แต่จำไว้ว่าวิธีนี้เป็นแค่การงดแสดง
Error และป้องกันการ Reset ของ Chip เท่านั้น ดังนั้นวิธีนี้อาจแก้ปัญหาให้ได้แค่ปัญหาบางเคสเท่านั้น
โดย
1. ดึงไลบรารี่ที่เกี่ยวข้องกับการตั้งค่าเพื่อปิด Brownout detector
#include "soc/soc.h"
#include "soc/rtc_cntl_reg.h"
2. เพิ่มคำสั่งงดการตรวจสอบ Browout detector บนสุดในฟังก์ชัน setup() :
void setup() {
WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //disable detector
//โค้ดอื่น ๆ
}
หวังว่าจะช่วยแก้ปัญหา (ชั่วคราว) ให้ท่านที่ใช้ Laptop หรือ PC ในการจ่ายไฟเลี้ยงผ่าน USB ให้ ESP32-cam
เพื่อทดสอบอะไรบางอย่างได้ครับ
ขอบคุณข้อมูลจาก :https://iotespresso.com/how-to-disable-brownout-detector-in-esp32-in-arduino/