• 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  erase_flash
    

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

    6. 刷入 MicroPython 固件

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

    esptool.py --chip esp32 --port  write_flash -z 0x1000 
    

    替换 为你的串口名,并将 替换为你下载的 .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  put main.py
    

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

    3. 运行你的脚本

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

    • 在 Linux 或 macOS 上,你可以使用 screen:
    screen  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  ls
    

    2. 上传文件到板上

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

    ampy --port  put 
    

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

    ampy --port  put main.py
    

    3. 从板上读取文件

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

    ampy --port  get 
    

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

    ampy --port  get  
    

    4. 删除板上的文件

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

    ampy --port  rm 
    

    5. 创建目录

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

    ampy --port  mkdir 
    

    6. 执行脚本并查看输出

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

    ampy --port  run 
    

    注意事项

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

    • 是你的设备连接的串口。例如 /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: 这是你的主程序代码,可能包括处理循环、事件响应或任何你的项目需要的功能。

  • 相关阅读:
    Java版企业电子招标采购系统源码—企业战略布局下的采购寻源
    vivado流程导航器详细介绍【全网最详细】
    市场开始复苏,三星传调涨内存芯片高达20% | 百能云芯
    人工智能导论
    【残差网络 论文泛读】……DenseNet……(Densely Connected Convolutional Networks)
    【Python numpy】创建Ndarray数组对象
    CUDA小白 - NPP(11) 图像处理 Comparison Operations
    python----变量的作用域还有关键字global
    LeetCode刷题日记:135. 分发糖果
    由一个项目引起智能工厂及数字工厂的灵魂拷问
  • 原文地址:https://www.cnblogs.com/orangeQWJ/p/17762992.html