此次要设计的是智能家居控制的模拟,它是采用MSP430F149单片机为控制核心,控制一个5V的步进电机,电机的正转以及反转来控制窗帘的拉开或是合上,温度传感器来检测实时的温度,液晶显示时间和室内的温度。该系统由电机模块、光控模块、液晶显示模块、温度、湿度采集模块、按键输入模块等组成外围电路。 实现功能: 1、通过光敏电阻来感测外界光线,通过步进电机转动来实现窗帘的拉开与合上,当光强强时(表示此时为白天)窗帘拉开(即电机正转),当光强弱时(表示此时是夜晚)窗帘合上(即电机反转); 2、能通过温度传感器DS18B20来感测室内的温度;设定一温度范围,当实时的温度低于设定温度的最低限度时,空调开始制热(用LED灯来表示),当实时的温度高于设定温度的最高限度时,空调开始制冷(用LED灯来表示)。 3、具有闹钟时间手动输入设置、12864液晶显示时间、温度、湿度。 4、按键手动输入闹钟时间、温度范围。
按键功能图:
1、DHT11读取的湿度数据读不出来,后来发现使用插槽直接插进去,DHT11与插槽接触不良,造成数据无法读取,后来直接焊在板子上解决了这个问题;
2、按键的选择,最开始考虑的是使用独立按键来实现所有的数据调节功能,但经过仔细考虑后发现由于参数过多,容易导致修改参数操作复杂。最终采用了矩阵键盘的方式来修改各项参数。
3、调试键盘的时候遇到一个问题,由于主程序执行耗费的时间比较长,导致键盘反应不灵敏,最后通过将键盘扫描程序放入定时器中断读取,键盘响应问题得到解决。
4、步进电机驱动,这一点没有很好地解决,用的是延时函数来驱动步进电机转一周,这种方法的优点就是步进电机能够稳定地转动一周,不会被其他子程序所干扰,但是会造成程序一直在该段程序处执行,其他子程序不能得到有效的执行,液晶显示数据不能刷新。(PS:所以还是待解决状态,各位坛友有好的方法可以提出来探讨探讨:lol。)
5、最后一个问题就是电机正转和反转只能执行一次,因为上面那一点的原因,不能让程序一直执行在步进电机驱动那,否则程序就死了。(PS: 所以还是待解决状态,各位坛友有好的方法可以提出来探讨探讨:lol。)
希望各位坛友积极顶帖,有分送哦!
|