MicroPython开发ESP8266——环境搭建

news2024/11/27 3:43:09

MicroPython开发ESP8266——环境搭建

  • 0.前言
  • 一、固件烧写
    • 1.使用乐鑫官方的烧写工具
    • 2.使用python中的esptool工具烧写
    • 3.使用uPyCraft烧写
    • 4.测试
  • 二、IDE工具安装
    • 1.windows环境搭建
    • 2.Linux环境搭建
    • 3.测试
      • 1)软件设置
      • 2)测试程序
      • 3)烧录


0.前言

  最近刷视频感觉 ESP32 好像挺火的,翻了翻杂货堆只找到以前学习时用的NodeMCU,核心是ESP-12f,主频160MHz,内置 4MB 的 SPI Flash。找了一下教程发现这个小板子用不了乐鑫官方的 ESP - IDF 开发工具,之前学习是用 Arduino 通过串口功能进行联网,这样就浪费了这个板子自带的主控。这次给它刷一个 MicroPython 的固件,虽然对比官方的 RTOS_SDK 开发,程序的执行速度会有一些降低,但是本来和新款的 ESP-C/S 系列芯片相比性能就不太强,已经算老旧设备了,python开发起来还更加方便,先玩玩再说。

一、固件烧写

1.使用乐鑫官方的烧写工具

  使用 MicroPython 开发需要烧写对应的固件,在 MicroPython 官网下载对应的固件,然后使用乐鑫官方的 flash download tool 进行烧写。最新版的烧写工具好像不用选择 flash 大小了,不太清楚是不是已经开发好了自动适配功能,先烧写上去看看。
在这里插入图片描述
将下载的bin文件烧写到 0x0 地址,在烧写之前先点击ERASE擦除信息,然后再开始烧写。

2.使用python中的esptool工具烧写

  笔者在使用flash download tool工具进行烧写时,烧写过程不报错,但是烧写完重启后无法进入命令行,终端打印乱码,所以使用了python中的esptool进行烧写。

# 安装esptool工具
pip install esptool
# 擦除芯片中的固件,/dev/ttyUSBX为开发板端口
esptool.py --port /dev/ttyUSBX erase_flash
# 烧写固件
esptool.py --port /dev/ttyUSBX --baud 460800 write_flash --flash_size=detect -fm dio 0 ~/esp8266-20220618-v1.19.1.bin

烧写固件的参数 flash-mode,如果能找到相关用户手册可以确认,笔者的开发板闲置太久,找不到相关手册了,不过大多数ESP8266 ESP-01 / 07(512 KB模块)使用参数qio,大多数ESP8266 ESP-12(> = 4 MByte模块)使用dio,可以尝试一下。
烧写成功后,复位开发板,使用串口调试工具可以看到如下信息:
在这里插入图片描述

3.使用uPyCraft烧写

这种方式比较简单,安装uPyCraft后,在菜单栏中的 Tools --> Serial 中选择开发板的 COM 口,然后在 Tools 中选择 BurnFirmware 即可烧写,这里笔者就不演示了。

4.测试

固件烧写完成后,复位开发板,可以搜索到一个名为 MicroPython-xxxxxx 的wifi。使用串口工具连接开发板,在终端中输入以下程序,可以看到板载的LED闪烁:

from machine import Pin
import time

LED = Pin(2, Pin.OUT)

while True:
    LED.value(1)
    time.sleep(1)
    LED.value(0)
    time.sleep(1)

LED灯连接在开发板上的 GPIO2 引脚,NodeMCU 相关的引脚图可以在这篇博客中找到。

二、IDE工具安装

  使用命令行进行开发不是很友好,所以可以选择一个IDE进行开发。可以选择的 IDE 有 uPyCraft 和 Thonny,笔者就选 Thonny 进行开发。

1.windows环境搭建

在windows中,使用 Thonny 之前需要先安装 python 环境,然后安装 Thonny 工具,如果 python 设置好了系统的环境变量,安装之后就可以直接设置好编程环境,否则需要手动设置一下 python 环境。网上有很多教程,这里就不再赘述。

2.Linux环境搭建

windows下的工具安装比较麻烦,所以笔者选择了在 Linux 下进行开发。Linux 中的python设置自行选择,笔者使用的是 Ubuntu 自带的 python3 软件包。然后在终端使用如下命令安装 Thonny:

pip install thonny

安装完成后在终端输入 thonny 即可打开软件,也可以自行添加桌面快捷方式,这里就先略过。使用 apt 也可以安装,不过版本太低了用不了。

