百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python挺酷的 | PyCharm MicroPython ESP32 开发环境搭建

off999 2024-09-26 16:20 29 浏览 0 评论

#头条创作挑战赛#

引:

手头上有一个ESP32的开发板,由于项目需要,准备进行评估测试一下。

之前安装过PyCharm,现在准备使用Python进行开发,从网络上搜罗了一些资料。大概有了一些眉目,说干就干,走起来。

如果想要进行MicroPython开发,必然要先更新固件bin文件。

一、先把ESP32的固件bin更新一下

1.下载固件

最稳妥的就是官网下载了。

官网地址:https://micropython.org/download/esp32/

找到最新的版本。

进行下载:

我们下载完了之后,怎么用这个bin文件呢?需要找到一个ESP32的bin烧录工具,这个就叫ESPTOOL,厂家做的很贴心,直接cmd指令就可以进行安装了。

2. EspTool安装

之前说过Python的库文件安装,这个和库文件的安装大同小异,都是使用的是pip指令。

pip install --user esptool

3. 设备连接

将ESP32通过micro USB连接到电脑上,可以查看识别的串口号以备后用。

我们查看设备管理器

通过命令连接设备

esptool.py -p PORT flash_id

将其中的PORT更换为COM5在命令提示符中进行输入,相信很多人遇到和我一样的问题,我总结一下,不是有效的内部命令问题。

C:\Users\Administrator>esptool.py -p COM5 flash_id
'esptool.py' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

这个是因为没有进行路径的设置PACH没有设置,我们可以进入到esptool的安装路径使用命令即可。

C:\Users\Administrator>cd c:\Users\Administrator\AppData\Roaming\Python\Python310\Scripts
c:\Users\Administrator\AppData\Roaming\Python\Python310\Scripts>dir
 驱动器 C 中的卷没有标签。
 卷的序列号是 9247-BA3C
c:\Users\Administrator\AppData\Roaming\Python\Python310\Scripts 的目录


2022/10/31  15:43    <DIR>          .
2022/10/31  15:43    <DIR>          ..
2022/10/31  15:43             1,050 espefuse.py-script.py
2022/10/31  15:43            74,752 espefuse.py.exe
2022/10/31  15:43             1,052 espsecure.py-script.py
2022/10/31  15:43            74,752 espsecure.py.exe
2022/10/31  15:43             1,048 esptool.py-script.py
2022/10/31  15:43            74,752 esptool.py.exe
2022/10/31  15:43           106,383 pyserial-miniterm.exe
2022/10/31  15:43           106,385 pyserial-ports.exe
               8 个文件        440,174 字节
               2 个目录 325,530,390,528 可用字节

然后我们再输入命令,返回的命令格式正确,却找不到COM5端口

c:\Users\Administrator\AppData\Roaming\Python\Python310\Scripts>esptool.py -p COM5 flash_id
esptool.py v4.3
Serial port COM5
Connecting......................................
A fatal error occurred: Failed to connect to Espressif device: No serial data received.
For troubleshooting steps visit: https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html

这个原因是因为我之前打开了虚拟串口造成的,还记得当时用的VSPD软件吧。小技巧 | 工程师神器之虚拟串口软件VSPD

打开这个软件将COM5进行关闭,重新试验一下。

c:\Users\Administrator\AppData\Roaming\Python\Python310\Scripts>esptool.py -p COM5 flash_id
esptool.py v4.3
Serial port COM5
Connecting..........
Detecting chip type... Unsupported detection protocol, switching and trying again...
Connecting.........
Detecting chip type... ESP32
Chip is ESP32-D0WDQ6 (revision v1.0)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 3c:71:bf:c7:ff:3c
Uploading stub...
Running stub...
Stub running...
Manufacturer: 20
Device: 4016
Detected flash size: 4MB
Hard resetting via RTS pin...

至此,连接ESP32成功。

4. 固件擦除

