关于物联网的环境实时监测与控制系统_第1页
关于物联网的环境实时监测与控制系统_第2页
关于物联网的环境实时监测与控制系统_第3页
关于物联网的环境实时监测与控制系统_第4页
关于物联网的环境实时监测与控制系统_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、物联网基本设计能力综合实训报告物联网基本设计能力综合实训报告报 告 题 目: 面向物联网的实时 环境监测系统 班 级: 所 在 分 组: 三人组 组 员 姓 名: 指导教师姓名: 完 成 时 间: 2016年7月 计算机与遥感信息技术学院目 录第1章 概述11.1 设计目的11.2 设计要求11.3 任务分工2第2章 系统设计32.1 系统功能框架32.2 功能模块说明3第3章 硬件设计53.1 蜂鸣器及接口设计53.2 LED灯及接口设计53.3 风扇及接口设计63.4 温湿度及接口设计73.5 气压传感器及接口设计83.6 光照度传感器及接口设计10第4章 软件设计114.1 传输协议设计

2、114.2 手机终端设计184.2.1界面结构184.2.2 界面设计184.2.3 手机终端总结19第5章 系统测试205.1 采集测试205.2 手机端测试205.2.1 测试简述205.2.2 流程测试205.3 联调测试23第6章 总结24第1章 概述1.1 设计目的家居智能化在中国的应用已经有一段时间了,但是大多数的智能家居系统仍然适用于别墅、洋房、公寓等高级住房。在世界上人口最多的国家,移动电话的应用也是非常的普及,所以手机智能家居系统软件将最终成为智能家居系统中的主流产品。  对于智能家居产品,第一印象便是便捷,通过一个小小的手机,便可随时掌握、控制家里的所有

3、常用家电设备,包括:灯光、窗帘、电器、空调、地暖、新风等,甚至天气预报,室内温湿度显示等,这才是未来理想智能家居的必需品。随着各种基于3G和WIFI功能的智能产品逐步应用于人们的生活中,方便直观触摸操作的移动触摸智能控制终端诸如Android、iPhone、ipad等,必将成为智能家居未来的发展趋势。 掏出你的手机按几个键,让智能家居就在指尖的滑动中变为现实,来实现家居智能化的实际操作和应用。例如,我们通过手机来控制他们的家居照明,空调,监控摄像头,电视机,DVD,以及更多。当我们试图找到遥控器打开这些设备时,你可以考虑使用手机来进行相关的操作了。 然而,在物联传感智能家居

4、中,有更多的应用。比如:1.如果你在工作的时候,你可以使用移动探测器警报通知您,当您的孩子从学校回家。你甚至可以切换到有监控摄像头的房子,看到他们。2.假如你回家较晚,您可以通过手机轻松地打开你的前廊灯。3.下班前你可以通过手机打开家中的空调设备,设置好适应的温度,然后再开车回家。4.如果你在休假在外的时候,你可以打开家中的某一盏电灯,使它看起来像家中有人。你也可以开启你房间内的安防监控系统,以确保家中的安全。5.为了提高安全性和警惕性,当您进家前,可以使用使用“打开室内所有灯光”按钮。6.通过手机来控制家中视频/音频设备。然后通过手机观看或收听家中的视频或音频。7.如果有小偷闯入你的房子,而

5、你不在家,红外报警探测器会发出警报,你可以看到通过监控摄像头找到小偷的踪迹。现在,您可以使用声光报警器来驱赶和震慑他。本系统结合以上物联网新型概念,实现用户通过网络对家中情况的实时监控。该系统可以使用户能够对家庭内部情况进行实时的掌握以及控制。通过各种传感器获取家庭内信息(温湿度信息、大气压信息、光敏信息),用户在Android界面上可以对这些信息进行掌控。1.2 设计要求设计需实现利用多个传感器采集环境数据(温湿度,光强,大气压,海拔),并将信息通过蓝牙传输到手机上,手机可以实时显示数据以及对执行器的控制。1.3 任务分工第2章 系统设计2.1 系统功能框架执行单元蜂鸣器LED灯风扇STM3

