
【全开源】晓醒·智能唤醒灯
简介
一款支持自然光模拟唤醒、自定义光照曲线的智能唤醒灯,具备时间、日期、温湿度实时显示,支持语音识别、红外遥控、蓝牙通信及微信小程序远程控制,采用灯体与主控分离设计,支持DC/USB/电池多种供电方式。
简介:一款支持自然光模拟唤醒、自定义光照曲线的智能唤醒灯,具备时间、日期、温湿度实时显示,支持语音识别、红外遥控、蓝牙通信及微信小程序远程控制,采用灯体与主控分离设计,支持DC/USB/电池多种供电方式。开源协议
:CC BY-NC-SA 4.0
(未经作者授权,禁止转载)描述
晓醒·智能唤醒灯
> 一款支持自然光模拟唤醒、自定义光照曲线的智能唤醒灯,具备时间、日期、温湿度实时显示,支持语音识别、红外遥控、蓝牙通信及微信小程序远程控制,采用灯体与主控分离设计,支持DC/USB/电池多种供电方式。

写在前面
硬件已经迭代了几次,目前结构比较稳定,应该不会再大改了。软件这边我会在空闲时间继续加功能、修 bug,最新程序可以看aystmjz/Smart-Wake-Up-Light。现在唤醒灯的核心功能基本都实现了,我自己也用了几个月,体验还不错。目前在慢慢更新,实现新功能。项目的教程也比较详细,推荐有兴趣的朋友动手二次开发,欢迎加入交流群377956571一起玩!
视频链接
见附件,项目完成了更新详细视频
V3.0版本前瞻
- 全新开发xhal框架,支持rtos和协程,项目开源链接:aystmjz/xHAL
- 重构驱动,高内聚低耦合
项目版本更新
更新计划:
- 语音设置闹钟
- 语音番茄钟
- 语音提醒
- 待办事项
- 阅读器
- 蓝牙模块相关设置
- 网络授时
- Bootloader
- Unicode 字库
软件版本:
- v3.0(25年11月)待发布
- 全新开发xhal框架,支持rtos和协程
- 重构驱动,高内聚低耦合
- v2.4(25年8月)
1. Bootloader :
- 支持串口 IAP 下载程序到内部 Flash
- 支持下载任意文件或 APP 到外部 Flash
- 支持启动外部 Flash 中的 APP 程序
- 支持查询外部 Flash 中 APP 的信息
- 支持擦除内部 Flash APP 区域
- 支持系统重启与跳转至 APP 执行
2. 显示增强:
- 增加对字库的 RLE 压缩,提升空间利用率
- 引入 Unicode 字库,扩展多语言(含汉字)显示能力
3. 微信小程序
- 支持实时显示设备日志信息
- 支持文件选择与传输
- 支持命令长按选择,简化用户操作
- 增加网络授时、更改蓝牙设备名称等高级命令功能
4. 按键事件识别改进
- 优化短按、双击和长按事件的区分逻辑
- 添加相关事件的宏定义,增强灵活性
- 修复长按误触发短按的逻辑缺陷
5. 蓝牙模块功能增强
- 支持通过 AT 命令修改蓝牙设备名称
- 优化蓝牙初始化流程,自动检测并设置波特率
- 改进蓝牙数据接收处理逻辑,提升连接稳定性
6. 系统与结构优化
- 提高日志与调试信息的可读性
- 优化代码结构
- V2.0(25年3月)
- 新增蓝牙功能,完善电池管理与低功耗机制
- V1.0(25年1月)
- 完成了核心硬件驱动、UI界面绘制及系统功能优化
硬件版本:
- V2.4(25年10月)
- 修复了充电开关的有关问题(请使用V2.3版本PCB的朋友进群查看修复方法)
- V2.3(25年8月)
- 修复若干问题
- V2.2(25年5月)
- 修复若干问题
- V2.0(25年3月)
- 对供电系统进行了大幅优化
- V1.3(25年2月)
- 增加蓝牙模块
- V1.2(24年11月)
- 修复若干问题
- V1.0(24年11月)
- 初版
项目简介
唤醒灯,也叫自然唤醒灯,光闹钟等,通过模拟自然光的变化来唤醒你的大脑。它的光线从暗到亮,逐渐变化,就像太阳从地平线升起一样,可提高醒后的总体舒适感。本项目以唤醒灯为核心功能,并做了一些扩展。和市面上一些需要频繁充电的一体化唤醒灯不同,本项目的智能唤醒灯更倾向于插电使用(支持DC/USB),灯体和主控本体是分开的,不仅方便固定灯的位置,还可以连接UPS供电,无需经常充电。支持大功率LED灯,可以自定义光线变化曲线。
除了唤醒灯,它也可以作为一个桌面摆件,实时显示时间、日期和温湿度信息。还支持通过微信小程序进行远程控制,设置闹钟和其他参数都很方便。同时还有语音识别和红外遥控功能,配合支持红外的酷毙灯,可以直接语音控制开关灯,还能语音操作空调、电视。如果不需要唤醒功能,当个好看又实用的桌面时钟也是完全没问题的,实测不插电当做桌面时钟可坚持一个月以上。
分享一下我的使用体验: 我自己的使用场景是宿舍的上床下桌,床铺挂了床帘。在床铺上方,我装了一盏5W的LED灯,用电源线连接本体放在桌子上,然后连上UPS供电,这样基本不用管电量问题。躺在床上就可以通过微信小程序设置闹钟,不用下床,非常方便。平时我也会当作一个桌面摆件看看时间,最常用的是语音助手功能,主要是控制悬挂在桌上的酷毙灯,不用动手,喊一声就能开关灯,很方便。有时候也会用来控制空调,毕竟遥控器只有一个,有时候也不好找。
唤醒效果: 我把LED灯固定在床的另一侧,并没有正对眼睛(直射效果更好但是有点不舒服),这样使用唤醒灯大概有两年了,刚开始确实能叫醒,但是几个月后就叫不醒了...不过开着灯醒来确实更舒服一些,最主要的一点是醒来之后可以立即起床,如果有床帘的话会更明显,床帘不透光嘛,没有开唤醒灯的话起床看见外面的光线会很不舒服,总体来说还是可以提高醒后的舒适感的。
特点
- 自然唤醒灯功能
- 自定义光照曲线
- 实时时钟显示
- 温湿度显示
- 语音识别控制
- 本地音乐播放
- 红外遥控扩展
- 蓝牙通信功能
- 微信小程序控制
- 多种供电方式(DC /USB/电池)
- 智能低功耗策略
- 电量实时显示
- 低电量提示功能
详细介绍
连接LED灯,通过PWM模拟自然日出过程,实现柔和唤醒,提升用户起床舒适度。支持自定义设置光照亮度变化曲线,满足不同用户对唤醒节奏与照明氛围的个性化需求。集成高精度RTC模块,提供稳定准确的时间显示和时间管理功能。内置温湿度传感器,可实时监测室内环境并显示当前温湿度信息。通过蓝牙模块实现与智能手机等设备的数据通信,支持远程设置与控制。配套开发微信小程序,用户可通过手机便捷控制设备、查看信息及管理设置。支持本地语音识别功能,实现免手动操作的语音交互体验。内置音频播放模块,可实现语音播报、提示音及背景音乐播放。集成红外发射与接收功能,支持控制传统家电设备,实现语音控制红外设备功能。支持 DC 电源、USB 接口及锂电池三种供电方式,适应多种使用场景和便携需求。系统具备自动判断供电状态并切换至低功耗模式的能力,有效延长电池使用时间。具备电池电量检测功能,可实时显示当前电量状态。当电池电量不足时,系统可提示用户及时充电。
外观




