下载安装Thonny并烧录MicroPython固件至ESP32

news2024/11/27 9:43:37

Thonny介绍

一、Thonny的基本特点

  1. 面向初学者:Thonny的设计初衷是为了帮助Python初学者更轻松、更快速地入门编程。它提供了直观易懂的用户界面和丰富的功能,降低了编程的门槛。
  2. 轻量级:作为一款轻量级的IDE,Thonny不会占用过多的系统资源,使得初学者在有限的硬件条件下也能流畅地进行编程学习。
  3. 基于Python:Thonny是基于Python内置图形库tkinter开发的可视化工具,因此它完全面向Python初学者,与Python语言本身紧密相连。

二、Thonny的功能特点

  1. 代码编辑:Thonny提供了基本的代码编辑功能,如语法高亮、自动补全等,这些功能有助于提高编程效率和减少错误。
  2. 代码运行与调试:Thonny内置了Python解释器,可以直接运行Python代码,并提供了强大的调试功能,如断点设置、单步执行等,有助于初学者发现和解决程序中的错误。
  3. 变量查看:Thonny允许用户实时查看程序中变量的值,这有助于初学者理解程序的运行状态和变量之间的关系。

三、Thonny在嵌入式物联网领域的应用

  1. 硬件编程支持:虽然Thonny主要面向Python初学者,但它也支持通过串口、USB等方式连接外部设备(如ESP32、Arduino等),实现硬件编程。这使得Thonny在嵌入式物联网领域具有一定的应用价值。
  2. 与MicroPython结合:对于使用MicroPython进行ESP32等微控制器编程的开发者来说,Thonny是一个很好的选择。开发者可以使用Thonny将MicroPython固件烧录至ESP32,并通过Thonny编写和运行Python代码来控制ESP32。
  3. 易于学习和使用:对于初学者来说,Thonny的直观界面和丰富功能使得他们更容易上手Python编程和嵌入式物联网开发。这有助于降低学习门槛,提高学习效率。

下载

官方网址:Thonny, Python IDE for beginners

安装

下载完成后打开Thonny.exe软件

根据你的需求来,我这里就选择为所有用户安装

下一步

下一步

选择你要安装的目录,下一步

下一步

创建快捷图标

instal安装

等待安装完成

点击finish

第一次安装可能会弹出这个框框,选择简体中文,下面不动,选择Standard

安装完成后打开桌面的快捷方式
 

到这里就安装完成了

MicroPython介绍

MicroPython是一种精简的Python 3解释器,专为嵌入式系统而设计。

  1. 定义与特点
    • MicroPython是Python 3语言的精简实现,包括Python标准库的一小部分,并经过优化以在微控制器和受限环境中运行。
    • 它使用C语言编写,是运行在微控制器硬件之上的完全的Python编译器和运行时系统。
    • MicroPython与标准的Python(CPython)尽可能兼容,因此了解Python的用户可以轻松地过渡到MicroPython。
  2. 主要特性
    • 轻量级:解释器体积较小,通常仅100KB左右,通过编译成二进制Executable文件运行,执行效率较高。
    • 直接硬件访问:提供对低级硬件的访问和控制,如GPIO、I2C、SPI等。
    • 模块系统:拥有强大的模块系统,支持文件系统、网络、图形界面等功能。
    • 兼容性:语法和功能与标准Python兼容,支持Python大多数核心语法。
    • 交叉编译:支持交叉编译生成高效的原生代码,速度比解释器快10-100倍。
    • 内存占用小:代码量少,内存占用小,适合运行在MCU和内存小的开发板上。
    • 开源与免费:采用开源许可,免费使用。
  3. 应用场景
    • 嵌入式产品原型构建:为嵌入式产品快速构建原型和用户交互。
    • 硬件项目:制作小型可编程硬件项目。
    • 教育工具:作为教育工具,帮助初学者学习Python和物联网编程。
    • 智能设备固件:构建智能设备固件,实现高级控制和云连接。
    • 微控制器应用:各种微控制器应用,如物联网、嵌入式智能、机器人等。
  4. 注意事项
    • 内存和Flash空间有限:在使用MicroPython时,需要注意内存和Flash空间的限制。
  5. 开发环境
    • 用户可以通过交互式提示符(REPL)立即执行所支持的命令。
    • MicroPython提供了许多丰富的库,可以方便地在微控制器上进行各种操作。
    • 开发者可以在计算机或开发板上安装和配置MicroPython环境,并通过实践来巩固所学知识。
  6. 社区支持
    • MicroPython拥有活跃的社区,提供了丰富的教程、示例代码和讨论论坛,方便用户学习和交流。

