当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]我的孙辈们非常喜欢玩乐高双子星火车。这列火车配有声音输出、RGB前部LED灯以及光学传感器,可对放置在轨道之间的彩色板做出反应。但最棒的是,这款乐高火车可以通过BLE指令进行完全控制,而且更进一步,该协议已由乐高官方文档化。因此,我打算利用这一文档化的BLE协议,为这款乐高火车开发一个简单的手持遥控器。得益于Cornelius Munz开发的Legion库,它支持Arduino工具环境,这对我非常有帮助。

我的孙辈们非常喜欢玩乐高双子星火车。这列火车配有声音输出、RGB前部LED灯以及光学传感器,可对放置在轨道之间的彩色板做出反应。但最棒的是,这款乐高火车可以通过BLE指令进行完全控制,而且更进一步,该协议已由乐高官方文档化。因此,我打算利用这一文档化的BLE协议,为这款乐高火车开发一个简单的手持遥控器。得益于Cornelius Munz开发的Legion库,它支持Arduino工具环境,这对我非常有帮助。

于是,我基于ESP32-S3开发了一个适用于乐高双子星火车的手持控制器,实现了BLE通信、确定性命令处理、重放/录制功能、传感器路由以及低功耗的睡眠与唤醒行为。

概述

本仓库包含控制器的完整实现包:

- 应用逻辑和BLE运行时的固件源码

- 模拟电路/PCB设计文件及制造输出

- OpenSCAD封装源码及3D打印资源

目标硬件为ESP32-S3开发板,配备一个RGB状态指示灯、六个通过ADC电阻阶梯连接的前面板按钮,以及一个带按钮的旋转编码器。

在运行时,固件将BLE处理与UI/控制逻辑分离,并采用基于队列的跨任务通信。其带来的特性包括:

- 连接/重新连接阶段的非阻塞命令流

- 明确区分BLE链路建立状态与应用就绪状态

- 电源循环后稳定的重新连接行为

- 使用固定大小命令缓冲区实现确定性的重放/录制功能

- 支持可控的睡眠进入和定义好的唤醒路径,实现功耗管理

以下是该控制器的一些图片:

控制器主板上仅包含ESP32-S3超级迷你芯片、6个按钮、带按钮的旋转编码器、一些SMD电阻和电容,以及一块小型锂电池。电池可通过连接到USB端口时由ESP32进行充电。ESP32上的RGB LED用于向用户提供反馈信息。

硬件要求

- ESP32-S3 板,带 RGB LED 和 USB-C 充电接口

- ADC 电阻阶梯上带有 6 个按钮

- 带按钮的旋转编码器

- LEGO DUPLO 拼装火车轮毂

硬件图库

控制器与PCB 3D视图

原理图

制造

我多年来一直使用PCBWay进行PCB制造,始终在生产质量、交货周期、发货可靠性以及整体价格方面获得了极佳的体验。

对于本次控制器版本的开发,我也使用了PCB组装服务。结果尤其令人满意:当我于BOM中做出一些轻微的元器件选择错误时,PCBWay工程师主动联系我,及时澄清问题,并在生产前迅速协助解决了所有问题。对于未来更复杂的设计,尤其是SMD元件密度更高的电路板,我现在已将这种组装流程作为首选方式。

当前功能状态

已实现的功能(高层):

- 自动连接DUPLO列车的BLE

- 实际应用中,列车断电后约2至3秒内可重新连接

- 到达就绪状态后立即接受指令

- UI逻辑与BLE通信分离,支持线程安全

- 记录并回放用户交互操作,并附带时间戳

- 处理颜色、速度和电压传感器数据

- 通过稳定性定时器对颜色传感器进行去抖处理

- 无活动5分钟后进入休眠状态

- 可通过编码器按钮唤醒,包括RTC和GPIO的备用方式

- 启动时仅在有意保持编码器锁定的情况下上传窗口

状态指示灯

控制器LED指示当前状态如下:

•黄色闪烁:控制器正在启动

•蓝色闪烁:BLE连接已建立,但集线器初始化仍在进行

•绿色闪烁:集线器正常运行,可执行命令

•绿色偶尔短脉冲:处于运行或空闲状态

•紫色闪烁:正在记录中

•黄色闪烁:正在回放中

•红色常亮:紧急停止已激活

•红色短闪序列:列车低电压警告

•白色闪烁:集线器已断开连接

•5次绿色:唤醒睡眠状态确认

•2次红色:进入睡眠状态提示

重要提示:现在绿色不仅表示“已连接”,更表示“已准备好接收指令”。

控制

•旋转编码器:设置速度(反向、停止、正向)

•短按编码器:从睡眠状态唤醒

•启动时长按住编码器 ≥2 秒:打开10秒上传窗口

•REC:开始/停止录制

•PLAY:播放最新一次录制

•STOP:停止回放/录制,并切换紧急停止

•LIGHT:循环列车灯光颜色

•SOUND:循环声音

•WATER:触发水动作

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

我们最近完成了一个项目,解决了中型仓库客户的一个实际痛点:在众多货箱中查找物品耗时过长。他们的拣选人员每天工作时间的30%到40%都花在走动和扫描上。为此,我们开发了一套智能库存系统,利用LED灯带精准照亮每个物品所在的...

关键字: LED 树莓派 USB

我有一台小巧的DFRobot Beetle ESP32-C3,还有一串8颗LED的WS2812环形灯,一直放在抽屉里。我想做一个小巧、常亮的桌面灯,能通过手机随时重新上色和播放动画,无需每次安装应用或打开Arduino...

关键字: Wi-Fi RGB LED ESP32-C3

想象一下,手中握着一个像扑克牌大小的设备,它能显示附近所有WiFi网络——信号强度、安全等级,甚至所使用的信道。听起来像是科技魔法,对吧?其实这非常简单!

关键字: Wi-Fi ESP32-S3 微控制器

为2025年的Bug Bounty Village,我想要三样东西:矩阵“代码倾泻”视觉效果、一块悬浮在电路板上方的亚克力板,使标志呈现立体感,以及将CTF功能直接嵌入硬件中,让徽章佩戴时能产生互动效果。

关键字: CTF功能 PCB LED ATmega16A

如果你经常使用 Claude Code 或 Claude 的桌面应用,你一定熟悉这种节奏:你启动一个任务,Claude 开始运行,然后出现提示——“ping”,弹出权限请求。Claude 是否可以执行这个 Bash 命令...

关键字: LED 蓝牙 AI ESP32

在本项目中,我们设计并构建了一种完全基于模拟电路硬件的自动感光应急LED灯,无需任何微控制器或编程。当交流电中断时,系统会自动切换至电池供电;当检测到环境黑暗时,LED阵列便会亮起。

关键字: LED 模拟电路 LM7805

灯光能彻底改变一个工作空间,而Halo正是为此而设计。灵感源自彩虹的绚丽色彩,Halo是一款现代可充电台灯,将极简设计与流畅的动态光影效果完美结合。

关键字: 18650电池 WS2812B LED

ESP32-DIV 最初是一个个人工具,是我为了解决一个设备同时支持 WiFi、蓝牙、Sub-GHz、红外线、RFID 和 GPS 的需求而开发的。ESP32-DIV 是一款基于 ESP32-S3 构建的开源多频段无线工...

关键字: Wi-Fi 蓝牙 Sub-GHz ESP32-S3

你是否好奇过微控制器如何同时处理多个任务?本项目展示了STM32F407ZGT6 RT-Spark开发板上定时器中断和任务调度的工作原理。两个定时器以不同的频率闪烁LED,而按钮中断则在按下时立即响应——所有这些功能都通...

关键字: 微控制器 开发板 LED STM32CubeMX

该项目是一个简单的人体反应计时器,使用RT-Spark开发板和STM32F407ZGT6微控制器构建而成。它用于测量当RGB LED亮起时,人能多快做出反应。

关键字: 微控制器 开发板 LED STM32F407ZGT6
关闭