显示介绍
主界面

设置菜单界面

设置时间界面

设置闹钟界面

语音控制列表
| 功能 | 语音命令 |
|---|---|
| 唤醒词 | 塔菲 |
| 音量控制 | 大点声 正常说话 小点声 |
| 信息播报 | 现在温度 现在湿度 现在几点了 |
| 灯光控制 | 开/关灯 白/黄/双色/光 增加/减少亮度 |
| 空调控制 | 打开/关闭空调 制冷/热 xx度 |
| 更多功能开发中... |
微信小程序

搜索并连接智能唤醒灯的蓝牙,连接成功后智能唤醒灯每隔一段时间会自动同步数据,小程序会有“已同步数据”的提示。点击空调或者台灯会立即发送命令,更改其他设置需要点击“同步数据”保存设置,输入附加命令可以完成高级设置。
| 附加命令 | 描述 |
|---|---|
| TIME | 网络授时 |
| RESET | 重启设备 |
| BL | 进入Bootloader |
| VOICE | 唤醒语音助手 |
| NAME | 更改设备名称 |
快速开始
物料购买
| 名称及说明 | 淘宝链接 | 备注 |
|---|---|---|
| 高灵敏咪头 | 淘宝链接 | 多买几个,容易焊坏 |
| BT24-T蓝牙模块 | 淘宝链接 | - |
| 3525腔体扬声器 | 淘宝链接 | - |
| ASR-PRO语音识别模块 | 淘宝链接 | 核心板4M闪存 |
| 小聚合物3.7V锂电池 | 淘宝链接 | 厚度:8mm 宽度:30mm 长度:41mm |
| 2.9寸电子纸墨水屏 | 淘宝链接 | 黑白双色 |
| XT30带信号针插头 | 淘宝链接 | 垂直公头+母头 |
| FPC连接器0.5MM | 淘宝链接 | 24P上接 |
| 其他物料对照BOM表和实物图购买即可 |
焊接指南
- 加热台焊接背面贴片元件,建议开个小钢网
- 热风qiang焊接正面LED和咪头,注意!(1)焊接咪头时一定要控制好温度和时间,有条件用高温胶带保护 (2)咪头引脚焊锡容易粘连,上锡尽量少点
- 焊接插件

