智能窗户控制系统软件说明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
智能窗户控制系统软件V1.0 设计说明
目录
前言 (1)
第一章软件总体设计. (1)
1.1. 软件需求概括. (1)
1.2. 定义. (1)
1.3. 功能概述. (1)
1.4. 总体结构和模块接口设计. (2)
第二章控制系统的总体设计. (3)
2.1. 功能设计. (3)
第三章软件控制系统的设计与实现. (5)
3.1. RF 解码过程程序设计介绍 (5)
3.2. RF 对码过程设计 (6)
3.3. 通信程序设计. (8)
3.4. IIC 程序设计介绍 (9)
3.5. 接近开关程序设计. (12)
3.6. 震动开关检测程序设计. (13)
3.7. 墙面按键程序设计. (15)
第四章智能窗户控制系统的设计. (17)
第五章实测与结果说明. (18)
第六章结论. (18)
、八、亠
前言
目的编写详细设计说明书是软件开发过程必不可少的部分,其目的是为了使开发人员在完成
概要设计说明书的基础上完成概要设计规定的各项模块的具体实现的设计工作。
第一章软件总体设计
1.1. 软件需求概括
本软件采用传统的软件开发生命周期的方法,采用自顶向下,逐步细化,模块化编程的软件设计方法。
本软件主要有以下几方面的功能
(1) RF 遥控解码
(2) 键盘扫描
(3) 通信
(4) 安全检测
(5) 电机驱动
1.2. 定义
本项目定义为智能遥控窗户系统软件。它将实现人机互动的无缝对接,实现智能关窗,遥控开关窗户,防雨报警等功能。
1.3. 功能概述
1. 墙体面板按键控制窗户的开/ 关
2. RF遥控器控制窗户的开/关
3. 具有限位,童锁等检测功能
4. 实时检测大气中的温湿度,下雨关窗
5. 具有防盗,防夹手等安全性能的检测
1.4. 总体结构和模块接口设计
主要软件模块ARM控制模块,EEPRO模块,RF解码模块,双机通信模块,温湿度检测模块,限位检测模块,振动检测模块,电机驱动模块,蜂鸣器模块,键盘模块等组成,以下是本次设计各个模块的方块图;
图1.0系统模块方框图
第二章控制系统的总体设计
2.1. 功能设计
各主要模块的程序设计主要包括基于芯唐MO516LD单片机的主控设备的程序设计, 基于433M 无线通信模块的程序设计,基于HTU20D的温湿度检测模块程序设计,以及基于MS32距离检测模块的程序设计等。软件的主要工作流程如下图;
图2.1按键板程序设计流程
图22驱动板程序设计流程
第三章软件控制系统的设计与实现
3.1. RF 解码过程程序设计介绍
1. 遥控器功能介绍
用433M 遥控器发出左窗户正转,右窗户正转,停止信号等,安装在墙体的控制电路接收到控制信号后,根据遥控命令来控制电机的运行状态,从而达到远距离对控制窗户的打开、闭合和停止。
无线遥控主要用到433M无线遥控器,下面介绍433M遥控器:
数据收发模块的工作频率为433M采用声表谐振器SAW稳频,频率稳定度极高,当环境温度在—25〜+ 85度之间变化时,频飘仅为3ppm/度。特别适合多发一收无线遥控及数据传输系统。声表谐振器的频率稳定度仅次于晶体,而一般的LC振荡器频率稳定度及一致性
较差,即使采用高品质微调电容,温差变化及振动也很难保证已调好的频点不会发生偏移。
数据模块具有较宽的工作电压范围3〜12V,当电压变化时发射频率基本不变,和发射模块配套的接收模块无需任何调整就能稳定地接收。当发射电压为3V时,空旷地传输距离约
20〜50米,发射功率较小,当电压5V时约100〜200米,当电压9V时约300〜500米,当发射电压为12V时,为最佳工作电压,具有较好的发射效果,发射电流约60毫安,空旷地
传输距离700〜800 米,发射功率约500 毫瓦。当电压大于l2V 时功耗增大,有效发射功率不再明显提高。这套模块的特点是发射功率比较大,传输距离比较远,比较适合恶劣条件下进行通讯。天线最好选用25 厘米长的导线,远距离传输时最好能够竖立起来,因为无线电信号传输时收很多因素的影响,所以一般实用距离只有标称距离的一半甚至更少,这点需要开发时注意。
数据模块采用ASK方式调制,以降低功耗,当数据信号停止时发射电流降为零,数据信
号与发射模块输入端可以用电阻或者直接连接而不能用电容耦合,否则发射模块将不能正常
工作。数据电平应接近数据模块的实际工作电压,以获得较高的调制效果。
遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。一组码
本身的持续时间随它包含的二进制"0"和"1"的个数不同而不同,大约在45〜64ms之间。
当一个键按下超过36ms,振荡器使芯片激活,将发射一组约64ms的编码脉冲,这64ms
发射代码由一个起始码(10ms), —个结束码(6ms),三位地址码,这三位分别是,低8位地址码
(8ms~12ms), 中8 位地址码(8ms~12ms), 高8 位地址码(8ms~12ms) 和8 位数据码(8ms~12ms)。
2. 代码宽度算法:
24位地址码的最短宽度: 1.0 X 24=24ms 16位地址码的最长宽度: 1.5ms X 24=33.6ms。
解码的关键是如何识别"0 和"1", 代码格式(以接收代码为准, 接收代码与发射代码反向)。从位的定义我们可以发现"0"、"1"均以0.5ms的低电平开始,不同的是高电平的宽度不同,"0" 为1ms,"1" 为1.5ms, 所以必须根据高电平的宽度区别"0" 和"1" 。如果从0.5 ms 低电平过后,开始延时, 0.5ms 以后,若读到的电平为低,说明该位为"0" ,反之则为"1" ,为了可靠起见,延时必须比0.56ms 长些,但又不能超过1.5ms, 否则如果该位为"0" ,读到的已是下一位的高电平,因此取(1.5ms+0.5ms)/2=1ms最为可靠,一般取
1ms左右均可;根据码的格式,应该等待10ms的起始码和6ms的结果码完成后才能读码。