ESP32-CAM故障排除指南:已修復的最常見問題
在使用ESP32-CAM發佈了一些項目後,一些讀者報告了嘗試使用ESP32-CAM時出現的問題。本指南匯編了使用ESP32-CAM時最常見的錯誤以及如何修復這些錯誤。
請注意,有些錯誤我們無法重現。然而,我們收集了讀者提供的所有信息,以獲得最常見問題的答案。
如果您對這些問題有不同的問題或不同的解決方案,可以在下面寫一條評論來分享您的建議。
最常見的錯誤:
1.連接ESP32失敗:等待數據包頭超時
2.Camera init失敗,錯誤為0x20001或類似
3.瀏覽器檢測器或大師冥想錯誤
4.草圖錯誤太大-選擇了錯誤的分區方案
5.COMX上的板不可用–未選擇COM端口
6.Psram錯誤:未安裝GPIO isr服務
7.弱Wi-Fi信號
8.Arduino IDE串行監視器中沒有IP地址
9.無法打開web服務器
10.圖像滯後/顯示大量延遲
11.esp_camera_fb_get():未能按時獲取幀!
1.連接ESP32失敗:等待數據包頭超時
出現這個錯誤意味著ESP32-CAM沒有在燒錄模式或者開發板可能沒有正確的和FIDI編碼器進行連接。
仔細檢查上傳代碼的步驟
再次檢查您是否按照正確的步驟將ESP32-CAM置於燒錄模式。未能完成其中一個步驟可能會導致該錯誤。以下是您需要遵循的步驟:
用FTDI編碼器連接電腦和ESP32-CAM開發板。
如圖所示:
(注意點:GPIO 0一定要和GND進行連接,不然沒法燒錄代碼的)
許多FTDI編碼器都有一個跳線,允許您選擇3.3V或5V。確保跳線位於選擇5V的正確位置。
ESP32-CAMFTDI Programmer
GNDGND
5VVCC (5V)
U0RTX
U0TRX
GPIO 0GND
燒錄代碼需要下面幾步:
1)點擊Tools->Board,並選擇AI-Thinker ESP32-CAM
2)點擊Tools->Port,並選擇與ESP32連接的COM端口
3)然後點擊上傳按鈕上傳代碼
4)如下圖所示,當您開始在調試窗口上看到這些提示時,請按ESP32-CAM開發板上的RST按鈕。
然後等幾秒鐘,代碼將成功上傳到你的開發板上。
GPIO 0必須連接到GND
重要提示:如果無法上載代碼,請再次檢查GPIO 0是否已連接到GND,以及是否在“工具”菜單中選擇了正確的設置。您還應按下開發板上的重置按鈕,以燒錄模式重新啟動ESP32。另外,檢查您是否將FTDI編程器跳線設置為5V。
檢查你使用的FTDI編碼器
我們的一位讀者朋友發現下面一個問題:“能用USB-to-TTL模式的編碼器CP2102,而無法使用CH340模式的編碼器”。
為ESP32-CAM供電5伏
另外一些讀者朋友報告說只能設置成5v的電源才能正確的上傳代碼,因此最好使用5v的電源。
5v的FTDI編碼器
使用萬用表測量FTDI編程器(VCC和GND)的輸出電壓,確保它為ESP32-CAM提供5伏電壓。
2.Camera init失敗,錯誤為0x20001或類似
如果您得到這個確切的錯誤,這意味著您的相機OVX沒有正確地連接到您的ESP32開發板,或者您在代碼中有錯誤的管腳分配。
有時,多次拔掉和插入FTDI程序員的插頭或多次重新啟動電路板,可能會解決這個問題。
攝像頭連接不正確
攝像頭有一個很小的連接器,因此你必須確定它正確地連接到正確的位置,否則它不能正常工作。
代碼中的pin分配錯誤
當您得到這個錯誤時,也可能意味著您沒有在define部分中選擇正確的開發板,或者您的開發板的引腳定義錯誤。
確保在項目中選擇了正確的相機模塊。您只需取消註釋正確的相機模塊並註釋所有其他模塊:
//#define CAMERA_MODEL_WROVER_KIT
//#define CAMERA_MODEL_M5STACK_PSRAM
#define CAMERA_MODEL_AI_THINKER
在這個例子中,我們使用了CAMERA_MODEL_AI_THINKER,因此它是能工作的。否則,它將使引腳分配失敗,攝像頭將無法初始化。
有許多類esp32-cam開發板發佈(“類似板”),因此esp32和OV攝像頭之間的接線可能不同,因此各個被選擇攝像頭模塊可能也不同。您可能需要檢查每個gpio聲明與您的開發板上的引腳輸出。
例如,不帶PSRAM的M5Stack開發板的管腳分配與帶有PSRAM的M5Stack開發板的管腳分配是不同的(默認情況下在代碼中定義)。因此,您需要根據電路板的pinout相應地更改代碼中的pin定義。
USB電源供電不足
如果您正在通過計算機上的USB端口為ESP32供電,它可能無法提供足夠的電源。
錯誤的FTDI編碼器
一些讀者反應FTDI編碼器可能使用中會有一些問題
攝像機/連接器壞了
如果出現此錯誤,也可能意味著相機或相機功能區已損壞。如果是這樣,您可能會得考慮買一個新的OV2640相機探頭。
3.瀏覽器檢測器或大師冥想錯誤
當您打開Arduino IDE串行監視器時,錯誤消息“Brownout detector was triggered”(瀏覽器檢測器已觸發)不斷被打印。這意味著有某種硬件問題。
它通常與以下問題之一有關:
劣質USB線;
USB線太長;
有缺陷的板(焊點不良);
電腦USB接口壞;
或者計算機USB端口提供的電源不足。
解決方案:
嘗試其他較短的USB電纜(帶數據線)
使用其他計算機USB端口或使用帶外部電源的USB集線器
一些讀者報告說,當用5V為ESP32-CAM供電時,問題得到了解決。
另外,請遵循第3條中描述的建議。
4.草圖錯誤太大-選擇了錯誤的分區方案
當你得到下面的錯誤時:
Sketch too big; see http://www.arduino.cc/en/Guide/Troubleshooting#size for tips on reducing it.
Error compiling for board ESP32 Dev Module.
這意味著您沒有選擇正確的分區方案。確保選擇了正確的分區方案。在Arduino IDE中,進入“工具>分區方案”,選擇“大型應用程序(3MB無OTA)”。
5.COMX上的板不可用–未選擇COM端口
如果你得到下面的錯誤輸出:
serial.serialutil.SerialException: could not open port 'COM8': WindowsError(2, 'The system cannot find the file specified.')
Failed to execute>
the selected serial port Failed to execute>
does not exist or your board is not connected
Board at COM8 is not available
這意味著您尚未在“工具”菜單中選擇COM端口。在Arduino IDE中,轉到工具>端口並選擇ESP32連接到的COM端口。
這也可能意味著ESP32-CAM沒有與您的計算機建立串行連接,或者沒有正確連接到USB接口。
6.Psram錯誤:未安裝GPIO isr服務
您如果使用的是不帶PSRAM的板,會出現以下錯誤或類似錯誤:
E (161) gpio: gpio_isr_handler_remove(380): GPIO isr service is not installed, call gpio_install_isr_service() first
Camera init failed with error 0x101
當開發板初始的時候進行下面的設置:
config.frame_size = FRAMESIZE_UXGA;
config.jpeg_quality = 10;
config.fb_count = 2;
添加以下內容可以解決問題(它降低了圖像分辨率,因此不需要太多空間來存儲圖像。但是,由於內存有限,無法獲得某些高分辨率格式):
if(psramFound()){
config.frame_size = FRAMESIZE_UXGA;
config.jpeg_quality = 10;
config.fb_count = 2;
} else {
config.frame_size = FRAMESIZE_SVGA;
config.jpeg_quality = 12;
config.fb_count = 1;
}
注意:沒有PSRAM的開發板無法進行人臉識別和檢測。但是,您仍然可以使用電路板的所有其他功能。例如,雖然您不能使用此項目的人臉識別和檢測功能(ESP32-CAM視頻流和Arduino IDE的人臉識別),但只要您在代碼中具有正確的管腳分配,您仍然可以播放此示例並探索電路板功能。
7.弱Wi-Fi信號
一些讀者報告說,用5V為ESP32-CAM供電後,他們得到了更穩定的Wi-Fi信號。
ESP32-CAM可以選擇使用內置天線或外部天線。如果您的ESP32-CAM AI-Thinker沒有Wi-Fi連接或連接不良,則可能啟用了外部天線。如果您將外部天線連接到連接器,它應該工作正常。
檢查天線接頭上的跨接電阻0K是否位於所需天線的正確位置。有3個白色的小方格像“
下面的照片顯示了該區域的詳細情況。你可以清楚地看到一個小的0千電阻連接到內置天線。
打開電路板,使PCB天線向上:
要使用PCB天線,電阻器必須位於頂部位置,如下所示:/
對於天線接頭,電阻器必須位於底部位置,如下所示:\\
因此,要啟用板載天線:
把天線上的電阻搬開,它就在這個位置\\
並將兩個連接焊接在一起,以啟用板載天線。
8.Arduino IDE串行監視器中沒有IP地址
如果您只看到串行監視器上打印的點(……),則表示您的ESP32-CAM沒有與路由器建立Wi-Fi連接。
仔細檢查您的網絡憑據
您需要確保在以下變量中鍵入了準確的網絡憑據(SSID和密碼):
const char*ssid=“用您的ssid替換”;
const char*password=“用您的密碼替換”;
在Arduino IDE串行監視器中選擇正確的波特率
如果您在Arduino IDE串行監視器中沒有選擇正確的波特率,您將無法獲得您的板IP地址,或者您只會在屏幕上得到垃圾信息。
確保選擇正確的波特率。在我們使用ESP32-CAM的例子中,我們使用115200波特率。
多次復位電路板
您可能還需要多次按下ESP32-CAM板載重置按鈕,以重新啟動ESP並在引導期間打印IP地址。
RX和TX交換
仔細檢查ESP32板和FTDI編碼器之間的連接。RX轉到TX,TX轉到RX。如果交換了這些連接,ESP32-CAM將無法與您的計算機建立串行通信。
Wi-Fi範圍
如果路由器遠離ESP32板,它可能無法捕捉Wi-Fi信號。確保ESP32-CAM與路由器相當接近。
9.無法打開web服務器
如果ESP32-CAM正在Arduino IDE串行監視器中打印IP地址,但當您嘗試在web瀏覽器中打開web服務器時,您會看到一個空白屏幕,這通常意味著您正嘗試使用多個web瀏覽器選項卡訪問ESP32-CAM web服務器。
目前,這些ESP32-CAM草圖一次只能與一個連接的客戶端一起工作。
10.圖像滯後/顯示大量延遲
對於這樣一個小而便宜的相機來說,有一定的延遲是正常的。一些讀者建議如下以減少延遲:
使用獨立的5V電源為ESP32-CAM供電
在代碼中使用以下命令減小幀大小:
config.frame_size=FRAMESIZE_SVGA或config.frame_size=FRAMESIZE_VGA
使用外部天線。
11.esp_camera_fb_get():未能按時獲取幀!
我個人從未遇到過這個問題。然而,一些讀者在使用ESP32-CAM開發板時會遇到這個錯誤。
我們的一位讀者建議如下來解決這個問題:
“我使用了來自Aliexpress的ESP32-CAM模塊帶2MP OV2640攝像機傳感器模塊C型USB模塊。雖然沒有提到,它沒有額外的PSRAM其他M5型號做,相機有一個改變了IO引腳。
請參見:https://github.com/m5stack/m5stack-cam-psram/blob/master/README.md並向下滾動至“接口比較”。
我們使用的CameraWebServer Arduino示例可能沒有定義此ESP32-CAM模型。
您需要自己在主選項卡中添加它添加:
#define CAMERA_MODEL_M5STACK_NO_PSRAM
在camera_pins.h選項卡中添加以下內容:
#elif defined(CAMERA_MODEL_M5STACK_NO_PSRAM)
#define PWDN_GPIO_NUM -1
#define RESET_GPIO_NUM 15
#define XCLK_GPIO_NUM 27
#define SIOD_GPIO_NUM 25
#define SIOC_GPIO_NUM 23
#define Y9_GPIO_NUM 19
#define Y8_GPIO_NUM 36
#define Y7_GPIO_NUM 18
#define Y6_GPIO_NUM 39
#define Y5_GPIO_NUM 5
#define Y4_GPIO_NUM 34
#define Y3_GPIO_NUM 35
#define Y2_GPIO_NUM 17
#define VSYNC_GPIO_NUM 22
#define HREF_GPIO_NUM 26
#define PCLK_GPIO_NUM 21
還要注意的是,沒有保護的ESP32-CAM模塊的最大分辨率是XGA 1024×768,我想也是因為缺少PSRAM。“
我們希望這個建議能解決你的問題。請在評論部分告訴我們。
使用較大尺寸的microSD卡
根據他的數據表,ESP32-CAM應該只支持4GB microSD卡。
不過,我們已經用16GB的microSD卡進行了測試,效果很好。
您可能無法存儲超過4GB的空間,即使您有16GB的空間。我們還沒有測試過存儲容量超過4GB,所以對此還不確定。
這些項目是否與M5Stack板兼容?
是的,M5Stack ESP32板與out項目兼容。但是,您必須檢查您的相機引腳,以確保您在代碼中有正確的分配。
設置ESP32-CAM作為wifi熱點(AP)
您可以將ESP32-CAM設置為wifi熱點(AP)。這意味著您可以直接連接到ESP32-CAM,而無需連接到路由器。您可以使用以下代碼將視頻流web服務器設置為訪問點,可以參考我前面的文章:
https://www.toutiao.com/i6799853017756598792/
結束
我們希望您已經發現這個故障排除指南很有用,並且您能夠使您的ESP32-CAM與我們的項目一起工作。
如果您有任何其他問題或建議如何解決,請張貼在下面的評論。
謝謝你的閱讀。
P、 當我們不能在我們這邊重現錯誤時,很難理解你的項目出了什麼問題。但是,如果您發佈了錯誤,可能會有其他讀者使用相同的問題/解決方案,因此我們鼓勵您在評論部分進行交互。
閱讀更多 碼農大叔老歐 的文章