1.ESP32-CAM 下使用 ESP-IDF 打开摄像头

主要资料:

  • 乐鑫官方编程指南 ESP-IDF 编程指南
  • 安信可官方模块页 安信可-ESP32-CAM摄像头开发板
  • 官方使用教程 安信可ESP32-CAM摄像头开发demo–局域网拍照、实时视频、人脸识别 (开发环境是Linux)

本文目标是在 Windows 下跑通摄像头 hello world 程序。之后再在Linux下跑程序。

ESP32-CAM 简介

ESP32-CAM是安信可最新发布小尺寸的摄像头模组。
本体:
image.png
可以用OV2640/OV7670摄像头。

管脚定义:

摄像头和SD卡管脚定义:

使用ESP-IDF

之前折腾过了,直接给结论:最简单的安装方法就是通过 vscode+espidf。
官方教程:vscode-esp-idf-extension/docs/tutorial/install.md。安装时自备梯子,如果没有,可以考虑下离线版的idf:ESP32 开发环境的搭建与详解。

基本使用

创建基本项目不赘述,basic_use.md, 或扩展首页的使用说明即可,翻译在这里。
需要注意的是,烧录时使用串口即可,JTAG太麻烦(RISC-V的JTAG还挺难找)。

如果需要JTAG调试,参考:配置其他 JTAG 接口。
image.png

我用ESP32-CAM 烧录的时候,一直不成功,便把 boot0 接地即可。参考:关于ESP32下载的几个小问题。

