您的当前位置:首页物联网硬件综合设计--智能排气扇设计与实现

物联网硬件综合设计--智能排气扇设计与实现

来源:飒榕旅游知识分享网


物联网硬件综合课程设计

--智能灯光及智能排气扇实现

一、 设计背景

我国已形成基本齐全的物联网产业体系,部分领域已形成一定市场规模,网络通信相关技术和产业支持能力与国外差距相对较小,传感器、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;xvoid start()//开始 {

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 #include \"AD.h\"

#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;ifor(j=0;j<110;j++); }

//温湿度传感器初始化

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 总得分/等级 实得分

因篇幅问题不能全部显示,请点此查看更多更全内容