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

2025-10-231920
AI 快速预览详细 收起
本文介绍了一个在火车上使用Firebeetle 2 ESP32-C5和WS2812B灯环制作的霓虹灯项目。通过ESP-Now通信,按键控制灯光变化。硬件包括Firebeetle 2 ESP32-C5开发板、扩展板和WS2812B灯环。程序逻辑简单,通过按键单击或双击控制灯光变化。实际运行效果展示了基本测试、与列车光影同行和霓虹灯效。这个项目为旅途增添了独特的娱乐体验。


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


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

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

一、硬件了解
Firebeetle 2 ESP32-C5 之 火车上的霓虹灯图2

前边是 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灯环。

二、程序逻辑
我设计的逻辑处理流程如下:
Firebeetle 2 ESP32-C5 之 火车上的霓虹灯图3

两者通信使用的是ESP-Now,参考了Arduino中ESP32下的ESP-Now 广播的例子:
Firebeetle 2 ESP32-C5 之 火车上的霓虹灯图4

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

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

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

在ESP32-C3上运行的是Slave,因为要控制WS2812B灯环,所以我使用FastLED扩展库:
Firebeetle 2 ESP32-C5 之 火车上的霓虹灯图6

四、程序代码
Master代码如下:
Firebeetle 2 ESP32-C5 之 火车上的霓虹灯图9Firebeetle 2 ESP32-C5 之 火车上的霓虹灯图10

其中除了ESP-Now原有的通信逻辑外,其他用到核心调用如下:
1. OneButton对象和注册按键调用
Firebeetle 2 ESP32-C5 之 火车上的霓虹灯图11
Firebeetle 2 ESP32-C5 之 火车上的霓虹灯图12
2. 按键处理
Firebeetle 2 ESP32-C5 之 火车上的霓虹灯图13
Firebeetle 2 ESP32-C5 之 火车上的霓虹灯图14

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


Slave的代码如下:
Firebeetle 2 ESP32-C5 之 火车上的霓虹灯图7Firebeetle 2 ESP32-C5 之 火车上的霓虹灯图8

其中除了ESP-Now原有的通信逻辑外,其他用到核心调用如下:
1. 颜色定义
Firebeetle 2 ESP32-C5 之 火车上的霓虹灯图15

2. LED对象初始化
Firebeetle 2 ESP32-C5 之 火车上的霓虹灯图16

3. 收到消息后,提取数值,并控制WS2812B灯环显示:
Firebeetle 2 ESP32-C5 之 火车上的霓虹灯图17

4. 控制WS2812B灯环逐渐熄灭:
Firebeetle 2 ESP32-C5 之 火车上的霓虹灯图18

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

Firebeetle 2 ESP32-C5 配置如下:
Firebeetle 2 ESP32-C5 之 火车上的霓虹灯图20
烧录运行后,串口日志输出如下:
Firebeetle 2 ESP32-C5 之 火车上的霓虹灯图22

ESP32-C3配置如下:
Firebeetle 2 ESP32-C5 之 火车上的霓虹灯图21
烧录运行后,串口日志输出如下:
Firebeetle 2 ESP32-C5 之 火车上的霓虹灯图23

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


实际的运行效果如下:
1. 基本测试:


2. 与飞驰的列车光影同行


3. 霓虹灯效



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

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(1)
HonestQiao
HonestQiao
作者
源代码:
Magic_Master: Firebeetle 2 ESP32-C5
Magic_Slave: ESP32-C3
- 没有更多了 -