- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
why witout Thonny?
最近闲来在ESP32上用MicroPython捣鼓些小玩具,见很多教程推荐使用Thonny。欣然往之,竟是个这,实在不能认同。Thonny esp32-MicroPython开发的入门最佳实践?no! 。
使用 esptool.py 将 MicroPython 刷入 ESP32 开发板涉及几个步骤.
如果你还没有安装 esptool.py ,你可以使用 pip 来安装它:
pip install esptool
MicroPython - Python for microcontrollers 。
前往 MicroPython 的官方网站,找到 ESP32 的固件,然后下载合适的 .bin 文件。确保选择与你的 ESP32 开发板兼容的版本.
使用适当的 USB 数据线将 ESP32 开发板连接到你的计算机.
在终端或命令提示符中,使用以下命令查找 ESP32 的串口:
ls /dev/tty.*
记下 ESP32 的串口名,例如 /dev/ttyUSB0 。
为了确保 MicroPython 正确地安装在 ESP32 上,首先擦除开发板上的现有固件:
esptool.py --port <YOUR_PORT> erase_flash
将 <YOUR_PORT> 替换为你在第4步中找到的串口名.
使用以下命令将 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 文件的路径.
完成刷入操作后,断开并重新连接 ESP32 的电源,或使用开发板上的复位按钮进行复位.
现在,ESP32 上应该已经运行了 MicroPython,你可以使用串口工具 screen 连接到 ESP32,并开始运行 MicroPython 命令.
将写好的 Python 程序刷入 ESP32 来运行并不是直接将 Python 代码烧写到 ESP32 的 flash 中的常规做法。相反,你首先将 MicroPython 烧写到 ESP32,然后将你的 Python 脚本上传到 ESP32 上的文件系统,并在那里运行它。以下是如何做到这一点的步骤:
ampy
ampy 是 Adafruit 提供的一个工具,用于在与 MicroPython 兼容的设备上管理文件。你可以使用 pip 安装它:
pip install adafruit-ampy
使用 ampy 将你的 Python 脚本放入 ESP32 的文件系统中。例如,假设你的脚本名为 main.py :
ampy --port <YOUR_PORT> put main.py
将 <YOUR_PORT> 替换为 ESP32 的串口名(如 /dev/ttyUSB0 ).
连接到 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 是由 Adafruit 开发的一个工具,用于在与 MicroPython 兼容的板上管理文件。下面是如何使用 ampy 进行文件管理的常见命令:
要列出板上的所有文件,你可以使用 ls 命令:
ampy --port <YOUR_PORT> ls
要将文件上传到板上,使用 put 命令:
ampy --port <YOUR_PORT> put <LOCAL_FILE>
例如,要上传名为 main.py 的文件,使用:
ampy --port <YOUR_PORT> put main.py
要从板上读取文件并将其内容打印到终端,使用 get 命令:
ampy --port <YOUR_PORT> get <REMOTE_FILE>
如果你还想将其保存到本地文件,可以:
ampy --port <YOUR_PORT> get <REMOTE_FILE> <LOCAL_FILE>
要删除板上的文件,使用 rm 命令:
ampy --port <YOUR_PORT> rm <REMOTE_FILE>
要在板上创建目录,使用 mkdir 命令:
ampy --port <YOUR_PORT> mkdir <DIRECTORY_NAME>
你可以使用 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 参数了.
在 ESP32 上运行 MicroPython 时, boot.py 和 main.py 是两个特殊的文件,它们在启动过程中自动执行。它们之间的主要关系和区别如下:
boot.py : 当 ESP32 上的 MicroPython 被启动时,首先执行的是 boot.py 。它的主要目的是进行初始化操作,例如设置无线网络连接、配置一些硬件参数或其他任何需要在程序运行之前进行的设置.
main.py : 在 boot.py 执行完毕后, main.py 将被执行。这是你的主应用程序或脚本,通常用于运行你的项目的主要功能或代码.
boot.py : 由于它是首先执行的, boot.py 主要用于设置那些只需要配置一次的东西,如 Wi-Fi 设置或其他系统级初始化。在某些情况下,为了安全起见,你可能想在这里设置异常处理,以确保无论 main.py 中发生什么,都不会影响到系统的正常启动.
main.py : 这是你的主程序代码,可能包括处理循环、事件响应或任何你的项目需要的功能.
通过 screen 交互,通过 ampy 管理文件系统。enjoy it 。
最后此篇关于ESP32-MicroPythonwithoutThonny的文章就讲到这里了,如果你想了解更多关于ESP32-MicroPythonwithoutThonny的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
回车和有什么区别 push ebp mov ebp, esp sub esp, imm 说明?有性能差异吗?如果是这样,哪个更快,为什么编译器总是使用后者? 与离开和类似 mov esp, eb
我有以下 NASM 汇编程序,运行时间约为 9.5 秒: section .text global _start _start: mov eax, 0 mov ebx, 8 loop:
根据互联网上的许多教程,据说您可以找到以下结构的命令行参数: 然而,在花一些时间测试我为 NASM 编写的汇编代码后,我发现 ESP 的值是一些数字,例如: -144807325 实际参数计数存储在更
1. 设备烧录的程序rainmaker自带gpio示例 2. swaggerapis登录账户 3. 调用Rainmaker封装好的py
文章结构: 项目概述 成品预览 项目框架 硬件资料,代码 项目槽点 -项目
我是一个学习汇编的初学者,在函数调用之前保留 ESP 寄存器时,通过加法或减法来实现是否重要?很难解释,请考虑以下内容 mov esi, esp sub esp, 12 // on 32bit OS
我反汇编了一个小程序,该程序询问用户的姓名,然后输出“Hello + [user's_name]” 这是反汇编的输出: 主要功能: 打招呼功能: 我注意到,对于 main() 函数,ESP 寄存器递减
我正在从事 Visual Studio 项目项目 A(在编译时生成静态库) 有课 using namespace mynamespace; class projectAclass { virtua
从上图中可以看出,函数setAttribute 时发生了错误。从它的调用返回。 有谁知道如何解决图中显示的这个错误?我知道这是调用约定之间的错误,但是如何找出 setAttribute 的调用约定是什
我用 QT 制作了一个 .dll 文件并将其加载到我的应用程序中。当它即将从一个函数返回时,我收到: The value of ESP was not properly saved across a
我找不到答案。从我读到的 %ebp 有 32 位,将 %esp 移动到 %ebp 你仍然有 32 位,然后减去 70 到 32,我不明白其余的。我对此很陌生,所以我不是很精通。请给出详细的解释。谢谢!
我有一个从 c 程序调用的简单汇编函数,我必须使用需要内存操作数的指令( FIDIV )。 将值移动到 [esp - 2] 是否安全并在下一条指令中使用它,或者以这种方式使用堆栈永远不会安全? 我知道
以下陈述有什么区别? mov %eax,%esp mov %eax,(%esp) 我正在努力散布一个二元炸弹,但在处理一些 mov 时遇到了问题。和 leal在程序集的早期命令。 最佳答案 这会将 %
我使用 duinotech XC-3800 在 ESP32 芯片上使用 ESP IDF 测试运行裸机代码,并在图像大小方面获得以下结果。 ESP32 的分析二进制大小 文件夹结构 温度/ 主要的/ C
我正在 OS X(32 位)上执行系统调用,如下所示: push 123 mov eax, 1 sub esp, 4 int 0x80 而且我不太明白 sub esp, 4 间隙。 我在某处读到,BS
当我在 gdb 中反汇编 main() 时,它会重新调整此结果: 0x0804854c : push ebp 0x0804854d : mov ebp,esp 0x0804
我目前正在学习英特尔处理器的汇编。既然堆栈“向下增长”,为什么我们必须添加才能访问特定元素 [ebp + 8] ;; This will access the first param 我知道我们必须跳
我试图了解如何将堆栈与程序集一起使用,在我尝试时,我在 SO 中的一个问题中遇到了以下代码,即: push ecx mov eax, 4 mov ebx, 1 mov ecx, result m
我有这个 C 代码部分: #include void main() { int n, array[1000], c, d, t, e; char step; puts("Enter a number
我不太明白为什么 gcc 在调用函数之前要先将 esp 减去 12。 pushl %ebp movl %esp,%ebp sub $12,%esp socke
我是一名优秀的程序员,十分优秀!