松原老糊涂 发表于 2023-10-29 14:20:11

【参赛】语音控制与报时时钟LHT NTP V12.3

本帖最后由 松原老糊涂 于 2023-10-29 15:03 编辑

语音控制与报时时钟LHT NTP V12.3制作

      语音报时时钟给我们的生活带来便利和乐趣,但也为我们带来一种神秘感。随着语音识别模块的出现,很多原来难以实现的功能可以方便的得以实现,比如用其来控制灯具、空调等家用电器。本文则是用语音识别模块实现时钟的语音控制与报时。该时钟几经改进,现在的V12.3版可以长期稳定运行。文中所使用的器件都是市场上可以方便购买的。时钟功能适用,调试制作也很简单,特推荐给朋友们。

功能介绍

      语音控制报时时钟LHT NTP V12.3版本,是一款具有网络校时功能,可进行语音控制和语音报时的数码管显示时钟,比如:用语音问:“几点了?,今天星期几?”等,时钟就会用语音回复播报。时钟的时间设定以及各种控制功能的选择,均可以通过语音控制。在开机的一分钟之内和每个小时会自动进行一次网络时间同步,因此走时非常精准,与北京时间的误差一般在毫秒级。

      无网络或未对时钟进行配网时,时钟在通电50秒后进入离线运行模式,除网络校时外,其他所有功能正常使用。没有网络时间同步时的走时精度会有所下降。

      该时钟具有整点报时和六路闹钟功能。整点报时为三种模式,其中模式0为关闭整点报时,模式1为全天整点报时,模式2为只在白天(默认早上7点至晚上8点,也可以通过按键设置时间范围)整点报时。六路闹钟的第一路、第二路为单次闹钟,即在闹钟完成后关闭,第三路、第四路每天重复闹钟,第五路、第六路为工作日闹钟(周六、周日不报)。整点报时和六路闹钟的设定、开启与关闭同样可由语音控制实现,也可由按键来控制实现。

      时钟具有记忆功能,断电后恢复供电,设定的整点报时和闹钟状态及时间不会改变。

      具有光感电路,可以自动根据环境照度调整数码管的显示亮度。



      具有播报时钟状态功能,方便使用者随时了解整点报时和各路闹钟的开启与关闭等设置情况。
缓存时间是用来设定运行时间或闹钟的临时性时间数据。缓存时间调整完成后,可将该时间通过语音控制设置成时钟运行时间,也可以设置成某一路闹钟时间。这一路的闹钟时间设定后,需要开启该路闹钟方能正常进行闹钟工作。时钟状态播报时,闹钟开启状态为“1”,关闭状态为“0”。

      配网成功、连网成功以及网络中断等情况,时钟均会语音播报。

      在对时钟发出任何的语音指令前,需要唤醒时钟,唤醒词为:“你好小美”、“大脸猫”或“小美你好”。唤醒后20秒无语音控制则再次进入睡眠状态。“几点了”,设置成免唤醒模式。即,随时可以对时钟发问。

组成结构及功能

      时钟主要由三部分组成,即语音识别模块SU-03T、具有WIFI功能的控制芯片ESP8266和时钟走时电路DS1302。其中语音识别模块SU-03T主要完成语音的识别,并将指令以串口通信的形式向控制电路发出命令,同时,接收来自控制芯片发出的串口指令并播报相应语句。时钟电路DS1302具有独立的走时系统,具有备份电池,可以在断电的情况下保持持续走时。控制芯片ESP8266则做为时钟的心脏,在接收到来自SU-03T的指令后,读取DS1302的时钟数据,发送给SU-03T。同时,以小时为单位,对DS1302时钟进行网络同步,使其走时精准。整点报时、闹钟等功能也都由ESP8266控制完成。显示部分为四个独立的1.2吋数码管,一般距离5-8米清晰可辨。电路中含有光敏电阻,可以使显示时钟的数码管自动调整亮度,并在不同照度下发出不同的亮度。

      时钟的供电采用Micro USB和DC003插座接入,电源供电电压5V,电流大于2A。

电路原理图




PCB背面图



PCB正面图



制作过程

一、PCB焊接



      PCB的帖片焊接是本时钟制作的关键。制作时,首先将用锡膏助推器将锡膏涂抺在PCB背面的逐个帖片器件的焊盘点上。按照原理图提供的BOM,逐个摆上元件,用400W以上“铁板烧”加热PCB,待全部器件上的锡膏熔化并将器件焊接完成后,轻轻取下PCB。此过程不要使元器件受热过长时间,以免造成元器件的损坏。然后焊接PCB正面的驻极体话筒、数码管、LED以及按键等。由于时钟尺寸足够大,PCB空间并不紧张,这里采用的器件多数为0805帖片器件,焊接容易操作。