外壳
可以在嘉立创 EDA 中直接下单外壳,请使用最新版下单。注意!!!,经测试,老版本存在 BUG——上盖会出现变成实心的情况,初步判断可能与圆角半径有关,下单的时候请检查一下。

装配指南
如图所示,先连接好墨水屏,固定好喇叭和电池(可使用双面胶),并整理电线。安装时先将红外模块和旋转编码器一侧对齐,从这一侧斜插入,确保插口就位后,再轻压另一侧并顺势旋转,直至整个结构闭合固定。
螺丝请使用M3*12mm(不过感觉螺丝咬合的不深,不知道有没有更好的解决方案)


烧录指南
最新的烧录文件可在aystmjz/Smart-Wake-Up-Light/releases或者QQ群377956571下载
- 连接烧录夹(或者直接用线接上)和调试器,如下图:

- 使用ST-LINK Utility或者其他软件烧录STM32,烧录文件:
> Smart_Wake_Up_Light_XXX+bootloader_XXX.hex - 烧录ASRPRO
> 1. USB连接电脑
> 2. 打开全擦除烧写工具.exe
> 3. 选择串口
> 4. 选择型号(ASRPRO-4M)
> 5. 选择文件(ASRPRO.bin)
> 6. 按下烧写按钮等待出现“请是否连接设备ASR-PRO?”字样
> 7. 按下复位(语音助手常开模式开启时)或者连续按下两次按键(语音助手常开模式关闭时)即开始烧录
5.烧录字库
> 1. 打开SerialDebug.exe或其他支持Xmodem-256协议的串口调试软件
> 2. 按下复位按钮2S内发送‘w’进入Bootloader
> 3. 选择[4] Download file to external Flash
> 4. 输入地址(0x000000 / 0x200000)
> 5. 选择文件(Unicode16FontLibrary.bin / Unicode12FontLibrary.bin)
> 6. 发送文件
自定义字库地址请更改下面的宏定义
#define OLED_UNICODE_8X16FONT_ADDR 0x000000 // Unicode字库地址 0x000000 ~ 0x200000 (U+0000 ~ U+FFFF 大小2MB)
#define OLED_UNICODE_6X12FONT_ADDR 0x200000 // Unicode字库地址 0x200000 ~ 0x380000 (U+0000 ~ U+FFFF 大小1.5MB)
后续见调试指南,待更新
设计原理
硬件介绍

-
主控: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,如下图:

ASRPRO烧录
- USB连接电脑
- 打开全擦除烧写工具.exe
- 选择串口
- 选择型号(ASRPRO-4M)
- 选择文件(ASRPRO.bin)
- 按下烧写按钮等待出现“请是否连接设备ASR-PRO?”字样
- 按下复位(语音助手常开模式开启时)或者连续按下两次按键(语音助手常开模式关闭时)即开始烧录
更改语音,增加功能请使用天问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单片机小作品,后来做了增强版,而现在则是完整的系统化产品,算是给这段学习旅程画了个阶段性的句号。感兴趣的话可以去我的 GitHub 看看,我在这里就不赘述了。
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。