我们擦除原有的固件代码

esptool.py --chip esp32 erase_flash

大家知道在烧录的时候,经常用到boot按键,在这里也是一样的,需要长按boot按键才是可以的。

我们可以看见提示符:

c:\Users\Administrator\AppData\Roaming\Python\Python310\Scripts>esptool.py --chip esp32 erase_flash
esptool.py v4.3
Found 2 serial ports
Serial port COM5
Connecting....
Chip is ESP32-D0WDQ6 (revision v1.0)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
WARNING: Detected crystal freq 41.01MHz is quite different to normalized freq 40MHz. Unsupported crystal in use?
Crystal is 40MHz
MAC: 3c:71:bf:c7:ff:3c
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...
Chip erase completed successfully in 9.2s
Hard resetting via RTS pin...

5. 更新固件

就要将刚刚的bin文件下载到ESP32的板子中。

使用下面的命令:

esptool.py --chip esp32 --port COM5 --baud 460800 write_flash -z 0x1000 esp32-20220618-v1.19.1.bin

我们查看一下:

c:\Users\Administrator\AppData\Roaming\Python\Python310\Scripts>esptool.py --chip esp32 --port COM5 --baud 460800 write_flash -z 0x1000 esp32-20220618-v1.19.1.bin
esptool.py v4.3
Serial port COM5
Connecting.........
Chip is ESP32-D0WDQ6 (revision v1.0)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
WARNING: Detected crystal freq 41.01MHz is quite different to normalized freq 40MHz. Unsupported crystal in use?
Crystal is 40MHz
MAC: 3c:71:bf:c7:ff:3c
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Flash will be erased from 0x00001000 to 0x0017efff...
Compressed 1560976 bytes to 1029132...
Wrote 1560976 bytes (1029132 compressed) at 0x00001000 in 24.4 seconds (effective 511.4 kbit/s)...
Hash of data verified.


Leaving...
Hard resetting via RTS pin...

这部分是不需要按下boot按键的。

至此,我们的固件部分的安装就已完成。下面是配置PyCharm。

二、配置Pycharm

安装MicroPython插件

在设置选项卡里面进行操作

这样就安装完成了,由于之前安装过串口的包文件,所以不再安装,另外有这样的提示:

 ‘adafruit-ampy’要求安装的版本>=1.0.5,<1.1

文件的版本过低,会提示错误,我们通过pycharm直接升级即可,并不需要额外去安装。

三、编写代码并下载

板子上的蓝色灯接的是P2引脚,那么我们直接控制P2即可,也就是编写一个灯光闪烁的代码。

import time
from machine import Pin
P2 = Pin(2,Pin.OUT)


while True:
    P2.on()
    time.sleep_ms(200)
    P2.off()
    time.sleep_ms(200)

闪烁的频率为200ms亮、200ms灭,即可完成操作。

这些代码都是放到了main.py文件中进行。

下载的时候,可以使用鼠标右键,弹出菜单的形式进行编译和下载,也可以直接点击右上角的绿色运行按钮,都是可以的。

在信息栏中会看见是否下载成功的标识。

Connecting to COM5
Uploading files: 0% (0/1)
D:\My Project\Python\01\main.py -> main.py
Uploading files: 100% (1/1)
Soft reboot

四、查看灯光闪烁的效果

结:

microPython官网有我们需要的一些资料。可以随时查看

官网:http://docs.micropython.org/en/latest/esp32/quickref.html

另外:CSDN网站上也有很多优秀的文章,可以进行参考。

相关推荐

Linux 网络协议栈_linux网络协议栈

前言;更多学习资料(包含视频、技术学习路线图谱、文档等)后台私信《资料》免费领取技术点包含了C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,Z...

揭秘 BPF map 前生今世_bpfdm

1.前言众所周知,map可用于内核BPF程序和用户应用程序之间实现双向的数据交换,为BPF技术中的重要基础数据结构。在BPF程序中可以通过声明structbpf_map_def...

