Pychcham MicroPython ESP32 开发环境搭建

本文详细介绍了如何将MicroPython固件刷写到ESP32_devkit_v4开发板,并在PyCharm中配置MicroPython的开发环境。首先,从micropython官网下载固件,使用esptool通过串口刷写到ESP32。然后,在PyCharm中安装MicroPython插件,创建工程并配置环境,包括选择正确的设备端口号和设置环境。在遇到第三方库安装问题时,通过Anaconda和pip手动安装。最后,编写并下载测试代码验证环境是否配置成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

        Python是时下最流行的编程语言之一,它的编程风格接近于自然语言,可以使完全没有接触过代码的人快速上手,减少了学习成本,快速开发出自己的创意产品;同时也让之前使用C/C++嵌入式软件开发人员增加效率,专注应用层开发,减少交付周期。ESP32_devkit_v4板卡基于ESP-WROOM-32模组设计,其具有通用型Wi_Fi+Bluetooth+BluetoothLEMCU模组,功能强大,用途广泛,是时下主流的开发板之一。MicroPython 是 Python 3编程语言的精简高效实现,其中包括 Python 标准库的一小部分,并经过优化以在微控制器和受限环境中运行。ESP32+MicroPython是一个性价比较高的学习方案。

一、刷写ESP32 MicroPython固件

        注意,这个刷写固件使用的是串口下载方法,SPI下载要使用官方的专门的固件下载工具,这里就不展开说明了。

1)在micropython官网下载固件

        下载连接:MicroPython - Python for microcontrollers

        

2)安装esptool工具

        官网文档:Esptool.py Documentation - ESP32 - — esptool.py latest documentation

        我这里通过cmd安装esptool工具,使用命令:pip install esptool

        

 3)开发板连接电脑

         将开发板通过USB线连接上电脑,连接成功之后,电脑会出现串口设备号,如下图所示。

4)连接设备 

        使用命令” esptool.py -p PORT flash_id”连接设备。其中PORT为自己电脑显示出来的设备端口号。因为电脑识别出来的USB设备为COM13所以,这里的PORT填写COM13。

 5)擦除固件

        如果你是第一次把MicroPython放在你的板上,那么你应该首先使用以下命令来擦除整个flash:esptool.py --chip esp32 erase_flash,并长按boot按键。

        

 擦除成功。

6)切换到固件目录

        建议使用英文路径,减少错误风险,我这里的路径为:C:\Users\Administrator\Desktop\esp32\02 - bin

 7)下载固件

        使用命令:esptool.py --chip esp32 --port COM13 --baud 460800 write_flash -z 0x1000 esp32-20220618-v1.19.1.bin,其中COM13为自己电脑上的显示的端口号,esp32-20220618-v1.19.1.bin为固件名称,按照实际情况修改。

        按照上面的步骤一步步进行,我们的板子就下载好了MicroPython固件了,接下来要在pycharm配置开发环境。

 注:

方法参照:Flash MicroPython Firmware with esptool.py to ESP32 and ESP8266.

Esptool官方文档:Esptool.py Documentation - ESP32 - — esptool.py latest documentation

二、pycharm配置MicroPython开发环境

1)安装MicroPython插件

        打开pycharm,在"Plugins"查找MicroPython插件并下载,我这里已经安装好了。

 2)新建工程,配置工程地址和环境

这里的环境用Anaconda3创建的一个虚拟环境,网上有很多Anaconda3的安装使用教程,这里不再赘述。

3)工程配置

        File->Setting打开配置文件,将MicroPython插件使能,并将Device type类型设置为ESP8266,设备地址地址填写设备的端口号地址,我的电脑为COM13故设置为COM13,当然也可以使用Detect按键自动寻找设备。

4)下载第三方库

 打开main.py文件之后发现提示要你安装缺失的库,点击安装。

        正常情况安装会通过,我这里不知道为什么会出现安装错误,提示 ”pyserial’和‘adafruit-ampy’这两个库无法安装,只能通过手动的方式安装。

        ‘pyserial’要求安装的版本>=3.5,<4.0,‘pyserial’库可以通过Anaconda下载,使用命令conda install pyserial下载。

        ‘adafruit-ampy’要求安装的版本>=1.0.5,<1.1,这个库只能通过pip安装,并且要指定安装版本,默认安装的版本超过了版本,使用命令pip install adafruit-ampy==1.0.5安装,我这里已经安装完成了。

通过以上步骤便搭建好pycharm开发ESP32的开发环境,接下来做简单验证。

三、测试程序

1) 编写测试代码

        程序功能为GPIO2引脚500ms电平高低变化。

2)下载程序

        底下会提示已经连接成功。

        此时需要按下boot按键下载程序,否则会下载失败。

3)效果验证 

 

         设备按程序设计运行,环境搭建成功!

四、资料

        我推荐大家最好是去找官方的文档学习,这样效率更高,下面是官方的一些连接。

        MicroPyton官方文档(需要科学上网):Quick reference for the ESP32 — MicroPython 1.19.1 documentation

        Pycharm MicroPython插件介绍:https://blog.jetbrains.com/pycharm/2018/01/micropython-plugin-for-pycharm/

 

### 实现ESP32上的MicroPython I2C通信 要在ESP32上通过MicroPython实现I2C通信,可以利用`machine.I2C`类来初始化和配置I2C总线。以下是具体的实现方法以及一些注意事项。 #### 初始化I2C总线 在MicroPython中,可以通过`machine`模块中的`I2C`类创建并初始化I2C对象。以下是一个基本的代码示例: ```python from machine import Pin, I2C # 创建I2C对象,默认使用I2C编号0 (默认SCL=GPIO22, SDA=GPIO21) i2c = I2C(0) # 或者指定引脚 scl_pin = Pin(22) # 定义SCL引脚 sda_pin = Pin(21) # 定义SDA引脚 i2c = I2C(0, scl=scl_pin, sda=sda_pin, freq=100000) # 设置频率为100kHz print('I2C initialized successfully.') ``` 上述代码展示了如何设置I2C接口,并指定了使用的引脚和频率[^1]。 #### 扫描I2C设备地址 为了确认连接到I2C总线的设备是否正常工作,可以扫描其地址列表。这一步对于调试非常有用。 ```python devices = i2c.scan() # 获取已连接设备的地址列表 if devices: print('Found {} device(s):'.format(len(devices))) for device in devices: print('Device address: {:#04X}'.format(device)) else: print('No I2C devices found!') ``` 此部分代码会打印出所有连接至I2C总线的有效设备地址。 #### 发送数据给I2C从机 如果需要向某个特定地址的I2C从机发送数据,则可调用`write`函数完成操作。 ```python address = 0x48 # 假设目标设备地址为0x48 data_to_send = bytearray([0x01, 0xFF]) # 要写入的数据字节序列 try: i2c.writeto(address, data_to_send) print(f'Successfully sent {len(data_to_send)} bytes to device at address {address}.') except OSError as e: print(f'Error writing to device at address {address}:', str(e)) ``` 这段代码尝试将两个字节的数据传输到具有指定地址的目标设备上。 #### 接收来自I2C从机的数据 同样地,也可以读取由其他I2C从机返回的信息。 ```python buffer_size = 4 # 预期接收的最大字节数量 received_data = None try: received_data = i2c.readfrom(address, buffer_size) print(f'Received {len(received_data)} byte(s): {list(received_data)}.') except OSError as e: print(f'Failed reading from device at address {address}:', str(e)) if received_data is not None: processed_value = int.from_bytes(received_data[:2], 'big') / 100.0 print(f'Processed value: {processed_value}') ``` 这里演示了如何从先前定义好的设备那里获取一定长度的数据流,并进一步处理这些原始数值。 #### 使用模拟器测试程序 如果你暂时无法访问真实的硬件环境,在开发阶段可以选择在线工具如[Wokwi](https://wokwi.com/)来进行仿真运行。它支持多种类型的虚拟传感器模型配合ESP系列芯片一起运作,从而方便开发者验证自己的逻辑正确性而不必依赖实际电路搭建[^2]。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值