当前位置:文档之家› 智能家居之窗帘控制系统

智能家居之窗帘控制系统

洛阳理工学院课程设计报告课程名称物联网综合实训设计题目智能家居之窗帘控制系统专业计算机应用技术班级学号姓名完成日期2015-01-16目录第一章项目背景 (1)1.1项目来源 (1)1.2开发目标 (1)第二章系统总体设计 (2)2.1智能窗帘系统的功能特点 (2)2.2系统总体结构图 (2)第三章智能窗帘系统硬件部分 (3)3.1直流电机硬件部分 (3)3.2直流电机驱动硬件部分 (3)3.2.1 L298N简介 (3)3.2.2 L298N工作原理 (4)3.2.3 L298N实现正反转及停止的工作方式 (5)3.3蓝牙模块硬件部分 (5)3.3.1 HC-06蓝牙模块简介 (5)3.3.2 HC-06蓝牙模块的工作原理 (6)3.3.3 HC-06蓝牙模块的串口通信 (7)3.4晶振电路硬件部分 (7)3.4.1晶振电路的作用 (7)3.4.2晶振电路对串口通信的影响 (7)第四章系统功能模块的软件设计 (8)4.1有关Android的蓝牙知识 (8)4.2 Android关键程序 (8)4.3实训项目总体效果 (11)第五章实训心得 (12)参考文献 (13)第一章项目背景1.1项目来源随着国民经济的发展和科学技术水平的提高,特别是计算机技术,通信技术、网络技术、控制技术的迅猛发展与提高,促使家庭实现了生活现代化,居住环境舒适化。

这些高科技已经影响到人们生活的方方面面,改变了人们的生活习惯,提高了人们的生活质量,智能家居在这种形势下应运而生。

在现代生活中,窗帘再不仅仅只起到遮挡光线的简单的作用。

它在整体家居中的装饰作用越来越突出。

据调查发现,居民因迁入新居而购买窗帘布艺产品平均每单花费在4000元以上,且不乏一次花费在2万元以上者。

因此,以迁入新居或装修后进行家用纺织品消费为特征的消费需求增长,成为家用纺织品消费的主流,明显地表现为刚性需求的增长。

另外,随着人们对居住环境的要求不断地提高,智能化的家居产品在人们的生活中将会逐渐被认识和采纳,智能窗帘也正以其强大的人性化功能、惊人的发展速度以及巨大的市场前景崭露头角。

1.2开发目标本课题抓住“智能家居”这一理念,在设计中力求人性化的智能控制,给用户带来最佳的体验。

本设计以STC90C516RD单片机[1]为控制核心,用蓝牙控制窗帘的开关,让用户拥有更好的体验。

第二章系统总体设计通过分析功能,本设计的系统模块如图2-1所示:图2-1 系统模块2.1智能窗帘系统的功能特点本智能窗帘系统的具有的功能特点是,在蓝牙通信的有效距离内,可以通过移动终端(APP)控制窗帘的开和关。

2.2系统总体结构图移动终端发送指令由蓝牙模块传输到单片机,单片机控制电机驱动模块,实现窗帘的智能开关。

图2-2 系统设计第三章智能窗帘系统硬件部分3.1直流电机硬件部分本设计采用的微型直流电机进行的模拟演示,具体参数为:尺寸:20*15*25轴长:8mm 、轴径:2mm、电压:1-6v、参考电流:0.35-0.4A、3v转速:17000-18000转每分钟,如图3-1:图3-1 直流电机3.2直流电机驱动硬件部分3.2.1 L298N简介L298N是SGS公司的产品如图3-2,内部包含4通道逻辑驱动电路。

是一种二相和四相电机的专用驱动器,即内含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机。

其引脚排列如图3-3中所示,1脚和 15脚可单独引出连接电流采样电阻器,形成电流传感信号。

图3-2 L298N芯片图3-3 L298N引脚图3.2.2 L298N工作原理L298可驱动2个电机,OUTl、OUT2和OUT3、OUT4之间分别接2个电动机。

5、7、10、12脚接输入控制电平,控制电机的正反转,ENA,ENB 接控制使能端,控制电机的停转[3]。

1298的逻辑功能如表1所列。

表3-1逻辑功能3.2.3 L298N实现正反转及停止的工作方式void Go(void){ENA=1; //电机驱动的使能端,给高电平时,准备进入工作状态IN1=1;//IN1、IN2两个引脚接到单片机的IO口,单片机通过给IN1、IN2不同IN2=0;//的高低电平,实现电机的正反转,Delay_1ms(5000);//调用延时函数,延时5s}void Back(void){ ENA=1;IN1=0;IN2=1;Delay_1ms(5000);}void Stop(void){ENA=0;// 电机驱动的使能端,给低电平时,电机驱动停止工作。

IN1=0;IN2=0;}3.3蓝牙模块硬件部分本设计采用HC-06蓝牙模块与移动终端和单片机进行通信。

3.3.1 HC-06蓝牙模块简介蓝牙(BlueTooth)是一种支持设备短距离通信的无线电技术,功率级别分CLASS1100米距离和CLASS210米距离两种。

能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。

蓝牙的标准是IEEE802.15,工作在2.4GHz频带,带宽可达3Mb/s。

本设计用的是HC-06型号的蓝牙模块。

