毕业设计(论文)-基于蓝牙和wifi的生理数据采集设计与实现.doc_第1页
毕业设计(论文)-基于蓝牙和wifi的生理数据采集设计与实现.doc_第2页
毕业设计(论文)-基于蓝牙和wifi的生理数据采集设计与实现.doc_第3页
毕业设计(论文)-基于蓝牙和wifi的生理数据采集设计与实现.doc_第4页
毕业设计(论文)-基于蓝牙和wifi的生理数据采集设计与实现.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

内蒙古大学本科毕业论文(设计)校代码 10126 学号 01147081 分 类 号 密级 本科毕业论文(设计) 基于Bluetooth和Wi-Fi生理数据采集的设计实现学院、系 软件学院 专业名称 软件工程 年 级 2011级 学生姓名 指导教师 2015年4月24日 内蒙古大学本科毕业论文(设计)基于Bluetooth和Wi-Fi生理数据采集的设计实现作者: 指导老师:摘要 本论文来源于国家级大学生创新计划基于MIF的远程空巢老人服务机器人研究课题,项目编号为201310126025。项目旨在于设计一个专门服务于空巢老人的移动机器人。该机器人基于多传感器信息融合技术,以移动机器人为平台,将智能卫生打扫服务与监测、记录、整理老人生理指标,监护老人生活状况等功能结合在一起。项目实现了帮助空巢老人打扫房间的同时,利用可穿戴设备采集老人生理数据,并发送到远程子女客户端,为子女提供老人各项生理指标。子女客户端将监测到的老人生理指标进行统计归档,实现对老人生理健康的分析、预测。与此同时,利用摄像设备对老人生活状况进行实时监测,并在异常状况下自动报警,为老人在家中提供安全保障。该项目在为空巢老人的日常生活提供了方便的同时也解决了子女身处异地无法监护老人的难题。本论文主要利用可穿戴设备采集生理数据,并依托移动机器人平台将数据发送到远程子女客户端以备统计归档。首先是利用心电采集模块采集心率数据,然后将数据通过蓝牙主从模块搭建的无线串口通路发送到移动机器人本体上,之后在ARM9处理器对心率数据进行简单的处理。完成以上步骤后,通过网络编程将心率数据发送到远程子女客户端。本项目用到的核心技术包括嵌入式系统设计及框架的搭建、设备驱动分析与移植、蓝牙通信技术、蓝牙模块配置和连接、网络编程、串口通信技术等。本论文利用所设计的机器人设备进行实际实验。对蓝牙主从模块进行配对,在移动机器人处理器上通过串口通信技术收集数据,在将数据发送到远程子女客户端。系统已能完成其预定功能。能够顺利的完成蓝牙主从模块的配对,通过串口进行数据的收集心电数据,利用socket通信技术将心率数据发送到远程客户端。实验过程及结果详见第四章。关键词 蓝牙通信 ARM9处理器 心率数据 网络编程 内蒙古大学本科毕业论文(设计)Bluetooth and Wi-Fi based on Physiological Data collection through Intelligent Robot Author:Chang Weijian Tutor:He LiqiangAbstract This topic is derived from the national college students innovative project Remote empty-nesters service robot based on MIF , the number of which is 201310126025. This project aims to design a special mobile robot to serve the empty-nesters. The robot based on multi-sensor information fusion technology takes mobile robot as the platform, makes the intelligent cleaning service and monitoring, recording, sorting out the old mans physiological data, and monitoring the old mans live together. The project not only helps empty-nesters clean the room, but also uses the wearable device to collect physiological data and send the data to remote children, which provides the elders physiological data for children. Children client can record and archive the elders physiological data detected so as to analyze and predict their health. At the same time, video equipment on the robot can monitor the elderlys living conditions in real time, and alarm automatically if it detects abnormal situations, which provides security for the elderly at home. The project serving for the empty-nest old mens daily life not only provides convenience but also solves the problem that children in remote cannot take care of their parents.This paper mainly uses the wearable device to collect physiological data, and sends the data to the remote children client for statistics and archiving, which is based on the mobile robot platform. First of all, we use ECG data acquisition module to collect the heart rate, and then send the data to the mobile robot ontology via wireless serial port access constructed by Bluetooth master-slave module, after that, ARM9 processor processes the heart rate data simply. After completing the above steps, heart rate data is sent to the remote children client by the network programming. The core technology of this project includes design and construction of embedded system, analysis and transplantation of the device driver, Bluetooth communication technology, configuration and connection of Bluetooth module, network programming, A serial port communication technology and so on.This paper made an experiment on the designed robot equipment. We match the Bluetooth master module with the slave one and collect data on mobile robot processor via a serial port communication technology. The system can complete its intended function. And successfully complete pairing Bluetooth master-slave module and collect ECG data through a serial port. Then the system sent heart rate data to the remote client using socket technology. Experiment process and results can be found in chapter 4.Keywords:Bluetooth communication, ARM9, Heart rate data, Network Programming 内蒙古大学本科毕业论文(设计) 目 录第一章 绪论11.1论文选题背景11.2国内外发展现状11.3论文主要研究内容21.4本章小结2第二章 系统总体结构及硬件设计与实现32.1 系统分析设计32.2硬件选型42.2.1心电模块的选择42.2.2蓝牙通信模块的选择52.2.3无线网卡选型52.2.4移动机器人选型62.3 硬件实现72.3.1蓝牙模块连接72.3.2无线网卡连接82.4 本章小结9第三章 系统软件设计与实现103.1蓝牙模块通信设置103.1.1连接测试103.1.2设置蓝牙模块名称113.1.3修改波特率113.1.4设置主从模式123.1.5主从模式配对143.2 串口通信143.2.1交叉编译简介143.2.2 串口接收数据143.3 网络编程153.4 本章小结17第四章 测试实验与分析184.1 测试实验184.2 分析194.3 本章小结19总结20致谢21参考文献22 第 23 页 内蒙古大学本科毕业论文(设计) 第一章 绪论1.1论文选题背景 近些年,随着我国经济实力的提高,越来越多的年轻人选择出国深造,去外地就业,或是由于其他原因促成了空巢家庭的迅速增多。这使越来越多的老人孤单独处,无依无靠。而且我国已经开始进入人口老龄化迅速发展的阶段。根据相关单位调查数据显示,2011年末,我国超过60岁的老人有1.85亿,到了2013年人数会超过2亿并且还会持续增长,直到2050年我国60岁以上老人数会达到最高值4.83亿1。因此对于我国这样一个人口老龄化严重的大国,老年人的赡养监护工作显得尤为繁重。于此同时,老人因为年龄偏大,一个人做家务时多有不便。又由于无法及时的与子女沟通,所以倍感孤独。这些使他们的身体状况和心里状况都存在着一系列的问题。并且,由于远处子女无法了解家中老人的身体状况,当老人身体突发意外时,子女无法及时知晓并采取措施。1.2国内外发展现状随着科学技术的日新月异,机器人的研究技术越发走向成熟。世界上有许多公司对机器人已有很深入的研究。取得较大成就的当属日本本田公司,该公司在2012年研制成功了一款仿人机器人,名字叫做ASIMO,该机器人是到目前为止世界上最先进的仿人行走机器人2。其他一些公司像法国的Aldebaran Robotics 公司、日本的索尼公司等也在机器人研究方面有较深的研究。Aldebaran Robotics 公司的NAO不仅外形可爱,而且具有一定的人类情感,能够完成与人的一些简单的交流互动3。各公司在追求高端的同时却忽略了其实用性,服务于日常生活的机器人的种类目前还较为单一。在国内,各研究机构对机器人的研究也在日益走向成熟。在追求高端的同时似乎更加注重了实用性的特点。典型的有服务于餐厅的服务员机器人、刀削面机器人等。中国台湾曾经研制出能够进行安保的机器人。这款机器人具有自行行走和自主避障等一系列功能,并能够进行对环境的安保报警工作。类似的机器人哈尔滨工业大学也开发了一个。该机器人服务于家庭中,可对家中情况进行巡视,当发现有异常变化时会通知主人,并启动报警功能4。目前,国内外设计开发服务于日常生活的机器人主要有以下几种,其中包括清洁机器人、娱乐机器人、安防机器人等。而专为老人服务的机器人还没有出现在市场上。1.3论文主要研究内容根据研究背景以及国内外现状,人们更加迫切需要一种专门服务于空巢老人的机器人,在减轻子女负担的同时,帮助子女了解老人的身体状况。本论文主要研究机器人如何采集老人生理数据,并将数据发送到远程子女客户端。为此本文就以下的几个方面内容进行了研究:(1)心率采集模块;(2)蓝牙通信模块;(3)设备驱动分析与移植;(4)Linux系统下网络编程;系统需要完成以下几方面工作:(1)设计蓝牙接口通信电路,将两个蓝牙通信模块分别连接到心率采集模块和移动机器人本体上(ARM处理器)。完成蓝牙主从模块配对连接等工作。(2)搭建交叉编译环境,在机器人本体上(ARM处理器)使用串口通信方式,编写串口通信程序收集心率数据并进行简单的处理。(3)完成网卡驱动由PC机到ARM处理器的移植,实现处理器的无线网络通信。将心率数据通过网络编程发送到远程客户端。1.4本章小结 本章主要说明本课题研究背景和国内外现状,并依据以上两点确定立项原因。于此同时,简要说明本文研究的内容以及将要开展的几方面工作。使读者了解本文的研究内容和系统实现的功能。第二章 系统总体结构及硬件设计与实现2.1 系统分析设计移动机器人日常主要工作是打扫房间,工作区域十分固定,老人与移动机器人的距离通常保持在一定的范围内。与此同时,手环与移动机器人是分离的。为此本系统在手环与移动机器人之间通信设计上优先选择近距离无线通信技术。近些年,由于通信与信息技术的日新月异,各种以无线方式进行通信的技术得到广泛的应用,并且已十分成熟。如今应用较为广泛的近距离无线通信技术有蓝牙技术、Wi-Fi、IrDA技术、ZigBee技术等。各种近距离无线通信技术都有其自己的特点。有些技术适合对功能进行扩充,而有些因满足特定应用得名,还有传输的速度、传输距离、功耗等各自的不同。在各种通信技术中,蓝牙技术被广泛应用于各种设备之间,并且技术成熟。它的通信范围在10m内,并且能够达到1Mbps传输速率,传输效率高,稳定性强。所以,本系统选用蓝牙技术进行移动机器人与心电手环之间的通信。移动机器人需要将老人心率数据发送到子女客户端,因为子女通常不在家中,所以子女客户端要接收到心率数据需要网络通信。移动机器人日常工作是打扫房间,不能固定在一个位置,将机器人与有线网络进行连接显然是不合理的。因此,需通过无线网络通信将心率数据发送到子女客户端。图2-1系统总体框图 Figure 2-1 system overall block 通过以上分析,可以设计出系统的总体框图:由图可知,本系统工作流程可分为两个阶段,第一阶段是心电模块采集老人心率数据。蓝牙从模块将数据发送到移动机器人蓝牙主模块上。第二阶段是蓝牙主模块接收心率数据,并在移动机器人的ARM9处理器上对数据简单处理。然后将心率数据利用无线网络发送到远程客户端5。2.2硬件选型2.2.1心电模块的选择 由于考虑到心电模块要穿戴到空巢老人手腕上。所以,心电模块选型上要在保证心电信号稳定性的前提下适合穿戴。心电模块选择了STM32F103C8T6微处理器为内核,STM32是ST公司推出的基于ARM-Cortex-M3内核的32位单片机。该单片机计算处理数据能力比8位和16位单片机强很多,并且处理代码效率更高。在功耗方面,该单片机具有三种模式相互切换,可以使功耗达到最低。由于心电模块要安放在可穿戴手环上,所以对功耗方面要求尽可能最低。而该单片机刚好满足可穿戴设备对功耗方面的要求。心电采集模块选用的是AD8232芯片,该芯片主要用于ECG和一些生物电的测量。因为该芯片本身集成了一些先进设备,可以自动滤去噪声或是放大微弱的生物电信号,所以对其采集数据的准确性能够得到一定的保证。与此同时,该设计可以让单片机轻松的采集到输出的信号,这使得选用的处理器与其更好的配合。完整的心电模块图如图3-1心电模块图。图 2-1 心电模块图Figure 2-1 ECG module chart2.2.2蓝牙通信模块的选择将心率数据以无线传输方式发送到机器人本体上的关键在于实现蓝牙模块之间的数据通信。蓝牙模块的性能决定了传输数据的稳定性、传输速率、效率及功耗等。蓝牙模块需要主从模块两个,需要设置波特率、主从模式等相应参数。设置完成后,主模块能够搜索到从模块并完成配对。蓝牙模块的选择是十分重要的。本项目选择BLK-MD-BC04-B蓝牙模块为主模块作为其解决方案。该模块使用的芯片是英国CSR公司的BlueCore4-Ext。该芯片遵循V2.1+EDR蓝牙规范,支持各种常用接口。该模块除了具有研发成本低、体积小巧的特点外,模块的功耗也很低并且收发十分灵敏。与此同时,该模块采用主从一体式设计且支持软硬件控制主从模式转换,支持连接7个蓝牙从设备。利用蓝牙模块的AT指令集可以方便地对蓝牙模块进行配置和查询。选用HM-06模块作为从模块。HM系列蓝牙模块采用CSR Blue Core、TI CC2540芯片,配置256Kb、6-8Mbit的软件存储空间,支持AT指令,用户可根据需要更改SPP角色(主、从模式)以及串口波特率、设备名称、配对密码等参数,使用灵活。该模块设计时为了满足于袖珍设备的使用,封装尽可能达到最小, 图2-2 蓝牙主从模块图Figure 2-2 Bluetooth master-slave module只有13.5mm*18.5mm*2.3mm大小,满足心电手环对体积的要求。2.2.3无线网卡选型为实现无线网络接口,本文选用TP-LINK公司的TL-WN823N无线网卡作为解决方案。该网卡遵循IEEE 802.11b、IEEE 802.11g以及IEEE 802.11n标准,其传输速率最高可达300Mbps(IEEE 802.11n标准下)且体积小巧非常便于安装。2.2.4移动机器人选型由于移动机器人选型及结构复杂,并且不是本论文研究重点,所以在此仅对其作简要介绍。图2-4移动机器人图Figure 2-4 mobile robot本文采用Friendly ARM公司的micro2440开发板为信息处理模块的实现硬件。Micro2440采用核心板+扩展底板的设计结构,其核心板其实是一个最小系统板,采用六层PCB板设计,利用等长布线的方式满足信号的完整性需求,保证了信息处理时的稳定性。采用SamsungS3C2440A为处理核心,默认主频为400MHz,最高可达到533MHz,能够满足机器人平台对计算能力的要求。板载64MSDRAM,时钟频率可达100MHz并拥有1GNANDFLASH用以满足机器人平台对存储空间的需求。此外,核心板还引出56Pin作为GPIO接口并提50PinLCD/CAMERA接口与56Pin的系统总线接口,为我们对外进行扩展提供了充足的空间5。图2-3 micro2440开发板图Figure 2-3 micro2440 development board 2.3 硬件实现2.3.1蓝牙模块连接 图2-5蓝牙模块连接图Figure 2-5 Bluetooth module connection 蓝牙主模块用于接收从模块发送的数据,连接在micro2440开发板的串口3上,该串口输出TTL信号。蓝牙模块有VCC、RXD、TXD、GND、SET、3V六个引脚。VCC为电源引脚,工作电压为5V。RXD与TXD分别为接收数据和传送数据引脚。GND为地线引脚。SET可作为硬件主从设置口,SET引脚接3.3V电压时模块为主模块,悬空或接GND模块为从模块。将开发板VCC RXD TXD GND与蓝牙模块的VCC、TXD、RXD、GND引脚对应连接,注意输入输出需要反接。具体连线方式如图2-5蓝牙模块连接图。2.3.2无线网卡连接由于S3C2440上已经安装了操作系统,这为我们使用TL-WN823N提供了便利,但TP-LINK公司并没有提供该款网卡在Linux系统下的驱动程序,要想顺利使用该网卡必须首先解决驱动问题。图2-6网卡图Figure 2-6 wireless adapter下面对其驱动移植过程进行简要说明,首先挂载该网卡,利用系统返回信息查看其USB ID:0bda 8178ID,搜索该ID对应的芯片组:REALTEK公司的RTL8192CU芯片,下载该型号的芯片驱动对其程序进行修改使其适应本操作系统,修改其Make file文件并指定目标系统的硬件构架、系统内核、编译工具链等6。由于驱动的编译需要交叉编译工具链和经过编译的目标板操作系统的源码,所以我们要构建这两方面的编译环境,这部分工作繁琐复杂又不在本文的重点讨论范围内因而具体步骤不再赘述。本文最终构建的交叉编译工具链版本为4.3.2,移植、剪裁、编译的目标板操作系统内核版本为2.6.32.2,在以上工作全部完成后,对网卡芯片的驱动程序进行编译,最终获得驱动文件,加载驱动文件,驱动无线网卡正常工作同时禁用板载有线网卡避免冲突,再经过简单的配置,无线网络接口搭建完成。2.4 本章小结本章主要讲述本系统旨在服务于空巢老人这一目的,并以此对系统实现需要使用的主要技术选择上进行了分析;对系统总体设计思想进行了描述,并根据系统设计思想设计出系统的总体框图,为后续详细设计打下基础。依据系统总体设计思想,根系统性能以及适应性综合考虑对各个模块进行了选型。并且从硬件方面对系统进行了总体设计,完成了硬件系统的搭建工作,为系统软件的实现打下良好的基础。第三章 系统软件设计与实现3.1蓝牙模块通信设置3.1.1连接测试图3-1串口通信确认图Figure 3-1 serial communication confirm蓝牙通信模块连接好以后可以通过发送AT指令测试模块是否连接正确,能否正常通信,以及设置主从模块、波特率、以及查询模块名称等。可以通过PC机串口和BC04-B蓝牙模块进行通信。串口缺省波特率为9600bps。打开串口调试助手,选择相应的串口号,设置波特率为9600bps,校验位为无校验位,停止位为1位。用杜邦线将模块与PC机串口对应连接,串口调试助手接收缓冲区没有任何反应,此时在将RXD与TXD引脚反接,连接正确,串口将会收到一串信息,SLAVE表示模块当前处于从模块。如图3-1串口通信确认图。确认正常工作状态后,此时在对话框内输入AT指令,并敲击回车换行键,确定光标在下一行,点发送数据会返回OK值。3.1.2设置蓝牙模块名称图3-2设置蓝牙名称图Figure 3-2 set Bluetooth name在发送缓冲区输入“AT+NAME”,点击发送数据,接收缓冲区显示“+NAME=BOLUTEK”也可发送“AT+NAME”,为修改的名称。返回“OK”表示修改成功。具体查询修改的实现如图3-2图。3.1.3修改波特率输入“AT+BAUD8”,点击发送数据,8对应波特率值为115200bps。关于波特率为何设置为115200bps将在后文为读者介绍。返回“+BAUD=8 OK”表示设置成功,设置成功后重新进行与的串口连接,将波特率调至115200bps,校验位、停止位等设置保持不变。连接成功,串口将会收到一串信息,输入“AT”,返回“OK”值。设置成功后如图3-3 波特率设置图。图3-3波特率设置图Figure 3-3 baud rate set figure3.1.4设置主从模式 BLK-MD-BC04-B蓝牙模块采用主从一体式设计且支持软硬件控制主从模式转换,现需要通过AT指令将其设置为主模式。输入“AT+ROLE”查询当前模式,返回“ROLE=0”表示当前模式为从模式,也可根据模块上LED等闪烁方式确定蓝牙模块状态,LED灯均匀慢速闪烁表示当前模式为从模式。LED灯闪烁方式对应于蓝牙模块相应的状态及模式见表9.1 状态对应表 。将其设置为主模式,在发送缓冲区输入“AT+ROLE1”,点击发送数据,返回“+ROLE1 OK”表示设置成功。设置如图3-4图。此时,通过模块的LED灯也可直观的看到主模式以设置成功,模块LED均匀快速闪烁。图3-4设置主模式图Figure 3-4 set the main pattern蓝牙模块设置成功后,主从模块LED灯长亮,见图3-5连接成功图。主模块能够主动搜索并发起连接,但是不能被其他蓝牙设备搜索到;从设备只能被搜索到,只能被动连接而不能主动搜索。图3-5连接成功图Figure 3-5 successful connection3.1.5主从模式配对以上步骤为对蓝牙模块设置步骤。设置结束后便可将模块重新连接到相应的位置。重新打开开关,主设备自动搜索从设备并建立连接,蓝牙透传模块为心电手环与移动机器人搭建起了无线传输通道,传输通过无线串口进行。3.2 串口通信3.2.1交叉编译简介交叉编译部分知识不在本论文详细研究的范围内,所以在此只对其做一些简要介绍。micro2440开发板上带有Linux系统,不能像在PC机上一样运行编写的程序,需要建立交叉编译工具链。本文选择在虚拟机上机上安装Fedora9.0系统作为其解决方案。具体安装过程不在详述。Fedora9.0安装完成后,在其中安装交叉编译器arm-linux-gcc-4.3.2。交叉编译器安装成功后,用该编译器对程序进行编译,生成可执行文件,该文件便可以在带有Linux系统下的micro2440开发板上执行。3.2.2 串口接收数据蓝牙主从模块配对连接后,形成无线串口通路,下面介绍串口接收心电数据具体实现方式及实现代码。 首先定义char类型指针rbuf用于接收由串口发送过来的心率数据。然后打开串口,程序如下:int open_serial()fd = open(/dev/ttySAC3,O_RDWR|O_NOCTTY);perror (open /dev/ttySAC3); if( fd = -1) return -1;elsereturn 0;设置串口波特率为115200bps,波特率是串口通信时的速率。心电手环实时采集使用者的心率数据,将波特率设置为115200bps是为了保证传输数据能够及时传到移动机器人本体上。虽然相对低波特率功耗较大,考虑到系统属于医疗设备,为了保证系统的高效工作。设置波特率代码如下:Cfsetispeed (&opt,B115200); Cfsetospeed (&opt,B115200);在main函数中调用open_serial()函数打开串口3,定义int类型变量retv用于保存串口read()函数的返回值。read()函数是读取串口接收到的数据函数,包含3个参数。第一个参数为验证串口是否已经打开,当fd的值为1时表示已经打开了。第二个参数是char类型指针,用于存放接收到的数据。第三个参数通常设置为1。rbuf= btd;re=read(fd,rbuf,1);if(re=-1)perror(read); 串口接收数据保存到char类型数组btd中,每次接收8位数据,数据类型为两个十六进制。心电数据格式为每帧有十个十六进制数据,其中帧头为EE,帧尾为FF,中间剩余六个十六进制数。这些是心率数据的有效值。接收到数据后对数据进行简单处理,通过网络编程发送到远程客户端,客户端对数据进行筛选和判断,正确识别使用者的健康状态。同时,对使用者的基本健康状况进行收集和建档,产生一个长时间的健康监控档案,为使用者提供长期有效的健康指导,也为日后的医疗就诊提供帮助。3.3 网络编程移动机器人上arm处理器通过串口接收到心率数据,需要通过无线网络发送到子女客户端。无线网络硬件系统以及设置方式已在上一章介绍完成,下面内容将详细讨论通过socket通信技术实现数据的传输。ARM处理器相当于服务器端,下面详细讲解服务器端如何通过socket通信向远程客户端发送心率数据。第一步:初始化Socket。代码如下: if( (socket_fd = socket(AF_INET, SOCK_STREAM, 0) = -1 ) printf(create socket error: %s(errno: %d)n,strerror(errno),errno); exit(0); Socket函数原型为int socket(int domain, int type, int protocol);它创建一个socket描述符,唯一标识一个socket。函数有三个参数。第一个参数表示协议族,其决定了socket的地址类型,AF_INET表示使用ipv4协议地址与端口号的组合。Type指定socket通信的类型。第三个参数是用来指定协议的,当把protocol设定为0时,函数将自动匹配通信类型所对应的通信协议。第二步:设置IP和端口。服务器端自动获取到IP地址。代码如下: memset(&servaddr, 0, sizeof(servaddr); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY);servaddr.sin_port = htons(DEFAULT_PORT);第三步:将具体的本地地址与socket进行绑定。代码如下: if( bind(socket_fd, (struct sockaddr*)&servaddr, sizeof(servaddr) = -1) printf(bind socket error: %s(errno: %d)n,strerror(errno),errno); exit(0); Bind函数原型为int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);本系统中代码完成的是将本地地址与端口号的组合赋给socket。Bind函数有三个参数。第一个参数是通过socket函数创建的唯标识符,本代码中为socket_fd。Bind函数为socket_fd绑定一个名字。第二个参数是协议地址结构的指针。第三个参数是地址的长度。第四步:监听是否有客户端连接。代码如下: if( listen(socket_fd, 10) = -1) printf(listen socket error: %s(errno: %d)n,strerror(errno),errno); exit(0); Listen函数用来监听是否有客户端发起了连接,当有客户端通过connect函数发起连接时,服务器就回接到这个请求。Listen函数原型为int listen(int sockfd, int backlog);该函数共有两个参数。函数返回一个Int型数据,返回值为1表示是已经立连接。第一个参数表示函数要监听的是哪一个socket。第二个参数是设置有多少个socket可以排队连接。本代码中将其设为10个。Connect函数用于客户端像服务器发起连接的,其原型为int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen); 第五步:接收连接请求。代码如下: if( (connect_fd = accept(socket_fd, (struct sockaddr*)NULL, NULL) = -1) printf(accept socket error: %s(errno: %d),strerror(errno),errno); continue; Accept函数用于接收客户端所发送的请求,本代码中将返回数据保存到connect_fd中。利用accept函数建立连接后便可以进行通信。Accept函数原型为int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);有三个参数。第一个参数表示服务器的socket,第二个参数表示为返回给客户端的协议地址,而第三个参数表示协议地址的长度。Accept函数返回一个int类型的数据,表示建立连接后与之连接的客户端之间的连接。当本次通信结束了,connect_fd也会结束。第六步:发送之前通过串口接收到的由心电模块传过来的心率数据。代码如下:send(connect_fd, sd, i, 0);Send函数用于将蓝牙接收到的心率数据发送到客户端,send函数有四个参数,第一个参数表示建立连接的socket;第二个参数是char类型指针,用于存放发送的字符;i表示要发送字符有i个;第四个参数一般设置为0。第七部:关闭socket连接代码如下:close(fd);关闭socket连接后将结束本次的socket通信。3.4 本章小结本章主要研究介绍系统软件设计与实现。蓝牙串口模块通过AT指令建立连接通路,设置主从模式、模块名称、传输波特率等,并且完成主从模块的正确配对连接。本章简要介绍了交叉编译工具链的建立,实现了通过串口将蓝牙从模块传输的心率数据采集到移动机器人本体处理器上。于此同时,介绍了socket通信的原理,简要的对socket中各函数进行了介绍,并且按照socket通信的步骤逐一分析,实现将心率数据发送到远程客户端。第四章 测试实验与分析4.1 测试实验系统整体实现后,需要对系统的功能、传输速度等进行测试。以便在后续对系统进行改进。因为心电测试模块是购买已成型设备,心电采集模块AD8232芯片稳定性极佳,但是对于其内部精确度等的调节工作目前还无法完成。下面主要进行对蓝牙模块采集数据功能以及通过网络通信将心率数据发送到远程客户端进行测试实验。图4-1数据接收图Figure 4-1 data reception(1)将蓝牙主模块接到PC机串口上,利用串口调试助手接收心率数据。心电数据格式为每帧有十个十六进制数据,其中帧头形式为EE,帧尾形式为FF,中间六位为心率数据。串口每次接收八位数据,数据类型为两个十六进制。接收到的数据如图5-1图。可以看到数据满足预先的分析结果,系统能够顺利采集到心率数据。 (2)对ARM处理器中程序进行测试。运行程序,ARM端发送数据如图5-2服务器发送数据图。远程客户端接收数据如图5-2客户端接收图所示。可以通过图片看到心 图4-2服务器发送数据图 图4-3客户端接收数据接收图Figure 4-2 server sends the data Figure 4-3 the client receiv

温馨提示

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

评论

0/150

提交评论