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

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.mzph.cn/pingmian/25279.shtml

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

相关文章

RDK X3(aarch64) 测试激光雷达思岚A1

0. 环境 - 亚博智能的ROSMASTER-X3 - RDK X3 1.0 0.1 资料 文档资料 https://www.slamtec.com/cn/Support#rplidar-a-series SDK https://github.com/slamtec/rplidar_sdk ROS https://github.com/slamtec/rplidar_ros https://github.com/Slamtec/sllidar_ros2 1. robostu…

NestJs Prisma常见问题(避坑指南)

关联模型操作 查询子模型多对一情况下,不需要include被关联模型也能查出自己外键id多对一模型新增数据时,被关联的外键传值,如果model配置的外键为非必填(?),创建将会报错,多对一不能将外键设置为空持久化数据到数据…

SpringBoot实现上传头像(查看头像)

SpringBoot实现上传头像给功能和查看头像功能 文章目录 目录 文章目录 1.上传头像 1.这里的AppConfig记得定义一下 2.引入AppConfig 3.上传文件代码 2.获取头像 1.实现readFile方法 1.上传头像 首先我的代码中在application.properties中设置了上传文件的根目录 project.folder…

1310. 子数组异或查询 异或 前缀和 python

有一个正整数数组 arr,现给你一个对应的查询数组 queries,其中 queries[i] [Li, Ri]。 对于每个查询 i,请你计算从 Li 到 Ri 的 XOR 值(即 arr[Li] xor arr[Li1] xor ... xor arr[Ri])作为本次查询的结果。 并返回一…

CPASSOC代码详解

加载环境 library("MASS") require(MASS) # Modern Applied Statistics with S,"S"指的是S语言,由贝尔实验室的约翰钱伯斯(John Chambers)等人开发。S语言是R语言的前身,许多R语言的语法和功能都…

《精通ChatGPT:从入门到大师的Prompt指南》附录B:推荐阅读资源

作者:斯图尔特拉塞尔 (Stuart Russell) 和 彼得诺维格 (Peter Norvig) 简介:这本书被誉为人工智能领域的经典教材,内容涵盖了AI的基本原理、算法及其应用。无论是入门者还是专业研究者,都能从中获得启发。 2. 《深度学习》 作者…

【目标跟踪网络训练 Market-1501 数据集】DeepSort 训练自己的跟踪网络模型

前言 Deepsort之所以可以大量避免IDSwitch,是因为Deepsort算法中特征提取网络可以将目标检测框中的特征提取出来并保存,在目标被遮挡后又从新出现后,利用前后的特征对比可以将遮挡的后又出现的目标和遮挡之前的追踪的目标重新找到&#xff0…

企业网页制作

随着互联网的普及,企业网站已成为企业展示自己形象、吸引潜在客户、开拓新市场的重要方式。而企业网页制作则是构建企业网站的基础工作,它的质量和效率对于企业网站的成败至关重要。 首先,企业网页制作需要根据企业的特点和需求进行规划。在网…

前端 移动端 手机调试 (超简单,超有效 !)

背景:webpack工具构建下的vue项目 1. 找出电脑的ipv4地址 2. 替换 host 3. 手机连接电脑热点或者同一个wifi 。浏览器打开链接即可。

Spring运维之业务层测试数据回滚以及设置测试的随机用例

业务层测试数据回滚 我们之前在写dao层 测试的时候 如果执行到这边的代码 会在数据库 里面留下数据 运行一次留一次数据 开发有开发数据库,运行有运行数据库 我们先连数据库 在pom文件里引入mysql的驱动和mybatis-plus的依赖 在数据层写接口 用mybatis-plus进…

浅谈JDBC

文章目录 一、什么是 JDBC?二、JDBC 操作流程三、JDBC代码例子 一、什么是 JDBC? JDBC是一种可用于执行SQL语句的JAVA API,是链接数据库和JAVA应用程序的纽带。JDBC一般需要进行3个步骤:与数据库建立一个链接、向数据库发送SQL语…

当AGI能够自我复制并传播到任意电脑时,会怎样?

当人工通用智能(AGI)具备自我复制能力,并能够传播到任何一台计算机作为宿主机时,这种情景可能带来一系列深远的影响和挑战。以下是一些潜在的影响和可能的结果: 1. 安全威胁与恶意利用 AGI的自我复制和传播能力可能被…

openh264 场景变化检测算法源码分析

文件位置 openh264/codec/processing/scenechangedetection/SceneChangeDetection.cppopenh264/codec/processing/scenechangedetection/SceneChangeDetection.h 代码流程 说明: 通过代码流程分析,当METHOD_SCENE_CHANGE_DETECTION_SCREEN场景类型为时…

Web前端工资调整:深入剖析与全面解读

Web前端工资调整:深入剖析与全面解读 在快速发展的互联网行业中,Web前端技术日新月异,而与之紧密相关的工资调整也成为了业内热议的话题。本文将从四个方面、五个方面、六个方面和七个方面,深入剖析Web前端工资调整的原因、趋势、…

Linux -- 了解 vim

目录 vim Linux 怎么编写代码? 了解 vim 的模式 什么是命令模式? 命令模式下 vim 的快捷键: 光标定位: 复制粘贴: 删除及撤销: 注释代码: 什么是底行模式? ​编辑 ​编辑…

Java:111-SpringMVC的底层原理(中篇)

这里续写上一章博客(110章博客): 现在我们来学习一下高级的技术,前面的mvc知识,我们基本可以在67章博客及其后面相关的博客可以学习到,现在开始学习精髓: Spring MVC 高级技术: …

输入与随机数

Java的两个类库 输入 如何实现键盘输入?我们需要了解到Scanner这个类,其作用于及键盘输入。 类库:java.util 如何使用?分为3步走: 导入包(一般idea会帮做) import java.util.Scanner;创建对…

Java学习日志26:Double.NEGATIVE_INFINITY与Double.MIN_VALUE的区别

Double.NEGATIVE_INFINITY 和 Double.MIN_VALUE 都是 Java 中 Double 类的静态成员,但它们表示的含义不同。 Double.NEGATIVE_INFINITY 表示双精度浮点数的负无穷大。它是一个特殊的数值,在数值计算中通常用于表示一些特殊情况,比如除以零的…

Large-Scale LiDAR Consistent Mapping usingHierarchical LiDAR Bundle Adjustment

1. 代码地址 GitHub - hku-mars/HBA: [RAL 2023] A globally consistent LiDAR map optimization module 2. 摘要 重建精确一致的大规模激光雷达点云地图对于机器人应用至关重要。现有的基于位姿图优化的解决方案,尽管它在时间方面是有效的,但不能直接…

ubuntu使用docker安装openwrt

系统:ubuntu24.04 架构:x86 1. 安装docker 1.1 离线安装 docker下载地址 根据系统版本,依次下载最新的三个关于docker的软件包 container.io(注意后缀版本顺序)docker-ce-clidocker-ce 然后再ubuntu系统中依次按顺…