ESP32-MicroPython without Thonny
why witout Thonny?
最近闲来在ESP32上用MicroPython捣鼓些小玩具,见很多教程推荐使用Thonny。欣然往之,竟是个这,实在不能认同。Thonny esp32-MicroPython开发的入门最佳实践?no!


刷入固件
使用 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 的提示符 `>>>`。要运行你刚刚上传的脚本,只需输入:
```Python
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,picocom, 等),否则ampy可能无法与板子通讯。<YOUR_PORT>是你的设备连接的串口。例如/dev/ttyUSB0或COM3。
ampy 为管理 MicroPython 板上的文件提供了简单而直接的方法。如果你经常使用相同的串口,你也可以考虑在 .bashrc 或 .bash_profile 中设置 AMPY_PORT 环境变量,这样你就不必每次都指定 --port 参数了。
特殊文件 boot.py main.py
在 ESP32 上运行 MicroPython 时,boot.py 和 main.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: 这是你的主程序代码,可能包括处理循环、事件响应或任何你的项目需要的功能。
END
通过screen交互,通过ampy管理文件系统。enjoy it

ESP32-MicroPython without Thonny的更多相关文章
- ESP32与MicroPython入门-01 搭建开发环境
ESP32简介 ESP32 是上海乐鑫公司开发的一款比较新的32位微控制器,它集成了WiFi及蓝牙等功能,有着性能稳定.功耗低.价格低廉等特点,非常适用于物联网开发,但也可以作为普通的MCU使用. E ...
- ESP32(WeMos D1 R32)开发资料
1.乐鑫官网 2.ESP32踩坑 ESP32控制摇杆,定义sw的引脚时一定要设置为上拉才行. 3.ESP32入门之arduino IDE环境搭建 4.ESP32 MicroPython编程官网文档 E ...
- 登录华科校园网,我用Socket
登录华科校园网,我用Socket 导语: 找一个华科学生问一问,学校的网络怎么样?得到的大多数是负面回答.其实不论是从覆盖区域.网络稳定性.还是速度来说,华科做的都还是可以的(24:00断网除外).可 ...
- 如何为 esp32 编译和配置及烧写 MicroPython 固件。
MicroPython 在 esp-idf (esp32) 上编译固件 esp32 编译 micropython 的固件相关的资料应该很多吧,我也会出一篇,但会额外讲一些 linux 的东西的. 资料 ...
- [MicroPython ESP32] 内存分析
[MicroPython ESP32] 内存分析 [(1)芯片:ESP32-WROOM-DA] 手册: https://www.espressif.com.cn/zh-hans/support/doc ...
- esp32驱动SSD1306的oled显示汉字(micropython)
1.完整源码: 主函数oled.py from ssd1306 import SSD1306_SPI from ssd1306 import SSD1306 import font import ma ...
- (2)用Micropython将ESP32数据上云
之前我们尝试过直接把LED点亮并且闪烁. 今天尝试一下将LED的开关状态上云,并可以通过云来进行数据下发. 数据要上云,首先开发板要联网. 首先我们会用 Python的network 库, 在netw ...
- Linux+MicroPython+esp8233 YES!
MicPython MicroPython是澳大利亚程序员和物理学家Damien George在2013年一次成功的众筹活动后最初创建的.MicroPython 和 CPython 在 Python ...
- 2022-08-12-esp32把玩记-②_用Micropython点ssd1306_oled屏幕
layout: post cid: 8 title: esp32把玩记-② 用Micropython点ssd1306 oled屏幕 slug: 8 date: 2022/08/12 15:12:39 ...
- MicroPython的开发板
比如: pyboard micro:bit ESP8266/ESP32 stm32等等 什么是pyboard? pyboard是官方的MicroPython微控制器板,完全支持软件功能.硬件有: ST ...
随机推荐
- Idea报错:无法创建java虚拟机
报错如下: 我怀疑是在配置algo4环境时,将系统变量改变了 于是我又重新配置了一下环境变量 然后运行 cmd 执行 java -version 还是报错 <JAVA_HOME>/lib/ ...
- TOML是什么格式
TOML(Tom's Obvious, Minimal Language)是一种用于配置文件的轻量级.易读的数据序列化格式.它由Tom Preston-Werner创建,旨在成为一种简单直观的配置文件 ...
- .NET程序的 GDI句柄泄露 的再反思
一:背景 1. 讲故事 上个月我写过一篇 如何洞察 C# 程序的 GDI 句柄泄露 文章,当时用的是 GDIView + WinDbg 把问题搞定,前者用来定位泄露资源,后者用来定位泄露代码,后面有朋 ...
- 一个批处理,解决你重装python第三方模块的烦恼~(1.0版本)
@echo offpip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simplepython -m pip insta ...
- 如何破解wifi密码?
前期准备: kali 系统 外置无线网卡 破解过程: 首先,需要登录kali系统,可以是虚拟机. 在虚拟机中设置点击 虚拟机-可移动设备-无线网卡的名称,将无线网卡绑定到kali虚拟机上. 在kali ...
- CI+JUnit5并发单测机制创新实践
一. 现状·问题 针对现如今高并发场景的业务系统,"并发问题" 终归是必不可少的一类(占比接近10%),每次出现问题和事故后,需要耗费大量人力成本排查分析并修复.那如果能在事前尽可 ...
- Pixi.js的使用整理
最近在做的一个前端项目中,有一些图像的处理操作(3D图,2D图都有),其中3D图也是通过获取后端服务的图像2D数据进行绘制展示,通过鼠标各种操作调用后端服务来进行重新获取新图数据.这里前端设计到图像的 ...
- 使用 OpenTelemetry 构建 .NET 应用可观测性(1):什么是可观测性
目录 什么是系统的可观测性(Observability) 为什么需要软件系统需要可观测性 可观测性的三大支柱 日志(Logging) 指标(Metrics) 分布式追踪(Distributed Tra ...
- LeetCode 周赛上分之旅 #42 当 LeetCode 考树上倍增,出题的趋势在变化吗
️ 本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 和 BaguTree Pro 知识星球提问. 学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越 ...
- ETL之apache hop系列3-hop Server环境部署与客户端发布管道工作流
前言 该文档主要是apache hop 2.5的 Windows 10和Linux docker环境部署和客户端发布工作流和管道的相关内容 不使用Docker直接使用应用程序包,下载压缩包文件后,需要 ...