6、2F103C8温湿度模块光强模块气压模块传感器信息控制信息 手机2.2 功能模块说明1数据采集模块数据采集模块分三个部分,温湿度数据采集,气压海拔数据采集,光照度数据采集。温湿度的数据采集应用温湿度传感器AM2320可以比较精准的采集到温度和湿度的信息。气压海拔的数据采集用BOSCH公司的BMP180传感器,较为准确快速的测量气压,海拔数据。光照度应用BH1750光强传感器来采集光强信息。2无线传输模块无线传输模块使用TI公司的CC2451蓝牙芯片,通过蓝牙模块实现传感层和手机应用控制层通信。本系统通信不需要太大的通信速率,所以采用蓝牙BLE,其特点是功耗低,速度低。通信模式为串口透传,通过A

7、T指令配置蓝牙为串口透传模式。串口波特率为57600.3. 手机终端模块调用系统蓝牙服务结合数据采集模块以及传输协议接收传感器数据,发送命令,将接收到的传感器数据处理得到各种环境参数。进行Android应用设计显示各个环境参数并控制各个执行器。第3章 硬件设计3.1 蜂鸣器及接口设计蜂鸣器的控制主要通过控制其与单片机相连的引脚的高低电平来实现,高电平蜂鸣器关,低电平蜂鸣器开。void Buzzer_Init(void)GPIO_InitTypeDef GPIO_InitSturcture; /定义GPIO结构体RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIO

8、C, ENABLE); /使能GPIOB时钟GPIO_InitSturcture.GPIO_Pin = GPIO_Pin_13; /定义引脚GPIO_InitSturcture.GPIO_Speed = GPIO_Speed_50MHz; /引脚频率GPIO_InitSturcture.GPIO_Mode = GPIO_Mode_Out_PP; /推挽输出GPIO_Init( GPIOC, &GPIO_InitSturcture);GPIO_SetBits(GPIOC, GPIO_Pin_13);蜂鸣器初始化函数,即初始化相关引脚。void Buzzer_Cont(u8 com) /蜂

9、鸣器控制if(com)BUZZER(ON);elseBUZZER(OFF);蜂鸣器控制函数,即接口函数,通过调用此函数来控制蜂鸣器的开关。3.2 LED灯及接口设计LED灯的控制主要通过控制其与单片机相连的引脚的高低电平来实现,高电平LED灯关,低电平LED灯开。void LED_Init(void)GPIO_InitTypeDef GPIO_InitSturcture; /定义GPIO结构体RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); /使能GPIOB时钟GPIO_InitSturcture.GPIO_Pin = GPIO_Pin

10、_8 |GPIO_Pin_9; /定义引脚GPIO_InitSturcture.GPIO_Speed = GPIO_Speed_50MHz; /引脚频率GPIO_InitSturcture.GPIO_Mode = GPIO_Mode_Out_PP; /推挽输出GPIO_Init( GPIOB, &GPIO_InitSturcture);GPIO_SetBits(GPIOB, GPIO_Pin_8 |GPIO_Pin_9);LED灯初始化函数,即初始化相关引脚。void LED_Cont(u8 com) /LED灯控制if(com)LED1(ON);LED2(ON);elseLED1(O

11、FF);LED2(OFF);LED灯控制函数,即接口函数,通过调用此函数来控制LED灯的开关。3.3 风扇及接口设计风扇的控制主要通过控制其与单片机相连的引脚的高低电平来实现,高电平风扇关,低电平风扇开。void Fan_Init(void)GPIO_InitTypeDef GPIO_InitSturcture; /定义GPIO结构体RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); /使能GPIOB时钟GPIO_InitSturcture.GPIO_Pin = GPIO_Pin_5; /定义引脚GPIO_InitSturcture.GP