如图3-4.图3-4 蓝牙模块3.3.2 HC-06蓝牙模块的工作原理1.蓝牙通信的主从关系蓝牙技术[2]规定每一对设备之间进行蓝牙通讯时,必须一个为主角色,另一为从角色,才能进行通信,通信时,必须由主端进行查找,发起配对,建链成功后,双方即可收发数据。

理论上,一个蓝牙主端设备,可同时与7个蓝牙从端设备进行通讯。

一个具备蓝牙通讯功能的设备,可以在两个角色间切换,平时工作在从模式,等待其它主设备来连接,需要时,转换为主模式,向其它设备发起呼叫。

一个蓝牙设备以主模式发起呼叫时,需要知道对方的蓝牙地址,配对密码等信息,配对完成后,可直接发起呼叫。

2.蓝牙的呼叫过程蓝牙主端设备发起呼叫,首先是查找,找出周围处于可被查找的蓝牙设备,此时从端设备需要处于可被查找状态,如:蓝牙耳机需要按键操作才能进入可被查找状态。

主端设备找到从端蓝牙设备后,与从端蓝牙设备进行配对,此时需要输入从端设备的PIN码,一般蓝牙耳机默认为:1234或0000,立体声蓝牙耳机默认为:8888,也有设备不需要输入PIN码。

配对完成后,从端蓝牙设备会记录主端设备的信任信息,此时主端即可向从端设备发起呼叫,根据应用不同,可能是ACL数据链路呼叫或SCO语音链路呼叫,已配对的设备在下次呼叫时,不再需要重新配对。

已配对的设备,做为从端的蓝牙耳机也可以发起建链请求,但做数据通讯的蓝牙模块一般不发起呼叫。

链路建立成功后,主从两端之间即可进行双向的数据或语音通讯。

在通信状态下,主端和从端设备都可以发起断链,断开蓝牙链路。

3.3.3 HC-06蓝牙模块的串口通信蓝牙数据传输应用中,一对一串口数据通讯是最常见的应用之一,蓝牙设备在出厂前即提前设好两个蓝牙设备之间的配对信息,主端预存有从端设备的PIN 码、地址等,两端设备加电即自动建链,透明串口传输,无需外围电路干预。

一对一应用中从端设备可以设为两种类型,一是静默状态,即只能与指定的主端通信,不被别的蓝牙设备查找;二是开发状态,既可被指定主端查找,也可以被别的蓝牙设备查找建链。

3.4晶振电路硬件部分3.4.1晶振电路的作用晶振电路的作用是为系统提供基本的时钟信号。

通常一个系统共用一个晶振,便于各部分保持同步。

有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。

晶振电路通常与锁相环电路配合使用,以提供系统所需的时钟频率。

3.4.2晶振电路对串口通信的影响11.0592MHz能够准确地划分成时钟频率,与UART(通用异步接收器/发送器)常见的波特率相关。

特别是较高的波特率(19600,19200),不管多么古怪的值,这些晶振都是准确,常被使用的。

用11.0592MHz可以得到准确的数值,而用12MHz 就不能得到整数数值。

通信是一定要准确发送和接受的,否则积累误差就会产生。

第四章系统功能模块的软件设计4.1有关Android的蓝牙知识在蓝牙中,每个服务和服务属性都唯一地由"全球唯一标识符" (UUID)来校验。

正如它的名字所暗示的,每一个这样的标识符都要在时空上保证唯一。

UUID 类可表现为短整形(16或32位)和长整形(128 位)UUID。

他提供了分别利用String和16位或32位数值来创建类的构造函数,提供了一个可以比较两个UUID (如果两个都是128位)的方法,还有一个可以转换一个UUID为一个字符串的方法。

UUID实例是不可改变的(immutable),只有被UUID标示的服务可以被发现。

1.两边的UUID必须是一样的,这是一个服务的唯一标识,而且这个UUID的值必须是00001101-0000-1000-8000-00805F9B34FB,因为什么呢?因为这个是android的API上面说明的,用于普通蓝牙适配器和android手机蓝牙模块连接的。

2.在连接的时候,如果电脑作为server(一直监听是否有服务连接),android 手机作为client(主动和电脑建立连接),则需要在手机端调用这样一行代码:mmSocket.connect();其中mmSocket是一个BluetoothSocket类。

4.2 Android关键程序Android程序由蓝牙通信发送指令到单片机,以下发送的”S”、”E”、”W”为三种状态,”S”表示停止窗帘的开关;”E”表示窗帘的开;”W”表示窗帘的关。

//curtain upmbutton_curtain_up.setOnClickListener(new OnClickListener() {public void onClick(View v) {// Send a message using content of the edit text widgetString message = "S";sendMessage(message);}});//curtain downmbutton_curtain_down.setOnClickListener(new OnClickListener() { public void onClick(View v) {// Send a message using content of the edit text widgetString message = "W";sendMessage(message);}});//curtain stopmbutton_curtain_stop.setOnClickListener(new OnClickListener() { public void onClick(View v) {// Send a message using content of the edit text widgetString message = "E";sendMessage(message);}});class TD2 extends Thread {private final int t;public TD2(int t) {super();this.t = t;}@Overridepublic void run() {try {Thread.sleep(t * 1000);String message = "E";sendMessage(message);Thread.sleep(5 * 1000);//电机转动5s后停止String message1 = "S";sendMessage(message1);} catch (InterruptedException e) {e.printStackTrace();}};}定时功能部分代码,可以设置定时时长。

相关主题