下载ESP32的MicroPython固件

这里如果安装的是最新版的Thonny是可以不用自己手动下载固件的,在Thonny里面可以自动下载并安装但是是普通版的固件

官方网址:MicroPython - Python for microcontrollers

点击进去

点击蓝色框的ESP32

点进去后发现有很多类型和版本,我用AI大概解释了一下每个类型的用途

  1. Firmware
    • 这是标准的MicroPython ESP32固件。它包含MicroPython解释器以及用于ESP32的基本库和模块。
    • 推荐:对于学习使用,这是一个很好的起点。它提供了MicroPython的基本功能和ESP32硬件的基本支持。
  2. Firmware (ESP32 Unicore)
    • 这个固件是为ESP32的单核处理器版本设计的。ESP32是一个双核处理器,但在某些应用中可能只需要使用一个核心。
    • 推荐:如果您有特殊的硬件需求或想要学习如何在单核模式下使用ESP32,可以选择这个版本。但通常对于学习使用来说,标准版固件更为合适。
  3. Firmware (Support for OTA)
    • 这个固件支持通过OTA(Over-the-Air)更新。它允许您通过无线方式更新ESP32上的MicroPython固件。
    • 推荐:如果您计划在生产环境中使用ESP32,并且需要远程更新功能,那么这个版本是适合的。但对于学习使用来说,可能不是必需的。
  4. Firmware (ESP32 D2WD)
    • 这个固件可能与ESP32的深度睡眠唤醒(Deep Sleep Wake-up)功能相关,但具体的描述在您的列表中并不明确。
    • 推荐:如果您对ESP32的低功耗模式或深度睡眠功能感兴趣,并且需要学习如何使用它们,那么这个版本可能是一个好选择。但通常对于基础学习来说,它不是必需的。
  5. Firmware (Support for SPIRAM / WROVER)
    • 这个固件支持具有外部SPI RAM(如WROVER模块)的ESP32开发板。外部RAM可以扩展ESP32的内存,使得可以运行更大的程序或处理更多数据。
    • 推荐:如果您有一个带有外部SPI RAM的ESP32开发板,并且想要利用这个额外的内存,那么选择这个版本是合适的。但如果您只是进行基础学习,那么标准版固件应该就足够了。
  6. Firmware (Compiled with IDF 3.x)
    • 这个固件是使用ESP-IDF(Espressif IoT Development Framework)的3.x版本编译的。ESP-IDF是Espressif Systems提供的官方开发框架,用于开发基于ESP32的应用程序。
    • 推荐:如果您对ESP-IDF或希望了解MicroPython固件与ESP-IDF之间的兼容性,那么可以选择这个版本。但对于大多数学习使用来说,标准版固件应该就足够了。

那这里我们就选择第一个普通的最新版的固件下载:Firmware

烧录固件

点击选项,管理插件

安装(点击)esptool

点击选项

选择你用的芯片,我这里选择ESP32

可以选为自己的固件

或者选择对应的信息,然后点击安装,会自动帮你下载安装

关闭

下载完成后可以按下复位键,如果有下图内容即烧录成功

运行LED闪烁

写一段板载LED闪烁代码:

import machine  # 这行代码导入了machine模块,该模块提供了与硬件交互的接口,比如控制GPIO引脚。  


import time  # 这行代码导入了time模块,用于处理时间相关的操作,比如延时。
  
