ESP32-CAM 網(wǎng)路與攝像頭應(yīng)用
在進(jìn)行 ESP32-CAM 網(wǎng)路應(yīng)用時會用到 ESP32-CAM 的 Wi-Fi 與 攝像頭(Camera)模塊,而先前安裝的是 ESP-32 官方所提供的固件,并不支援?dāng)z像頭(Camera)模塊,所以必須下載支援 ESP32-CAM 的固件,才能驅(qū)動攝像頭(Camera)模塊,可以在這里(提取碼ccit)下載到所需要的固件,以下簡單用 esptool 進(jìn)行刪除原固件并重新上傳固件。
燒錄 ESP32-CAM 固件
將 ESP32-CAM 硬件設(shè)定成下載模式,接著刪除原有固件、燒錄新固件。
# Mac
esptool.py --chip esp32 --port /dev/cu.usbserial-14110 erase_flash
esptool.py --chip esp32 --port /dev/cu.usbserial-14110 --baud 460800 write_flash -z 0x1000 micropython_camera_feeeb5ea3_esp32_idf4_4.bin
# Windows
esptool --chip esp32 --port COM3 erase_flash
esptool --chip esp32 --port COM3 --baud 460800 write_flash -z 0x1000 "E:\22-23-2\bin\micropython_camera_feeeb5ea3_esp32_idf4_4.bin"
進(jìn)入調(diào)適模式后,進(jìn)行遠(yuǎn)程調(diào)適 MicroPython。
# Mac
mpremote connect /dev/cu.usbserial-14110 repl
# Windows
mpremote connect COM3 repl
透過 help(‘modules’) 命令,可以列出內(nèi)建的模塊。因為是 ESP32-CAM ,所以會多出一個 camera 模塊,用來存取攝像頭之用。透過 uplatform 模塊可以獲得平臺的開發(fā)信息 MicroPython-1.18.0-xtensa-IDFv4.4-beta1-286-gb64925c567-with-newlib3.3.0
help('modules')
import uplatform as platform
platform.platform()
- 開發(fā)語言: MicroPython-1.18
- 處理器: xtensa
- 開發(fā)框架: IDFv4.4
- 函式庫: newlib3.0.0
圖 1. 下載 MicroPython for ESP32-CAM 燒錄檔固件到 ESP32-CAM
ESP32-CAM Web 服務(wù)器
以下會展示以 ESP32-CAM 做為 Web 服務(wù)器的示例,下圖說明其運(yùn)作架構(gòu),首先,ESP32-CAM 與個人電腦都要先連上同一個子網(wǎng)的存取點(Access Point, AP),這樣 ESP32-CAM 與個人電腦才能相互溝通,接著 ESP32-CAM 將會擔(dān)任 Web 服務(wù)器的角色,而個人電腦則是透過瀏覽器來觀看網(wǎng)頁結(jié)果。
圖 2. ESP32-CAM Web 服務(wù)器架構(gòu)說明
接下來的代碼比較復(fù)雜,以下練習(xí)都以 Thonny 來進(jìn)行,首先,連上 Wi-Fi AP,因為 AP 的ssid與password每個人都不一樣,所以以 ‘your-ssid’ 跟 ‘your-password’ 來表示,在實際運(yùn)行時,記得更換為自己的 ssid 與 password。
原始代碼
# enable station interface and connect to WiFi access point
import network
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
print('connecting to network...')
wlan.connect('your-ssid', 'your-password')
while not wlan.isconnected():
pass
print('network config: ', wlan.ifconfig())
打開 Thonny 后,先注意視窗右下方的配置是否正確,1. 包含了解釋器、開發(fā)版與串口,將以上代碼復(fù)制、粘貼在 Thonny 的視窗,并 2. 按下綠色運(yùn)行鍵,執(zhí)行結(jié)果會出現(xiàn)在 3. 下方的 Shell 視窗中。
圖 3. Thonny 開發(fā)畫面
如果出現(xiàn) network config: (XXX)
表示連線成功,接著在本機(jī)取得 microdot.py 原始檔(百度云盤,提取碼ccit),透過 Thonny 的畫面打開,如下圖所示。
圖 4. Thonny 打開文件
圖 5. Thonny 打開本地的 microdot.py 文件
接著將 microdot.py 存到 ESP32-CAM 上,在前面章節(jié)有介紹到可以利用遠(yuǎn)端存取(mpremote)方式進(jìn)行,但現(xiàn)在開啟 Thonny 后會占用端口,導(dǎo)致無法運(yùn)行,所以直接在 Thonny 中運(yùn)行。單擊上方工作列的 檔案,選擇 另存為 ,如下圖所示。
圖 6. Thonny 將本地文另存為其他文件
接著會彈出一個畫面,選擇存到哪一個設(shè)備,選擇 MicroPython設(shè)備。
圖 7. Thonny 選擇存到 MicroPython設(shè)備
在 MicroPython設(shè)備 中單擊右鍵,選擇新建文件夾…,輸入 lib。
圖 8. Thonny 新建文件夾
進(jìn)入 lib 文件夾,文件名輸入 microdot.py后,單擊 好的
圖 9. 另存為 microdot.py
會出現(xiàn)上傳畫面。
圖 10. 正在保存 microdot.py 到 MicroPython設(shè)備
在 Shell 中輸入以下源代碼運(yùn)行,如果運(yùn)行成功會出現(xiàn) Starting … 等信息,如下圖所示。
原始代碼
from microdot import Microdot
app = Microdot()
@app.route('/')
def index(request):
return 'Hello, world Microdot!'
app.run(debug=True)
圖 11. 導(dǎo)入 microdot 包,架構(gòu) Web 服務(wù)器
輸出結(jié)果為:
Starting sync server on 0.0.0.0:5000...
重要:將本機(jī)連上與 ESP32-CAM 相同的子網(wǎng)后,打開瀏覽器,并輸入 192.168.254.160:5000,如果看到輸出,表示ESP32-CAM 所架構(gòu)的 Web 服務(wù)器已經(jīng)成功建置。
圖 12. 使用本機(jī)瀏覽器觀看ESP32-CAM 的 Web 服務(wù)器
上電執(zhí)行 Web 服務(wù)器
在 MicroPyhon 中,main.py 是事先定義好的文件,以上的范例我們將 Wi-Fi 連線與 Web 服務(wù)器的部份則寫在 main.py 中
main.py
import network
from microdot import Microdot
# 填上 Wi-Fi 連線信息
SSID = "<PLACE_YOUR_SSID_HERE>"
SSI_PASSWORD = "<PLACE_YOUR_WIFI_PASWORD_HERE>"
def connect_WiFi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
print('connecting to network...')
wlan.connect(SSID, SSI_PASSWORD)
while not wlan.isconnected():
pass
print('network config: ', wlan.ifconfig())
# 連線 Wi-Fi
connect_WiFi()
app = Microdot()
@app.route('/')
def index(request):
return 'Hello, world Microdot!'
# 啟動 Web 服務(wù)器
app.run(debug=True)
圖 13. 確認(rèn)所需文件都已經(jīng)保存在 ESP32-CAM
將 ESP32-CAM 直接透過充電寶供電,并打開電腦的瀏覽器觀看結(jié)果。
圖 14. 充電寶上電執(zhí)行 Web 服務(wù)器文章來源:http://www.zghlxwxcb.cn/news/detail-449812.html
需先記錄 ESP32-CAM 所占用的 IP 位址,輸入電腦的瀏覽器就可以觀看結(jié)果
圖 15. 電腦的瀏覽器觀看結(jié)果文章來源地址http://www.zghlxwxcb.cn/news/detail-449812.html
參考資料
- ESP32 Technical Reference Manual,https://www.espressif.com/sites/default/files/documentation/esp32_technical_reference_manual_en.pdf
- Espressif IoT Development Framework, https://github.com/espressif/esp-idf
- ESP32-CAM firmware, https://github.com/lemariva/micropython-camera-driver/blob/master/firmware/micropython_camera_feeeb5ea3_esp32_idf4_4.bin
- MicroPython: Taking photos with an ESP32-CAM, https://lemariva.com/blog/2019/09/micropython-how-about-taking-photo-esp32
- microdot, https://github.com/miguelgrinberg/microdot
- A Simple Microdot Web Server, https://microdot.readthedocs.io/en/latest/
- 關(guān)于MicroPython mpremote工具 的一些用例, https://www.cnblogs.com/Wind-stormger/p/16659124.html
- micropython-camera-driver, https://github.com/lemariva/micropython-camera-driver
- Refresh image with a new one at the same url, https://stackoverflow.com/questions/1077041/refresh-image-with-a-new-one-at-the-same-url
到了這里,關(guān)于ESP32-CAM 網(wǎng)路與攝像頭應(yīng)用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!