智能寝室-空调篇(2)

上一章把红外发射模块解决了(虽然只有固定的几个信号可以用,解码什么的以后看看有心情有空再搞吧...),这章开始真正着手“智能”方面

首先,先来一个温控模块吧,接入一个热敏电阻(dht22还没到),用A1口读取电压,写入书上给的转换公式:analogRead(1) * 5 * 100 /1024.00       打开串口检查一下,室内开了空调,这温度大概没什么问题

然后写入温控程序,我的设定是空调关闭状态下:每秒检测一次环境温度,30度以上则计数值+1,30度以下-1,当计数值达到300时(大概就是温度连续超过30度六分钟),则发送开启空调红外信号;空调开启状态下:每秒检测一次环境温度,24度以上则计数值+1,24度以下-1,当计数值达到0时(初始计数值为开启空调瞬间的300,不做改动)(大概就是温度连续低于24度六分钟),则发送开启空调红外信号。(代码有点长也很简单就不贴了)

其次,白天人出去的时候总不希望空调被这个控制着白白费电,所以加入光敏模块,A0口接上光敏电阻(注意光敏电阻接线需要串联一个电阻,将数据读取接口接在光敏电阻和定值电阻之间),然后打开串口看看电压,发现在18~1017浮动,写入公式:bright = (analogRead(0)-9)/10     查看数据试着用手遮挡,放置光源,和预期相符

然后设定一个阈值(我设的30),低于阈值时计数不会改变,红外模块便不会工作

最后,嫌普通的按键太土,使用触摸模块来手动开关,并加入一红一蓝两个led灯来显示开关机(开机红灯亮0.3s,反之蓝灯亦然)

对了讲到按键,之前没有用中断,导致按键要按好久才有反应,后来按键使用外部中断,温度与光照检测用MsTimer2库中的函数,调用了arduino的定时器二,实现了按键及时响应与单片机资源的节约

最后我还不能每次想看温度和光照强度都连计算机打开串口去看吧?看了看开发套装里面只有数码管和LCD1602,都需要十个以上io口来写数据。。。我剩下的口一共就这么点了,全用完了我以后加模块用什么?翻了翻找到一块之前买stm8时候送的HT1621,只需要三个io口就可以完成数据写入。翻了翻论坛找到别人写的库文件,复制粘贴,试着运行一下,发现显示8.8:8.8,查了下发现此模块要求电压为3V,而我接了5V电压,改接入3.3V,依稀可以辨认出一些数字,但绝对是不能用的,再接入1k电阻,直接无显示,换330Ω,不应显示区域变淡。再看了下驱动程序,在每次写入数据后加入一次清屏,不应显示区域进一步变淡,差不多能看了

左边温度(25度),右边光照(37%)

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注