# 初始化LED引脚(这里假设是GPIO 2,也就是D2)  
led = machine.Pin(2, machine.Pin.OUT)  
while True:  
    # 打开LED  
    led.on()  
    # 等待一段时间(例如0.5秒)  
    time.sleep(0.5)  
    # 关闭LED  
    led.off()  
    # 再等待一段时间(例如0.5秒)  
    time.sleep(0.5)

点击保存,选择MrcroPython设备

自己命名,我就选择了main.py

点击运行

即可看见板载LED正在运行了

还有一种方法能运行LED闪烁,我们先停止
 

我们可以在下面输入我们的代码,一步一步运行,也可以实现LED闪烁功能

并且你输入:help(),他能为你提供帮助和说明
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1805262.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Zookeeper高频面试题整理(入门到精通)

文章目录 1、什么是Zookeeper?2、ZooKeeper的基本数据结构是什么?3、Zookeeper的节点类型有哪些?4、Zookeeper的特点5、ZooKeeper如何保证数据一致性?6、什么是ZAB协议?7、Zookeeper的ACL机制是什么?8、Zoo…

读书笔记:左耳听风

程序员如何用技术变现 我完全没有必要通过打工听人安排而活着,而是反过来通过在公司工作提高自己的技能,让自己可以更为独立和自由地生活。 因而,在工作当中,对于那些没什么技术含量的工作,我基本上就像是在学生时代那…

github异常问题总结

问题1: gitgitlab.gz.cvte.cn: Permission denied (publickey). fatal: Could not read from remote repository.Please make sure you have the correct access rights and the repository exists.解决方法: 这个错误表示 GitLab 服务器拒绝了你的 SSH…

数据结构严蔚敏版精简版-栈和队列以及c语言代码实现

1栈的定义和特权 栈(stack)是限定仅在表尾进行插入或删除操作的线性表。 注:虽然说栈的实现就是一端插入和删除,但不一定是在“表尾”,这个“表尾”是广义的。 头插法实现链栈 尾插法实现链栈 因此,对栈来说,表尾…

理解数仓建模

​​​在数仓建设的过程中,由于未能完全按照规范操作, 从而导致数据仓库建设比较混乱,常见有以下问题: 数仓常见问题 ● 数仓分层不清晰:数仓的分层没有明确的逻辑,难以管理和维护。 ● 数据域划分不明确…

刷代码随想录有感(97):动态规划——斐波那契数列

题干&#xff1a; 代码&#xff1a; class Solution { public:int fib(int n) {if(n < 1)return n;vector<int> dp(n 1);dp[0] 0;dp[1] 1;for(int i 2; i < n; i){dp[i] dp[i - 1] dp[i - 2];}return dp[n];} }; 动态规划五部曲&#xff1a; 1.dp数组的定…

静态IP代理服务对比:哪些提供商值得信赖?静态ip代理哪家好用?

当涉及选择静态IP代理时&#xff0c;许多人可能会感到困惑&#xff0c;因为市场上存在着各种各样的选项。本文旨在为您提供一些关键指导&#xff0c;帮助您确定哪种静态IP代理是最适合您需求的。在这个过程中&#xff0c;我们将介绍一个备受推崇的解决方案——太阳HTTP。 1.高速…

8. 正则表达式

正则表达式 在处理字符串时&#xff0c;需要查找符合某些复杂规则的字符串&#xff0c;正则表达式就是用于描述这些规则的工具 一、正则表达式语法 行定位符&#xff1a;用来描述字符串的边界 -->用来匹配一整行 符号匹配位置^行的开始$行的结尾 ^tm : 可以匹配行 tm equa…

Recognize Anything: A Strong Image Tagging Model(RAM模型使用方法)

一、RAM模型介绍 这篇论文介绍了一个名为“Recognize Anything Model”&#xff08;RAM&#xff09;的新型基础模型&#xff0c;专用于图像标签识别&#xff08;图像分类&#xff09;。这一模型采用大规模图像-文本配对数据进行训练&#xff0c;无需手动注释&#xff0c;能够在…

Java--可变参数