Windows下测试摄像头 (这节别看,放弃Win下的ESP-IDF了

  1. 克隆这个项目 Ai-Thinker-Open_ESP32-CAMERA_LAN

    克隆时需要拉取子模块,如果使用 git clone --recursive git@github.com:Ai-Thinker-Open/Ai-Thinker-Open_ESP32-CAMERA_LAN.git(recursive 递归拉取子模块)会超级慢,
    可以用 git clone --depth 1 git@github.com:Ai-Thinker-Open/Ai-Thinker-Open_ESP32-CAMERA_LAN.git depth=1 只拉取最新版本不拉取历史,这样的话主模块是浅拉取,但是子模块还是全拉取特别慢。
    先拉取单独的主模块
    git clone --depth 1 git@github.com:Ai-Thinker-Open/Ai-Thinker-Open_ESP32-CAMERA_LAN.git
    再拉取子模块 git submodule update --init --depth 1 --recursive 初始化、浅拉取、递归拉取。这样也得重试好几次才能成功。

    移动到examples 目录下,创建项目,
    配置时还会报错,mdns 模块不存在,因为esp who 项目再IDF V5.0中移除了mdns
    image.png
    手动下载 who-idfV5.0-mdns , 拉取或下载这个版本的 idf-who,然后复制 mdns到本地 Ai-Thinker-Open_ESP32-CAMERA_LAN\components 目录下。

  2. target 和 配置

    还需要修改项目下的 CMakeLists.txt 中的components路径
    image.png
    接着配置,即可成功。

  3. build

    编译时候一些函数不存在。
    error: 'portTICK_RATE_MS' undeclared 新版本中用 portTICK_PERIOD_MS 来替代了,要在配置中的 FreeRTOS下勾选 configENABLE_BACKWARD_COMPATIBILITY (兼容以前)配置。

    error: implicit declaration of function ‘periph_module_enable’

Two thousand years later …
总之,编译各种出错。遂放弃,后续Windows 下用Arduino开发。我决定去使用Linux版了

Linux 下 ESP-IDF 环境安装

参考 安信可ESP32-CAM摄像头开发demo–局域网拍照、实时视频、人脸识别 教程。
如果使用 ./install.sh 时 的 python 下载时慢,可以添加系统代理。

export http_proxy="http://127.0.0.1:1231"
export https_proxy="http://127.0.0.1:1231"

然后继续安装,出现了错误,好像是pip安装哪个库时出现了版本依赖错误

#python-2-support pip 21.0 will remove support for this functionality.
Requirement already satisfied: setuptools in /home/chad/.espressif/python_env/idf4.0_py2.7_env/lib/python2.7/site-packages (from -r /home/chad/data/ai-thinker/esp-idf/requirements.txt (line 4)) (44.1.1)
Collecting click>=5.0Using cached click-7.1.2-py2.py3-none-any.whl (82 kB)
Collecting pyserial>=3.0Using cached pyserial-3.5-py2.py3-none-any.whl (90 kB)
Collecting future>=0.15.2Using cached future-1.0.0.tar.gz (1.2 MB)
Collecting cryptography>=2.1.4Using cached cryptography-3.3.2-cp27-cp27mu-manylinux2010_x86_64.whl (2.6 MB)
Collecting pyparsing<2.4.0,>=2.0.3Using cached pyparsing-2.3.1-py2.py3-none-any.whl (61 kB)
Collecting pyelftools>=0.22Using cached pyelftools-0.31.tar.gz (14.1 MB)Installing build dependencies ... errorERROR: Command errored out with exit status 1:command: /home/chad/.espressif/python_env/idf4.0_py2.7_env/bin/python /home/chad/.espressif/python_env/idf4.0_py2.7_env/lib/python2.7/site-packages/pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-krjwBt/overlay --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- 'setuptools >= 46.4.0'cwd: NoneComplete output (3 lines):DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality.ERROR: Could not find a version that satisfies the requirement setuptools>=46.4.0 (from versions: 0.6b1, 0.6b2, 0.6b3, ..., 44.1.1)ERROR: No matching distribution found for setuptools>=46.4.0----------------------------------------
ERROR: Command errored out with exit status 1: /home/chad/.espressif/python_env/idf4.0_py2.7_env/bin/python /home/chad/.espressif/python_env/idf4.0_py2.7_env/lib/python2.7/site-packages/pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-krjwBt/overlay --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- 'setuptools >= 46.4.0' Check the logs for full command output.
Traceback (most recent call last):File "/home/chad/data/ai-thinker/esp-idf/tools/idf_tools.py", line 1387, in <module>main(sys.argv[1:])File "/home/chad/data/ai-thinker/esp-idf/tools/idf_tools.py", line 1383, in mainaction_func(args)File "/home/chad/data/ai-thinker/esp-idf/tools/idf_tools.py", line 1196, in action_install_python_envsubprocess.check_call(run_args, stdout=sys.stdout, stderr=sys.stderr)File "/usr/lib/python2.7/subprocess.py", line 190, in check_callraise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['/home/chad/.espressif/python_env/idf4.0_py2.7_env/bin/python', '-m', 'pip', 'install', '--no-warn-script-location', '-r', '/home/chad/data/ai-thinker/esp-idf/requirements.txt']' returned non-zero exit status 1

排查发现,这个包是Collecting pyelftools>=0.22,看到这张图中安装的是0.26

从之前的日志能看到依赖文件 /home/chad/data/ai-thinker/esp-idf/requirements.txt里面是:

  1 # This is a list of python packages needed for ESP-IDF. This file is used w    ith pip.                                                                   2 # Please see the Get Started section of the ESP-IDF Programming Guide for f    urther information.3 #4 setuptools5 # The setuptools package is required to install source distributions and on     some systems is not installed by default.6 # Please keep it as the first item of this list.7 #8 click>=5.09 pyserial>=3.010 future>=0.15.211 cryptography>=2.1.412 pyparsing>=2.0.3,<2.4.013 pyelftools>=0.22 // 改成: pyelftools>=0.22,<0.28

pyelftools>=0.22 改为 pyelftools>=0.22,<0.28,安装即可。

make menuconfig 时出错

fatal error: ncurses.h: No such file or directory

因为缺少库,编译Busybox时,出现错误fatal error: curses.h: No such file or directory
使用 sudo apt-get install libncurses5-dev libncursesw5-dev安装即可。
再次运行,最后出错

b_server/sdkconfig.defaults...
Your display is too small to run Menuconfig!
It must be at least 19 lines by 80 columns.
make: *** No rule to make target 'menuconfig', needed by '/home/chad/data/ai-thinker/examples/single_chip/camera_web_server/sdkconfig'.  Stop.

这个不慌,界面太小了,放大即可。

编译:make
编译完成后提醒烧录指令

To flash all build output, run 'make flash' or:
python /home/chad/data/ai-thinker/esp-idf/components/esptool_py/esptool/esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 230400 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size detect 0x1000 /home/chad/data/ai-thinker/examples/single_chip/camera_web_server/build/bootloader/bootloader.bin 0x10000 /home/chad/data/ai-thinker/examples/single_chip/camera_web_server/build/camera_web_server.bin 0x8000 /home/chad/data/ai-thinker/examples/single_chip/camera_web_server/build/partitions.bin

make flash, 或 xxxxx
我用 make flash 烧录时报错

: recipe for target 'flash' failed
make: *** [flash] Error 1

便试着用比较长的那个指令,可以~

打开串口监听 make monitor
如果报权限错误可以先 su root 再打开
image.png
没有显示连接成功,
但是在路由器界面可以看到连接了
image.png

访问:
image.png
手机端查看
image.png
成功了。后续需要使用Arduino在Windows下开发吧。

其他:
ESP32-CAM 故障排除指南:修复的最常见问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3269051.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

大数据-52 Kafka 基础概念和基本架构 核心API介绍 应用场景等

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

苍穹外卖01

0. 配置maven (仅一次的操作 1.项目导入idea 2. 保证nginx服务器运行 &#xff08;nginx.exe要在非中文的目录下&#xff09; 开启服务&#xff1a; start nginx 查看任务进程是否存在&#xff1a; tasklist /fi "imagename eq nginx.exe" 关闭ngi…

【优秀python web系统毕设】基于python的全国招聘数据分析可视化系统,包括随机森林算法

1.1 研究背景 自1997年互联网开始在国内的招聘行业发展至今已有二十几年的历史&#xff0c;互联网招聘进入了蓬勃发展的“黄金时代”。根据智研咨询发布的《2023年中国互联网招聘行业发展现状》报告显示&#xff0c;截至2023年5月&#xff0c;中国互联网招聘平台中&#xff0c…

Navicat 17 新特性 | Navicat BI 功能革新升级,助力企业深度挖掘数据潜能

随着 Navicat 17 的发布&#xff0c;在业界引起了广泛的共鸣与热议。我们曾深入剖析其众多革新特性&#xff0c;包括模型设计创新与优化、高效的查询与配置、用户界面交互体验再升级&#xff0c;原生适配国产平台和操作系统和数据字典提升数据结构清晰度&#xff0c;这些新特性…

MySQL查询优化 limit 100000,10加载很慢该怎么优化

需求&#xff1a;查询19年以后发布的商品 数据库表结构如下&#xff1a; 目前数据量&#xff1a;264751 优化前执行时间&#xff1a;0.790s 优化后执行时间&#xff1a;0.467s select id,no,title,cart_title,cid_name from tb_item where id > (select id from tb_item …

Gitlab以及分支管理

一、概述 Git 是一个分布式版本控制系统&#xff0c;用于跟踪文件的变化&#xff0c;尤其是源代码的变化。它由 Linus Torvalds 于 2005 年开发&#xff0c;旨在帮助管理大型软件项目的开发过程。 二、Git 的功能特性 Git 是关注于文件数据整体的变化&#xff0c;直接会将文件…

【Beyond Compare】Beyond Compare下载、安装与使用详细教程

目录 &#x1f33a;1 概述 &#x1f384;2 Beyond Compare 安装包下载 &#x1f33c;3 安装详细教程 &#x1f342;4 免费注册 &#x1f30d;5 使用详情 &#x1f33a;1 概述 Beyond Compare 是一款强大的文件和文件夹比较工具&#xff0c;广泛应用于软件开发、文档管理和…

论文中的流程图参考图片

写论文的时候&#xff0c;在绘制流程图时&#xff0c;一直纠结n是大写还是小写&#xff0c;用不用斜体&#xff0c;号两边要不要空格。今天找到了一张标准的流程图来参考。图片来自 Zhi-Chang Ba et al, Combination of DCE-MRI and NME-DWI via Deep Neural Network for Predi…

[Unity] ShaderGraph实现镜头加速线/残血效果 URP

效果如下所示&#xff1a;残血状态时&#xff0c;画面会压暗角&#xff0c;并出现速度线营造紧迫感。 使用到的素材如下&#xff0c;换别的当然也可以。[这是张白色的png放射图&#xff0c;并非皇帝的新图hhh] 这个效果的实现逻辑&#xff0c;其实就是利用time向圆心做透明度的…

【全国大学生电子设计竞赛】2023年G题

&#x1f970;&#x1f970;全国大学生电子设计大赛学习资料专栏已开启&#xff0c;限时免费&#xff0c;速速收藏~

Windows11安装WSL2 笔记240726

以管理员身份打开控制台输入 wsl --status wsl --status如果什么也没有,说明系统还未安装WSL , 执行 wsl --install 进行安装 wsl --install安装完成后, 再次执行 wsl --status 可看到 wsl --status 默认版本: 2 当前计算机配置不支持 WSL1。 若要使用 WSL1&#xff0c;请启用…

CentOS配置NTP服务

更改配置文件 [rootController ~]# vim /etc/chrony.conf 重启服务并设置为开机自启动 [rootController ~]# systemctl restart chronyd.service [rootController ~]# systemctl enable chronyd.service 在另一台CentOS测试 更改配置文件 [rootCompute ~]# vim /etc/chron…

idea 自动生成pojo类

找到这个View>Tool Windows>Database配置数据库 配置好后刷新&#xff0c;查看是否连接上表 然后找到 点击后选择你将要生成的pojo需要保存到哪个文件&#xff0c;然后再次点击&#xff0c;就生成好了&#xff0c;然后自己稍作修改即可使用该pojo类了

AI绘画,100w+播放封神!1分钟教你制作AI视频!各地的守护神终于出现了

前言 神兽教程 这种视频怎么做&#xff0c;Lison也是熬夜很快写了拆解教程~ 一、获取提示词 首先在 Kimi 或者 GPT 上可以查询各个省份的特色动物是什么&#xff0c;用各个省份的特色动物去做这样的图会更有归属感一些。 例如四川是大熊猫&#xff0c;甘肃是马&#xff0c…

深度学习目标检测入门实战

深度学习目标检测入门实战 一、什么是目标检测二、目标检测常用的数据集&#xff08;开源&#xff09;&#xff08;一&#xff09;VOC数据集&#xff08;1&#xff09;背景知识&#xff08;2&#xff09;数据集的下载&#xff08;3&#xff09;VOC2007 数据集的标注&#xff08…

C++初学(4)

4.1、const限定符 如果程序在多个地方使用同一个常量&#xff0c;则需要修改该常量时&#xff0c;只需修改一个符号定义即可。前面介绍#define语句时说明过&#xff0c;C有更好的处理符号常量的方法&#xff0c;就是使用const关键字来修改变量声明和初始化。假设需要一个表示一…

【Python机器学习】朴素贝叶斯——基于贝叶斯决策理论的分类方法

k-近邻算法和决策树分类器有时会产生错误结果&#xff0c;这是可以要求分类器给出一个最优的类别猜测结果&#xff0c;同时给出这个猜测的概率估计值 概率论是许多机器学习算法的基础&#xff0c;所以深刻理解这一主题就非常重要。有一些使用概率论进行分类的方法。首先是从一…

Godot入门 06死亡机制1.0版

限制相机的底部滚动极限&#xff0c;使用标尺工具量出距离&#xff0c;设置距离为100&#xff0c;并设置平滑停止。 添加新场景&#xff0c;添加节点Area2D&#xff0c;设置碰撞的物理层为2&#xff0c;改节点名为Killzone。 拖动Killzone场景到Game场景中。给Killzone添加Coll…

NameSilo域名注册和解析2024版教程(附优惠码)

上次给大家介绍了国外知名的域名注册商Dynadot&#xff0c;今天再给大家分享另一家国外知名的域名注册商NameSilo&#xff0c;同样性价比很高。使用本站提供的优惠码&#xff1a;ieearn.com&#xff0c;你还可以在首次注册购买域名时享受1美元的优惠&#xff1a; NameSilo简介…

语言模型及数据集

一、定义 1、语言模型的目标是估计序列的联合概率&#xff0c;一个理想的语言模型就能够基于模型本身生成自然文本。 2、对一个文档&#xff08;词元&#xff09;序列进行建模&#xff0c; 假设在单词级别对文本数据进行词元化。 3、计数建模 &#xff08;1&#xff09;其中…