ESP32简单入门
ESP32简介
ESP32 是上海乐鑫公司开发的一款比较新的32位微控制器,它集成了WiFi及蓝牙等功能,有着性能稳定、功耗低、价格低廉等特点,非常适用于物联网开发,但也可以作为普通的MCU使用。
ESP8266 也是乐鑫公司开发的一种非常流行的WiFi芯片。相比 ESP8266 ,ESP32 更加强大。这篇文章 比较了 ESP8266 和 ESP32 之间的差别。
ESP32的主要芯片种类有ESP32-C系列、ESP32-S系列和ESP32系列。这些芯片的参数和功能略有差异,例如ESP32-S2就不支持蓝牙功能。在选型时注意检查芯片型号。
完整的芯片型号对比可以参考官方网站的介绍:https://www.espressif.com/zh-hans/products/socs
模块是基于ESP32芯片,按照一定功能封装了基本的外设等形成的集成芯片。乐鑫提供的ESP32模块主要可分为WROOM系列、WROVER系列以及MINI系列,完整的介绍及对比可以参见官方网站:https://www.espressif.com/zh-hans/products/modules 。模块参数的详细PDF文档可以从 https://www.espressif.com/zh-hans/products/modules/esp32 处下载。
而开发板则是由ESP32模块和USB口、复位开关等组成的完整开发套件。开发板的厂商较多,使用时需要查看对应的开发板电路连接原理图,并注意开发板提供的功能。乐鑫提供的官方开发板介绍可以参见 https://www.espressif.com/zh-hans/products/devkits 。
这里选择 DOIT ESP32 DEVKIT V1 作为开发板。该开发板的特点为:
- 尺寸很小(约 52mm x 28mm )
- 价格低廉(仅需 ¥20 左右,相比乐鑫官方动辄 60+ 非常亲民)
- 板载一个蓝色 LED 灯,方便在无额外元器件时便可以调试
- 远销海外( platformIO 甚至还有该开发板专门的介绍文档)
其外观如下。事实上很多商家的 ESP32 的开发板结构都非常类似。在选择开发板时只需注意主要结构及功能即可。
MicroPython简介
什么是MicroPython
MicroPython是基于Python实现的简易版本,用于在嵌入式系统中运行,例如树莓派、ARM单片机和ESP32。它兼容大部分Python3语法,因此只要熟悉Python3就能无障碍上手MicroPython。
相比Python3,MicroPython精简了许多实现细节,并且删去了许多标准库以及标准库里的内容。不过,MicroPython却额外包含了能够操作底层GPIO等外设的标准库,这些是对底层寄存器的高度封装。
建立MicroPython开发环境
目前来说,有 3 个比较常用的 MicroPython 开发环境,它们都是免费、开源且跨平台的。它们分别为:
- uPyCraft IDE
uPyCraft IDE 是一个简单并且对入门 MicroPython 友好的集成开发环境,它自身可以直接烧入 MicroPython 到 ESP32 中,并且支持从编写程序到串口调试的所有基本功能。除此之外,它还内置了许多示例代码,可以直接运行这些示例代码查看效果。
uPyCraft 的 GitHub 地址为:https://github.com/DFRobot/uPyCraft 。可以从中下载软件与查看官方文档。
- Thonny IDE
Thonny IDE 是一个 Python 的集成开发环境,不过它同时也支持直接开发 MicroPython 。Thonny IDE 功能丰富,支持各种调试方式,,并且可以加上插件进一步扩展功能。
Thonny IDE 的官方网站为:https://thonny.org ,GitHub 仓库地址为:https://github.com/thonny/thonny 。
- Visual Studio Code
大名鼎鼎的 VSCode 想必许多人都有所耳闻。VSCode 想要开发 MicroPython ,主要依靠插件的支持。
这里推荐将 Thonny IDE 作为开发环境,主要是出于以下考虑:
- VSCode 相对 MicroPython 入门来说,还是有些过于重量级。并且 VSCode 主要依赖于插件来开发 MicroPython ,并不能很好地用到 VSCode 的所有优势,而且开发环境的配置也对入门级别不是很友好,因此除非日后需要利用到一些进阶功能,否则并是很不推荐将 VSCode 作为入门开发环境。
- uPyCraft 尽管是专门支持 MicroPython 的开发环境,但是它目前版本还比较低,不仅功能很少,而且使用者也很少,许多功能没有得到广泛的测试,可能存在许多 bug 未能得到解决。
- 相比之下,Thonny IDE 非常轻量级,却也支持许多高级的功能。由于有足够多的使用者,现版本的 Thonny 已经非常稳定,完全可以满足 MicroPython 的全流程开发。
由于 Thonny 不支持烧入功能,因此需要额外下载烧入工具。在烧入之前,需要安装 CP210x 串口转 USB 驱动,让设备识别到 ESP32 。
该驱动可以在 https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers 处下载,打开网站后点击 DOWNLOAD 页面,选择对应系统的驱动下载即可:
下载完成驱动后,安装对应的驱动文件即可,安装方式就和一般的软件一致:
接下来需要下载 Flash 烧入工具,用来将 MicroPython 烧入到 ESP32 内。烧入软件可以选用乐鑫官方提供的 Flash 下载工具,下载地址在 https://www.espressif.com/zh-hans/support/download/other-tools ,或在乐鑫官网找到支持→相关下载→工具:
解压下载得到的文件夹即可。
最后一步是下载 MicroPython 固件。下载的地址为:https://micropython.org/download/esp32/) ,或在 MicroPython 官网首页找到 Download→ESP32 :
一般来说,推荐下载第二新的固件版本。注意下载的是 .bin
格式的固件。
接下来就可以准备将 MicroPython 烧入到 ESP32 设备中。
将 ESP32 使用 microusb 线连接到计算机上,如果 ESP32 开发板上的红色灯亮起,同时计算机的设备检测到串口信息,则证明连接正常:
打开 ESP32 的 Flash 烧入工具,在第一个下拉菜单芯片类型中选择 ESP32:
接下来进入到烧入配置界面,其中几个关键的选项已经在图中标示出来了:
- 烧入的固件文件,可在右侧省略号按钮选取文件
- 烧入地址为
0x1000
- 记得勾上要烧入的文件
- 这些选项保持图示的默认选项即可
- 波特率以 921600 为佳,上方的端口号注意和 ESP32 的端口号匹配
接下来就可以下载固件了。下载前需要先擦除原有内容,按住开发板上的“BOOT”按键,然后点击下载工具左下角的“ERASE”按钮。刚点击时上方绿色矩形里的文字会从“等待/IDLE”变成“等待上电同步/SYNC”,如果文字再次变成“下载中/DOWNLOAD”,那么便可以松开开发板上的“BOOT”按键了。等到文字再次变为“完成/FINISH”,则说明擦除成功。
接下来点击下载工具左下角的“START”按钮,类似上一步,在开始下载前也需要按住开发板上的“BOOT”按键。在下载时,下载工具最下方的进度条将会显示当前下载进度。
这样,MicroPython 就烧入完毕了。接下来可以建立第一个MicroPython 工程,同时测试烧入是否正确。
建立第一个工程
这里使用 Thonny IDE 作为开发环境。首先可以在官网下载该软件:
也可以在 GitHub 仓库里找到 Release 版本。这些地址在上文都提到过。
安装成功 Thonny 后,打开软件,接下来还需要进行一些初始化配置。
首先,在菜单栏里找到运行→选择解释器。之前说过 Thonny 主要用于进行常规 Python 开发,因此如果要将其用于 MicroPython 开发需要修改解释器选项:
修改解释器为 MicroPython (ESP32) 。该页面中同时可以修改端口配置,如果有时发现识别出现问题,不妨检查一下端口号是否正确。
接下来,将 ESP32 接入计算机,然后点击功能按钮栏里的“停止/重启后端进程(Ctrl+F2)”:
如果此时在下方的终端(Shell)内看到如下所示的 Python 解释器提示,则说明与 MicroPython 的连接成功:
如果在打开 Thonny 前就维持着 ESP32 与计算机的连接,那么进入 Thonny 时应该就能看到该提示信息。“停止/重启后端进程(Ctrl+F2)”用于重新使计算机与 ESP32 里的 MicroPython 连接,在每次插拔 ESP32 后都需要这样手动使两者重新连接。
终端(Shell)允许在串口通信中使用 MicroPython 命令行交互窗口。例如:
MicroPython v1.17 on 2021-09-02; ESP32 module with ESP32
Type "help()" for more information.
>>> print('Hello, world!')
Hello, world!
print()
函数可以让 ESP32 向计算机通过串口发送调试信息。
MicroPython 还支持以文件的形式运行。新建一个文件后,点击保存(如果 Thonny 成功连接上了 ESP32 的 MicroPython ),那么此时就会出现两个选项,可以将 .py
文件保存在计算机上,还可以将其保存在 ESP32 里:
选择将文件保存在 ESP32 内,此时会发现 ESP32 内已经有一个 boot.py
文件了。这里,将文件命名为 main.py
保存。boot.py
和 main.py
是 MicroPython 里的两个比较特殊的文件,将在之后详细介绍。
在 main.py
内编写以下代码后保存:
from machine import Pin
import time
led = Pin(2, Pin.OUT)
while True:
led.value(0)
time.sleep(0.5)
led.value(1)
time.sleep(0.5)
点击功能按钮栏里的“运行当前脚本(F5)”,即可运行以上代码。运行成功后,可以看到开发板上蓝色的 LED 灯以 0.5 秒为间隔闪烁,说明运行成功。
while
循环可以通过在交互式控制台内按下 CTRL+C 触发键盘中断退出。如果再次将 ESP32 接入计算机后重启后台进程,一直显示 ESP32 处于繁忙状态或无显示,则可能是由于 ESP32 一直在执行代码导致的,可以通过键盘中断强制停止 MicroPython 的执行。