12、IO_Speed = GPIO_Speed_50MHz; /引脚频率GPIO_InitSturcture.GPIO_Mode = GPIO_Mode_Out_PP; /推挽输出GPIO_Init( GPIOB, &GPIO_InitSturcture);GPIO_SetBits(GPIOB, GPIO_Pin_5);风扇初始化函数,即初始化相关引脚。void Fan_Cont(u8 com) /风扇控制if(com)FAN(ON);elseFAN(OFF);风扇控制函数,即接口函数,通过调用此函数来控制LED灯的开关。3.4 温湿度及接口设计温湿度传感器AM2320采用I2C通信协议与

13、单片机进行通信,AM2303的驱动需要单片机给他发一些初始化指令才能正常工作,初始化过程为:步骤一:唤醒传感器起始信号+0xB8+等待(>800us)+停止信号 步骤二:发送读指令或发送写指令START+0xB8(SLA)+0x03(功能码)+0x00(起始地址)+0x04(寄存器长度)+STOP 步骤三:读返回数据或确认信号0x03(功能码)+0x04(数据长度)+0x03(湿度高位)+0x39(湿度低位)+0x01(温度高位)+0x15(温度低位)+0xE1(CRC 校验码低字节)+ 0xFE(CRC 校验码高字节); 步骤四:计算数据 0339H = 3×256+3

14、15;16+9 = 825 =>湿度= 825÷10=82.5%RH; 0115H = 1×256+1×16+5 = 277 =>温度= 277÷10=27.7。void AM2303_Info_Coll(void) /温湿度传感器数据采集unsigned char Huniture_Buffer8 = 0;Waken();AM2320_Write();delay_ms(2);AM2320_Read( Huniture_Buffer,8);All_Info0 = (float)(Huniture_Buffer4*256+Huniture_Bu

15、ffer5)/10.0;All_Info1 = (float)(Huniture_Buffer2*256+Huniture_Buffer3)/10.0;将采集封装为AM2303_Info_Coll()温湿度采集函数接口,在系统中调用此函数,讲数据存入信息数组,随后将收集好所有信息的数组通过蓝牙发往手机。3.5 气压传感器及接口设计气压传感器BMP180同样采用I2C协议通信,微控制器发送一个启动序列启动压力或温度测量。转换时间后,结果值(UP或UT)可通过I2C接口读取。用于计算温度并在帕斯卡的压力,该校准数据已被使用。这些常数可以从BMP180 E2PROM通过在软件初始化I2C接口被读出。

16、 采样率可以提高到128个样本每秒(标准模式),用于动态测量。在这种情况下,它足以对测量温度只有每秒一次,在同一期间使用该值对于所有的压力测量。采集流程图为:通过I2C对特定的BMP180寄存器进行读写,可以对气压进行测量:下图显示了详细的算法对压力和温度测量。void BMP180_Info_Coll(void) /气压传感器数据采集extern long result_UT; extern long result_UP;float altitude;bmp180Convert();altitude=44330.0*(1-pow(float)result_UP/101325,1/5.255)

17、;All_Info2 = result_UP;All_Info3 = altitude;将采集封装为BMP180_Info_Coll()气压、海拔采集函数接口,在系统中调用此函数,讲数据存入信息数组,随后将收集好所有信息的数组通过蓝牙发往手机。3.6 光照度传感器及接口设计光照度传感器BH1750也是通过I2C总线进行通信,单片机通过I2C总线向BH1750发送一系列配置指令使BH1750正常工作,再通过I2C总线读取光照度数据。此过程为:1.MCU发送通电指令(0x01).2.MCU发送连续测量指令(0x11).3.延时(芯片进行模数装换需要时间).4.MCU读取测量数据.5.对测量数据进行

18、处理下图为指令集:void BH1750_Info_Coll(void) /光照度传感器数据采集float illumination = 0;illumination = Read_BH1750();All_Info4 = illumination;将采集封装为BH1750_Info_Coll()光照采集函数接口,在系统中调用此函数,讲数据存入信息数组,随后将收集好所有信息的数组通过蓝牙发往手机。第4章 软件设计4.1 传输协议设计协议说明数据包头命令分片标志数据包尾1字节1字节1字节n字节2字节主机->从机:包头:0xaa 包尾:0x0d 0x0a 命令:0x01

