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-CAMCH340 串口模块说明
5V5V也可以3V3接3V3,需要调整 CH340 串口模块的跳线
U0RTXDR是接收,T是传送,需要一边接一边收
U0TRXD3VR是接收,T是传送,需要一边接一边收3
GNDGND地线

图 01 ESP32-CAM 模块开发板与 CH340 串口模块进行调适模式的接线图

下表与下图是说明 ESP32-CAM 模块开发板与 CH340 串口模块进行下载模式时的接线情形。

ESP32-CAMCH340 串口模块说明
3V33V3也可以5V接5V,需要调整 CH340 串口模块的跳线
U0RTXDR是接收,T是传送,需要一边接一边收
U0TRXD3VR是接收,T是传送,需要一边接一边收3
GNDGND地线
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 授權條款。

软件列表:

  1. MicroPython for ESP32 烧录档(百度云盘,提取码ccit),可至 MicroPython 的官网 (https://micropython.org/) 下载。
  2. esptool.py,一个针对乐鑫科技Espressif所开发出来的晶片提供烧录开机软件的开源软件,以 Python 为基础,可以用于乐鑫 ESP8285, ESP8266, ESP32, ESP32-S 等系列芯片和 ROM Bootloader (即:一级 bootloader )通讯。
  3. 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模块播放音频

自行编译micropython固件刷入ESP32 cam,并测试拍照及图传

esp32cam接错烧了

esp32 cam如何设置静态的IP

ESP32 与 ESP32-CAM 的关系