1.JDK1.5开始&#xff0c;Java支持同类型的可变参数给一个方法 2.在方法声明之前&#xff0c;在指定参数类型后加一个省略号&#xff08;...&#xff09; 3.一个方法只能指定一个可变参数&#xff0c;它必须是方法的最后一个参数&#xff0c;任何普通的参数必须在它之前声明 …

国产操作系统上给virtualbox中win7虚拟机安装增强工具 _ 统信 _ 麒麟 _ 中科方德

原文链接&#xff1a;国产操作系统上给virtualbox中win7虚拟机安装增强工具 | 统信 | 麒麟 | 中科方德 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇在国产操作系统上给win7虚拟机安装virtualbox增强工具的文章。VirtualBox增强工具&#xff08;Guest Additions&a…

Java----抽象类和接口

欢迎大家来这次博客-----抽象类和接口。 1.抽象类 1.1 抽象类概念 在Java中我们都是通过类来描述对象&#xff0c;但反过来并不是所有的类都是用来描述对象的。当一个类中没有足够的信息来描述一个具体对象&#xff0c;我们就将该类称为抽象类。 如上图中的Shape类&#xff…

《MySQL是怎样运行的》读书笔记(三) B+树索引

前言 从前面数据存储结构中我们已经知道了页和记录的关系示意图: 其中页a、页b、页c ... 页n 这些页可以不在物理结构上相连&#xff0c;只要通过双向链表相关联即可。 在正式介绍索引之前&#xff0c;我们需要了解一下没有索引的时候是怎么查找记录的。下边先只讨论搜索条件…

单源最短路径算法 -- 迪杰斯科拉(Dijkstra)算法

1. 简介 迪杰斯科拉&#xff08;Dijkstra&#xff09;算法是一种用于在加权图中找到最短路径的经典算法。它是由荷兰计算机科学家Edsger Wybe Dijkstra在1956年首次提出的&#xff0c;并以他的名字命名。这个算法特别适合于解决单源最短路径问题&#xff0c;即计算图中一个顶点…

Application Load Balancer-ALB

Application Load Balancer-ALB 什么是ALB开通ALB服务实现IPv4服务的负载均衡创建ALB实例创建服务器组添加后端服务器配置监听设置域名解析&#xff08;可选&#xff09;释放ALB实例 什么是ALB 在介绍ALB之前首先介绍一下负载均衡SLB&#xff0c;可以说SLB是负载均衡家族之首 …

htb-linux-6-beep

nmap web渗透 目录扫描 漏洞关键词 shell py脚本执行 flag root 目前的权限 nmap root

【Unity Shader入门精要 第13章】使用深度和法线纹理(一)

1. 原理 深度纹理的本质是一张RenderTexture&#xff0c;只不过其中记录的不是颜色值&#xff0c;而是一个深度值 这些深度值来自于顶点在空间变换后得到的归一化设备坐标&#xff08;NDC&#xff09;的Z值 由于NDC坐标的分量取值范围在[-1, 1]之间&#xff0c;要使颜色值能…

实现Redis和数据库数据同步问题(JAVA代码实现)

这里我用到了Redis当中的发布订阅模式实现(JAVA代码实现) 先看图示 下面为代码实现 首先将RedisMessageListenerContainer交给Spring管理. Configuration public class redisConfig {AutowiredRedisConnectionFactory redisConnectionFactory;AutowiredQualifier("car…

《精通ChatGPT:从入门到大师的Prompt指南》附录A:常用Prompt示例

附录A&#xff1a;常用Prompt示例 在《精通ChatGPT&#xff1a;从入门到大师的Prompt指南》的附录A中&#xff0c;我们将展示一系列常用的Prompt示例&#xff0c;帮助读者更好地理解和应用Prompt技术。每个示例将包含Prompt的描述、使用场景、预期结果以及实际输出。希望这些示…

Springboot+Vue的网上购物商城系统(前后端分离)

技术栈 JavaSpringBootMavenMySQLMyBatisVueShiroElement-UI 角色对应功能 用户商家 功能截图