1602浏览
查看: 1602|回复: 3

[ESP8266/ESP32] 在CircuitPython中使用FireBeetle 2 ESP32-S3上的摄像头

[复制链接]
本帖最后由 HonestQiao 于 2023-9-10 11:47 编辑

FireBeetle 2 ESP32-S3套装,带有OV2640的摄像头,官方WiKi还提供了Arduino下面的教程: DFROBOT DFR0975 FireBeetle 2 Board ESP32-S3 产品资料 进阶教程
要使用这个摄像头,除了通用的ov2640驱动外,还需要 AXP313A 支持库,来控制给摄像头上电和断电。
AX0313A的支持库,可以从:cdjq/DFRobot_AXP313A (github.com) 下载。

在上述AX0313A的库中,还提供了micropython下的AX0313A库。
参考该库,经过简单修改,适配到了CircuitPython,以下为其使用方法。

一、直接上手试用
首先接好摄像头,摆好POSE:
在CircuitPython中使用FireBeetle 2 ESP32-S3上的摄像头图4


然后,直接从: DFRobot_AXP313A/CircuitPython at master · HonestQiao/DFRobot_AXP313A (github.com) 下载下面的文件:
在CircuitPython中使用FireBeetle 2 ESP32-S3上的摄像头图6
先将AXP313A.py上传到开发板的/lib/目录。


再将开发板上根目录下的 boot.py,参考如下进行修改:【如没有,则直接新建】
在CircuitPython中使用FireBeetle 2 ESP32-S3上的摄像头图1
  1. import storage
  2. storage.remount("/", False)
复制代码

注意:
1. 修改后,使得CircuitPython可以写入到内置存储,但将不能再电脑上直接进入U盘修改文件。
2. 在编辑器中,修改上述Flase为True,或者直接注释掉上面的行,就恢复原样。

再将开发板上根目录下的 settings.toml,参考如下进行修改:【如没有,则直接新建】
在CircuitPython中使用FireBeetle 2 ESP32-S3上的摄像头图5
  1. CIRCUITPY_RESERVED_PSRAM=1048576
复制代码


特别注意:
1. settings.toml 必须修改,否则必然出错
2. boot.py 在存储图片到内置存储时,必须修改为True,否则必然出错;如存储到SD卡,则可以用False


现在务必按RST按键重置,就可以直接使用 dfrobot_firebeetle_2_board_esp32_s3_camera_demo.py 进行测试,运行输出的结果如下:
在CircuitPython中使用FireBeetle 2 ESP32-S3上的摄像头图2

运行完成后,在开发板的根目录中,会生成test_001.jpg,将该文件拷贝出来,点击查看,即为通过通过摄像头拍摄的照片:
在CircuitPython中使用FireBeetle 2 ESP32-S3上的摄像头图3


二、AX0313A.py说明
在该文件中,有具体的演示代码:
  1. if __name__ == "__main__":
  2.     import busio
  3.    
  4.     delay = lambda n: time.sleep(n/1000)
  5.    
  6.     print("i2c init")
  7.     i2c = busio.I2C(scl=board.GPIO2, sda=board.GPIO1)
  8.     while not i2c.try_lock():
  9.         print("try lock");
  10.         delay(1000)
  11.     i2c.unlock()
  12.     delay(1000)
  13.     print("AXP313A init")
  14.     axp = AXP313A(i2c)
  15.     delay(1000)
  16.     print("AXP313A begin")
  17.     while not axp.begin():
  18.         print("init error");
  19.         delay(1000)
  20.    
  21.     delay(1000)
  22.     print("AXP313A enable_camera_power")
  23.     axp.enable_camera_power(eOV2640) # 设置摄像头供电 power on
  24.    
  25.     delay(3000)
  26.     print("AXP313A disable_power")
  27.     axp.disable_power() # 设置摄像头断电 power off
  28.     print("i2c deinit")
  29.     i2c.deinit()
复制代码


上述代码把基本功能,演示得非常清楚了,主要就是:
* 初始化I2C
* 实例化AXP313A对象,并传入i2c
* AXP313A.begin():通过I2C寻找摄像头
* AXP313A.enable_camera_power(eOV2640):上电
* AXP313A.disable_power():断电

三、摄像头使用
dfrobot_firebeetle_2_board_esp32_s3_camera_demo.py中的演示,已经很详细了,也步骤清晰明了。
首先是引脚的定义:

  1. # 数据引脚定义 data pins
  2. CAMERA_DATA = (
  3.     board.GPIO39,
  4.     board.GPIO40,
  5.     board.GPIO41,
  6.     board.GPIO4,
  7.     board.GPIO7,
  8.     board.GPIO8,
  9.     board.GPIO46,
  10.     board.GPIO48
  11. )
  12. # 控制引脚定义 controll pins
  13. CAMERA_PCLK=board.GPIO5
  14. CAMERA_VSYNC=board.GPIO6
  15. CAMERA_HREF=board.GPIO42
  16. CAMERA_XCLK=board.GPIO45
复制代码


然后使用circuitpython为esp32提供的摄像头库espcamera操作即可:
* espcamera.Camera():初始化摄像头
* cam.reconfigure():输出设置
* cam.take(1):截取当前一帧

截取到了图像,演示中,再存储到test_001.jpg中。

在实际使用中,还可以将获取的图像,输出到LCD进行显示。



四、常见错误
1. 出错提示:espidf.IDFError: Requested resource not found
    问题原因:摄像头没接,或者接的不对
在CircuitPython中使用FireBeetle 2 ESP32-S3上的摄像头图7
    解决方法:参考教程,重新连线,然后断开USB,重新连接
在CircuitPython中使用FireBeetle 2 ESP32-S3上的摄像头图10
在CircuitPython中使用FireBeetle 2 ESP32-S3上的摄像头图14





2. 出错提示:MemoryError
在CircuitPython中使用FireBeetle 2 ESP32-S3上的摄像头图8

在CircuitPython中使用FireBeetle 2 ESP32-S3上的摄像头图9

    问题原因:settings.toml未设置或设置错误,或设置后没有按RST按键重置

    解决办法:参考前面的指导设置,设置完成后,务必按RST按键重置,然后继续
在CircuitPython中使用FireBeetle 2 ESP32-S3上的摄像头图11


3. 出错提示:OSError: [Errno 30] Read-only filesystem
在CircuitPython中使用FireBeetle 2 ESP32-S3上的摄像头图12

    问题原因:使用内置存储时,boot.py未设置或未按要求设置,或设置后没有按RST按键重置

    解决办法:参考前面的指导设置,设置完成后,务必按RST按键重置,然后继续

在CircuitPython中使用FireBeetle 2 ESP32-S3上的摄像头图13



SatSeptember-202309094749..png

HonestQiao  初级技匠
 楼主|

发表于 2023-9-9 19:46:00

补充:
有人问:为什么从瓶子里伸出来[旺柴]
回复:固定摄像头啊!不然用一直用手扶着么?
回复

使用道具 举报

豆爸  高级技师

发表于 2023-9-9 22:48:53

在CircuitPython中使用FireBeetle 2 ESP32-S3上的摄像头图1

跑你的demo,报上面错误是啥问题?
回复

使用道具 举报

HonestQiao  初级技匠
 楼主|

发表于 2023-9-10 10:46:35

豆爸 发表于 2023-9-9 22:48
跑你的demo,报上面错误是啥问题?

请参考常见问题2
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail