一款支持自然光模拟唤醒、自定义光照曲线的智能唤醒灯,具备时间、日期、温湿度实时显示,支持语音识别、红外遥控、蓝牙通信及微信小程序远程控制,采用灯体与主控分离设计,支持DC/USB/电池多种供电方式。
硬件已经迭代了几次,目前结构比较稳定,应该不会再大改了。软件这边我会在空闲时间继续加功能、修 bug。现在唤醒灯的核心功能基本都实现了,我自己也用了几个月,体验还不错。项目的教程也比较详细,推荐有兴趣的朋友动手二次开发,欢迎加入交流群377956571一起玩!
有时间了更新
更新计划:语音设置闹钟,语音番茄钟,语音提醒,自动设置蓝牙模块,网络授时
- V2.0(25年3月)对供电系统进行了大幅优化,新增蓝牙功能,完善电池管理与低功耗机制
- V1.0(25年1月)完成了核心硬件驱动、UI界面绘制及系统功能优化
唤醒灯,也叫自然唤醒灯,光闹钟等,通过模拟自然光的变化来唤醒你的大脑。它的光线从暗到亮,逐渐变化,就像太阳从地平线升起一样,可提高醒后的总体舒适感。本项目以唤醒灯为核心功能,并做了一些扩展。和市面上一些需要频繁充电的一体化唤醒灯不同,本项目的智能唤醒灯更倾向于插电使用(支持DC/USB),灯体和主控本体是分开的,不仅方便固定灯的位置,还可以连接UPS供电,无需经常充电。支持大功率LED灯,可以自定义光线变化曲线。
除了唤醒灯,它也可以作为一个桌面摆件,实时显示时间、日期和温湿度信息。还支持通过微信小程序进行远程控制,设置闹钟和其他参数都很方便。同时还有语音识别和红外遥控功能,配合支持红外的酷毙灯,可以直接语音控制开关灯,还能语音操作空调、电视。如果不需要唤醒功能,当个好看又实用的桌面时钟也是完全没问题的,实测不插电当做桌面时钟可坚持一个月以上。
分享一下我的使用体验: 我自己的使用场景是宿舍的上床下桌,床铺挂了床帘。在床铺上方,我装了一盏5W的LED灯,用电源线连接本体放在桌子上,然后连上UPS供电,这样基本不用管电量问题。躺在床上就可以通过微信小程序设置闹钟,不用下床,非常方便。平时我也会当作一个桌面摆件看看时间,最常用的是语音助手功能,主要是控制悬挂在桌上的酷毙灯,不用动手,喊一声就能开关灯,很方便。有时候也会用来控制空调,毕竟遥控器只有一个,有时候也不好找。
唤醒效果: 我把LED灯固定在床的另一侧,并没有正对眼睛(直射效果更好但是有点不舒服),这样使用唤醒灯大概有两年了,刚开始确实能叫醒,但是几个月后就叫不醒了...不过开着灯醒来确实更舒服一些,最主要的一点是醒来之后可以立即起床,如果有床帘的话会更明显,床帘不透光嘛,没有开唤醒灯的话起床看见外面的光线会很不舒服,总体来说还是可以提高醒后的舒适感的。
- 自然唤醒灯功能
- 自定义光照曲线
- 实时时钟显示
- 温湿度显示
- 语音识别控制
- 本地音乐播放
- 红外遥控扩展
- 蓝牙通信功能
- 微信小程序控制
- 多种供电方式(DC /USB/电池)
- 智能低功耗策略
- 电量实时显示
- 低电量提示功能
连接LED灯,通过PWM模拟自然日出过程,实现柔和唤醒,提升用户起床舒适度。支持自定义设置光照亮度变化曲线,满足不同用户对唤醒节奏与照明氛围的个性化需求。集成高精度RTC模块,提供稳定准确的时间显示和时间管理功能。内置温湿度传感器,可实时监测室内环境并显示当前温湿度信息。通过蓝牙模块实现与智能手机等设备的数据通信,支持远程设置与控制。配套开发微信小程序,用户可通过手机便捷控制设备、查看信息及管理设置。支持本地语音识别功能,实现免手动操作的语音交互体验。内置音频播放模块,可实现语音播报、提示音及背景音乐播放。集成红外发射与接收功能,支持控制传统家电设备,实现语音控制红外设备功能。支持 DC 电源、USB 接口及锂电池三种供电方式,适应多种使用场景和便携需求。系统具备自动判断供电状态并切换至低功耗模式的能力,有效延长电池使用时间。具备电池电量检测功能,可实时显示当前电量状态。当电池电量不足时,系统可提示用户及时充电。
主界面
设置菜单界面
设置时间界面
设置闹钟界面
| 功能 | 语音命令 |
|---|---|
| 唤醒词 | 塔菲 |
| 音量控制 | 大点声 正常说话 小点声 |
| 信息播报 | 现在温度 现在湿度 现在几点了 |
| 灯光控制 | 开/关灯 白/黄/双色/光 增加/减少亮度 |
| 空调控制 | 打开/关闭空调 制冷/热 xx度 |
| 更多功能开发中... |
搜索并连接智能唤醒灯的蓝牙,连接成功后智能唤醒灯每隔一段时间会自动同步数据,小程序会有“已同步数据”的提示。点击空调或者台灯会立即发送命令,更改其他设置需要点击“同步数据”保存设置,输入附加命令可以完成高级设置。
| 附加命令 | 描述 |
|---|---|
| TIME | 网络授时 |
| OFF | 关闭灯光 |
| 名称及说明 | 淘宝链接 | 备注 |
|---|---|---|
| 高灵敏咪头 | 淘宝链接 | 多买几个,容易焊坏 |
| BT24-T蓝牙模块 | 淘宝链接 | - |
| 3525腔体扬声器 | 淘宝链接 | - |
| ASR-PRO语音识别模块 | 淘宝链接 | 核心板4M闪存 |
| 小聚合物3.7V锂电池 | 淘宝链接 | 厚度:8mm 宽度:30mm 长度:41mm |
| 2.9寸电子纸墨水屏 | 淘宝链接 | 黑白双色 |
| XT30带信号针插头 | 淘宝链接 | 垂直公头+母头 |
| 其他物料对照BOM表和实物图购买即可 |
- 加热台焊接背面贴片元件,建议开个小钢网
- 热风枪焊接正面LED和咪头,注意!焊接咪头时一定要控制好温度和时间
- 焊接插件
可以在嘉立创 EDA 中直接下单外壳,注意!!!最好用旧版本(v2.1.64)下单外壳。经测试,新版(v2.2)存在 BUG——使用新版时,上盖会出现变成实心的情况,初步判断可能与圆角半径有关。在旧版中设置圆角为 2mm 可正常生成模型,但在新版中,只要圆角设置大于0.7mm,就会出现实心问题,影响外壳结构的正确性。如果要用最新版下单的话请把外壳的圆角半径改为0.7mm,不过这样我觉得就不够圆润了。
如图所示,先连接好墨水屏,固定好喇叭和电池(可使用双面胶),并整理电线。安装时先将红外模块和旋转编码器一侧对齐,从这一侧斜插入,确保插口就位后,再轻压另一侧并顺势旋转,直至整个结构闭合固定。
螺丝请使用M3*10mm(不过感觉螺丝咬合的不深,不知道有没有更好的解决方案)
最新的烧录文件可在aystmjz/Smart-Wake-Up-Light/releases下载
- 连接烧录夹,如下图:
- 设置蓝牙模块,将sys.h中的 DEBUG_MODE 宏定义为 4,编译烧录单片机,连接调试接口的RX和TX,发送以下AT 指令:
- 将波特率设置为 115200 bps:
AT+BAUD 7 - 设置设备名称:
AT+NAME Smart WakeUpLight(以上为手动设置蓝牙模块,仅需设置一次,有时间了会更新代码,自动设置蓝牙模块)
- 将sys.h中的 DEBUG_MODE 宏定义为 0,编译烧录单片机。
- 烧录ASRPRO,USB连接电脑,关闭语音助手常开模式,使用附件中的烧录工具下载,出现等待连接提示后连续按下两次按键供电即开始烧录(或者开启语音助手常开模式,按下复位按钮)
-
主控:stm32f103c8t6 72MHz主频,64KB的程序存储器容量和20KB的RAM,提供了丰富的外设接口,如ADC、定时器、PWM、USART、SPI和I2C等。
-
墨水屏:中景园2.9英寸墨水屏 分 辨 率:128(H)x296(V) Pixel,像素间距:0.227x0.226,接口类型:3/4 wire SPI,显示颜色:黑白两色,可局部刷新。
-
蓝牙模块:BT24-T 超小体积低功耗蓝牙从机。遵循蓝牙BLE5.1规范,支持AT指令,用户可根据需要查询修改相应参数,使用灵活,具有超小尺寸、成本低、功耗低、接收灵敏度高等优点。
-
语音识别模块:ASRPRO 一款专为低成本离线语音应用而设计的通用、便携且低功耗的高性能语音识别模组。它搭载了最新的ASRPRO芯片,并内置了神经网络处理器,支持DNN、TDNN、RNN等多种神经网络及卷积运算。模块不仅能实现语音识别、声纹识别、语音增强和语音检测等众多功能,还具备出色的回声消除和环境噪声抑制能力。实测识别效果非常好。
-
实时时钟:ds3231 高精度、低功耗实时时钟(RTC)模块。 可在-40℃至+85℃的温度范围内工作,并具有非常低的时钟漂移率。
| 外设 | 信号 | 管脚 | 介绍 |
|---|---|---|---|
| 温湿度传感器 | SHT30_SCL | PC14 | I2C接口的高精度温湿度传感器 |
| SHT30_SDA | PC15 | ||
| SHT30_RST | PC13 | ||
| Flash 存储器 | SPI2_MOSI | PB15 | SPI 接口的128Mbit NORFlash芯片W25Q128 |
| SPI2_MISO | PB14 | ||
| SPI2_SCK | PB13 | ||
| SPI2_CS | PB12 | ||
| 实时时钟 | DS_SCL | PA12 | 高精度实时时钟DS3231 |
| DS_SDA | PA11 | ||
| DS_INT | PA0 | ||
| 墨水屏 | CS | PA4 / SPI1_NSS | 2.90英寸黑白电子纸ZJY128296-029EAAMFGN |
| SCLK | PA5 / SPI1_SCK | ||
| SDI | PA7 / SPI1_MOSI | ||
| DC | PA15 | ||
| RES | PB3 | ||
| BUSY | PB4 | ||
| ASRPRO语音识别 | ASRPRO | PB8 | 高性能、低功耗的语音识别芯片ASRPRO |
| MUTE | PB11 | ||
| ASR_RXD2 | PA2 / USART2_TX | ||
| ASR_TXD2 | PA3 / USART2_RX | ||
| 旋转编码器 | ECD_A | PB7 | 旋转编码器,带中央按键 |
| ECD_B | PB6 | ||
| ECD_K | PB5 | ||
| 蓝牙模块 | BT24_RX | PA9 / USART1_TX | 超小体积低功耗蓝牙从机BT24-T,支持BLE5.1和AT指令 |
| BT24_TX | PA10 / USART1_RX | ||
| BT24_KEY | PA6 | ||
| BT24_RST | PB10 | ||
| BT24_STATUS | PB9 | ||
| PWM输出 | PWM | PA8 | PWM输出 |
| 嗡鸣器 | BEEP | PB1 | 小体积嗡鸣器 |
| 红外发射管 | IR | ASR_PA2 | 红外接收 |
| 红外接收管 | NEC | ASR_PA3 | 红外发射 |
系统支持两种输入电源:
- DC电源输入(如外接适配器或电源模块)
- USB电源输入(来自电脑或移动电源)
两路电源输入端均连接二极管,实现反接保护并防止两个电源同时接入时可能发生的倒灌,系统可自动优先使用电压较高的一路电源。
在5V输出端串有一个保险丝,用于过流保护,防止短路烧毁电路,产生安全隐患。
系统支持锂电池充电管理,并使用自动切换电路实现DC/USB电源输入与电池之间的无缝切换,保证 VCC 始终不间断供电。
- 若外部电源存在,系统通过外部电源供电,若打开充电开关(详见实物图),外部电源同时为电池充电;
- 若外部电源存在,系统通过外部电源供电,若关闭充电开关(详见实物图),外部电源不为电池充电;
- 若外部电源断开,系统切换至电池供电;
LDO将VCC转换为 3.3V,为 STM32 和外设供电。
语音识别模块(ASRPRO)、红外接收与发射电路的电源为VCC,通过 MOSFET 受 STM32 GPIO 控制,当语音助手功能需要启用时,STM32 输出电平控制 MOSFET 导通,为相关外设通电。
STM32 输出的 PWM 信号电流较弱,不能直接驱动功率器件, PWM 信号首先通过栅极驱动器进行放大,再去控制功率型 MOSFET,确保 MOSFET 在开关转换时具有更高的速度和效率,避免MOSFET在导通/关断时工作于线性区,减少发热,提高系统稳定性。改变PWM 信号占空比即可调节灯光亮度。
供电状态的判断基于ADC检测到,共有以下三个状态:
- BatteryState=0:电池供电状态
- BatteryState=1:充电状态
- BatteryState=2:外部电源供电状态(未充电)
电源系统可靠性已得到验证。
- 核心控制器:STM32F103C8T6 是整个系统的控制核心,负责数据处理、控制指令分发、通信协调,拥有丰富的外设接口:UART、SPI、PWM、GPIO、TIMER 等。
- 语音处理模块:ASRPRO 连接麦克风(MIC)、扬声器(SPK)、红外发射/接收模块,用于语音识别(如唤醒词、语音指令识别)和音频反馈。通过 UART0 与 STM32 通信,实现指令交互与状态反馈。
- 蓝牙通信模块:BT24-T 通过 UART1 与 STM32 连接,实现与手机微信小程序等设备的无线通信。
- SWD 调试接口 用于程序烧录与串口调试,详见调试教程部分。
- USB 转串口芯片:CH340X 通过USB 连接 PC,负责ASRPRO的程序烧写。
无论是首次上电还是电源模式变化导致的重启,系统上电后都会检测供电方式,判断是外部供电(USB/DC)还是电池供电。 若为电池供电,则进入低功耗模式:
- 初始化低功耗寄存器、关闭LED、PWM外设;
- 自动关闭闹钟。
- 配置外部中断用于按键唤醒;
- 配置实时时钟中断,中断间隔为一分钟,用于时间刷新
- 蓝牙进入低功耗模式
- MCU进入低功耗 STOP 模式,等待中断唤醒。
若系统运行中检测到供电模式发生变化:
- 正常工作模式时外部电源断开:触发 MCU 复位,进入低功耗模式;
- 低功耗模式时外部电源接入:触发 MCU 复位,进入正常工作模式
复位重启是系统供电切换后的必要步骤,确保模式状态一致性。
系统首先检测是否存在外部电源(如 DC 或 USB 供电): 若存在外部电源,则继续判断是否启用“语音助手常开模式”配置:
- 若常开模式已启用,则语音助手模块将保持持续开启状态,适用于插电运行场景;
- 若未启用常开模式,则系统转入按键控制逻辑,允许用户手动启动语音助手。
在未启用常开模式或处于电池供电情况下,语音助手的启用依赖于用户按键输入:
- 连续按下两次按键即可开启语音助手;
- 语音模块保持开启状态持续 30 秒,之后自动关闭,以节省系统功耗;
- 若期间未检测到按键操作,语音助手将保持关闭状态。
预留了调试接口,可接上烧录夹烧录Stm32,如下图:
正常情况下(DEBUG_MODE=1)调试接口的RX和TX只能接受数据,调试接口的RX能接收到STM32和ASRPRO的调试数据,调试接口的TX能接收到BT24-T发送的数据。果然需要单独调试STM32,ASRPRO,BT24-T或不输出调试信息,请更改DEBUG_MODE,如下图:
- USB连接电脑
- 关闭语音助手常开模式
- 天问Block编译下载
- 连续按下两次按键即开始烧录
在进行蓝牙模块调试前,需确保系统已进入调试模式,应将 DEBUG_MODE 宏定义为 4。
蓝牙模块通过串口与主控芯片通信,需将波特率设置为 115200 bps。使用以下 AT 指令完成设置:
AT+BAUD 7
为方便识别设备,可将蓝牙模块的广播名称修改为更具标识性的名称,使用以下 AT 指令完成设备名称设置:
AT+NAME Smart WakeUpLight
在OLED_Data_Image.c中添加并在OLED_Data.h中声明。
调用OLED_ShowImage函数显示,示例:
OLED_ShowImage(0, 0, OLED_W, OLED_H, Image_1, BLACK);
在对应的OLED_Data_Hanzi.c文件中添加数据。
调用OLED_Printf函数显示,示例:
OLED_Printf(132, 30, OLED_8X16, BLACK, "设置");
从51单片机的练手小项目,到现在这个功能完善的智能唤醒灯,这一路上成长了许多。这个项目的雏形其实是几年前的一个51单片机小作品,后来做了增强版,而现在则是完整的系统化产品,算是给这段学习旅程画了个阶段性的句号。
Time:2023.3 唤醒灯一代,实现了基本的功能 制作一个唤醒灯的想法在刚开学的那段时间便已经产生,因为宿舍里比较暗,早上起来特别黑,有一次差点就迟到了,而且早上被闹钟闹醒感觉特别不舒服,所以就萌生了做一个唤醒灯的想法。最初的设想是可以使用手机的蓝牙设置一个闹钟,然后到时间就缓缓亮起,然后必须下床才能关闭,这就是初代唤醒灯的雏形。 Time:2023.5 唤醒灯二代,相比一代增加了语音识别和音乐播放的功能 寒假的时候制作了第一代唤醒灯,实现了基本功能,外加几个扩展,经过在家和在学校半个月的设计使用和调试检测之后,唤醒灯的可靠性得到了很好的保证。 在回到学校考完试之后,觉得没啥事做,就准备给唤醒灯升级一下,构思想要的功能然后一个个去实现,功能做的比较完善了。 寒假做第一代唤醒灯花了一个星期多,万事开头难,从零开始去搭建整个系统还是比较费时间的,研究各种通信协议,看芯片的数据手册都很花时间,还有UI的设计出人意料的费时间,有一点点的逻辑问题整个系统就会乱套,其次是PWM的控制设计。在学校升级唤醒灯也用了一个多星期,利用没课的时间敲代码和调试,基本上主要的设想都完成了。 Time:2025.2 核心功能不变,重新构思完善智能唤醒灯 经过一年多的学习,设计能力有了很大的提升,我把主控换成了stm32,设计了一个PCB,使用新的语音模块,增加蓝牙功能和微信小程序支持。
最后介绍一下唤醒灯二代: 概况 唤醒灯使用51单片机,型号为,使用了三个定时器,两个中断,主要外设有DS3231实时时钟,OLED屏幕,温度传感器,湿度传感器,光照传感器,AT24C02储存模块,蓝牙主从机,MP3播放器,语音识别,其他外设有MOS管,继电器,有源嗡鸣器,5V稳压模块,5V转3.3V电源,串口电平转换,5VLED灯,按键,二极管,采用PWM方式调光,级数100级,通信协议有UART,I2C,单总线,涉及到串口的一对多通信,总代码量3000+行,编译后26k+字节。 唤醒灯分为三个部分,主机,扩展部分,从机
唤醒灯采用三块洞洞板焊接,扩展部分与主体部分采用排针连接,各个外设也采用排针连接,方便更新更换模块,单片机最小系统与洞洞板采用杜邦线连接,都是纯手工制作,剪裁合适的长度焊接,虽然很费时间但增加了唤醒灯的美观程度和稳定性。
功能 唤醒灯可以查看当前时间,可以查看当前温度湿度和光照数据,可以设置闹钟开关,闹钟时间,闹钟星期,唤醒时间,唤醒模式,整点报时,还有实时唤醒和记录光照的功能,除此之外,可以使用手机获取和设置数据,可以使用语音识别设置闹钟,还有报时和播放音乐的功能。
基本功能:
- 蓝牙控制
- 按键设置时间和闹钟
- 唤醒灯与关闭闹钟
扩展功能:
- 打开/关闭闹钟/整点报时
- 设置闹钟时间/星期
- 设置中取消
- 设置唤醒时间
- 报时
- 实时唤醒/记录光照数据
- 播放音乐
主从机展示:
- 主从机通信



























