使用 MicroPython 开发 ESP32 简介
本套开发教程主要参考 Quick reference for the ESP32,这是 MicroPython 官方手册,里面包含了使用 MicroPython 操控 ESP32 单片机内部资源介绍与范例,非常详细。
ESP32 开发板介绍
ESP32 是一款国产芯片,这个芯片专为移动设备、可穿戴设备与物联网应用而设计,集成了低功耗蓝牙和 Wi-Fi。这也是为什么 ESP32 在 DIY 爱好者中备受推崇的原因。
其中模块的含义:
序号 | 功能 |
---|---|
1 | 复位按键 |
2 | MicroUSB 接口,用于程序下载、电源输入等 |
3 | BOOT 按键:启动模式选择,按下表示下载模式,放开表示运行模式 |
4 | ESP32-WROOM-32 模组:通用型 Wi-Fi + BT + BLEMCU 模组,模组集成了传统蓝牙、低功耗蓝牙和Wi-Fi,具有广泛的用途:Wi-Fi 支持极大范围的通信连接,也支持通过路由器直接连接互联网。 |
5 | GPIO(general purpose intput output)是通用输入输出端口的简称,可以通过软件来控制其输入和输出。 |
ESP32 芯片有 48 个引脚,具有多种功能,并不是所有的 ESP32 开发板的管脚都暴露在外,有些管脚不能使用。
ESP32 芯片有 34 个可编程的 GPIO 引脚,每个引脚执行多个功能,也就是 IO 口复用,设置 IO 口功能的时候只有一个功能会被激活。可以在程序中将引脚配置为 GPIO、ADC、UART 等等。此外,有些引脚具有特定的功能,使得它们适合或不适合特定的项目。
ESP32 开发板引脚图如下:
ESP32 开发方式
ESP32 的开发方式主要有三种:
MicroPython
,常用的开发软件为 Thonny,支持 Python 语法,容易上手Arduino
,便捷灵活、方便上手的开源电子原型平台,支持 ESP32、ESP8266等。ESP-IDF
,是乐鑫官方的物联网开发框架,基于 C/C++ 语言提供了一个自给自足的 SDK,方便用户在这些平台上开发通用应用程序。
还有几个比较小众的开放方式比如 Lua
、Javascript
等等,大家可以去了解。
为什么要学习 MicroPython?
Python,是一种面向对象的解释型计算机程序设计语言,它是纯粹的自由软件,源代码和解释器 CPython 遵循GPL(GNU General Public License)协议。Python 的设计目标之一是让代码具备高度的可阅读性。它设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观。它不像其他的静态语言如 C、Pascal 那样需要重复书写声明语句,也不像它们的语法那样经常有特殊情况和意外。总之,Python 是一种简单易用的、能够运行在多个平台下的计算机编程语言。
MicroPython 是基于 Python 实现的简易版本,用于在嵌入式系统中运行,例如树莓派、ARM 单片机和 ESP32。它兼容大部分 Python3 语法,因此只要熟悉 Python3 就能无障碍上手 MicroPython。
而 MicroPython,是跑在 MCU(微控制器)上的 Python,通过内置的解释器执行 py 文件或者 py 命令,就可以让微控制器运行您想要的功能了。MicroPython 和 Python 编程语言一样,在任何板子上都可以使用通用的 API 控制硬件底层,比如点亮 LED 灯,读取传感器信息, LCD 显示字符串、控制电机、连接网络、连接蓝牙等等。
如果说 Arduino 让创客摆脱了各种编程环境配置,那么 Micropython 直接让创客摆脱了底层。命令行和解释执行,都是 C 语言所不具备的优势,运行 Micropython 的 SOC,就类似一台完整的电脑,我们用 python 文件和命令行,轻松控制这台电脑中的一切。
MicroPython 是人们连接各种任务的粘合剂,即便你不懂编程,不懂硬件,也可以通过它来控制 MCU。
MicroPython 它基于 ANSIC,语法跟 Python3 基本一致,拥有独立的解析器、编译器、虚拟机和类库等,所以可以在所支持的硬件平台上使用 Python 语言对硬件控制。 目前他支持基于 32-bit 的 ARM 处理器,比如说 STM32F401、STM32F405、STM32F407、ESP32 等,现如今支持的处理器更加丰富,比如 ESP8266 等,有兴趣的可以去官网了解下。
MicroPython 的启动流程
当我们启动 ESP32 后,MicroPython 系统将会依次执行一系列存放在单片机根目录下的的程序文件。
首先执行的是 boot.py
文件。该文件是由 MicroPython 系统创建的。因此你无需自己创建该文件就可以在刚刚刷好固件的单片机根目录下找到它。我不建议 MicroPython 的初学者对该文件进行修改,因为 boot.py
文件出现问题能会导致 MicroPython 无法正常启动,严重的会导致系统崩溃。要修复可能只有重新刷固件才行。所以除非你非常了解 MicroPython,否则请不要自行修改该文件。
执行完 boot.py
以后,启动后的单片机接下来将会执行 main.py
文件。如果你希望 ESP32 在每次启动后都执行一系列操作的话,可以将你的指令代码写入该文件。由于 main.py
文件是用户自己建立的而不是 MicroPython 系统建立的,因此在刚刚刷好固件的开发板根目录下是不存在该文件的。