您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 其它相关文档 > 物联网通信与组网技术
信息工程课程设计报告书课程名称物联网通信与组网技术课程设计题目小型家庭环境监测传感网络系统学生姓名、学号学生专业班级指导教师姓名课程设计起止日期2018.7.2-2018.7.6摘要如今我国社会整体生活水平不断提高,大众人民对于生活质量的追求不再仅仅局限于衣食住行、温饱冷暖这些较为低层次的阶段了,我们可以从日常的生活以及从各类环境监测设备尤其是家庭及单位的私用或公用监测设备的销售情况可以看出,大众人民对于这方面的需求是日益增加,但就目前而言,市场上的环境监测设备种类繁多,产品质量参差不齐,价格也是随着功能的多少而有着很大的差距,有的环境监测设备功能过于繁杂而又价格昂贵,并不适合大众消费,而有的产品则是功能有限,质量不高,也不适合大众购买。从上边描述可以看出,目前我国市场在这方面还是有个潜在的市场机遇、广泛的设计前景和光明的销前途的。然而就目前而言,不论是国外还是国内,总体情况是关于智能家居系统的研究开发项目比较多,但是智能家居系统大多比较庞大,功能繁杂,成本很高,所以不能得到很有效的普及。考虑到毕业设计的实际情况和力所能及的设计范围,我们根据普通家庭的一般需要开发室内温度、湿度、天然气浓度、酒精浓度、振动等环境参数的监测系统,可以提供多种报警信息,使用户及时了解家居状况,避免不安全事故的发生。既然环境监测与报警设备在日常生活、工作和工程实践中具有重要的应用,并且随着生活水平的不断提高和电子科技的不断进步,日常生活中对于环境监测与报警的需求也是越发的增加,那么在设备的设计上,我们不仅要做到具有较为齐全的报警功能、较为稳定的工作状态、相对而言比较长的工作寿命以及合适的体积大小,还要求进行一定距离的传输,直观快捷的表达方式,还要联系大众生活,与大众生活相贴切,能够为大众所使用。就设计方案而言,本设计着力于从实用、便捷、简易这三个方面出发,通过将几部分简单的设计——利用单片机、传感器,VC上位机串口助手等等相应作出各部分监测系统,再通过各个设计单元间的组合通信,最终达到实现环境监测的功能,包括酒精传感器和磁检测传感器,将酒精及磁检测信息发送至VC上位机串口助手实时监控并显示酒精度及磁检测状况等功能。在课程设计指导老师以及同学的帮助和指导下,通过请教问题、查阅资料、检查电路、改正程序,经过如此的多次的纠正和改进,本次的课程设计成果终于是基本上达成了预期的目标,酒精监测和磁检测传感器都能正常工作。关键字:蓝牙wifiUDP协议MFC一、课程设计项目名称小型家庭环境监测传感网络系统二、项目设计目的及技术要求2.1项目设计目的通过《物联网通信与组网技术》课程设计,使学生能够掌握物联网应用系统设计的开发流程、设计方法,使学生能够综合应用《无线传感器网络技术》、《嵌入式技术》、《JAVAWEB程序设计》《Andriod程序设计》、《物联网应用系统设计》等物联网工程专业课程的知识。要求学生经过课程设计的教学环节进一步理解物联网应用系统总体架构,掌握物联网应用系统的基本设计方法,程序开发流程,从而使学生对物联网应用系统设计能力有较大提高。2.2项目的主要任务1.设计内容:(1)完成CBT试验台上蓝牙模块间的组网和数据传输,可设计三个及以上的蓝牙模块组网。(2)完成CBT试验台上WIFI模块间的组网和数据传输,同上可设计多个wifi模块组网。(3)实现蓝牙、wifi的混合组网,将数据准确的传输至上位机软件VC显示,监测数据。2.基本要求:(1)设计的家庭环境监测传感网络系统设计功能(2)画出系统的总体框图(3)对功能进行详细设计3.系统设备:硬件:Bluetooth模块(2个),wifi模块(2个),CBT-SuperIOT-II型教学实验平台,j-Link仿真器。软件:串口调试软件,IAR开发软件,VC/安卓三、项目设计方案论证3.1基于STM32的小型家庭环境监测传感网络系统设计CBT-SuperIOT-II型平台配套的Bluetooth模块、WIFI模块皆采用STM32F103处理器,小型家庭环境监测传感网络系统主要由BF10-I蓝牙模块、HF-A1wifi模块、酒精、磁检测模块传感器。实现蓝牙、wifi的混合组网,利用VC++编写上位机程序,通过串口进行数据交互,将数据准确的传输至上位机软件VC显示,从而监测数据是否正常。此系统的组成框图如图3.1所示:图3.1小型家庭环境监测传感网络系统的组成框图3.2系统实现原理3.2.1硬件原理图本实验使用的是STM32F103芯片,Bluetooth、WIFI模块,酒精、磁检测传感器模块。2个蓝牙模块替代串口线透明数据,一个模块工作在主模式下,一个模块工作在从模式下。当两模块设置为相同的波特率。上电之后,主从模块则自动连接形成串口透明。HF-A11x支持串口透明传输模式,可以实现串口即插即用,从而最大程度的降低用户使用的复杂度。本系统主要涉及STM32F103芯片、Bluetooth模块、WIFI模块链接电路。如下图所示:STM32蓝牙模块STM32蓝牙模块STM32WIFI模块图3.2蓝牙BF10-I芯片原理图图3.2BF10-I蓝牙模块原理图图3.3STM32F103芯片原理图“Wifi_nRST”为WiFi模块复位引脚,低电平复位,不按下S3时该引脚为高电平,按下S3时该引脚为低电平,复位时间需大于300ms,按下S3能实现复位WiFi模块;S4为恢复出厂设置按键,按下S4持续五秒钟,然后松手,再按下S4直到“Ready”指示灯由亮变灭,WiFi模块完成恢复出厂设置。图3.4HF-A1wifi模块原理图3.2.2通信协议设计SOFSensortypeSensorindexCmdidDataExtenDataEND2Byte1Byte1Byte1Byte6Byte2Byte1Byte说明:SOF:固定为0xEE0xCC,标志一帧的开始。Sensortype:见附表一传感器说明。Sensorindex:固定为0x01。Cmdid:固定为0x01。Data:为6Byte传感器数据域,见附表一传感器说明。ExtenData:为2Byte扩展数据域END:固定为0xFF,标志一帧的结束。查询指令:EECC06no010000FF返回指令:EECC06no010000000000010000FF3.2.3蓝牙AT指令(1)查询\设置串口工作波特率AT指令表1查询、设置波特率AT指令表指令应答参数查询:AT+BAUDOK+Get:[para1]Para1:0~80=9600;1=19200;2=38400;3=57600;4=115200;5=4800;6=2400;7=1200;8=230400;Defaut:0(9600)设置:AT+BAUD[para1]OK+Set:[para1](2)查询\设置模块主从模式指令表2查询、设置主从模式AT指令表3.2.4WIFI传输本次设计中Wifi模块采取UDP通信协议,CBT-SuperIOT-II型教学实验平台中的WiFi模块使用的是HF-A11x模块,模块默认为AP接口。用户可以通过PC机连接HF-A11x的AP接口,并用web管理页面配置。在WiFi传感网实验中,子节点上的传感器把采集到的信息通过WiFi发送给根节点的WiFi,在通过串口发送给STM32。利用串口工具可以采集根节点收到的信息,再根据WiFi串口通信协议和传感器底层协议对传感器接收到的物理信息进行判断。图3.5WIFI传感网络示意图指令应答参数查询:AT+ROLE?OK+Get:[para1]Para1:0~11:主设备0:从设备Default:0设置:AT+ROLE[para1]OK+Set:[para1]四、软件流程分析图4.1软件系统流程图4.1串口接收函数当串口有数据到来时,就会进入该函数,用BYTE型数组接收数据,再对数据进行解析。这里需要将协议完全展现出来,即将数据转换为十六进制然后再转换为字符串在文本框进行显示。关键代码如下:voidBlueToothMM::OnOnComm(){VARIANTvariant_inp;//定义一个VARIANT类对象COleSafeArraysafearray_inp;//定义一个COleSafeArray对象LONGlen,k,i;intj=0;BYTErxdata[2048];//设置BYTE(字节)数组CStringstrtemp;if(m_ctrlCom.GetCommEvent()==2)//事件值为2表示缓冲区内有数据{variant_inp=m_ctrlCom.GetInput();//读缓冲区safearray_inp=variant_inp;//VARIANT型变量转换为ColeSafeArraylen=safearray_inp.GetOneDimSize();//获取接收字节长度for(k=0;klen;k++){safearray_inp.GetElement(&k,rxdata+k);}for(k=0;klen;k++){BYTEbt=*(char*)(rxdata+k);RXBUFF[j]=bt;strtemp.Format(%02X,bt);m_EditTest+=strtemp;}}SetDlgItemText(IDC_EDIT_TEST,m_EditTest);//重新设置文本框值for(i=0;i1024;i++){rxdata[i]=0;}}4.2Socket通信初始化在使用wifi模块时,我们使用了UDP传输方式,UDP不需要建立连接,只需要往特定IP和端口号丢数据包就行了,保证在同一局域网。Ip是连接无线网后,路由器分配给电脑的ip,所以我们只需要获取本机ip就可以了。端口号的设置保证不与电脑其他用软件冲突就可以了。SOCK_DGRAM就是将数据传输方式设置为UDP。关键代码如下:BOOLBlueToothMM::InitSocket(){UpdateData(TRUE);unsignedshortm_portNo;CStringm_StrportNo;GetDlgItemText(IDC_EDIT_PORT,m_StrportNo);sscanf(m_StrportNo,%d,&m_portNo);//转换为u_short类型m_socket=socket(AF_INET,SOCK_DGRAM,0);if(INVALID_SOCKET==m_socket){MessageBox(套接字创建失败);returnFALSE;}SOCKADDR_INaddrSock;addrSock.sin_family=AF_INET;//地址族addrSock.sin_port=htons(m_portNo);//将自己的端口号设置为6000addrSock.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//ip地址intretval=0;bind(m_socket,(SOCKADDR*)&addrSock,sizeof(SOCKADDR));if(SOCKET_ERROR==retval){closesocket(m_socket);MessageBox(绑定失败);returnFALSE;}returnTRUE;}4.3网络数据接收代码网络数据接收必须开启一个线程来监测是否有数据的到来。使用recvfrom函数来接收UDP传输的数据。使用recvBuf来接收原始数据,使用byteData数组存储转换为BYTE型的数据,使用strtemp存储十六进制字符串,然后将数据给对话框数据展示界面。关键代码如下:DWORDWINAPIBlueToothMM::RecvProc(LPVOIDlpParameter){SOCKETsock=((RECVPARAM*)lpParameter)-sock;HWNDhwnd=((RECVPARAM*)lpParameter)-hwnd;deletelpParameter;///释放内存SOCKADDR_INaddrFrom;intle
本文标题:物联网通信与组网技术
链接地址:https://www.777doc.com/doc-4148478 .html