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

ESP32-MicroPython 开发环境的更多相关文章

  1. ESP32-S3 搭建 micropython 开发环境,固件编译,烧录

    简述 上手了一块乐鑫科技官方推出的ESP32-S3-DevKitC-1开发板,发现 ESP32-S3 的综合性能较比前两代有着非常明显的提升,wifi与蓝牙功能,更充足的外设扩展能力,可以看出其在未来 ...

  2. deepin下安装ESP32的开发环境

    deepin下安装ESP32的开发环境 本文章用于记录在deepin下安装ESP32的开发环境,前几日在CentOS7之下实现过,但CentOS7对于我这个Linux新手太不友好,于是重装deepin ...

  3. ESP32 Eclipse开发环境构建与问题总结

    搞了一个多星期的eclipse环境构建,终于成功了,在此记录下期间遇到的问题. 以下为遇到的几点问题的解决方法: 1.使用的版本为V3.1版本,版本时间为2018年09月07日,可以直接在以下路径下载 ...

  4. ESP32 windows开发环境的搭建(官方方法)

    首先保证电脑中的已经下载了git客户端,没有的自行去https://git-scm.com/下载 STEP1: 获得编译工具链 Windows没有内置的“make”环境,所以安装工具链你将需要一个兼容 ...

  5. Mac Arduino ESP8266 ESP32 搭建开发环境

    目录 1.安装Arduino 2.搭建开发板管理器 3.可能出现的错误 1.安装Arduino Arduino下载. 官方下载地址:Arduino官方网站 Arduino中文社区:下载地址 安装方式: ...

  6. ESP32与MicroPython入门-01 搭建开发环境

    ESP32简介 ESP32 是上海乐鑫公司开发的一款比较新的32位微控制器,它集成了WiFi及蓝牙等功能,有着性能稳定.功耗低.价格低廉等特点,非常适用于物联网开发,但也可以作为普通的MCU使用. E ...

  7. ubuntu 14.04下搭建esp32开发环境

    esp32是乐鑫出品的一款集成了wifi和蓝牙的集成模块,板上自带两个哈佛结构的Xtensa LX6 CPU双核处理器,本文主要讲解如何在linux下搭建其编译开发环境. 首先ctrl+alt+t打开 ...

  8. ESP32 LyraT音频开发板试玩(一):搭建开发环境

    我是卓波,很高兴你来看我的博客. 系列文章: ESP32 LyraT音频开发板试玩(一):搭建开发环境 ESP32 LyraT音频开发板试玩(二):播放音乐 关于ESP32的开发环境搭建,官方有教程, ...

  9. ESP32 开发之旅① 走进ESP32的世界 安装开发环境

    1.前言     欢迎大家来到ESP32的世界,从现在开始,笔者将带领大家慢慢揭开ESP32神秘的面纱.     在学习ESP32之前,博主希望读者能有ESP8266的学习基础(ESP32 Wifi模 ...

  10. ESP32的Linux开发环境搭建

    1. 官网教程地址 https://docs.espressif.com/projects/esp-idf/zh_CN/v4.0.1/get-started/linux-setup.html 2.官网 ...

随机推荐

  1. 多模态大语言模型 LlaVA 论文解读:Visual Instruction Tuning

    代码:https://github.com/haotian-liu/LLaVA 总览 在这篇论文中,作者首次尝试使用纯语言 GPT-4 生成多模态语言图像指令遵循数据(insruction-follo ...

  2. 重新搞懂Git,掌握日常命令和基本操作

    1.git Git 是一个免费的开源分布式版本控制系统,旨在快速高效地处理从小型到超大型项目的所有内容. Git 易于学习,占用空间很小,性能快如闪电.它超越了Subversion,CVS,Perfo ...

  3. 1.6 编写双管道ShellCode后门

    本文将介绍如何将CMD绑定到双向管道上,这是一种常用的黑客反弹技巧,可以让用户在命令行界面下与其他程序进行交互,我们将从创建管道.启动进程.传输数据等方面对这个功能进行详细讲解.此外,本文还将通过使用 ...

  4. Visual Studio C# 多环境配置 Web.config

    目录 添加解决方案配置 添加配置转换 添加应对的配置 Visual Studio 为多环境配置 Web.config 不同的环境,存在不同的配置,如:数据库连接字符串,通过多配置,方便做环境切换,配置 ...

  5. ZEGO全新语音聊天解决方案,4步搭建爆火的语音聊天室

    最近,国外一款语音聊天软件成功火出圈. 与此同时,该类产品也引发了国内互联网的关注,除了争相下载试用之外,不少社交.泛娱乐行业从业者也表示要跟进对应玩法. 据了解,不少泛娱乐玩家已经在加班加点抢占先机 ...

  6. WinUI(WASDK)使用MediaPipe检查人体姿态关键点

    前言 之前有用这个MediaPipe.NET .NET包装库搞了手势识别,丰富了稚晖君的ElectronBot机器人的第三方上位机软件的功能,MediaPipe作为谷歌开源的机器视觉库,功能很丰富了, ...

  7. .net 6 winform启动器:调用CMD命令行执行dotnet命令启动.net core程序并将控制台输出日志输出到winform textbox实现实时日志显示

    背景 历史遗留问题,生产车间运行的一个.net core signalr程序使用命令行程序启动,经常由于生产人员误操作将光标停留在控制台上导致程序假死,丢失部分测试数据,车间随便找了一台win10系统 ...

  8. 2023ccpc大学生程序设计竞赛-wh

    对于大一的我,只听说线下大型比赛,而第一次参加也必然心情激动,生为大一,由于没有参赛经历,所有不知道参赛技巧,所以三个人像个无头苍蝇一样,跟着榜单做,我作为写码的,其他两名队友负责思路和想法,第一道签 ...

  9. Error: Could not open client transport with JDBC Uri: jdbc:hive2://localhost:10000: java.net.ConnectException: 拒绝连接 (Connection refused) (state=08S01,code=0)

    一:启动hiveserver2服务 二:启动beeline 三:连接hiveserver2(下面的1000000端口号适当改小写因为其超出最大端口号的范围建议改为10000) 如果启动不成功实现我们先 ...

  10. Mapbox—geocoder搜索地点error eaching the server

    Mapbox-geocoder搜索地点error eaching the server --There was an errorr eaching the server 环境说明: vue3.3.4 ...