二、语音识别模块SU-03T固件的编译和烧录

      在SU-03T语音模块的官网“智能公园”的AI产品零代码平台,依据串口数据传输要求和所播报的语音内容,对传输数据和播报的语音内容进行编译。由于SU-03T具有150句汉语语句的辨识能力,而对时钟的控制则越详细越多越好两者存在矛盾,在编译语句时,尽量言简意赅,选用常用的简洁的语句来实现各项基本功能。



      在这里,需要特别指出的是,由于本时钟使用串口实现SU-03T和ESP8266之间的通信。按照SU-03T的编译规则,在串口数据中,以“AA 55 XX YY 55 AA”的格式定义。其中“AA 55”为帧头,“55 AA”为帧尾,“XX YY”为串口数据。采用帧头帧尾叠加在数据上的方法,目的是提高传输的可靠性,避免识别误码和错误播报。

      固件定义了148条控制命令,其中127句为命令词语句, 这其中84句为时间定义语句。比如:“设置时为6”、“设置分为59”等,其余为其他控制语句,比如:“关闭第四路闹钟”、“设置白天整点报时”等。另外21条命令是按键控制指令和其他语音控制指令,比如:按“MOD”键后,播报当前时间,按“DOWN”键后,播报日期;发布指令:“大点声”等。


      固件编译完成后,要将固件下载到电脑上,形成“jx_fiem.tar”压缩文件,解压后等到“jx_firm”文件夹。注意,应将解压得到的“jx_firm”文件夹放置在某个硬盘的根目录下或桌面上,避免多层文件夹的名字中含有中文文字。



      SU-03T的烧录采用专用烧录工具“Hummingbird-M-Update-Tool”,烧录时,首先选择好要烧录的文件,即“jx_firm”文件夹中“jx_XXXXXX_release_update”文件,注意一定要选择“release_update.bin”文件,选择好所使用的COM口。然后,把时钟上的8位拔码开关的1、2拔至ON位置,再将PCB上的SU-03T拔动供电开关关闭一下再打开。就可以正常烧录了。烧录完成后,喇叭播报“语音报时系统已启动”,表示烧录成功。

      时钟表面及背面,加装与PCB相同尺寸的2.0mm亚克力茶色透明和不透明板,时钟更加漂亮。



三、ESP8266固件编写及烧录

      ESP8266固件的编写其实并没有多大难度,这里推荐使用模块式编程软件米思齐(Mixly)编写,即便没有基础也很容易上手。





      这里所使用的变量和函数较多,判断语句及串口传输命令等虽多但不复杂,只要耐心核对就不会出现问题。这里我已经把程序代码附上,欢迎批评指正。

      程序编好后,就可以用米思齐程序对ESP8266进行烧录了。烧录前,要将时钟上的8位拔码开关的3、4、5拔到ON的位置,选择好COM口和将要烧录的程序然后点“上传”即可。



      SU-03T和ESP8266烧录完成后,8位拔码开关的6、7、8要置于ON的位置(时钟正常工作位置),其余开关置于OFF位置。至此,时钟的软硬件均已完成制作,可以试运行了。

使用方法

一、        配网方法
初次使用或更换了WIFI环境时,需要通过手机微信对时钟进行配网。以下两种配网方法,任选一种即可。

第一种配网方法:

打开手机微信,搜索“一键配网”小程序,对时钟进行配网。
1、时钟加电;
2、将手机登录上所使用的WIFI网络,打开手机微信,搜索“一键配网”小程序,或用微信扫一扫扫描后文附带的二维码;
3、进入“一键配网”小程序,选择SmartConfig协议;
在WIFI栏选择所使用WIFI并在密码栏输入WIFI密码(保持手机与时钟在同一WIFI下);
4、点击下侧的“一键配网”,观察时钟的数码管显示,耐心等待直至出现中间的“冒号”开始闪烁或开始正常显示时钟,表示配网成功。如果长时间(一般半分钟以上)没有变化,可将时钟断一下电或点击“RESET”键,然后按上述步骤重复进行“一键配网”。

第二种配网方法:

打开手机微信,在顶部搜索栏搜索“安信可科技”,关注并进入公众号;
1、点击左下角的“应用开发”;
2、选择“微信配网”,并点击:“开始配网”;
3、选择所使用的WIFI,输入WIFI密码;
4、点击“连接”;
5、等待数码管显示正常时间。如长时间无变化,可按一下“reset”键进行复位,然后从第一步开始重复配网,直至成功。
配网过程可能需要重复几次,请耐心操作。一旦配网成功,时钟会播报配网成功,只要网络环境不发生变化,以后加电即自动联网,无需再重复配网。

二、        时钟设定

这里所说的时钟设定,是将时钟的时间进行调整并设置成所需要的时间。由于该时钟具有每小时一次的网络校时功能,如果所设定的时间与北京时间有误差,网络正常时时钟运行到该小时的59分59秒时会进行自动的网络时间同步,实现准确的北京时间显示。

设定方法:

1、        按键设置时钟

在显示时钟的状态下,可以通过按键对年、月、日、时、分进行设置;也可以对整点报时状态、白天整点报时时间范围,闹钟的开、关和闹钟时间等进行设置。
长按“SET”键,数码管显示为“ye **”,进入年的设置页面。此时点击“UP”或“DOWN”可以增加或减少数字,长按会连续加减,直至选中合适的年份,不想设置该项可以不按“UP”或“DOWN”。直接点击“SET”进入月份设置页面,此时数码管显示“mo **”,同上,通过“UP”和“DOWN”可以调节月份。点击“SET”进入日的设置而页面,此时数码管显示“da**”,,再次点击“SET”进入小时的设置页面,数码管显示“ho **”,点击“SET”进入分钟设置页面,数码管显示“mi**”。秒会在设置完成后自动从0开始运行,所以不需对秒进行设置。再次点击“SET”后进入整点报时状态的设置,数码管显示“B= *”,按“UP”或“DOWN”改变B的状态。此时,按“MOD”可以改变白天整点报时的时间范围,首先确定的是起始时间,按“SET”后设置结束时间。再次按“SET”进入第一路闹钟设置页面,数码管显示“A1 *”,按“UP”或“DOWN”改变闹钟的状态,0为关闭闹钟,1为开启闹钟。此时,若想设置这一路的闹钟时间,可以点击“MOD”进入闹钟时间设置页面,分别对闹钟的小时和分钟设置后,再按“SET”返回闹钟设置页面并切换到下一路闹钟设置页面,直至第六路闹钟设置完成,时钟自动将以上设置信息启用并保存。从第六路闹钟退出并正常显示时间的一刻,秒复零。因此用按键设置时间时,要妥善运用这一特性来使秒从零开始。
设置项和显示内容:
年:ye
月:mo
日:da
时:ho
分:mi
整点报时:B
         报时起始时间报时结束时间
闹钟: A1*,A2*,A3*,A4*,A5*,A6*
   闹钟时间:小时 分钟
设定过程中长按“SET”键可退出设置,中途退出,会保存和启用已设置的信息。
(数码管显示英文字母时,有人以为显示内容怪异,其实,这是用七段数码管显示英文字母的正常现象。)

2、        语音设置缓存时间

“时”和“分”分开两句语音控制,先进行时的设置,然后再设置分,时和分设定完成后确定即可。
语音指令:“设置时为*(例,设置时为23)”,此时数码管应该在“时”位显示23,并播报“已设定时为23”;
“设置分为*(例,设置分为30)”,此时数码管“分”位应该显示30,并播报“已设定分为30”。
时和分设定完成后,要确定
语音指令:“确定”,“可以了”,“好了”
时钟会播报所设定的缓存时间。

三、语音设定运行时间

语音指令:“设为运行时间”
时钟会将缓存时间设定为运行的时间,并播报调整后的时间。但是,如果网络正常,设定的时间与北京时间有差别,会在开机一分钟内或每小时的网络同步过程中被更改。

四、进行网络校时

语音指令:“校时”,“网络校时”,“同步网络时间”
同步完成后播报:“网络时间同步完成,时间为:*点*分”。

五、整点报时功能设定

1、        关闭整点报时功能
语音指令:“取消整点报时”
2、        设置为全天整点报时
语音指令:“设置全天整点报时”,“开启全天整点报时”
3、        设置白天整点报时
语音指令:“设置白天整点报时”,“开启白天整点报时”

六、语音设定闹钟

1、        闹钟时间设定
将需要设定的闹钟时间通过语音设置为缓存时间后,通过语音指令控制设定为某一路闹钟时间
语音指令:“设为第*路(例,设置为第五路)”
数码管会显示该闹钟路数和闹钟时间,同时播报。

2、        闹钟开启
语音指令:“打开第*路(例,打开第四路)”
该路闹钟开启,同时,数码管会相应的显示该路为“ON”(例,A4ON),播报:“已开启第*路闹钟”。

3、        关闭闹钟
语音指令:“关闭第*路闹钟(例,关闭第六路闹钟)”
该路闹钟关闭,同时,数码管会相应的显示该路为“OF”(例,A6OF),播报:“已关闭第*路闹钟”。

4、        关闭所有闹钟
语音指令:“关闭所有闹钟”
各路闹钟均处于关闭状态,数码管显示“ALOF”,播报:“已关闭所有闹钟”。

5、        播报闹钟时间
语音指令:“第*路闹钟时间(例,第一路闹钟时间)”

七、播报时间

语音指令:“几点了”,“请报时”

八、播报日期

语音指令:“播报日期”,“今天多少号”,“今天星期几”

九、播报时钟状态

语音指令:“播报时钟状态”,“播报状态”

十、时间和秒显示

语音指令:“显示秒”,“切换显示”
时钟会显示当前时间的秒和毫秒,由于毫秒跳时非常快,给人一种时间紧迫感。5分钟后恢复显示时和分。

十、音量控制

1、        调大音量
语音指令:“大点声”
2、        调小音量
语音指令:“小点声”
3、        设置为最大音量
语音指令:“最大音量”
4、        设置为最小音量
语音指令:“最小音量”
5、        设置适中音量
语音指令:“音量适中”,“中等音量”
6、        设置静音
语音指令:“静音”
7、        取消静音
语音指令:“取消静音”

十一、运行状态下的按键功能

1、        MOD
按此键后,语音报时。
此键具有止闹功能,按下即可停止闹钟播报。

2、        UP
按此键后,切换显示“时、分”与“分、秒”。显示“分、秒”5分钟内无操作,则自动返回显示“时、分”状态。

3、        DOWN
按此键后,轮流显示当前的年、月、日、星期,并语音播报。

4、        SET
       长按进入或退出时钟设置。点击播报时钟状态。

注意事项

       由于电路所采用的ESP8266物联网WIFI模块仅支持2.4G WIFI网络,因此使用时请不要选用5G WIFI网络;
如果时钟出现乱码或无显示等状态,可断一下电再供电,或点击“RESET”键处理;
      使用时请避免时钟进水或导电体接触电路元件,以免造成时钟的损坏。





相关视频介绍请参考:https://www.bilibili.com/video/BV1eG4y1U7Zn/?spm_id_from=333.999.0.0
本文中的时钟改进得较之功能更多,性能更稳定。

松原老糊涂 发表于 2023-10-29 15:02:50

电路原理图、PCB图、面板等制作资料,SU-03T固件,ESP8266固件等,均可无偿提供。

radio988931 发表于 2023-10-29 15:21:40

恭喜参赛,不错的作品!

分立元件 发表于 2023-10-29 16:24:23

有创新,语音控制

hujingdi 发表于 2023-10-31 10:27:21

欢迎作品参赛!感谢支持DIY大赛!!!

Frank660405 发表于 2023-12-13 10:42:20

不错不错,也想做一套,先留爪,后学习,再实践:lol

冷风1969 发表于 2023-12-23 13:16:33

不错不错,非常实用的电子语音控制时钟

松原老糊涂 发表于 2023-12-23 15:15:02

radio988931 发表于 2023-10-29 15:21
恭喜参赛,不错的作品!

感谢关注和支持。

松原老糊涂 发表于 2023-12-23 15:15:58

分立元件 发表于 2023-10-29 16:24
有创新,语音控制

感谢关注和支持:handshake

松原老糊涂 发表于 2023-12-23 15:17:10

hujingdi 发表于 2023-10-31 10:27
欢迎作品参赛!感谢支持DIY大赛!!!

感谢支持。

松原老糊涂 发表于 2023-12-23 15:18:05

Frank660405 发表于 2023-12-13 10:42
不错不错,也想做一套,先留爪,后学习,再实践

感谢关注和支持,如果需要相关资料,请私信联系。

松原老糊涂 发表于 2023-12-23 15:18:35

冷风1969 发表于 2023-12-23 13:16
不错不错,非常实用的电子语音控制时钟

感谢关注和支持:handshake

平林新月 发表于 2024-3-26 11:11:48

这么准的时钟,最大的不足是缺少秒显示,体现不出来高精度的长处,有秒显示,我才会动心。。。:lol

松原老糊涂 发表于 2024-3-27 08:36:49

平林新月 发表于 2024-3-26 11:11
这么准的时钟,最大的不足是缺少秒显示,体现不出来高精度的长处,有秒显示,我才会动心。。。

如果方便可以进来本人的闲鱼店铺,您的需求可以提供。6位2.3吋数码管显示时钟有秒的显示。

平林新月 发表于 2024-3-27 08:41:27

松原老糊涂 发表于 2024-3-27 08:36
如果方便可以进来本人的闲鱼店铺,您的需求可以提供。6位2.3吋数码管显示时钟有秒的显示。

好的,我去看看。:handshake
页: [1] 2
查看完整版本: 【参赛】语音控制与报时时钟LHT NTP V12.3