在Linux下进行开发还需要一个串口调试工具,可以用 putty 或者 CuteCOM,笔者更喜欢CuteCOM 的界面风格,安装起来也比较方便:

sudo apt install cutecom

安装完成后选择开发板的端口,点击 open 即可进行调试:
在这里插入图片描述
如果提示 Permission denied,一般是设备端口的权限问题,使用以下命令赋予端口权限再open即可(赋予权限后需要注意端口操作行为):

sudo chmod 777 /dev/ttyUSBX

3.测试

1)软件设置

在 thonny 菜单栏中的 工具 --> 选项 --> 解释器中选择自己的开发板和端口:
在这里插入图片描述
然后软件主界面左下角会出现一个 boot.py 文件,这个就是开发板对应的配置文件:
在这里插入图片描述

2)测试程序

新建一个main.py文件,注:用户程序只能以此文件名命名,所以只能一个程序一个目录进行管理,程序内容如下:

import network
import time
import urequests
from machine import Pin

LED = Pin(2, Pin.OUT)

AP_name='要连接的无线名称'
password='密码'
sta_if = network.WLAN(network.STA_IF); sta_if.active(True)
sta_if.scan()                     # Scan for available access points
sta_if.connect(AP_name, password) # Connect to an AP
while not sta_if.isconnected():
    print('connect...')
    time.sleep(2)
    
# Change name/password of ESP8266's AP:
ap_if = network.WLAN(network.AP_IF)
ap_if.config(essid="要创建的wifi名", authmode=network.AUTH_WPA_WPA2_PSK, password="密码")

response = urequests.get('http://www.baidu.com')
print(response.text)

while True:
    LED.value(1)
    time.sleep(1)
    LED.value(0)
    time.sleep(1)

3)烧录

点击软件上方的运行按钮可以直接运行,此方式是在开发板的 RAM 中运行,断电重启后丢失。
在这里插入图片描述
在软件菜单栏中选中 视图 --> 文件,在软件左侧会出现文件目录,右击编写的 main.py,选择 上传到 / ,就可以将程序烧写到开发板中,此时下方的 boot.py 所在的栏中也会出现一个main.py,表示烧写成功。
在这里插入图片描述
如果想要移除开发板中的程序,右击左下角的 main.py,选择删除即可。
烧写完成后复位开发板,就可以查看到串口打印如下内容:
在这里插入图片描述
同时可以在路由器界面中找到已连接的开发板,也可以搜索到自己开发板创建的wifi。

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

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

相关文章

NLP 语种检测 API 数据接口

NLP 语种检测 API 数据接口 180 语言检测,语种全称与缩写,返回置信度。 1. 产品功能 基于 NLP 分析文本的语种支持 180 多语种检测;语种缩写遵循 ISO 639-1 标准;包含检测到的语种置信度;毫秒级响应性能;…

Java 代码ccflow 代码分析

流程属性目录概述需求:设计思路实现思路分析1。代码流程参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive. ha…

Linux中详解编译原理每一步

引言: 时间过的飞快,可以看出我们已经开始学习Linux了,但是我们学习Linux过程中,依然会涉及到很多的以前的知识,比如编译原理,我们的代码如何从一个源文件逐步变成一个可执行文件,当初我记得我…

流批一体计算引擎-8-[Flink]的Table API连接器

参考官方文档Table API连接器 1 Table API连接器概述 Flink的Table API和SQL程序可以连接到其他外部系统,用于读取和写入批处理表和流式表。source表提供对存储在外部系统(如数据库、键值存储、消息队列或文件系统)中的数据的访问。sink表将…

Sentienl学习笔记

PS:本文为作者学习黑马程序员Springcould视频笔记实际技术参考价值不大,文章将持续更新。 文章目录一. 什么是Sentienl1. 介绍2. 与Hystrix对比3. 主要特性二. Sentienl安装配置1. 下载安装包2. 启动三. Sentienl的使用1. Sentienl的整合2. 簇点链路四. …

每日学术速递1.27

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 前沿推介: ICLR 2023 ICLR 全称为国际学习表征会议(International Conference on Learning Representations),今年将举办的是第 11 届,预计将于 5 月 1 日至 5 …

Redis实现附近商铺 | 黑马点评

一、GEO数据结构 1、入门 GEO是Geolocation的缩写,代表地理坐标。redis3.2中加入对GEO的支持,允许存储地理坐标信息,帮助我们根据经纬度来检索数据。 常见命令: GEOADD:添加一个地理空间信息,包含&…

springcloud3 Sentinel的服务熔断操作

一 服务熔断 1.1 服务熔断 Sentinel熔断降级会在调用链路中某个资源出现不稳定状态时(调用超时或者异常比例升高),对这个资源的调用进行限制,让请求快速失败,避免影响到其他资源进而导致级联错误。 当资源被降级后&…

07_linux中断控制

裸机开发要点 通用中断控制器(GIC) 中断类型、硬件中断号、分发器和cpu接口单元 中断向量表 一级查表、二级查表 中断处理流程 进入irq模式、保护现场、获取硬件中断编号、执行中断处理函数、还原现场 设备树构造 分为 gic中断控制器设备树节点 其他外设中断控制器节点 需要…

大数据相关组件

一、 HDFSHDFS是hadoop的核心组件,HDFS上的文件被分成块进行存储,默认块的大小是64M,块是文件存储处理的逻辑单元。HDFS是Master和Slave的结构。分NameNode、SecondaryNameNode、DataNode这几个角色。NameNode:是Master节点&#…

springcloud3 Sentinel的搭建以及案例操作

一 sentinel的概念 1.1 sentinel Sentinel是分布式系统流量控制的哨兵,阿里开源的一套服务容错的综合性解决方案。 主要用来处理: 服务降级 服务熔断 超时处理 流量控制 sentinel 的使用可以分为两个部分: 核心库(Java 客户端&#…

基于nodejs+vue的留学服务管理平台的设计与开发

目 录 摘 要 I Abstract I 第一章 绪论 1 1.1系统开发的背景 1 1.2系统开发的意义 1 1.3本文研究内容 2 第二章 系统开发技术 3 第三章 系统分析 6 3.1用户需求分析 6 3.1.1 老师用户 6 3.1.2 学生用户 6 3.1.3 管理员用户 6 3.2 系统…

6--总线

文章目录一.总线概述(一)总线特性(二)总线分类1.按功能分/按连接的部件分(1)片内总线/CPU内部总线(2)系统总线(3)通信总线/外部总线2.按数据传输格式分&#…

7、关系运算符与关系表达式

目录 一、关系运算符 二、关系表达式 三、优先级与结合性 一、关系运算符 关系运算符包括大于、大于等于、小于、小于等于、等于和不等于 注意&#xff1a;符号“>”&#xff08;大于等于&#xff09;与“<”&#xff08;小于等于&#xff09;的意思分别是大于或等于…

向QAbstractItemView子类如:QTreeView、QTableView等子项单元格插入窗体小部件的功能实现(第3种方法)

1.前言工作中经常会遇到这样的需求&#xff1a;向QAbstractItemView子类如QTreeView、QTableView单元格插入窗体小部件&#xff0c;如&#xff1a;进度条、按钮、单行编辑框等。下面链接的系列博文就是讲解如何实现该功能的。《向QAbstractItemView子类如:QTreeView、QTableVie…

Java 23种设计模式(9.结构型模式-外观模式)

结构型模式-外观模式 代码详解 类图 代码 public class SubOne {public void method1(){System.out.println("method1");} }public class SubTwo {public void method2(){System.out.println("method2");} }public class SubThree {public void method3(…

VSCode配置C/C++环境

(1).配置编译器 接下来配置编译器路径&#xff0c;按快捷键CtrlShiftP调出命令面板&#xff0c;输入C/C&#xff0c;选择“Edit Configurations(UI)”进入配置。这里配置两个选项&#xff1a; - 编译器路径&#xff1a;D:/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64…

3D创作元素将入住下一代Windows 10和HoloLens中

新 Windows 10 将会带来崭新的 3D 特性&#xff0c;任何用户都可以通过内置的工具来制作发布有关「3D、增强现实 AR 和混合现实 (mixed reality) 的游戏和素材」。 北京时间 10 月 26 号晚 10 点&#xff0c;微软在纽约召开的新品发布会如期而至。会上微软发布了大家期待已久的…

【Linux】进程的概念 | 进程控制块 PCB | task_struct

&#x1f923; 爆笑教程 &#x1f449; 《看表情包学Linux》&#x1f448; 猛戳订阅 &#x1f525; &#x1f4ad; 写在前面&#xff1a;本章我们将带着大家深入理解 "进程" 的概念&#xff0c;"进程" 这个概念其实使我们一直在接触的东西&#xff0c;只不…

浅谈操作系统

操作系统是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序。根据运行的环境&#xff0c;操作系统可以分为桌面操作系统&#xff0c;手机操作系统&#xff0c;服务器操作系统&#xff0c;嵌入式操作系统等。 通俗来…