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://www.mzph.cn/bicheng/50925.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快手电商Android一面凉经(2024)

快手电商Android一面凉经(2024) 笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《快手电商Android一面凉经(2024)》。 面试职位: Android工程师 技术一面 面试形式…

python count返回什么

描述 count() 方法用于统计字符串中某个子字符串出现的次数&#xff0c;可选参数为开始搜索与结束搜索的位置索引。 语法 count() 方法语法&#xff1a; S.count(sub[,start0[,endlen(S)]]) 参数 sub -- 搜索的子字符串。 S -- 父字符串。 start -- 可选参数&#xff0c;…

【数据结构】哈希表的模拟实现

文章目录 1. 哈希的概念2. 哈希表与哈希函数2.1 哈希冲突2.2 哈希函数2.3 哈希冲突的解决2.3.1 闭散列&#xff08;线性探测&#xff09;2.3.2 闭散列的实现2.3.3 开散列(哈希桶)2.3.4 开散列的实现 2.4 开散列与闭散列比较 1. 哈希的概念 在我们之前所接触到的所有的数据结构…

FastAPI(八十一)实战开发《在线课程学习系统》接口开发-- 推荐课程列表与课程点赞

源码见&#xff1a;"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统" 推荐课程列表 逻辑很简单 点赞数 > 500 那么符合要求的课程是&#xff1a; def get_like_course(db: Session):"""获取推荐课程…

一番赏小程序搭建,线上一番赏市场

一番赏作为一个经久不衰的潮流市场&#xff0c;一直流行于消费者市场中。一番赏商品拥有不同系列&#xff0c;涵盖了热门动漫、漫画、影视等主题&#xff0c;商品包含了手办等周边商品&#xff0c;具有非常大的收藏价值。相比于其他潮玩模式&#xff0c;一番赏的性价比更高&…

Kylin 入门教程

Apache Kylin 是一个开源的分布式数据仓库和 OLAP(在线分析处理)引擎,旨在提供亚秒级查询响应时间,即使在处理超大规模数据集时也是如此。Kylin 可以有效地将原始数据预计算为多维数据立方体(Cube),并利用这些预计算结果来提供快速查询。本文将带你从基础知识到操作实践…

GC(垃圾收集)简析:为什么Java需要它?

GC&#xff08;垃圾收集&#xff09;简析&#xff1a;为什么Java需要它&#xff1f; 1、什么是GC&#xff1f;2、为什么Java需要GC&#xff1f;3、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、什么是GC&#xff1f; GC&#xff…

黄果树瀑布

早上我们按计划6点吃饭&#xff0c;可是酒店没水了&#xff0c;等我们吃完饭已经近七点 &#xff0c;到景区已经7点多了。景区入口的人特别多&#xff0c;验过包裹&#xff0c;只刷脸就进去了。排队坐大巴&#xff0c;向左是陡坡塘和七星桥。 第一站陡坡塘&#xff0c;服务中心…

synergy Ubuntu 18 和Windows 配置

下载链接 Windows 版本 https://altushost-swe.dl.sourceforge.net/project/synergy-stable-builds/v1.8.8-stable/synergy-v1.8.8-stable-Windows-x64.msi?viasf1Ubuntu 18 版本 sudo apt-get install synergy配置方式 我这边配置需求是 笔记本电脑&#xff08;Windows系统…

为什么用LeSS?

实现适应性 LeSS是一个产品开发的组织系统&#xff0c;旨在最大化一个组织的适应性。关于适应性&#xff08;或者敏捷性&#xff0c;也就是敏捷开发的初衷&#xff09;我们是指优化&#xff1a; 以相对低的成本改变方向的能力&#xff0c;主要是基于通过频繁交付产生的探索。从…

基于微信小程序的搬家服务系统(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝10W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 涉及技术栈&#xff1a;SpringBoot、Vue、SSM、H…

【PostgreSQL 16】专栏日常

本专栏从 3 个月前开始着手准备&#xff0c;利用周末及节假日的时间来整理。 ldczzDESKTOP-HVJOUVN MINGW64 ~/mypostgres (dev) $ git lg |tee * 7a7f468 - (HEAD -> dev, origin/main, origin/dev, main) 完成服务端编程的初步整理 (6 minutes ago) <Laven Liu> * …

将手机作为服务器运行docker服务

前言 目前手机的配置并不低&#xff0c;即使是2019年生产的一加七Pro&#xff0c;配置也有12256&#xff0c;CPU是骁龙855&#xff0c;作为服务器运行着配置绰绰有余了&#xff0c;二手的价格现在是400左右也能接受。相对于是自带ups电源的便携低耗docker服务器&#xff0c;还…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第六十一章 Linux内核定时器

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第四十二章 LED驱动实验

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

【python014】Python爬取并解析潮汐天气简报-潮历数据

1.欢迎点赞、关注、批评、指正&#xff0c;互三走起来&#xff0c;小手动起来&#xff01; 【python014】Python爬取并解析潮汐天气简报-潮历数据&#xff0c;源代码下载【python014】Python爬取并解析潮汐天气简报-潮历数据&#xff0c;源代码下载【python014】Python爬取并解…

EtherNet/IP转Profinet协议转化网关(功能与配置)

如何将EtherNet/IP和Profinet网络连接通讯起来呢?近来几天有几个朋友问到这个问题&#xff0c;那么作者在这里统一说明一下。其实有一个不错的设备产品可以很轻易地解决这个问题&#xff0c;名为捷米特JM-PN-EIP。接下来作者就从该设备的功能及配置详细说明一下。 一&#xf…

Leetcode283. 移动零(java实现)

今天分享的题目是leetcode283移动0&#xff08;成都人狂喜&#xff09; 先来看下题目描述 这道题目我也看了官方的题解感觉有点冗余了。 那么我们就不用官方的题解了&#xff0c;分享下我们自己的解体方式。 解题步骤&#xff1a;1.找到非0元素&#xff0c;如果是非0进行记录2…

CentOS6.0安装telnet-server启用telnet服务

CentOS6.0安装telnet-server启用telnet服务 一步到位 fp"/etc/yum.repos.d" ; cp -a ${fp} ${fp}.$(date %0y%0m%0d%0H%0M%0S).bkup echo [base] nameCentOS-$releasever - Base baseurlhttp://mirrors.163.com/centos-vault/6.0/os/$basearch/http://mirrors.a…

永劫无间游戏辅助攻略:2024阵容搭配攻略大全!云手机辅助!

《永劫无间》是一款备受玩家喜爱的动作类游戏&#xff0c;其丰富的角色选择和多样的技能搭配让玩家在战斗中体验到了极大的乐趣。然而&#xff0c;要在竞争激烈的战场上脱颖而出&#xff0c;仅仅依靠基础的游戏理解是远远不够的。为了帮助广大玩家提升战斗力&#xff0c;本文将…