19、查询从机状态 0x02 数据请求 0x03 控制命令 发送信息示例: 查询命令:0xaa | 0x01 | 0x00 | 0x0d 0x0a 数据请求:0xaa | 0x02 | 0x00 | 0x0d 0x0a 控制命令:0xaa | 0x03 | 0x00 | 0x01 | 0x00 | 0x0d | 0x0a (字节编号从0开始)字节3为执行器(0x01led灯,0x02beep,0x03风扇) 字节4为执行器的开关(0x00关,0x01开)从机->主机:包头:0xbb 包尾:0x0d 0x0

20、a 命令:0x01 就绪 0x02 忙 0x03 出错 0x11 命令执行成功 0x12 忙 0x13 命令执行出错,命令不存在 发送信息示例: 0xbb | 0x01 | 0x01 | data | 0x0d 0x0a 0xbb | 0x11 | 0x00 | 0x01 | 0x00 | 0x0d 0x0a (字节编号从0开始)字节3为执行器(0x01led灯,0x02beep,0x03风扇) 字节4为执行器的状态(0x00关,0x01开)/包头#define HOST_TO_SLA

21、VE_H 0xaa /主机->从机 包头#define SLAVE_TO_HOST_H 0xbb /从机->主机 包头#define MESSAGE_TAIL_F 0x0d /包尾结束标志 0x0d 0x0a#define MESSAGE_TAIL_B 0x0a#define DIVIDE_ENABLE 0x01 /有分片#define DIVIDE_DISABLE 0x00 /无分片/主机->从机 命令#define HOST_CMD_CHECK 0x01 /查询从机状态#define HOST_CMD_READ 0x02 /读取从机数据#define HOST_CMD_W

22、RITE 0x03 /向从机中写入数据/从机->主机 从机状态命令#define SLAVE_STA_READY 0x01 /从机准备就绪#define SLAVE_STA_BUSY 0x02 /从机忙#define SLAVE_STA_ERROR 0x03 /从机出错/从机->主机 从机执行状态命令#define SLAVE_EXU_SUCCE 0x11 /命令执行成功#define SLAVE_EXU_BUSY 0x12 /从机忙#define SLAVE_EXU_ERROR 0x13 /命令执行出错,命令不存在/执行器#define LEDCONTROL 0x01#defin

23、e BEEPCONTROL 0x02#define FANCONTROL 0x03#define ONSTATE 0x01 /开#define OFFSTATE 0x00 /关#define MES_HEAD_LEN 3 /包头长度#define MES_TAIL_LEN 2 /包尾长度enum MixData TMPH, TMPL, /温度 HUMH, HUML, /湿度 PRETH,PRETL, / bmp1750 ut值 PRESH, PRESL, / bmp1750 up值 LIGH, LIGL, /光强 PRE_REG_AC1H, PRE_REG_AC1L, /bmp1750 ac1

24、-ac6,b1,b2,mb-md的值 PRE_REG_AC2H, PRE_REG_AC2L, PRE_REG_AC3H, PRE_REG_AC3L, PRE_REG_AC4H, PRE_REG_AC4L, PRE_REG_AC5H, PRE_REG_AC5L, PRE_REG_AC6H, PRE_REG_AC6L, PRE_REG_B1H, PRE_REG_B1L, PRE_REG_B2H, PRE_REG_B2L, PRE_REG_MBH, PRE_REG_MBL, PRE_REG_MCH, PRE_REG_MCL, PRE_REG_MDH, PRE_REG_MDL, TOTAL_DATA;

25、extern unsigned char All_Info_CharTOTAL_DATA; /信息数组,将传感器采集的信息放入此数组中,存储次序为上方的MixData表int messageAnalysis(u8 USART_RX_BUFUSART_REC_LEN); /报文解析void slaveState();void slaveSendM();void slaveRecM(u8 USART_RX_BUFUSART_REC_LEN);int messageAnalysis(u8 USART_RX_BUFUSART_REC_LEN) /报文解析 if(USART_RX_STA&0x8

26、000) /当包尾为0d 0a时进行处理 if(USART_RX_BUF1 = HOST_CMD_CHECK) slaveState(); USART_RX_STA = 0; else if(USART_RX_BUF1 = HOST_CMD_READ) slaveSendM(); USART_RX_STA = 0; else if(USART_RX_BUF1 = HOST_CMD_WRITE) slaveRecM(USART_RX_BUF); USART_RX_STA = 0; else USART_RX_STA = 0; void slaveState() unsigned char mes

27、sage7 = 0; message0 = SLAVE_TO_HOST_H; message1 = SLAVE_EXU_SUCCE; message2 = DIVIDE_DISABLE; message5 = MESSAGE_TAIL_F; message6 = MESSAGE_TAIL_B; message3 = LEDCONTROL; /执行器 message4 = LedState; /状态 USART_SendMessage(USART3, message, 7); delay_ms(50); message3 = BEEPCONTROL; message4 = BeepState;

28、USART_SendMessage(USART3, message, 7); delay_ms(50); message3 = FANCONTROL; message4 = FanState; USART_SendMessage(USART3, message, 7); delay_ms(50);void slaveSendM() /从机向主机发送信息 int i = 0,j = 0, len; volatile int k = 0; int totaldata = TOTAL_DATA; unsigned char messageTOTAL_DATA+MES_HEAD_LEN+MES_TAI

29、L_LEN = 0; for(i = 0; i < TOTAL_DATA / 15; i+) /分片,每片最多20字节 message0 = SLAVE_TO_HOST_H; message1 = SLAVE_STA_READY; message2 = DIVIDE_ENABLE; for(j = MES_HEAD_LEN; j < 15 + MES_HEAD_LEN; j+, k+) messagej = All_Info_Chark; message18 = MESSAGE_TAIL_F; message19 = MESSAGE_TAIL_B; USART_SendMessag

30、e(USART1, message, 20); delay_ms(10); len = k; message0 = SLAVE_TO_HOST_H; message1 = SLAVE_STA_READY; message2 = DIVIDE_DISABLE; for(j = MES_HEAD_LEN; j < TOTAL_DATA+MES_HEAD_LEN - k; j+, k+) messagej = All_Info_Chark; messageTOTAL_DATA+MES_HEAD_LEN+MES_TAIL_LEN -len-2 = MESSAGE_TAIL_F; messageT

31、OTAL_DATA+MES_HEAD_LEN+MES_TAIL_LEN - 1-len = MESSAGE_TAIL_B; USART_SendMessage(USART1, message, TOTAL_DATA+MES_HEAD_LEN+MES_TAIL_LEN - len);void slaveRecM(u8 USART_RX_BUFUSART_REC_LEN)/ USART_SendMessage(USART3, "ok3", 3); unsigned char message7 = 0; if(USART_RX_BUF3 = LEDCONTROL) LED_Con

32、t(USART_RX_BUF4); LedState = USART_RX_BUF4; message1 = SLAVE_EXU_SUCCE; else if(USART_RX_BUF3 = BEEPCONTROL) Buzzer_Cont(USART_RX_BUF4); BeepState = USART_RX_BUF4; message1 = SLAVE_EXU_SUCCE; else if(USART_RX_BUF3 = FANCONTROL) Fan_Cont(USART_RX_BUF4); FanState = USART_RX_BUF4; message1 = SLAVE_EXU_

33、SUCCE; else message1 = SLAVE_EXU_ERROR; message0 = SLAVE_TO_HOST_H; message2 = DIVIDE_DISABLE; message3 = USART_RX_BUF3; /执行器 message4 = USART_RX_BUF4; /状态 message5 = MESSAGE_TAIL_F; message6 = MESSAGE_TAIL_B; USART_SendMessage(USART3, message, 7);4.2 手机终端设计4.2.1界面结构主界面 光强模块BlutoothHex气压模块海拔模块温湿度模块4

