hujj 发表于 2022-12-31 14:05:49

【参赛】单片机多功能语音报时钟

本帖最后由 hujj 于 2022-12-31 14:07 编辑

    年纪大了容易健忘,厨房蒸煮时经常会因为忘记而将锅烧干,于是想买一个定时器,但买了几款都觉得不好用,由此萌发念头自己动手做一个。可是光做一个定时器也有点浪费资源,于是便添加了计时、语音报时、闹铃、温湿度检测和自动调整走时误差等功能,构成了一个多功能的智能语音报时钟。时钟采用LCD19264点阵屏幕,解决了普通时钟的数码管无法显示中文的缺点,同时中文操作提示使用起来会有更好的体验效果,尤其方便操作。另外由于使用了单片机作主控,可以采用普通的DS1307日历芯片和晶振,通过单片机定时来修正走时误差,达到高精度计时的目的。通过使用JQ8400语音模块实现了语音报时的功能,同时使用了DHT11温湿度传感器,实现了显示和播报当前温湿度的功能。时钟的外形照片如下:


一、本时钟的主要特点
    1、以大字体轮流显示年份、月日周、时分秒以及当前湿度和温度,每秒切换一次;
    2、在正常模式下点按任意键,会轮流语音播放当前的时间(时分)、当前的温度和湿度、当前的日期(年月日及星期),方便夜间掌握时间;
    3、可以自行设定语音报时的开始时间和结束时间,以免休息时被语音报时惊扰;
    4、可以随意设定在休息日、工作日或每日报时,同时报时频率还可设定成每刻钟报时、半小时报时或者每小时报时,以适应各自的喜好;
    5、采用东方红乐曲作为报时的引导乐,整点报时时奏全曲,半小时和每刻报时时仅奏前两句乐谱;
    6、可以自行设定语音播报的音量,在自动报时的时间段内为正常音量,在此时间段之外为低音量,以防语音播报影响休息;
    7、自动根据季节变化调节报时的起止时间,每年2、3、4、9、10月份按用户设定的时间段内报时。6、7、8三个月为夏季,开始时间提前半个小时,结束时间推迟半个小时。11、12、1、2四个月为冬季,开始时间推迟半个小时,结束时间提前半个小时。人性化的设计让语音报时更具实用性;
    8、具有按秒定时或按分定时的功能,最大定时时间为65535秒,折合18.2小时,可以满足实际使用的需要,若需要更长时间的定时可换用闹铃解决。定时可以中途暂停或恢复,定时时间到(倒计时为零)之后会有语音和音乐提示,并继续正计时。同时每隔3分钟左右会语音提示一次,直到用户退出定时模式;
    9、具有计时功能,进入计时模式后便开始自动计时,计时最长可达18.2小时,计时过程中也可暂停计时,还可以继续计时;
    10、可以自行设定三个单独的闹铃,闹铃可设置为一次性闹铃、每天闹铃、工作日闹铃或休息日闹铃。闹铃时间到会有语音和音乐提示,还可以设置成单次闹铃或重复重复闹铃,重复闹铃可设置为不超过三次,每隔约3分钟左右会重复一次闹铃;
    11、具有调整快慢功能,每天1时10分单片机会自动纠正时钟模块的走时误差,这个误差是根据所使用的DS1307芯片及晶掁实测的数据在程序中自动调整。同时每周一的1时10分还会进行一次用户设置的走时误差调整,这个需要用户自行计算调整时间并进行设置,设置的数据保存在AT24C32芯片中。通过这两种方式,理论上可保持年走时误差低于1分钟;
    12、线路设置有VS383红外接收管,可以通过普通的红外遥控器来中断播放中的乐曲;
    13、时钟使用一颗18650锂电池作为电源,通过AT4506芯片管理锂电池的充电,当锂电池电压低于3.7v时会发出语音提示,要求用户及时充电。当充满电之后又会语音提示拔出充电线。本时钟没有设计锂电池放电保护线路,不会在低电压时切断锂电池电源,长期不用时需要取出锂电池,防止过放电损坏锂电池。

二、电路图


三、制作过程
    早在2021年9月份就开始设计线路图,准备元器件及外壳,着手制作。时钟使用了100*60*25的塑料盒做外壳,经过反复打样测试,不断地修改显示屏、喇叭、锂电池、语音模块和按钮的安放位置,打了六次样板,终于比较完美地将这些元器件集成在塑料盒内,实现了机身小巧化。之后不断地修改或优化线路,又打了九次样板,制作了六台样机进行测试,尽管这些样机的基本功能都达到了设计要求,但都存在耗电量较大的缺陷,普通18650锂电池仅能维持2~3天就需要充电,使用起来不方便。本来准备通过降低单片机频率来实现降低能耗,但由于今年夏天特别炎热,于是暂时中断了试制和测试工作。最近又修改了线路图,增加了锂电池欠压自动关机的保护电路,正准备去打样测试成功之后再来参赛,可恰逢某创暂停了优惠打样活动,加上目前天气又太冷,不方便焊接组装样机,所以准备延后到明年开春后再继续改进,本次则以现有的样机参赛。下面是各样机组装和测试的记录:


    下面是先后15次打样的PCB板,右边5块都是为了确定元器位置而打的样板,右起第6块(红板)才开始组装,到第8次打样回来的PCB板(蓝板)才组装完成1#机,之后也有板子刚打样回来,尚未组装又进行了修改而重新打样的。多亏了某创的免费打样,为我节省了不少银子:


    下面是我先后制作的样机或半成品,我按照组装完成的时间顺序进行了编号,右下角的就是6#样机,目前保留的是2#和6#样机,其他的样机都拆解了元器件用来组装新样机:


四、时钟的结构
    1、屏幕显示的内容
    屏幕上部为提示区,中间为主显示区,下部为常规显示区,如下图:


    提示区左边是电量符,显示当前电池的剩余电量。紧挨着有时会出现的“+”、“-”符号是表示当前调整键的作用是增加或者减少。
电量符号下面的扬声器符号则表示当前的语音自动报时是处于打开(实心符号)或者关闭(空心符号)状态,这可以在设置中改变。
紧挨着的是闹铃符号,同样是实心符号表示设置了闹铃,空心符号表示关闭了闹铃。符号边上的三条短杠则分别对应三个闹铃设置是否打开。
屏幕下部为常规显示区,始终显示当前的湿度、温度、年月日和时分秒。

    2、面板及外部接口
    面板右部有两个按键,分别是功能键和调整键。每个按键都有点按、正常按键和长按键三种操作模式:点按是按下后立即松开;正常按键是按到底之后稍等片刻才松开;长按是按下之后再等一会儿才松开。可以通过数数的方式来确定正常按键和长按键,正常按键是按下时数1,数2时立即松开;长按键是按下时数1,数到3时才松开。
    功能键是选择工作模式用的,点按时在本模式的细分项目中循环(即切换项目),正常按键则在各个模式中循环(即切换模式),长按键则返回基本模式。
    调整键是修改数值或设置选项用的,在修改数值时,点按为微调(加1或减1),正常按键为粗调(加5或减5),长按键则改变调整方向(加或减)。
    面板右上部是红外接收管,原来是考虑使用普通遥控器来操作调整设置的,但考虑使用价值不高而没有实施。现保留设计,留待作控制中断闹铃用。
    紧挨着的是发光二极管,每秒种绿色发光管会改变一次亮灭状态,播放语音时则会发出红色亮光。
    时钟左侧有一个Micro USB接口,用于锂电池充电,外接普通手机充电头或者直接连接电脑来充电。
    充电接口上方有一个双色发光二极管,充电时亮红光,充满电之后亮绿光。
    时钟的喇叭孔安排在背后,如下图:


    3、内部结构
    下图为卸下面板后的时钟内部图,语音播放模块安排在LCD显示屏与主板之间,充分地利用了机壳内部的空间,这也是打了几次样之后才找到的最佳位置。


    下面是尚未插上LCD显示屏的内部结构图:


    语音模块和LCD屏幕都是采取插拔的方式与主板连接,不需要焊接。


五、时钟的工作模式及操作
    时钟的工作模式是通过正常按功能键改变的,每按一次功能键则按顺序改变一次工作模式,直至所有模式遍历结束。在任何时候长按功能键则返回到基本模式,或者在1分钟内没有任何按键操作时也会直接返回到基本模式。
    1、基本模式
    在基本模式下,时钟以大字体分别显示年份、月日周、时分秒和湿度温度四个页面,每秒切换一次。在基本模式下点按任意键(功能键或调整键),时钟会语音播报当前的时间,再按一下则播报当前的温湿度,继续按一下则播报当天的日期。下图为基本模式的屏幕显示之一:


    2、秒定时模式
    在基本模式下正常按功能键便会切换到秒定时模式。此时提示区中部会出现“计时模式”字样,右部会出现“计时准备”字样,可以通过按调整键来调整需要定时的时间,点按一次增加或减少1秒,正常按调整键一次增加或减少5秒,长按调整键则改变增减的方向,屏幕左上角电量符边上会有正负号对应出现,表示当前调整键是处于增加或减少状态。定时时间设置好之后点按功能键便开始倒计时,提示区右部会显示“正在倒计时”。计时过程中点按功能键即暂停计时,同时出现“计时暂停”提示,再点按功能键又可以恢复计时,可以随时暂停或者恢复。倒计时时间到(计时值为零)时会有语音提示并响起一首乐曲,提示区会出现“定时已到”字样,同时会继续正计时,直至用户长按功能键退出计时模式。如果用户没有及时退出则每过几分钟会语音提示一次,或者满18.2小时后自动恢复到基本模式。需要注意的是秒定时时长最多为18.2小时,超过这个时间请改用闹铃解决。下图为秒定时的界面:


    3、分定时模式
    在秒定时模式时正常按功能键便会切换到分定时模式。分定时模式的界面和操作方式与秒定时完全一致,区别仅仅是调整键按下时是以分钟为单位增减的,即只能改变分钟的数值,不能改变秒钟的数值。


    4、计时模式
    在分定时模式下正常按功能键便会切换到计时模式。计时模式与定时模式基本一致,只是没有设置时间的功能,计时是从零秒开始的,也可以通过点按功能键暂停或恢复计时,长按功能键退出。


    5、闹铃设置模式
    在计时模式下正常按功能键便切换到闹铃设置模式,此时可以轮流分别设置三个闹铃,也可以对原设置进行修改。在设置时以大号字体出现的数值就是当前的设置项目,可以通过按调整键来改变当前的数值。


    首先设置的是小时,调整好之后点按功能键就会切换到分钟设置。
    分钟设置好之后点按功能键便切换到闹铃模式选择,可以点按调整键在每日闹铃、工作日闹铃。休息日闹铃和仅一次闹铃之间进行选择。
    再点按功能键便切换到闹铃启用或停用选择界面,此时可选择启用或停用本组闹铃。
    继续点按功能键便切换到重复闹铃次数设置,点按调整键可以选择重复次数,重复次数最多可以设置为3次。
    此时再点按功能键便切换到保存设置的选择界面,可以选择保存设置或放弃设置。若选择了保存,之后再点击功能键时,本组闹铃设置数据便会保存在EEPROM中而不会丢失。
    三组闹铃是分别单独设置的,屏幕右上角会提示当前设置的是哪组,如上图显示的就是对闹铃1进行设置。
    闹铃1设置之后便自动转到闹铃2设置,然后类推到闹铃3。闹铃3设置之后则会出现设置结束的提示,此时若点按功能键则转回到闹铃1的设置,正常按功能键则转入到报时设置模式。

    6、报时设置模式
    在报时设置模式下,点按调整键可以在每日报时、工作日报时、休息日报时和不报时之间进行选择,如下图:


    点按功能键便切换到报时方式选择界面,此时点按调整键可以在整点报时、半点报时或每刻报时,可以根据自己的喜好来选择。
    继续点按功能键就可以分别设置报时的开始时间和结束时间,开始和结束时间只能选择整点,不能选择分钟。且开始时间不能晚于9点,结束时间不能早于6点并且不能先于开始时间。
    报时时间设置好之后便是选择保存设置或放弃保存的选择,点按调整键可以改变选择。之后再点按功能键便出现结束设置提示,所作的设置便按照之前的选择保存或不保存。

    7、音量设置模式
    在报时设置模式下正常按功能键便切换到音量设置模式。最低音量可以通过按调整键在10、15、20三档之间选择,最高音量则可以在20、25、30三档之间选择,且必须高于最低音量。
    同样,最低音量和最高音量分别设置好之后再点按功能键便可切换到是否保存的界面,此时可以按调整键选择保存设置或放弃保存。之后再点按功能键便结束设置,所做的设置便会按照选择进行保存或不保存。
    最后若点按功能键又会重复到最低音量设置界面,正常按功能键便会切换到时钟误差调整设置模式。


    8、时钟误差调整设置模式
    前面说过,通过自动调整走时误差是本时钟的一个特色功能,通过这个设计,可以让普通廉价的时钟芯片达到高精度时钟芯片的效果。当然还可以通过wifi的方式与网络时基进行同步,或者以蓝牙的方式与手机的时间实行同步,这样的时间精度则更高。但在本设计中因为能耗、单片机引脚数目和机壳体积等因素而没有被选择。
    在程序代码中已经对每天的走时误差自动进行了调整,用户能够设置的是每周的走时误差,是对代码调整的一个补充。设置界面如下:


    在此界面下点按调整键可以在快或者慢之间进行选择,需要注意的是:快或慢是“告诉”时钟目前每周累积是快了还是慢了,而不是“要求”时钟加快或者是减慢。例如按上图的设置,是要求时钟每周加快4秒,如果实测的结果仍慢了2秒,则累积慢了6秒,就应该将上图的数值修改成6。
    快慢选择好之后,点按功能键便可以切换到调整快慢的实际时间,同样是点按调整键数值加1或者减1,正常按调整键下数值增5或者减5,长按调整键改变增减方向。
    同样,在调整好快慢秒数后点按功能键,又可以通过点按调整键来选择保存设置或放弃保存,选择好之后再点按功能键就结束设置,此时再点按功能键又重复开始设置误差调整,正常按功能键则进入下一模式。

    9、日期时间设置模式
    日期设置的操作方式是按照年、月日、时分三个界面进行的,星期是通过代码计算得到的,不需要单独设置,秒则默认为0,不能修改,即提前设置好时间并在选择好保存设置后,须等待0秒到达,并在到达时点按功能键,此时切换到结束设置,新的时间数据便会保存在时钟芯片内。在设置过程中,不需要修改的项目可以通过点按功能键直接切换到下一项目。在设置时应尽量按照年、月、日的顺序进行,以免造成类似2月30日这样的错误日期。虽然在程序中有检查校正的代码,这类错误是不会被保存在时钟芯片中的(也保存不进去的,因为时钟芯片同样也有验证机制),但最终保存的日期也许不是你所期望的。下图为日期时间设置的界面:


制作后记
    这个单片机多功能语音时钟从着手设计到初步完成,历时一年多的时间。最开始打算使用时钟日历模块、语音模块、充电模块等现成的网购模块来组装,最后在设计PCB时发现这么多的模块集成起来体积硕大,最后仅保留了语音模块,其他均改为直接使用芯片。
    第一台样机组装测试成功后就发现耗电大的突出问题,经过测试,LCD显示屏的耗电大约为4mA,单片机耗电大约为15mA,语音模块的静态耗电大约为28mA。于是从第二台样机开始便着力从降低语音模块的静态耗电,曾测试过使用MOS管电子开关来控制语音模块的电源,但在每次启动电源时语音模块会存在躁声而不得不放弃,最后是启用语音模块的睡眠功能将静态耗电降低至18mA。
    同样,为了降低单片机耗电,我也启用了单片机的睡眠功能。在6#样机测试时,同一颗锂电池,使用时间从2天左右延长到了3天左右。尽管如何,离实用还相差甚远,我的目标是至少需要使用10天以上,这样大约每半个月需要充一次电。最后考虑到应该给单片机降频使用,以达到降低耗电的目标。
在测试的几台样机中又出现过不规则的死机现象,最后排查发现是红外接收管中断引起的,最后通过修改代码排除了这个BUG。说起这个设计,目前看起来是个鸡肋。红外接收的意义不大,而且还占用了单片机的一个引脚。但若取消这个红外接收管,原先设计的面板则会多出一个空位而影响美观。
    总之,目前制作的样机除了耗电量大之外,其他方面均达到了设计目标。待春暖之后再重新打样PCB板来进行测试,看能不能达到降低耗电的目标,否则的话就只有更换更低功耗的单片机了。
    最后还是要感谢微芯公司提供的PIC18F16Q40单片机样片、感谢嘉立创公司提供的免费打样,为我这个制作提供的大力支持!


补充内容 (2022-12-31 17:09):
链接:https://pan.baidu.com/s/1CfJnbgYCoiYsBCV2qF4qZw
提取码:i924

Hongxiang 发表于 2022-12-31 14:23:57

很实用的制作,走时准确很重要。德生的近千元收音机,走时仍然不准,需要定期手动调整。让人头疼。

hujj 发表于 2022-12-31 14:32:15

补充:
本多功能时钟的单片机开发项目全部文件的压缩包太大,有2005k,超过了论坛上传附件的要求,正在设法分拆成多个压缩包上传。


补充内容 (2022-12-31 17:10):
已经上传至网盘,分享链接见1楼。

hujj 发表于 2022-12-31 14:36:22

Hongxiang 发表于 2022-12-31 14:23
很实用的制作,走时准确很重要。德生的近千元收音机,走时仍然不准,需要定期手动调整。让人头疼。

    谢谢夸奖!
    厂家成批生产也很难做到元器件的完全一致,靠手工针对每一台时钟进行专门的校正也很困难。但我们自己手工制作则可以针对单台时钟进行校正,所以容易达到更高的精度。

轻骑漫步者 发表于 2022-12-31 17:07:41

很实用的电子制作;

为你点赞一个;

另外,楼主的硬笔书法,我欣赏!

赞。

我也是这样的字体,漂亮!

hujingdi 发表于 2022-12-31 17:17:20

hujj 发表于 2022-12-31 14:32
补充:
本多功能时钟的单片机开发项目全部文件的压缩包太大,有2005k,超过了论坛上传附件的要求,正在设 ...

好的,看到程序了!

感谢您作品参赛!

hujj 发表于 2022-12-31 17:21:02

轻骑漫步者 发表于 2022-12-31 17:07
很实用的电子制作;

为你点赞一个;


谢谢点赞!
钢笔字是70年代练过一阵子,勉强可以示人,承蒙您的偏爱。

hujj 发表于 2022-12-31 17:23:19

hujingdi 发表于 2022-12-31 17:17
好的,看到程序了!

感谢您作品参赛!

年纪大了,连分卷压缩都不会了,试了几次都失败,只好上传到网盘来分享链接。:L

fxhfxh 发表于 2023-1-1 00:53:22

能够看出来,楼主是下了大功夫的,真不错!赞一个!
如果用小一点的串口彩屏作为显示是不是给人的感觉更完美一些?目前串口触摸彩屏的价格已经很低了。

hujj 发表于 2023-1-1 13:23:40

fxhfxh 发表于 2023-1-1 00:53
能够看出来,楼主是下了大功夫的,真不错!赞一个!
如果用小一点的串口彩屏作为显示是不是给人的感觉更完 ...

    您的建议很好!
    目前彩屏价格已经比较亲民,小屏甚至只要几元钱,2寸以上的屏稍贵一些,有些也只要20元左右,确实可以考虑选用。之所以我没有选择是考虑到小屏字体小,年纪大看不清楚,大屏耗电量也大,电池更带不动,所以暂时没有考虑。我是从显示汉字出发,所以选择点阵屏,否则改用数码管显示,可能会更清晰些。

Frank660405 发表于 2023-1-4 08:51:08

厉害!支持!学习!!!

liguobin 发表于 2023-1-4 20:21:35

软件硬件两手抓!技术大拿,请收下我的膝盖!

xiaomage 发表于 2023-1-6 12:13:59

精巧!漂亮!

hujj 发表于 2023-1-6 12:53:24

Frank660405 发表于 2023-1-4 08:51
厉害!支持!学习!!!

谢谢夸奖!

hujj 发表于 2023-1-6 12:54:56

liguobin 发表于 2023-1-4 20:21
软件硬件两手抓!技术大拿,请收下我的膝盖!

硬件电路都是抄现成的,自己组合起来,然后在组装测试过程中不断的修改,现在已经基本定型了。
页: [1] 2
查看完整版本: 【参赛】单片机多功能语音报时钟