ESP32-CAM 使用 MicroPython 进行开发 - 使用图形化工具 Thonny (Mac)
Posted Yehchitsai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ESP32-CAM 使用 MicroPython 进行开发 - 使用图形化工具 Thonny (Mac)相关的知识,希望对你有一定的参考价值。
ESP32-CAM 开发工具
目录
ESP32-CAM是安信可发布小尺寸的摄像头模组。该模块可以作为最小系统独立工作,尺寸仅为2740.54.5mm。 ESP32-CAM可广泛应用于各种物联网场合,适用于家庭智能设备、工业无线控制、无线监控、人脸识别以及其它物联网应用,是物联网应用的理想解决方案。 ESP32-CAM采用DIP封装,直接插上底板即可使用,实现产品的快速生产,为客户提供高可靠性的连接方式,方便应用于各种物联网硬件终端场合。
硬件准备
硬件 | 数量 | 实物参考图 |
---|---|---|
ESP32-CAM 模块开发板 | 1 | |
CH340 串口模块(USB-TTL) | 1 |
双母头杜邦线 | 4 |
跳线帽 | 1 个 |
模块输入电源至少5V 2A,否则图片会有几率出现水纹。
下表与下图是说明ESP32-CAM 模块开发板与 CH340 串口模块进行调适模式时的接线情形。
ESP32-CAM | CH340 串口模块 | 说明 |
---|---|---|
5V | 5V | 也可以3V3接3V3,需要调整 CH340 串口模块的跳线 |
U0R | TXD | R是接收,T是传送,需要一边接一边收 |
U0T | RXD | 3VR是接收,T是传送,需要一边接一边收3 |
GND | GND | 地线 |
图 01 ESP32-CAM 模块开发板与 CH340 串口模块进行调适模式的接线图
下表与下图是说明 ESP32-CAM 模块开发板与 CH340 串口模块进行下载模式时的接线情形。
ESP32-CAM | CH340 串口模块 | 说明 |
---|---|---|
3V3 | 3V3 | 也可以5V接5V,需要调整 CH340 串口模块的跳线 |
U0R | TXD | R是接收,T是传送,需要一边接一边收 |
U0T | RXD | 3VR是接收,T是传送,需要一边接一边收3 |
GND | GND | 地线 |
IO0 短路 GND | ESP32-CAM 进入下载模式 |
图 02 ESP32-CAM 模块开发板与 CH340 串口模块进行下载模式的接线图
实际图示如下图所示,供电 5V 并处于下载模式。
图 03 ESP32-CAM 模块开发板供电 5V 并处于下载模式
软件准备
ESP32-CAM 的官方开发环境为 Arduino Software IDE,它使用的是與 C 語言和 C++ 相仿的程式語言 Arduino C/C++ sketch,对于熟习 Python 的开发者而言,必须得为了使用 ESP32-CAM 又学习一套新程序语言,然而 MicroPython 是 Python 3 编程语言的一个完整软件实现,用 C 语言编写,被优化于运行在微控制器之上。MicroPython 是运行在微控制器硬件之上的 Python 编译器,提供给用户一个交互式提示符(Read-Evaluate-Print-Loop, 以下简称 REPL)来立即执行所支持的命令。除了包括选定的核心 Python 库,MicroPython 还包括了给予编程者访问低层硬件的模块。
MicroPython 是澳大利亚程序员和物理学家 Damien George,在 2013 年一次众筹活动之后创建的。当初的众筹活动将 MicroPython 与基于 STM32 F4 的pyboard 开发板一起发行,因此 MicroPython 支持大量的基于 ARM 的体系结构,随后 MicroPython 已经可以运行于 Arduino、ESP8266、ESP32 与大多数的物联网硬件。在 2016 年,Python 软件基金会创建了 MicroPython 的 BBC Micro Bit 版本,作为其 BBC Micro Bit 合作伙伴贡献的一部分,授權條款 为 MIT 授權條款。
软件列表:
- MicroPython for ESP32 烧录档(百度云盘,提取码ccit),可至 MicroPython 的官网 (https://micropython.org/) 下载。
- esptool.py,一个针对乐鑫科技Espressif所开发出来的晶片提供烧录开机软件的开源软件,以 Python 为基础,可以用于乐鑫 ESP8285, ESP8266, ESP32, ESP32-S 等系列芯片和 ROM Bootloader (即:一级 bootloader )通讯。
- Thonny ,Python IDE,可进行Python程式设计,也可以直接将程式码烧录到ESP32CAM
MicroPython 烧录档
进入 MicroPython 的官网,单击 Download 进入下载页面,选择 Port(移植) 中的 esp32。
图 04 选择 Port(移植) 中的 esp32 型号。
这时画面会根据 esp32 进行筛选,移到画面下方,单击 ESP32 Espressif 这个通用型号
图 05 选择 ESP32 Espressif 这个通用 esp32 型号。
再次确认这个烧录档针对的硬件规格,鼠标移到网页最下方可以找到 Firmware 固件,可以选择最新的版本 v1.19.1 (2022-06-18) ,或是网路上看到任何一个稳定的版本,档案不大,约 1.6MB。
图 06 选择下载最新的 ESP32 烧录档
安装 esptool.py
直接使用 pip 安装即可。
pip3 install esptool
安装 Thonny
到 Thonny 的官网 https://thonny.org/,根据自己的操作系统下载适合的版本
图 07 根据自己的操作系统下载适合的 Thonny 版本
软硬件集成
完成上面软硬件准备后,先将 CH340 串口模块插到电脑上,1. 是使用 Type C 连到电脑;2. 使用 USB 连接 CH340 串口模块;3. ESP32-CAM 设定在下载模式,如下图所示。
图 08 将 ESP32-CAM 连接到电脑
要确认电脑是否能够识别到这个模块,以 Mac 来说,可以在 /dev 中找到,在终端输入以下指令后就可以看到 /dev/cu.usbserial-14110
ls -l /dev/cu*
图 09 电脑识别到 CH340 串口模块
打开 Thonny IDE,选择运行->配置解释器
图 10 在 Thonny IDE 中选择运行->配置解释器
- 解释器: MicroPython(ESP32)
- 端口: /dev/cu.usbserial-14110
最后单击 Install or Update MicroPython
图 11 配置解释器到 ESP32-CAM
安装并更新 MicroPython,指定端口(Port)跟烧录档固件(Firmware)
- 端口(Port): /dev/cu.usbserial-14110
- 固件(Firmware): esp32-20220618-v1.19.1.bin
- 烧录模式(Flash mode): From image file (keep)
- 勾选先删除后安装*(Erase flash before installing)*
接著单击安装
图 12 安装并更新 MicroPython
烧录完毕后就可以单击关闭,回到主画面,回弹出错误信息。主要是因为目前是下载模式并非调适模式,所以记得将ESP32-CAM的跳线帽移除,请参考图01。
图 13 Thonny 主画面
下图中 1. 移除后的跳线帽;2. 按下 reset 键重启 ESP32-CAM;3. Thonny 成功连接到 ESP32-CAM 中的 MicroPython
图 14 Thonny 连接 ESP32 成功的主画面
参考资料
- esptool.py,https://github.com/espressif/esptool
- ESP32 系列模组,https://www.espressif.com/zh-hans/products/modules/esp32
- ESP32-CAM 开发板,https://docs.ai-thinker.com/esp32-cam
- MicroPython downloads, https://micropython.org/download/
- Thonny, https://thonny.org/
ESP32 MicroPython 调整分区大小
【中文标题】ESP32 MicroPython 调整分区大小【英文标题】:ESP32 MicroPython resize partitions 【发布时间】:2021-07-29 16:44:33 【问题描述】:我正在使用 ESP32 和带有 Mu 的 MicroPython。 我的代码需要更多闪存空间,通常我会在 Arduino 菜单中选择“Huge APP”,这样会删除 OTA 和 spiff。
如何使用 MicroPython 固件做到这一点?我可以想象,可以通过终端,使用 esptool.py 或 Ampy,但无法弄清楚。
谢谢
【问题讨论】:
【参考方案1】:在 MicroPython 中更改分区没有简单的方法。您将需要修改分区 表并从源代码编译 MicroPython。这是设置 MicroPython 构建的方法 环境使用 Ubuntu 20.04.2。您可以使用适用于 Linux 版本 2 的 Ubuntu 的 Windows 子系统 20.04.2 也是如此。
如果您使用的是新安装的 Ubuntu 或 Windows,请使用 apt-get 更新和升级 Ubuntu Linux 子系统。
sudo apt-get -y update
sudo apt-get -y upgrade
使用 apt-get 安装所需的构建工具。
sudo apt-get -y install build-essential libffi-dev git pkg-config cmake virtualenv python3-pip python3-virtualenv
使用 git 克隆 esp-idf SDK repo 并安装 -- 这需要一段时间。
git clone --recursive https://github.com/espressif/esp-idf.git
cd esp-idf/
./install.sh
获取 esp-idf export.sh 脚本以设置所需的环境变量。重要的是 您获取文件而不是使用 ./export.sh 运行它。您需要先获取此文件 编译 MicroPython。
source export.sh
cd ..
使用 git 克隆 MicroPython 存储库。
git clone https://github.com/micropython/micropython.git
更新 git 子模块并编译 MicroPython 交叉编译器
cd micropython/
git submodule update --init
cd mpy-cross/
make
cd ..
cd ports/esp32
您可以通过编辑 ports/esp32 中的partitions.csv
文件来更改 ESP32 分区大小。那里
在更改 partitions.csv 文件时,您应该注意一些事项。 factory
partition 是 MicroPython 应用程序所在的位置。这个分区必须足够大
MicroPython 固件,它必须放置在与 0x10000 (64K) 对齐的偏移处。 vfs
分区
是虚拟文件系统所在的位置。
通用 partitions.csv 文件针对 4MB 闪存设备配置,如下所示:
默认 partitions.csv 文件内容
# Notes: the offset of the partition table itself is set in
# $IDF_PATH/components/partition_table/Kconfig.projbuild.
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x6000,
phy_init, data, phy, 0xf000, 0x1000,
factory, app, factory, 0x10000, 0x180000,
vfs, data, fat, 0x200000, 0x200000,
factory
分区从 0x10000(根据需要对齐到 64K)开始,大小为 0x180000。
这会将factory
分区的末尾放置在 (0x10000 + 0x180000) 或 0x190000 处。下一个
分区是vfs
分区,它从 0x200000 (2MB) 开始,大小为 0x200000 (2MB)。这
在factory
分区结束和vfs
分区开始之间留下 0x200000 - 0x190000 = 0x70000 或 448K 字节未使用的闪存。将未使用的闪存添加到factory
分区
导致新的factory
分区大小为 0x180000 + 0x70000 = 0x1F0000 或 64K 小于 2MB。
修改 partitions.csv 文件内容
# Notes: the offset of the partition table itself is set in
# $IDF_PATH/components/partition_table/Kconfig.projbuild.
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x6000,
phy_init, data, phy, 0xf000, 0x1000,
factory, app, factory, 0x10000, 0x1F0000,
vfs, data, fat, 0x200000, 0x200000,
如果需要更多的“工厂”闪存空间,您可以减小vfs
分区的大小并
将其偏移量增加相同的量,然后将新释放的空间添加到工厂分区。
修改了 3MB 工厂分区和 960K 虚拟文件系统的 partitions.csv 文件内容 分区。
# Notes: the offset of the partition table itself is set in
# $IDF_PATH/components/partition_table/Kconfig.projbuild.
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x6000,
phy_init, data, phy, 0xf000, 0x1000,
factory, app, factory, 0x10000, 0x300000,
vfs, data, fat, 0x310000, 0xF0000,
确定分区大小后,构建 MicroPython 固件。
make all
firmware.bin 文件将位于 build-GENERIC 目录中。如果您一直在运行其他 固件或已修改分区表,您必须在将新固件刷新到之前擦除 你的设备。设置 PORT= 为 ESP32 的 USB 串口。
make PORT=/dev/ttyUSB0 erase
make PORT=/dev/ttyUSB0 deploy
此时,您应该使用新的分区大小在 ESP32 设备上运行 MicroPython。 您可以使用以下方法通过 USB 端口连接到 REPL:
make PORT=/dev/ttyUSB0 monitor
【讨论】:
【参考方案2】:最简单的选择是使用带有 SPIRAM 的 ESP32 并使用支持它的固件之一。 虽然 LoBo 是第一个,但现在大多数 MicroPython 家族都很好地支持它。
https://micropython.org/download/esp32/
通用SPIRAM:esp32spiram-20210418-v1.15.bin【讨论】:
【参考方案3】:我一直在搞同样的事情,只是还没有真正做到。
我在这里找到了用于不同固件内容的选项: https://github.com/loboris/MicroPython_ESP32_psRAM_LoBo
您可以选择一些预构建的固件选项,我发现它们的大部分内容非常有用。
如果这不是您想要的,我认为您需要使用 esptool 中的选项更改分区布局。
首先确保您使用的 ESP 具有正确的闪存大小分配。 (有些可以有我找到的外部芯片,不知道你用的是什么板)
我以前从未这样做过,所以我没有资格向您提供有关它的信息。
【讨论】:
LoBo 前叉很棒,但目前相当陈旧,不再维护。大多数(但不是全部)功能现已进入维护良好的家庭。以上是关于ESP32-CAM 使用 MicroPython 进行开发 - 使用图形化工具 Thonny (Mac)的主要内容,如果未能解决你的问题,请参考以下文章
esp32 cam+esp8266用micropython实现人脸识别开门
esp32cam micropython使用I2S驱动DAC模块播放音频