物联网硬件综合课程设计
--智能灯光及智能排气扇实现
一、 设计背景
我国已形成基本齐全的物联网产业体系,部分领域已形成一定市场规模,网络通信相关技术和产业支持能力与国外差距相对较小,传感器、RFID等感知端制造产业、高端软件和集成服务与国外差距相对较大。仪器仪表、嵌入式系统、软件与集成服务等产业虽已有较大规模,但真正与物联网相关的设备和服务尚在起步。
智能化家庭网络是社会生产力发展、技术进步和社会需求相结合的产物。智能化家庭网络正向着集成化、智能化、协调化、模块化、规模化、平民化方向发展。智能化家庭网络市场将逐步形成完整的产业链,统一的行业技术标准和规范将会出现。
二、实验目的
2.1掌握智能家居体验馆各系统的软件、硬件部署,绘制出硬件部署图,各节
点按照“武汉理工项目设备编号.xlsx”统一编号。
2.2掌握各节点程序的烧写方法,能够搭建实验平台并在物联网高级教学实验箱上进行烧写实验。
2.3掌握串口助手的使用方法,能够使用串口助手发送控制命令。 2.4掌握所有软件的部署和开发平台。
三、实验设备及环境
3.1各节点程序 3.2服务器端程序 3.3客户端程序 3.4 PC机 3.5平板电脑
四、各个模块对应的传感器及对应的参数
4.1环境监测模块:噪声、温湿度、雨滴、光照、远红外、烟雾传感器等。
环境检测网关 : G0011 N0001 噪声传感器 :G0011 N0005 温湿度传感器:G0011 N0010 雨滴传感器 :G0011 N0015 光照传感器 : G0011 N0020 远红外传感器:G0011 N0025 远红外传感器:G0011 N0026 烟雾传感器 :G0011 N0035
4.2智能家居:灯光、窗帘、雨篷、排气扇、沙发等。
反向控制网关:G0019 N0001 雨棚 :G0019 N0098
状态检测网关:G0019 N0001 窗帘A0 :G0019 N00A0 环境检测网关 : G0011 N0001 窗帘A1 :G0019 N00A1 雨滴传感器 :G0011 N0015 窗帘A2 :G0019 N00A2 光照传感器 : G0011 N0020 窗帘A3 :G0019 N00A3 压力传感器:G0019 N0099 灯光A :G0019 N0091 灯光B :G0019 N0093 投影仪 :G0019 N00B0 4.3智能家电:电视、空调、投影。 反向控制网关: G0019 N0001 电流检测网关 : GF1F1 N0001
电流检测器: GF1F1 N0003(冰箱) 电流检测器: GF1F1 N0004(电视机) 电流检测器: GF1F1 N0005(投影仪) 投影仪 : G0019 N00B0
4.4短信控制:冰箱、电视、空调等。
反向控制网关: G0019 N0001 红外转发器 : G0019 N0088
五、智能家居主要软硬件
5.1硬件组成
灯光、窗帘、雨篷、排气扇、沙发(压力传感器)、冰箱、电视、空调、投影、饮水机、噪声传感器、温湿度传感器、雨滴传感器、光照传感器、远红外传感器、烟雾传感器、环境检测网关、状态检测网馆、电流检测网关、反向控制网关、无线网卡、GPRS模块 5.2软件组成
服务器软件,客户端软件,程序烧写软件(SmartRFProg.exe),COM口转USB口软件(CP210x_VCP_Win_XP_S2K3_Vista_7)
5.2.1服务器软件
首先在主机上安装服务器软件,服务器软件用来实现对四个网关(环境检测网关COM14,状态检测网关COM3,电流检测网关COM10和反向控制网关COM11)串口通信的控制
环境检测网关:与各个传感器通信的软件,对应于Sniffer监听网关.hex文件,实现对各种传感器(噪声传感器,温湿度传感器,雨滴传感器,光照传感器,远红外线传感器,烟雾传感器)采集到的数据的检测,并且将检测到的数据发送给服务器进行处理。
反向控制网关:与各个智能家电通信的软件,对应于Sniffer控制网关.hex文件,用于接收服务器或GPRS模块的控制信息,并实现对各个智能家电的控制。
电流检测网关:与各个智能家电通信的软件,对应于数据收发控制网关.hex文件, 用于实现对流过各个智能家电电流的检测,并将检测到的信息发送给服务器进行处理。
状态检测网关:与沙发和饮水机通信的软件,对应于Sniffer监听网关.hex文件,主要用于检测沙发和饮水机的状态,并将检测到的状态信息发送给服务器。
5.2.2串口转U口软件
串口转U口软件(CP210x_VCP_Win_XP_S2K3_Vista_7),本软件主要用于服务器中将各个网关的COM口(环境检测网关COM14,状态检测网关COM3,电流检测网关COM10和反向控制网关COM11)转换成主机的USB口
5.2.3客户端软件
客户端软件主要安装在PC机或iPad上,如图可知其主要显示:环境监控,智能家居,智能家电,系统设置和其他五个部分。
环境监测主要显示各个传感器所感知的数据(例如:温度检测值,雨滴检测值,光照检测值,分贝检测值,湿度检测值,可燃气体检测值)。
智能家居主要显示智能排风扇,智能冰箱,前后排灯光及四个窗帘的控制界面,还显示沙发和饮水机的状态信息。
智能家电主要显示智能电视机(开关,音量,频道,节目源),智能空调(开关,制冷模式,制热模式,抽湿模式,自动模式),智能投影仪(开关,云台升起,暂停,降落)的控制界面。
系统设置主要是对部分家居的自动控制的临界参数值的设置,其中包括灯光自动控制,窗帘自动控制,排风扇自动控制,投影仪自动控制和光照与灯光控制。
其他里面仅仅是一个品牌界面
5.2.4程序烧写软件(SmartRFProg.exe)
本软件主要用于将程序烧写到对应的网关板节点上,具体的步骤如下:
1)打开桌面的“SmartRF Programmer”程序,该程序会显示已连接上节点
2) 在Flash image位置导入需要烧写的网关节点的hex镜像,镜像文件在“<光盘>\\Image\\WSN”目录下,文件名为“网关板.hex”
3)按下“Perform actions”按钮,进行烧写 界面如下图:
5.4各个模块的实现模拟图
5.4.1环境监控模块
图1:环境监测模块硬件部署
5.4.2智能家居模块
图2:智能家居模块硬件部署图
5.4.3智能家电模块
图3:智能家电模块部署图
5.4.4短信控制模块
图4:短信控制模块部署图
以下列出硬件部署图中各硬件中使用的软件: PC机:服务器(Sm.Server),客户端(Sm.Client),串口转U口软件(CP210x_VCP_Win_XP_S2K3_Vista_7),程序烧写软件(SmartRFProg.exe) 环境检测网关:01_Sniffer监听网关.hex 反向控制网关:01_Sniffer控制网关.hex 电流检测网关:01_数据收发控制网关.hex 状态检测网关:01_Sniffer监听网关.hex
温湿度传感器:02_温湿度传感模块.hex 噪声传感器:03_噪声传感模块.hex 光照传感器:04_光照传感模块.hex
远红外传感器:05_远红外人体感应模块.hex 烟雾传感器:06_可燃气体传感模块.hex 排风扇:02_智能排风扇控制模块.hex 灯光:03_智能灯光控制模块.hex 窗帘:04_智能窗帘.hex 雨棚:05_智能雨棚.hex
投影仪:06_投影仪升降模块.hex
红外遥控器:07_红外遥控器(电视机、空调、投影仪开关).hex 智能插座:02_智能插座.hex 沙发:02_智能沙发感应模块.hex 饮水机:03_智能饮水机传感模块.hex GPRS模块:短信_GPRS模块.hex
六、智能灯光及排气扇智能控制的实现
利用51单片机控制温AM2301湿度传感器和AD转换模块PCF8591以获取温湿度和光照的值,通过分析温湿度和光照强度对灯光和排气扇进行控制,硬件连接图如下:
AD转换(PCF8591) 8051 单 片 机 光敏电阻 温湿度模块 显示模块 灯光开关 继电器 电机
各引脚定义:
P0.0—P0.7 数码管数据线
P2.2数码管锁存使能端口 段锁存 P2.3 数码管位锁存
P1.0 AM2301数据信号 P1.1 电机开关 P2.4 灯光开关 P1.2 AD转换时钟 P1.3 AD转换数据线 功能实现:
利用51系列单片机实时监控温度、湿度、光照强度等数据信息,在光照小于阀值150的时候会点亮一个LED灯,如果空气湿度大于80%就会驱动电机开始排气,并实时在数码管上显示温湿度值。
代码实现: //AD转换
#include #define uchar unsigned char #define uint unsigned int //AD转换 sbit SCL=P1^2;//时钟 sbit SDA=P1^3;//数据线 /****************************************************** I2C总线 *******************************************************/ void init() { SCL=1; SDA=1; } void delay(uint z) { uint x,y; for(x=0;x SDA=1; delay(1); SCL=1; delay(1); SDA=0; delay(1); } void stop()//结束 { SDA=0; delay(1); SCL=1; delay(1); SDA=1; delay(1); } void write_Byte(uchar date)//写一个字节 { uchar temp,i; temp=date; SCL=0; delay(1); for(i=0;i<8;i++) { temp=temp<<1; SDA=CY; delay(1); SCL=1; delay(1); SCL=0; delay(1); } SDA=1;//释放数据总线 } uchar read_Byte()//读取一个字节 { uchar i,j,k; SCL=0; delay(1); for(i=0;i<8;i++) { SCL=1; delay(1); j=SDA; delay(1); k=(k<<1)|j; SCL=0; delay(1); } return k; SDA=1; } void respons()//应答 { uchar i=0; SCL=1; delay(1); while((SDA==1)&&i<=250)i++; SCL=0; delay(1); } uchar read_AD()//读取转换后的值 { uchar val; //P0=0x55; start(); write_Byte(0x90);//器件地址 respons(); write_Byte(0x40);//子地址 respons(); start(); write_Byte(0x91); respons(); val=read_Byte(); respons(); stop(); return val; //温湿度及电机控制 #include #define uint unsigned int #define uchar unsigned char #define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换 sbit LATCH1=P2^2;//定义锁存使能端口 段锁存 sbit LATCH2=P2^3;// 位锁存 sbit Temp_SDA=P1^0;//AM2301数据信号 sbit OPEN_OFF=P1^1;//电机开关 sbit LED_Status=P2^4;//灯光开关 uchar value=0; unsigned char code DuanMa[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x80,0x40};// 显示段码值0~9 ,小数点,负号 unsigned char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码 unsigned char TempData[8];//存储显示值的全局变量 int Temp1,Temp2,Hum1,Hum2; //Humidity湿度,Temp温度 int Humidity,jiaoYan; int Temp; //us级延时 void delay_10us(uint x) { while(x--); } //ms级延时 void delay_ms(uint x) { uint i,j; for(i=0;i //温湿度传感器初始化 void Temp_init(void) { Temp_SDA=0; delay_10us(40);//延时至少800us Temp_SDA=1; delay_10us(2); while(!Temp_SDA); while(Temp_SDA); } //获取8位数据 uchar Temp_Value(void) { uchar i,value_8=0,dat; for(i=0;i<8;i++) { while(!Temp_SDA); delay_10us(2);//延时40us // _nop_(); if(Temp_SDA) dat=1; else { dat=0; } while(Temp_SDA); value_8=(value_8<<=1)|dat; } return value_8; } //获取湿度和温度 void GetValue40(void) { uchar hum1,hum2,hum3,hum4,tem1,tem2,tem3,tem4; TR0=0;//在测试温湿度时关定时器中断 Temp_init(); Hum1=Temp_Value(); Hum2=Temp_Value(); Temp1=Temp_Value(); Temp2=Temp_Value(); jiaoYan=Temp_Value(); while(!Temp_SDA); Temp_SDA=1; TR0=1; Humidity=256*Hum1+Hum2; if(Temp1>127) { Temp=0-((Temp1-128)*256+Temp2); } else { Temp=Temp1*256+Temp2; } hum1=Humidity/1000; hum2=Humidity/100%10; hum3=Humidity/10%10; hum4=Humidity%10; tem2=Temp/100%10; tem3=Temp/10%10; tem4=Temp%10; //TempData[0]=DuanMa[hum1]; TempData[0]=0; TempData[1]=DuanMa[hum2]; TempData[2]=DuanMa[hum3]; TempData[2]|=DuanMa[10];//小数点 TempData[3]=DuanMa[hum4]; if(Temp>0) { tem1=Temp/1000; if(tem1==0) TempData[4]=0; else TempData[4]=DuanMa[Temp/1000]; } else { Temp=0-Temp; TempData[4]=DuanMa[11]; } TempData[5]=DuanMa[tem2]; TempData[6]=DuanMa[tem3]; TempData[6]|=DuanMa[10];//小数点 TempData[7]=DuanMa[tem4]; } /*------------------------------------------------ 显示函数,用于动态扫描数码管 输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示 如输入0表示从第一个显示。 Num表示需要显示的位数,如需要显示99两位数值则该值输入2 ------------------------------------------------*/ void Display(unsigned char FirstBit,unsigned char Num) { static unsigned char i=0; DataPort=0; //清空数据,防止有交替重影 LATCH1=1; //段锁存 LATCH1=0; DataPort=WeiMa[i+FirstBit]; //取位码 LATCH2=1; //位锁存 LATCH2=0; DataPort=TempData[i]; //取显示数据,段码 LATCH1=1; //段锁存 LATCH1=0; i++; if(i==Num) i=0; } void Timer0_init(void) { IE=0x82;//开总中断及T0开关 TMOD=0x01; TH0=(65536-2500)/256; TL0=(65536-2500)%256; TR0=1; } //电机开关 void DianJi(void) { if(Humidity>800&&OPEN_OFF!=1) { OPEN_OFF=1; /* delay_10us(50); OPEN_OFF=0; delay_10us(1); */ } else if(Humidity>800&&OPEN_OFF==1) { } else { OPEN_OFF=0; } } void main() { OPEN_OFF=0;//电机关 Timer0_init(); delay_ms(2200); init(); LED_Status=1; while(1) { GetValue40(); value=read_AD(); if(value>150) LED_Status=0; else LED_Status=1; delay_ms(2000); } } void Timer0(void) interrupt 1 { DianJi(); TH0=(65536-500)/256; TL0=(65536-500)%256; Display(0,8); } 七、总结 通过这次课程设计我弄清楚了智能家居的整个体系结构,对各部分模块的功能的实现有了清晰的理解,有了很大的收获。 原来有过物联网智能家居的培训,但是当时用nes-c来开发,由于从来没有接触nes-c,只勉强的写了个串口发送和接收程序,而且对Zigbee协议栈认识不足,不知道该用哪些函数,虽然知道一些51单片机知识,但由于无法接触到硬件底层,无法实现一个完整的系统。 在这次课程设计之后,感觉比上次的培训收获的知识多些,可能是随着各门课程的完结,知识的积累多了,认识就更深了。 在自己动手实现智能灯光和智能排气扇的时候没有遇到太大的问题,但是还是有一些问题存在的,在控制继电器的时候,开始直接将电机直接连在51的电源上,但电机一旦工作51单片机就会因为电压不足而不工作,所以就采用外接 电源带动电机。 总体来说,这次课程设计激发了我的兴趣,对我以后进一步学习提供很大的帮助。 本科生课程设计成绩评定表 班级:物联网1001 姓名: 学号: 序号 1 2 3 4 5 6 评语: 注:最终成绩以五级分制记。优(90-100分)、良(80-89分)、中(70-79分)、 及格(60-69分)、60分以下为不及格 指导教师签名: 评分项目 选题合理、目的明确 设计方案正确,具有可行性、独创性 设计结果(分析模型、设计模型) 态度认真、学习刻苦、遵守纪律 设计报告的规范化 答辩 满分 10 20 30 10 10 20 总得分/等级 实得分 因篇幅问题不能全部显示,请点此查看更多更全内容