教你简单 提取fmpeg 视频,音频,字幕 方法

ffmpeg提取视频,音频,字幕方法(HowtoExtractVideo,Audio,SubtitlefromOriginalVideo?)1.提取视频(ExtractVi...

Linux内核原理到代码详解《内核视频教程》

Linux内核原理-进程入门进程进程不仅仅是一段可执行程序的代码,通常进程还包括其他资源,比如打开的文件,挂起的信号,内核内部的数据结构,处理器状态,内存地址空间,或多个执行线程,存放全局变量的数据段...

Linux C Socket UDP编程详解及实例分享

1、UDP网络编程主要流程UDP协议的程序设计框架,客户端和服务器之间的差别在于服务器必须使用bind()函数来绑定侦听的本地UDP端口,而客户端则可以不进行绑定,直接发送到服务器地址的某个端口地址。...

libevent源码分析之bufferevent使用详解

libevent的bufferevent在event的基础上自己维护了一个buffer,这样的话,就不需要再自己管理一个buffer了。先看看structbufferevent这个结构体struct...

一次解决Linux内核内存泄漏实战全过程

什么是内存泄漏:程序向系统申请内存,使用完不需要之后,不释放内存还给系统回收,造成申请的内存被浪费.发现系统中内存使用量随着时间的流逝,消耗的越来越多,例如下图所示:接下来的排查思路是:1.监控系统中...

彻底搞清楚内存泄漏的原因,如何避免内存泄漏,如何定位内存泄漏

作为C/C++开发人员,内存泄漏是最容易遇到的问题之一,这是由C/C++语言的特性引起的。C/C++语言与其他语言不同,需要开发者去申请和释放内存,即需要开发者去管理内存,如果内存使用不当,就容易造成...

linux网络编程常见API详解_linux网络编程视频教程

Linux网络编程API函数初步剖析今天我们来分析一下前几篇博文中提到的网络编程中几个核心的API,探究一下当我们调用每个API时,内核中具体做了哪些准备和初始化工作。1、socket(family...

Linux下C++访问web—使用libcurl库调用http接口发送解析json数据

一、背景这两天由于一些原因研究了研究如何在客户端C++代码中调用web服务端接口,需要访问url,并传入json数据,拿到返回值,并解析。 现在的情形是远程服务端的接口参数和返回类型都是json的字符...

平衡感知调节:“系统如人” 视角下的架构设计与业务稳定之道

在今天这个到处都是数字化的时代,系统可不是一堆冷冰冰的代码。它就像一个活生生的“数字人”,没了它,业务根本转不起来。总说“技术要为业务服务”,但实际操作起来问题不少:系统怎么才能快速响应业务需求?...

谈谈分布式文件系统下的本地缓存_什么是分布式文件存储

在分布式文件系统中,为了提高系统的性能,常常会引入不同类型的缓存存储系统(算法优化所带来的的效果可能远远不如缓存带来的优化效果)。在软件中缓存存储系统一般可分为了两类:一、分布式缓存,例如:Memca...

进程间通信之信号量semaphore--linux内核剖析

什么是信号量信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为0,说明它被占用,测试的线程要进入睡眠...

Qt编写推流程序/支持webrtc265/从此不用再转码/打开新世界的大门

一、前言在推流领域,尤其是监控行业,现在主流设备基本上都是265格式的视频流,想要在网页上直接显示监控流,之前的方案是,要么转成hls,要么魔改支持265格式的flv,要么265转成264,如果要追求...

30 分钟搞定 SpringBoot 视频推拉流!实战避坑指南

30分钟搞定SpringBoot视频推拉流!实战避坑指南在音视频开发领域,SpringBoot凭借其快速开发特性,成为很多开发者实现视频推拉流功能的首选框架。但实际开发中,从环境搭建到流处理优...

取消回复欢迎 发表评论: