doupoa
一个不甘落后的热血青年!
Ping通途说

ESP32-C6 & MicroPython入门及点亮RGB灯珠示例

0. 引言

最近入了一块ESP32来学习嵌入式开发,就着能不用C/C++就不用的原则,在此尝试学习MicroPython的固件刷入并尝试对RGB灯点亮。

1.MicroPython固件下载

确定自己的开发板型号,本文使用的是微雪的 ESP32-C6-LCD-1.47

随后前往 MicroPython - Download 查找对应的固件,点击以下标签选择自己的型号

https://doupoa.site/wp-content/uploads/2024/11/1731934731-image.png

如上图所示,我筛选了自己开发板的型号,Espressif就是 乐鑫。其实挺多板都是直接拿乐鑫的改的,如果不确定应该选哪个就直接下载乐鑫固件。

https://doupoa.site/wp-content/uploads/2024/11/1731934894-image.png

点入链接后直接翻到最底下 FirmwareReleases(稳定版) v1.xx.x.bin (最新就行),Preview Builds 为预览版,您可以根据自身能力与情况下载对应版本。

下载完成后,连接你的开发板,按下Win键后搜索“设备管理器”,接下来在端口中找到你的USB串行设备。此处显示我们开发板的端口为 COM5,请记住这个端口,接下来会使用。

https://doupoa.site/wp-content/uploads/2024/11/1731935271-image.png

2. MicroPython 固件刷入

在刚刚的下载界面你看到官方已经列出了刷入方式。

首先需要安装Python3.4+,其次通过pip安装esptool

pip install esptool

安装完成后请打开一个新的终端,在终端内输入以下命令以擦除原先固件

esptool --port <替换成你的端口> erase_flash
例子
keyboard_arrow_down

带入我的参数就是 esptool --port COM5 erase_flash

如果终端是以 Hard resetting via RTS pin... 停止,则证明命令执行成功

随后通过以下命令,从地址0x0的位置刷入固件

esptool --chip <替换成你板子型号> --port <替换成你的端口> write_flash -z 0x0 <替换成固件包名>
例子
keyboard_arrow_down

带入我的参数就是 esptool --chip esp32-c6 --port COM5 write_flash -z 0x0 C:\Users\Administrator\Downloads\esp32c6-20241025-v1.24.0.bin

若终端依然以上述提示停止,那一切就绪

3.安装环境

本文采用 vsCode 作为开发编辑器,请自行下载安装.

安装完成后在插件搜索 MicroPython 进行下载与安装,你也可以点击链接查看插件的操作文档.

安装完成后,你可以在左下角看到如图示按钮,点击 + 号即可创建或打开MicroPython项目

https://doupoa.site/wp-content/uploads/2024/11/1731936788-image.png

完成项目的创建后,你可以点击连接设备,在顶部弹出的窗口中选择一开始查看的端口(例如我的COM5)

等待连接后就会唤起终端尝试进入REPL模式,就是跟平常在终端中使用Python一样.

如果连接成功,你就能看到终端会输出 ">>>" 接下来可以开始跟在PC上使用Python时一样去测试了

注意事项

  • 不要删除工程目录下的 .mpyproject.json 文件,该文件是 MicroPython 工程的配置文件,删除后将无法正常运行 MicroPython 代码程序。
  • 如果连接设备后无法进入REPL模式,请检查线缆连接是否正常,设备是否开机,是否开启下载模式实在不行重新尝试清除并刷入固件.
https://doupoa.site/wp-content/uploads/2024/11/1731937209-image-1024x363.png
这个是我型号的开发板提示,仅供参考

4. 开发

RT-Thread MicroPython 插件提供的示例项目若不是其使用的测试开发板,一般都不能直接运行.

编写代码后,点击左下角的播放键就会执行当前你打开窗口里的代码

开发完成后你可以在右上角文件管理中右键选择“下载到设备”,这样代码会写入设备中。

在REPL中使用 os.listdir() 函数查看设备内的文件你会发现存在一个 “boot.py”,这个是用于初始化设备的文件。在执行完boot.py后,设备会继续查找目录下是否存在“main.py”,如果存在就会自动执行,如果不存在或执行后就会进入到Shell中

另外:

  • 不建议在main.py中写入死循环,这样无法进入到shell中,只能通过重新刷固件的方式恢复。

以下是操作RGB灯珠的示例代码,来源于 MicroPython 文档

import time

def demo(np):
    n = np.n

    # 示例文件使用的是有8颗灯珠的圆盘灯
    # 循环显示 
    for i in range(4 * n):
        for j in range(n):
            np[j] = (0, 0, 0)
        np[i % n] = (255, 255, 255)
        np.write()
        time.sleep_ms(25)

    # bounce
    for i in range(4 * n):
        for j in range(n):
            np[j] = (0, 0, 128)
        if (i // n) % 2 == 0:
            np[i % n] = (0, 0, 0)
        else:
            np[n - 1 - (i % n)] = (0, 0, 0)
        np.write()
        time.sleep_ms(60)

    # 渐变
    for i in range(0, 4 * 256, 8):
        for j in range(n):
            if (i // 256) % 2 == 0:
                val = i & 0xff
            else:
                val = 255 - (i & 0xff)
            np[j] = (val, 0, 0)
        np.write()

    # clear
    for i in range(n):
        np[i] = (0, 0, 0)
    np.write()

np = NeoPixel(Pin(8),1) # 8代表调用指定针脚,1代表灯珠数量
demo(np) # 执行函数

数组展示顺序并不一定是 RGB, 我的开发板展示顺序是 GRB

当然你也可以通过以下代码测试自己的灯珠颜色顺序

from machine import Pin
from neopixel import NeoPixel
import time

np = NeoPixel(Pin(8),1)

np[0] = (255,0,0)
np.write()
time.sleep(1)

np[0] = (0,255,0)
np.write()
time.sleep(1)

np[0] = (0,0,255)
np.write()
time.sleep(1)

np[0] = (0,0,0) # 重置灯珠颜色
np.write()

以下是我开发板内嵌硬件的参考针脚,例如灯珠使用的就是针脚8

实际端口请你自行查阅

https://doupoa.site/wp-content/uploads/2024/11/1731938428-image-1024x595.png
赞赏
# # #
首页      嵌入式      ESP32      ESP32-C6 & MicroPython入门及点亮RGB灯珠示例

doupoa

文章作者

诶嘿

发表回复

textsms
account_circle
email

Ping通途说

ESP32-C6 & MicroPython入门及点亮RGB灯珠示例
0. 引言 最近入了一块ESP32来学习嵌入式开发,就着能不用C/C++就不用的原则,在此尝试学习MicroPython的固件刷入并尝试对RGB灯点亮。 1.MicroPython固件下载 确定自己的开发板型…
扫描二维码继续阅读
2024-11-18

Optimized by WPJAM Basic