1

ESP32-MicroPython 开发环境 - orangeQWJ

 7 months ago
source link: https://www.cnblogs.com/orangeQWJ/p/17762992.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

ESP32-MicroPython 开发环境

Linux/Mac 下使用MicroPython开发ESP32

使用 esptool.py 将 MicroPython 刷入 ESP32 开发板涉及几个步骤。

1. 安装 esptool

如果你还没有安装 esptool.py,你可以使用 pip 来安装它:

pip install esptool

2. 下载 MicroPython 固件

MicroPython - Python for microcontrollers

前往 MicroPython 的官方网站,找到 ESP32 的固件,然后下载合适的 .bin 文件。确保选择与你的 ESP32 开发板兼容的版本。

3. 连接你的 ESP32

使用适当的 USB 数据线将 ESP32 开发板连接到你的计算机。

4. 查找 ESP32 的串口

在终端或命令提示符中,使用以下命令查找 ESP32 的串口:

ls /dev/tty.*

记下 ESP32 的串口名,例如 /dev/ttyUSB0

5. 擦除现有固件

为了确保 MicroPython 正确地安装在 ESP32 上,首先擦除开发板上的现有固件:

esptool.py --port <YOUR_PORT> erase_flash

<YOUR_PORT> 替换为你在第4步中找到的串口名。

6. 刷入 MicroPython 固件

使用以下命令将 MicroPython 固件刷入 ESP32:

esptool.py --chip esp32 --port <YOUR_PORT> write_flash -z 0x1000 <PATH_TO_YOUR_MICROPYTHON_BIN_FILE>

替换 <YOUR_PORT> 为你的串口名,并将 <PATH_TO_YOUR_MICROPYTHON_BIN_FILE> 替换为你下载的 .bin 文件的路径。

7. 重启 ESP32

完成刷入操作后,断开并重新连接 ESP32 的电源,或使用开发板上的复位按钮进行复位。

现在,ESP32 上应该已经运行了 MicroPython,你可以使用串口工具screen连接到 ESP32,并开始运行 MicroPython 命令。

上传MicroPython脚本

将写好的 Python 程序刷入 ESP32 来运行并不是直接将 Python 代码烧写到 ESP32 的 flash 中的常规做法。相反,你首先将 MicroPython 烧写到 ESP32,然后将你的 Python 脚本上传到 ESP32 上的文件系统,并在那里运行它。以下是如何做到这一点的步骤:

1. 安装 ampy

ampy 是 Adafruit 提供的一个工具,用于在与 MicroPython 兼容的设备上管理文件。你可以使用 pip 安装它:

pip install adafruit-ampy

2. 上传你的 Python 脚本

使用 ampy 将你的 Python 脚本放入 ESP32 的文件系统中。例如,假设你的脚本名为 main.py

ampy --port <YOUR_PORT> put main.py

<YOUR_PORT> 替换为 ESP32 的串口名(如 /dev/ttyUSB0 )。

3. 运行你的脚本

连接到 ESP32 的 REPL(Read-Evaluate-Print Loop):

  • 在 Linux 或 macOS 上,你可以使用 screen:
screen <YOUR_PORT> 115200
  • screen基本使用

    当你使用 screen 连接到一个串口或其他设备后,你可以按照以下步骤断开连接:

    1. Ctrl + A 键。这是 screen 的命令键。

    2. 紧接着按 k 键。这将会提示你是否确定要杀死这个 screen 会话。

    3. 最后,按 y 键确认。

    这样就会结束 screen 会话并断开连接。

    另外,你也可以按 Ctrl + A 然后按 d 键来"分离"一个 screen 会话,这样你可以在后台保留会话并返回到终端。要重新连接到这个会话,可以使用 screen -r 命令。

一旦连接,你应该能够看到 MicroPython 的提示符 >>>。要运行你刚刚上传的脚本,只需输入:

import main

注意:如果你的脚本名为 main.py,ESP32 会在启动时自动运行它。如果你想要在设备启动时自动执行其他名称的脚本,你需要重命名该脚本为 main.py

示例 main.py 使板子自带的灯呼吸闪烁

from machine import Pin, PWM
import time

# 使用 ESP32 的板载 LED。大多数 ESP32 开发板的板载 LED 连接到 GPIO2。
LED_PIN = 2

# 创建一个 PWM 对象
led = PWM(Pin(LED_PIN), freq=1000)

def breathe():
    while True:
        # 逐渐增加亮度
        for duty in range(0, 1024, 10):
            led.duty(duty)
            time.sleep(0.05)
        
        # 逐渐减少亮度
        for duty in range(1023, -1, -10):
            led.duty(duty)
            time.sleep(0.05)

breathe()

使用ampy管理文件

使用ampy管理文件系统中的文件

ampy 是由 Adafruit 开发的一个工具,用于在与 MicroPython 兼容的板上管理文件。下面是如何使用 ampy 进行文件管理的常见命令:

1. 列出板上的所有文件

要列出板上的所有文件,你可以使用 ls 命令:

ampy --port <YOUR_PORT> ls

2. 上传文件到板上

要将文件上传到板上,使用 put 命令:

ampy --port <YOUR_PORT> put <LOCAL_FILE>

例如,要上传名为 main.py 的文件,使用:

ampy --port <YOUR_PORT> put main.py

3. 从板上读取文件

要从板上读取文件并将其内容打印到终端,使用 get 命令:

ampy --port <YOUR_PORT> get <REMOTE_FILE>

如果你还想将其保存到本地文件,可以:

ampy --port <YOUR_PORT> get <REMOTE_FILE> <LOCAL_FILE>

4. 删除板上的文件

要删除板上的文件,使用 rm 命令:

ampy --port <YOUR_PORT> rm <REMOTE_FILE>

5. 创建目录

要在板上创建目录,使用 mkdir 命令:

ampy --port <YOUR_PORT> mkdir <DIRECTORY_NAME>

6. 执行脚本并查看输出

你可以使用 run 命令来执行板上的 MicroPython 脚本并看到其输出:

ampy --port <YOUR_PORT> run <SCRIPT_NAME>
  • 在使用 ampy 之前,确保已经断开了其他对板子的连接(例如 screen,),否则 ampy 可能无法与板子通讯。

  • <YOUR_PORT> 是你的设备连接的串口。例如 /dev/ttyUSB0

ampy 为管理 MicroPython 板上的文件提供了简单而直接的方法。如果你经常使用相同的串口,你也可以考虑在 .bashrc.bash_profile 中设置 AMPY_PORT 环境变量,这样你就不必每次都指定 --port 参数了。

特殊文件 boot.py main.py

在 ESP32 上运行 MicroPython 时,boot.pymain.py 是两个特殊的文件,它们在启动过程中自动执行。它们之间的主要关系和区别如下:

1. 执行顺序:

  • boot.py: 当 ESP32 上的 MicroPython 被启动时,首先执行的是 boot.py。它的主要目的是进行初始化操作,例如设置无线网络连接、配置一些硬件参数或其他任何需要在程序运行之前进行的设置。

  • main.py: 在 boot.py 执行完毕后,main.py 将被执行。这是你的主应用程序或脚本,通常用于运行你的项目的主要功能或代码。

2. 用途:

  • boot.py: 由于它是首先执行的,boot.py 主要用于设置那些只需要配置一次的东西,如 Wi-Fi 设置或其他系统级初始化。在某些情况下,为了安全起见,你可能想在这里设置异常处理,以确保无论 main.py 中发生什么,都不会影响到系统的正常启动。

  • main.py: 这是你的主程序代码,可能包括处理循环、事件响应或任何你的项目需要的功能。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK