本帖最后由 zxcscm 于 2017-12-9 15:36 编辑
一、项目方案的构想和实施计划 趁最近时间充裕,也来凑凑热闹。方案源自本人曾经做过的一款数码管时钟,51主控,数码管显示。功能包含:时间和温度显示,日期和星期显示,闹钟,红外遥控。 本次打算将其升级,使用STM32做主控,在保留原有功能的基础上,增加语音报时,音乐闹铃,手机蓝牙遥控,亮度自适应等其他功能。最最重要的是增加电机控制功能,实现国旗升降。 到目前为止,新方案的PBA已完成,且已把原有功能移植到stm32了,接下来要进行的工作是: ① 语音报时和国歌播放 ② 手机蓝牙APP制作 ③ 控制电机带动国旗升降 ④ 一个额外的小小功能 ⑤ 找一个合适的外壳 二、系统构架图 为了能清晰的展示各个功能模块,简单的画了个框图说明。 三、硬件设计和制作 原理没啥好说的,直接上图,这个是以前的图,不过更改不大,后续会附清晰全面的PDF
兴冲冲的做来板子,焊接时才发现,有些错误(UART3的TX和RX接反了),但不影响大局,总之,硬件制作还算顺利。
着重说一下电机驱动这块吧。看到题目后,首先想到的是用步进电机,这样可以精确控制升旗的位置。以前工作上用的都是42,57类的步进电机,且配置了专门的驱动器,可如果这样电机用在现在这个题目上有点大材小用了,于是翻出自己以前的51开发板,找到了28BYJ-5V步进电机。经过测试才知道原来这个电机是带减速的,转速那么慢,经过测试最快也就10圈/分钟,而且力矩很小,稍有阻碍就会堵转,比我想象的效果差太远,看来不太适合这个应用,果断放弃这个电机了。于是,退而求其次,刚好也扫罗出一堆直流电机,准备拿来试试。从淘宝上买了MX1508电机驱动模块,用模拟的PWM反复试了很久,发现直流电机转速太快,如果慢下来驱动力就会小很多,然后想到了减速电机,拿出以前脑热买的小车模块,拆下减速电机,通电测试,果然可行。 接下来搭建旗杆,寻找合适的滑轮。再次翻箱倒柜,终于找到了两个木轮,稍加改造,滑轮搞定,拉上线,拴上红旗(额(⊙o⊙)…表笑),终于伴随着国歌徐徐升起。
四、软件部分 软件方面很多代码模块是拿来主义,因为很多以前做过类似的了,调试起来还算比较顺利。大致流程请看下面流程图,每个模块的具体实现方法看后面分享的源码。 4.1按键定义和处理 按键K1,K2,K3分别定义为设置时钟(长按升国旗),数字增加(暂停升国旗),设置闹钟(停止升国旗) 红外按键定义 E:切换设置时间,F:切换设置闹钟; A+:时间加(没有设置时间时,切换显示日期),B-:时间减(没有设置时间时,语音报时和语音报温度); G:开始升国旗(升旗时按下则暂停,再按继续); H:如果在升国旗则停止,否则快速降国旗。 4.2 串口蓝牙协议 蓝牙协议:AA BX NN DA AD 起始 命令 数据的数量 数据 所有内容的校验和 AF:蓝牙连接 AE:蓝牙断开 B0:升国旗奏国歌 B1:暂停 B2:继续 B3:停止 B4:降旗 B5:停止降旗 B6:设置日期(数据为ASCII码) B7:设置时间(数据为ASCII码) B8:打开闹钟并设置闹钟时间(数据为ASCII码) B9:打开定时并设置定时升旗时间(数据为ASCII码) BA:关闭闹钟 BB:关闭定时
五、作品展示 废话不多说,直接图片和视频展示啦
手机遥控升旗http://v.youku.com/v_show/id_XMzE2OTQyMjI0OA==.html?x&sharefrom=android手机定时升旗http://v.youku.com/v_show/id_XMzE2OTQ0NDEzNg==.html?x&sharefrom=android手机控制升旗暂停http://v.youku.com/v_show/id_XMzE2OTQ1MjgyOA==.html?x&sharefrom=android六、总结,资料汇总 这个作品在开始做的时候有很多想法,也赋予它很多功能,比如WiFi联网(用于预报天气)啦,人体感应啦,测温湿度啦等等。最终都被摒弃,只保留单纯的日历时钟,温度显示,以及电机控制,这样争取把功能做得能完美些,而不至于成为模块的堆砌。 其实,每次开发一款新产品,经常性的会给它赋予很多不必要的功能,最后,导致功能冗余而不及而终。 总之,不忘初心,方得始终。 其实,这个小东东也可以作为自动窗帘控制器啦,每天定时拉开窗帘,播放时钟和音乐…… 额,又开始胡思乱想了,……,没准真就实现了呢。 最后,当然不忘共享,这才是最终目的。
APP-SmartClock.zip
(1.46 MB)
智能遥控升旗 V01.03 - 主功能.zip
(583.45 KB)
|