DIY WIFI攝像頭模組

【轉】基於ESP8266晶片的nodemcu以及D1 MINI模組製作自己的物聯網裝置,或者像小米飛利浦的智慧燈,YEELIGHT智慧浴霸都使用ESP32晶片來進行物聯網連結。

DIY WIFI攝像頭模組

一、開箱

DIY WIFI攝像頭模組

模組包含一塊ESP32-CAM的MCU和一個OV2640的200W畫素攝像頭(淘寶購不到50元),ESP32-CAM除了支援OV2640外還支援OV7670攝像頭,不過7670只有30W畫素,想來也沒人願意用。

DIY WIFI攝像頭模組

DIY WIFI攝像頭模組

DIY WIFI攝像頭模組

大家可以看到,模組配置還是挺全的,TF卡插槽,閃光燈,外接天線介面啥的應有盡有。

DIY WIFI攝像頭模組

而標配的OV2640用的是一個標準視角的鏡頭,單獨售價大約是10元一個。而帶120°-150°廣角鏡頭的OV2640售價一般都要20-30元,如果自己折騰的滿意也可以單獨購買廣角鏡頭版的OV2640進行替換。

DIY WIFI攝像頭模組

組合起來大概是這麼個效果,如果覺得排線較短的話,馬家也有延長線出售。

二、燒錄韌體

DIY WIFI攝像頭模組

在進行燒錄前,我們先要看下ESP32-CAM的各個GPIO定義,這裡我們需要用到的是左下角的5V/GND(或者右下角的3。3V和GND,但是使用時必須連結5V 2A電源)以及右上角的GPIO1和GPIO3,這四根線分別接USB-TTL的5V,GND,GPIO1接RX,GPIO3接TX。並且,需要將GPIO0和邊上的GND短接進入燒錄模式:

DIY WIFI攝像頭模組

DIY WIFI攝像頭模組

這張照片GPIO0和GND還沒接,大家一定記得接上。

燒錄工具我們用的是ARDUINO IDE,可以從ARDUINO官網下載:

DIY WIFI攝像頭模組

首先我們要新增ESP32的晶片支援,先開啟首選項:

DIY WIFI攝像頭模組

在附加開發板管理器網址裡填上:

https://dl.espressif.com/dl/package_esp32_index.json 然後單擊好。

DIY WIFI攝像頭模組

然後在工具裡開啟開發板管理器:

DIY WIFI攝像頭模組

等待索引做完之後找到ESP32並安裝,下載安裝需要點時間,等安裝的時候,我們可以前往github下載本次示例使用的檔案程式碼

https://github。com/RuiSantosdotme/arduino-esp32-CameraWebServer

DIY WIFI攝像頭模組

然後開啟CameraWebServer。ino檔案,我們要對程式碼進行一些設定:

DIY WIFI攝像頭模組

首先是相機的選擇,我買的是AI THINKER的版本,所以註釋掉其他兩個裝置,僅保留AI THINKER的,然後就是要連結的WIFI網路的SSID和密碼,切記,ARDUINO不支援中文,所以只能連結英文SSID的2。4GWIFI網路。

DIY WIFI攝像頭模組

在開發板裡面選對我們需要的開發板和相關設定,然後點選上傳就好。

三、使用

使用上我們只要透過瀏覽器,無論是手機還是電腦,輸入ESP32-CAM的IP地址,就能看到設定頁面了:

DIY WIFI攝像頭模組

點選Start Stream就能看到實時影像了:

DIY WIFI攝像頭模組

DIY WIFI攝像頭模組

大家可以看到我給這個攝像頭列印了個外殼和支架後安放在了廚房,因為我之後想配合Tensor Flow來做一個檢測碗有沒有洗掉的應用,要是碗沒洗掉,就不能看電視……,為了強迫自己洗碗也真是煞費苦心啊。至於在題圖裡面說的人臉檢測,是在左邊的設定項Face Detection和Recognition的功能:

DIY WIFI攝像頭模組

不過測試下來這個功能並不完善,首先是晶片的處理能力有限(非專業影象處理晶片),所以只能針對最大CIF解析度(400X296)畫素進行識別,並且識別率並不高。其次,人物識別Enroll Face記錄的臉斷電後不能儲存。所以這個示例實驗的意義大於應用的意義,也就是告訴你我能做,但事實是做的並不好。

除此以外,隨著輸出解析度的提升,幀率會大幅下降,在UXGA(1600X1200)解析度輸出下,幀率只有3-6fps。要保持流暢的話,最大解析度也就VGA尺寸能用,所以遠端監控的話,只適合要求不高的影片流。當然,這個示例沒有儲存影片的功能,所以不知道如果本地儲存的話質量如何,大家要是有興趣可以自己實驗。除了直接輸IP進入設定頁面檢視串流之外,程式碼還提供了兩個介面可以檢視靜態影象和影片流,分別是

http://192。168。XXX。XXX/capture和http://192。168。XXX。XXX:81/stream