34、.2.2 界面设计 (1)主界面:采用纵向线性布局背景为主题背景,顶部使用横向线性布局设置五个按钮,第一个为图片(应用LOGO)按钮连接断开蓝牙,随后四个普通按钮分别为光强、气压、海拔、温湿度用以选择界面;中间部分为空白;底部线性横向布局权重4:1为命令输入栏和命令发送按钮。(2)光强界面:采用纵向线性布局背景为主题背景,顶部使用横向线性布局设置五个按钮,第一个为图片(应用LOGO)按钮连接断开蓝牙,随后四个普通按钮分别为光强、气压、海拔、温湿度用以选择界面;中间部分为一个fragment背景为光强LOGO,在LOGO顶部为光强显示栏,左下部为LED控制按钮,右下部为数据更新按钮;底部线性横向

35、布局权重4:1为命令输入栏和命令发送按钮。(3)气压界面:采用纵向线性布局背景为主题背景,顶部使用横向线性布局设置五个按钮,第一个为图片(应用LOGO)按钮连接断开蓝牙,随后四个普通按钮分别为光强、气压、海拔、温湿度用以选择界面;中间部分为一个fragment背景为气压LOGO,在LOGO顶部为显示气压栏,左下部为LED控制按钮,右下部为数据更新按钮;底部线性横向布局权重4:1为命令输入栏和命令发送按钮。(4)海拔界面:采用纵向线性布局背景为主题背景,顶部使用横向线性布局设置五个按钮,第一个为图片(应用LOGO)按钮连接断开蓝牙,随后四个普通按钮分别为光强、气压、海拔、温湿度用以选择界面;中间

36、部分为一个fragment背景为海拔LOGO,在LOGO顶部为海拔显示栏,左下部为BEEP控制按钮,右下部为数据更新按钮;底部线性横向布局权重4:1为命令输入栏和命令发送按钮。(5)温湿度界面:采用纵向线性布局背景为主题背景,顶部使用横向线性布局设置五个按钮,第一个为图片(应用LOGO)按钮连接断开蓝牙,随后四个普通按钮分别为光强、气压、海拔、温湿度用以选择界面;中间部分为一个fragment背景为温湿度LOGO,在LOGO顶部为温湿度显示栏,左下部为FAN控制按钮,右下部为数据更新按钮;底部线性横向布局权重4:1为命令输入栏和命令发送按钮。(附)蓝牙连接弹框:采用纵向线性布局,顶部使用相对布

37、局单行显示蓝牙选择标题与提示图标;除顶部栏外采用另一纵向线性布局,第一行为Listview显示设备信息条目,第二行为蓝牙浏览提示,第三行为蓝牙浏览与取消按钮。4.2.3 手机终端总结本系统的目的为模拟通过移动终端显示与控制的物联网传感网络,需求为简洁的界面与简单的操作。在安卓端的设计过程中本着界面简洁操作简单的原则,使用了标题分页结构,在每个页面中只有简单的显示以及数据更新与执行器控制按钮达到了操作简单的要求。但是由于时间问题,整个安卓端应用仍然存在许多BUG与不足,直至现在我们仍然在不断地调试与优化。第5章 系统测试5.1 采集测试采集测试分为单元测试和总体测试,单元测试即分别测试蜂鸣器、L

38、ED灯、风扇,温湿度传感器、气压传感器、光照传感器的运行情况,其中三个执行单元分别用控制程序执行完全没有问题,后面三个采集模块分别驱动,另外再驱动一块OLED显示屏来显示采集到的数据,单元测试完全没有问题。总体测试讲所有的模块全都驱动,OLED屏显示所有采集的数据,系统所有模块可以正常工作,数据采集没有问题。5.2 手机端测试5.2.1 测试简述由于项目时间有限,安卓客户端虽然完成但依然不够完善,依然在不断地优化中,且稳定性较低,故目前只完成了基本功能的测试。5.2.2 流程测试(1)在安卓手机打开应用,显示主界面。(2)点击左上角图标,弹出蓝牙列表框。(3)点击所需连接蓝牙,完成连接后返回主页面。分别可以点击每个选项按钮显示不同的环

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论