HonestQiao 发表于 3 天前

Firebeetle 2 ESP32-C5 之 火车上的霓虹灯

本帖最后由 HonestQiao 于 2025-10-23 20:49 编辑

这几天出差,在火车上的时候,刷刷手机,看看Kindle,还是有些无趣。最后还是掏出了包里的Firebeetle 2 ESP32-C5,打开了而电脑,又找到了一个WS2812B灯环,做了一个火车上的霓虹灯。




下面分享一下制作做的步骤。

一、硬件了解


前边是 Firebeetle 2 ESP32-C5开发板 与扩展板,后边是WS2812B灯环。
Firebeetle 2 ESP32-C5就不多说了,单说下这个WS2812B灯环。

这个WS2812B灯环,是24颗灯珠的,每一颗都可以单独控制RGB三种颜色显示,共256*256*256种,约16万种颜色。
那么呢,这个灯环有24颗,(256*256*256)^24,一共有10^173种显示模式,能够让创客们体验到前所未有的显示快感!

另外,我又详细查了一下,已知宇宙中,恒星的数量,少于1*10^24颗。
所以呢,这个灯环所能带来的探索乐趣,是无穷无尽的,哪怕宇宙毁灭,也探索不到尽头。

为了方便控制这个灯环,我在灯环背面,粘接+焊接了一个ESP32-C3小板子。
这次Firebeetle 2 ESP32-C5通过ESP-Now,来与ESP32-C3通信,从而控制WS2812B灯环。

二、程序逻辑
我设计的逻辑处理流程如下:


两者通信使用的是ESP-Now,参考了Arduino中ESP32下的ESP-Now 广播的例子:


因为是在火车上,所以我没有做复杂的逻辑。
基本逻辑就是,Firebeetle 2 ESP32-C5上的按键按一下,ESP32-C3控制的WS2812B灯环的彩虹渐变色就变换一下,如果按键双击,那么就快速变化一下。

三、扩展库
这次使用的开发环境是Arduino IDE,具体环境可参考:ESP32C5内测版(ECO1,v0.1)常用开发环境和工具的特殊处理方法 DF创客社区

在 Firebeetle 2 ESP32-C5 上运行的是Master,因为要检测按键,所以我使用到了OneButton扩展库:


在ESP32-C3上运行的是Slave,因为要控制WS2812B灯环,所以我使用FastLED扩展库:


四、程序代码
Master代码如下:


其中除了ESP-Now原有的通信逻辑外,其他用到核心调用如下:
1. OneButton对象和注册按键调用


2. 按键处理



在按键处理中,使用了下面的调用来通过ESP-Now发送消息:
broadcast_peer.send_message((uint8_t *)data, sizeof(data))


Slave的代码如下:


其中除了ESP-Now原有的通信逻辑外,其他用到核心调用如下:
1. 颜色定义


2. LED对象初始化


3. 收到消息后,提取数值,并控制WS2812B灯环显示:


4. 控制WS2812B灯环逐渐熄灭:


五、运行效果
代码编写好后,分别烧录到Firebeetle 2 ESP32-C5和ESP32-C3。

Firebeetle 2 ESP32-C5 配置如下:

烧录运行后,串口日志输出如下:


ESP32-C3配置如下:

烧录运行后,串口日志输出如下:


两端都运行后,在Firebeetle 2 ESP32-C5按键(单击或者双击),在ESP32-C3上就会收到信息,并控制WS2812B灯环。


实际的运行效果如下:
1. 基本测试:
https://www.bilibili.com/video/BV1H4sGzSESb/?vd_source=10dd71510f0f02c413f9dd1ffc9ae92a

2. 与飞驰的列车光影同行
https://www.bilibili.com/video/BV1A4sGzDEgd/

3. 霓虹灯效
https://www.bilibili.com/video/BV1H4sGzSES2/


在飞驰的列车上,点亮我的的霓虹灯,引来乘务人员友好问候,前后座乘客热心注视,还有车厢小朋友好奇的围观,这趟旅程,格外有意思了。

HonestQiao 发表于 3 天前

源代码:
Magic_Master: Firebeetle 2 ESP32-C5
Magic_Slave: ESP32-C3
页: [1]
查看完整版本: Firebeetle 2 ESP32-C5 之 火车上的霓虹灯