ESP-IDF

IDF版本测试了v5.0.4v5.3两个版本,5.3的直接按流程烧录会报错误,5.0.4的没问题

下载:dl.espressif.cn/dl/esp-idf/

esp-idf-tools-setup-ofline-X.X.exe

1
2
3
4
5
6
7
8
git clone https://github.com/espressif/esp-iot-solution.git
cd ~/esp-iot-solution/examples/usb/device/usb_webcam/
# 设置板子
idf.py set-target esp32s3
# 指定端口构建并烧录
idf.py -p com12 build flash
# 指定端口监听输出(直接串口工具会乱码)
idf.py -p com12 monitor

项目配置

1
idf.py menuconfig

读取摄像头

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import cv2

# 打开摄像头,参数0表示第一个摄像头,如果有多个摄像头可以尝试1, 2, 3等
cap = cv2.VideoCapture(1)

if not cap.isOpened():
print("无法打开摄像头")
exit()

while True:
# 读取摄像头的一帧
ret, frame = cap.read()

if not ret:
print("无法接收帧 (stream end?). Exiting ...")
break

# 显示这一帧
cv2.imshow('Image', frame)

# 按下'q'键退出循环
if cv2.waitKey(1) == ord('q'):
break

# 释放摄像头并关闭所有OpenCV窗口
cap.release()
cv2.destroyAllWindows()

串口手动烧录

要使ESP32进入下载模式(也称为DFU模式或Bootloader模式),您需要按照以下步骤操作:

  1. 准备工具:确保您有用于烧录的工具,例如 esptool.py,以及与ESP32通信的USB转串口适配器。
  2. 断电:首先,断开ESP32的电源。
  3. GPIO0引脚:将GPIO0引脚拉低到地(GND)。这可以通过将GPIO0引脚通过一个跳线连接到GND来实现。
  4. 按住BOOT按钮:在保持GPIO0引脚拉低的情况下,按住BOOT按钮。
  5. 上电:在按住BOOT按钮的同时,给ESP32上电。
  6. 等待:继续按住BOOT按钮几秒钟,直到ESP32启动并进入下载模式。
  7. 释放按钮:一旦ESP32进入下载模式,您可以释放BOOT按钮。
  8. 连接电脑:使用USB转串口适配器将ESP32连接到电脑。

https://cdn.ziyourufeng.eu.org/51hhh/img_bed/main/img/2024/10_05/image_a57cf6bdeee800f02920c516ed68698a.png

URXD->TXD
UTXD->RXD
5V->5V
GND->GND

IO0和EN使用杜邦线引出

将其两接GND即相当于BOOT和RESET按钮

其EN为esp32使能,由10KΩ电阻到3.3v拉高,当RESET按下,拉低EN,esp32停止,再拉高,相当于重启。

BOOT拉低为进入下载模式

按下BOOT按键,再按下松开RST按键,最后松开BOOT按键,此时串口会显示

1
2
3
4
ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x1 (POWERON),boot:0x23 (DOWNLOAD(USB/UART0))
waiting for download

即为成功进入下载模式,此时即可选择ch340对应端口进行烧录

https://cdn.ziyourufeng.eu.org/51hhh/img_bed/main/img/2024/10_05/2941d87189cb4d902d981f500b5b9167_fbe802f764817ac5def231f8a5c7c918.jpg

io口

pcb上io即对应esp32的io口

https://cdn.ziyourufeng.eu.org/51hhh/img_bed/main/img/2024/10_05/image_757c0ad248447da5c79c6f8f48ceb766.png

https://cdn.ziyourufeng.eu.org/51hhh/img_bed/main/img/2024/10_05/image_aa54b6246d97b7eca16a3980af2876f8.png

修改flash大小

默认4M,可修改我板子实际大小

1
W (95) spi_flash: Detected size(16384k) larger than the size in the binary image header(4096k). Using the size in the binary image header.

https://cdn.ziyourufeng.eu.org/51hhh/img_bed/main/img/2024/10_05/image_ba2d275f9b412e500d1985eb3eb77c35.png

https://cdn.ziyourufeng.eu.org/51hhh/img_bed/main/img/2024/10_05/image_db6e6386649b801ba2ffb11a6fd769aa.png

分区表

项目文件中的partitions.csv

https://cdn.ziyourufeng.eu.org/51hhh/img_bed/main/img/2024/10_05/image_032f581554637482a79b30dce29ebb63.png

1
2
3
4
5
# Name,     Type, SubType, Offset,   Size, Flags
# Note: if you have increased the bootloader size, make sure to update the offsets to avoid overlap
nvs, data, nvs, 0x9000, 0x6000,
factory, 0, 0, 0x10000, 10M

修改引脚

通过 idf.py menuconfig 设定OV2640 的引脚

https://cdn.ziyourufeng.eu.org/51hhh/img_bed/main/img/2024/10_05/image_acc607f32d35038efe3f2d966c06cc7a.png

https://cdn.ziyourufeng.eu.org/51hhh/img_bed/main/img/2024/10_05/image_6fbaf68aa8dcf3cd3957d7d8b226d09e.png

https://cdn.ziyourufeng.eu.org/51hhh/img_bed/main/img/2024/10_05/image_4e4197f029fdfae6455b6d48d1b82a34.png

https://cdn.ziyourufeng.eu.org/51hhh/img_bed/main/img/2024/10_05/image_e5863aa211afcc38a5aba74ca353730b.png

也可以直接sdkconfig文件中修改

https://cdn.ziyourufeng.eu.org/51hhh/img_bed/main/img/2024/10_05/image_4eb3d0ee22c8f1b3bc4b190707c5a00e.png

https://cdn.ziyourufeng.eu.org/51hhh/img_bed/main/img/2024/10_05/image_f4aacc7ecf10b18c16aa713f582b1d59.png

然后去掉PSRAM 的支持

.fb_location = CAMERA_FB_IN_DRAM 这里指定摄像头使用 ESP32 内置 RAM 即可。

https://cdn.ziyourufeng.eu.org/51hhh/img_bed/main/img/2024/10_05/image_52628251c22517b64b4bb0b51e09addc.png