Skip to content

Latest commit

 

History

51 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

晓醒·智能唤醒灯

一款支持自然光模拟唤醒、自定义光照曲线的智能唤醒灯,具备时间、日期、温湿度实时显示,支持语音识别、红外遥控、蓝牙通信及微信小程序远程控制,采用灯体与主控分离设计,支持DC/USB/电池多种供电方式。

1 (4).jpg

写在前面

硬件已经迭代了几次,目前结构比较稳定,应该不会再大改了。软件这边我会在空闲时间继续加功能、修 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 接口及锂电池三种供电方式,适应多种使用场景和便携需求。系统具备自动判断供电状态并切换至低功耗模式的能力,有效延长电池使用时间。具备电池电量检测功能,可实时显示当前电量状态。当电池电量不足时,系统可提示用户及时充电。

外观

image.png

c795f5cc20e241538be7572d8ad6b643

b26f9bb087fc42c9919185a0e81af61c

27dc5bfa588b4bdabd53b0f744440306

显示介绍

主界面

5d510fb17c4242ee8324800a4e34a78d

设置菜单界面

14fa243955f94362a7d8272305c97f78

设置时间界面

89d701822e0b4c2895829864ab4d9663

设置闹钟界面

0085028afbb443b599567ff710ad3ea4

语音控制列表

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

微信小程序

c053f6b07d144203abc074f50540ac3f

搜索并连接智能唤醒灯的蓝牙,连接成功后智能唤醒灯每隔一段时间会自动同步数据,小程序会有“已同步数据”的提示。点击空调或者台灯会立即发送命令,更改其他设置需要点击“同步数据”保存设置,输入附加命令可以完成高级设置。

附加命令 描述
TIME 网络授时
OFF 关闭灯光

快速开始

物料购买

名称及说明 淘宝链接 备注
高灵敏咪头 淘宝链接 多买几个,容易焊坏
BT24-T蓝牙模块 淘宝链接 -
3525腔体扬声器 淘宝链接 -
ASR-PRO语音识别模块 淘宝链接 核心板4M闪存
小聚合物3.7V锂电池 淘宝链接 厚度:8mm 宽度:30mm 长度:41mm
2.9寸电子纸墨水屏 淘宝链接 黑白双色
XT30带信号针插头 淘宝链接 垂直公头+母头
其他物料对照BOM表和实物图购买即可

焊接指南

  1. 加热台焊接背面贴片元件,建议开个小钢网
  2. 热风枪焊接正面LED和咪头,注意!焊接咪头时一定要控制好温度和时间
  3. 焊接插件

5299c260e17949a28f524698e90b292c

外壳

可以在嘉立创 EDA 中直接下单外壳,注意!!!最好用旧版本(v2.1.64)下单外壳。经测试,新版(v2.2)存在 BUG——使用新版时,上盖会出现变成实心的情况,初步判断可能与圆角半径有关。在旧版中设置圆角为 2mm 可正常生成模型,但在新版中,只要圆角设置大于0.7mm,就会出现实心问题,影响外壳结构的正确性。如果要用最新版下单的话请把外壳的圆角半径改为0.7mm,不过这样我觉得就不够圆润了。

2170e51cacea4825aee1af6bf33b9486

装配指南

如图所示,先连接好墨水屏,固定好喇叭和电池(可使用双面胶),并整理电线。安装时先将红外模块和旋转编码器一侧对齐,从这一侧斜插入,确保插口就位后,再轻压另一侧并顺势旋转,直至整个结构闭合固定。

螺丝请使用M3*10mm(不过感觉螺丝咬合的不深,不知道有没有更好的解决方案)

b4871f95857a49c9b5c749f588b598c3

b144f4d8e89445ccb5bd24bbc864cd17

烧录指南

最新的烧录文件可在aystmjz/Smart-Wake-Up-Light/releases下载

  1. 连接烧录夹,如下图:

49079c9e98e04e8bb4adedb335e78a20

  1. 设置蓝牙模块,将sys.h中的 DEBUG_MODE 宏定义为 4,编译烧录单片机,连接调试接口的RX和TX,发送以下AT 指令:
  • 将波特率设置为 115200 bps:AT+BAUD 7
  • 设置设备名称:AT+NAME Smart WakeUpLight (以上为手动设置蓝牙模块,仅需设置一次,有时间了会更新代码,自动设置蓝牙模块)
  1. 将sys.h中的 DEBUG_MODE 宏定义为 0,编译烧录单片机。
  2. 烧录ASRPRO,USB连接电脑,关闭语音助手常开模式,使用附件中的烧录工具下载,出现等待连接提示后连续按下两次按键供电即开始烧录(或者开启语音助手常开模式,按下复位按钮)

设计原理

硬件介绍

实物图讲解.jpg

  • 主控: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 红外发射

电气连接框图

电气连接框图.jpg

系统支持两种输入电源:

  • 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:外部电源供电状态(未充电)

电源系统可靠性已得到验证。

数据流向框图

数据流向框图.jpg

  • 核心控制器:STM32F103C8T6 是整个系统的控制核心,负责数据处理、控制指令分发、通信协调,拥有丰富的外设接口:UART、SPI、PWM、GPIO、TIMER 等。
  • 语音处理模块:ASRPRO 连接麦克风(MIC)、扬声器(SPK)、红外发射/接收模块,用于语音识别(如唤醒词、语音指令识别)和音频反馈。通过 UART0 与 STM32 通信,实现指令交互与状态反馈。
  • 蓝牙通信模块:BT24-T 通过 UART1 与 STM32 连接,实现与手机微信小程序等设备的无线通信。
  • SWD 调试接口 用于程序烧录与串口调试,详见调试教程部分。
  • USB 转串口芯片:CH340X 通过USB 连接 PC,负责ASRPRO的程序烧写。

低功耗策略

c7b89e9cc29a4c5ebc5d31fe2307b2aa

无论是首次上电还是电源模式变化导致的重启,系统上电后都会检测供电方式,判断是外部供电(USB/DC)还是电池供电。 若为电池供电,则进入低功耗模式:

  • 初始化低功耗寄存器、关闭LED、PWM外设;
  • 自动关闭闹钟。
  • 配置外部中断用于按键唤醒;
  • 配置实时时钟中断,中断间隔为一分钟,用于时间刷新
  • 蓝牙进入低功耗模式
  • MCU进入低功耗 STOP 模式,等待中断唤醒。

若系统运行中检测到供电模式发生变化:

  • 正常工作模式时外部电源断开:触发 MCU 复位,进入低功耗模式;
  • 低功耗模式时外部电源接入:触发 MCU 复位,进入正常工作模式

复位重启是系统供电切换后的必要步骤,确保模式状态一致性。

语音助手开关策略

f309ed195634408595cae047578bb81b

系统首先检测是否存在外部电源(如 DC 或 USB 供电): 若存在外部电源,则继续判断是否启用“语音助手常开模式”配置:

  • 若常开模式已启用,则语音助手模块将保持持续开启状态,适用于插电运行场景;
  • 若未启用常开模式,则系统转入按键控制逻辑,允许用户手动启动语音助手。

在未启用常开模式或处于电池供电情况下,语音助手的启用依赖于用户按键输入:

  • 连续按下两次按键即可开启语音助手;
  • 语音模块保持开启状态持续 30 秒,之后自动关闭,以节省系统功耗;
  • 若期间未检测到按键操作,语音助手将保持关闭状态。

调试教程

预留了调试接口,可接上烧录夹烧录Stm32,如下图:

b91c423504504c769554a2d427aa0073

正常情况下(DEBUG_MODE=1)调试接口的RX和TX只能接受数据,调试接口的RX能接收到STM32和ASRPRO的调试数据,调试接口的TX能接收到BT24-T发送的数据。果然需要单独调试STM32,ASRPRO,BT24-T或不输出调试信息,请更改DEBUG_MODE,如下图:

28c81a480d7e4f13bac286267155dee3

ASRPRO烧录

  1. USB连接电脑
  2. 关闭语音助手常开模式
  3. 天问Block编译下载
  4. 连续按下两次按键即开始烧录

蓝牙调试

在进行蓝牙模块调试前,需确保系统已进入调试模式,应将 DEBUG_MODE 宏定义为 4。 蓝牙模块通过串口与主控芯片通信,需将波特率设置为 115200 bps。使用以下 AT 指令完成设置: AT+BAUD 7 为方便识别设备,可将蓝牙模块的广播名称修改为更具标识性的名称,使用以下 AT 指令完成设备名称设置: AT+NAME Smart WakeUpLight

取模教程

图片取模

32f24a839a184214b7da3268736f12cb

在OLED_Data_Image.c中添加并在OLED_Data.h中声明。 调用OLED_ShowImage函数显示,示例: OLED_ShowImage(0, 0, OLED_W, OLED_H, Image_1, BLACK);

文字取模

46247ef6d5b448d28c5302d5fecbe7cc

46247ef6d5b448d28c5302d5fecbe7cc

在对应的OLED_Data_Hanzi.c文件中添加数据。 调用OLED_Printf函数显示,示例: OLED_Printf(132, 30, OLED_8X16, BLACK, "设置");

be2ac1d12fc9486b8fe6d0e9fbce104a

后记

从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+字节。 唤醒灯分为三个部分,主机,扩展部分,从机

11

唤醒灯采用三块洞洞板焊接,扩展部分与主体部分采用排针连接,各个外设也采用排针连接,方便更新更换模块,单片机最小系统与洞洞板采用杜邦线连接,都是纯手工制作,剪裁合适的长度焊接,虽然很费时间但增加了唤醒灯的美观程度和稳定性。

12

功能 唤醒灯可以查看当前时间,可以查看当前温度湿度和光照数据,可以设置闹钟开关,闹钟时间,闹钟星期,唤醒时间,唤醒模式,整点报时,还有实时唤醒和记录光照的功能,除此之外,可以使用手机获取和设置数据,可以使用语音识别设置闹钟,还有报时和播放音乐的功能。

基本功能:

  • 蓝牙控制
  • 按键设置时间和闹钟
  • 唤醒灯与关闭闹钟

扩展功能:

  • 打开/关闭闹钟/整点报时
  • 设置闹钟时间/星期
  • 设置中取消
  • 设置唤醒时间
  • 报时
  • 实时唤醒/记录光照数据
  • 播放音乐

主从机展示:

  • 主从机通信

详见 aystmjz/Wake-Up-Light

About

Smart Wake-Up Light Based on STM32 Microcontroller with Voice Control and Low-Power E-Ink Display.基于stm32单片机的智能唤醒灯,支语音控制,低功耗墨水屏

Resources

Stars

25 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages