蓝牙应用开发指南近程互联解决方案文档格式.docx
《蓝牙应用开发指南近程互联解决方案文档格式.docx》由会员分享,可在线阅读,更多相关《蓝牙应用开发指南近程互联解决方案文档格式.docx(9页珍藏版)》请在冰豆网上搜索。
![蓝牙应用开发指南近程互联解决方案文档格式.docx](https://file1.bdocx.com/fileroot1/2022-12/27/0c648164-66a6-411e-a587-5aa51349eba4/0c648164-66a6-411e-a587-5aa51349eba41.gif)
智能甲醛检测仪APP开发方案:
APP给你更只管的界面让你观测到甲醛的危害及目前环境中的甲醛浓度。
另外,温度、湿度、气压、噪音等同样可监测到。
智能水壶APP开发方案:
一个水壶能有啥智能?
通过APP,您可以观测当前水的过滤程序、纯净度、过滤进度,通过强大的APP,还可以显示杂质。
空气检测仪APP开发方案:
当前社会,空气污染严重,您可以通过APP非常清晰的知道何时出门为最佳时间,让您的受的污染降至最低,不要指望该设备能解决问题,但起码有了APP,您可以知道您避免了多少的危害。
蓝牙体重秤APP开发方案:
APP及后台算法可以分析您近月的体重趋势,当数据更长的时候,您可以清晰看见自己的体重变化,且APP提醒了您每天必须录入您的饮食记录,当您数月后查看,您该知道多后悔当初某天漏掉了记录饮食,而导致数据没被采集。
智能闹钟APP开发方案:
无需小看智能闹钟,您可以让它固定在床头,而无需理会它。
每次闹铃都是手机响起,您可以选择提醒的声音,如模仿林志玲叫你起床、或者饭岛爱。
智能睡衣APP开发方案:
将传感器芯片内置于内裤中,当你勃起,或下体温度过高,APP都将会有记录。
智能电视APP开发方案:
在您的手机上直接选择各类节目,通过电视放映,没有比APP更为方便,您可以清楚的看到电视剧点评及热度,从而决定是否观看。
智能厨房APP开发方案:
未来的世界全是智能的,有了智能厨房,您可以基于定制的APP,选择菜谱来如何做菜,智能冰箱中的食物有存放几天,哪些是新鲜或不新鲜的;
智能锅能根据你在APP中选择的模式来进行烹调。
智能轮胎APP开发方案:
您的爱车轮胎目前的状况,耐磨等,都可以通过APP来掌握,包括其他等一些智能车载设备。
篇二:
蓝牙开发
蓝牙协议栈BlueZ的移植与开发*
欧阳鑫于红岩吕杨
(昆明理工大学信息工程与自动化学院,昆明,650051)
摘要:
蓝牙技术是当前国内外科技界和产业界研究开发的热点技术,其应用范围包括手机、PDA、信息家电设备等领域,蓝牙技术在嵌入式系统上必将得到广泛的应用。
而要在嵌入式系统上提供蓝牙开发支持,蓝牙协议栈的移植是关键。
本文分析了蓝牙协议栈BlueZ体系结构,详细介绍了在S3C2410开发板上移植BlueZ的步骤,建立了嵌入式蓝牙应用开发平台,并提出了用BlueZ开发蓝牙应用程序的思路。
关键字:
蓝牙技术;
蓝牙协议栈BlueZ;
移植;
S3C2410;
Linux
中图分类号:
文献标识码:
A
BlueZPortingandProgramming
OuYangxin,YuHongyan,LvYang
(CollegeofInformationEngineeringandAutomation,KunmingUniversityofScience
andTechnology,Kunming650051,China)
Abstract:
Bluetoothtechnologyisthefocusedonbythedomesticandoverseasresearchinstitutes.Thistechnologyiswidelyusedinmobilephone,PDA,andInformationAppliancedevices.Inthefuture,bluetoothtechnologywillbewidelyusedinembeddedsystem.Builtsomebluetoothapplicationsonembeddedsystem,thekeytechnologyisportingbluetoothprotocolsuitestoplatform.Inthispaper,westudytheBlueZarchitecture,describethestepsofPortingBlueZtoS3C2410Platformindetail,andbuildtheembeddedbluetoothapplicationprogrammingplatform.Intheend,wealsogivetheideaofbluetoothprogramming.
Keywords:
bluetoothtechnology,bluetoothprotocolsuitesBlueZ,porting,S3C2410,Linux
1引言
蓝牙技术是一项低价格、低功耗的射频技术,它能使蓝牙设备实现近距离无线通信。
由于蓝牙技术有广泛的应用前景,它已成为当前国内外科技界和产业界研究开发的热点技术。
Linux操作系统的开放的蓝牙协议栈主要包括IBM公司的BlueDrekar,Nokia公司的Affix,Axis公司的OpenBT和官方协议栈BlueZ[1]。
BlueZ是公布在Internet上的免费蓝牙协议栈,由于它结构简单,应用方便,具有灵活、高效和模块化的特点且具有较强的兼容性,因此BlueZ已经成为Linux操作系统下的官方的蓝牙协议栈。
S3C2410x是三星公司推出的一款高性价比32位的RISC处理器,内含一个由ARM公司设计的ARM920T核,具有低功耗高性能的特点,适用于对价格及功耗敏感的场合。
本文使用的S3C2410开发板主要包含以下部件:
S3C2410x芯片,32MBNorFlash,64MBSDRAM,IIC存储器接口,LCD控制器,UART接口,一个USB(Host)接口。
利用S3C2410开发板上的USB接口,可以外扩蓝牙适配器,但S3C2410开发板上没有实现蓝牙设备驱动。
本文对蓝牙协议栈BlueZ进行分析,移植BlueZ到开发板上实现蓝牙设备驱动,提出了使用BlueZ开发蓝牙应用程序的基本思路。
*基金项目:
云南省自然科学基金项目(XXF0024M)。
2BlueZ的体系结构
使用不同蓝牙协议栈的设备在通信时会遇到互操作性的问题。
开发者需要了解各种协议栈的体系结构并考虑其差异。
通过分析源码,给出了如图1所示的BlueZ的体系结构[2]。
图1BlueZ蓝牙协议栈。
蓝牙协议栈BlueZ分为两个部分:
内核代码和用户态程序及工具集。
其中内核代码由BlueZ核心协议和驱动程序等模块组成;
用户态程序及工具集包括应用程序接口和BlueZ工具集。
在内核代码中,BlueZ协议的bluez-kernel和bluez-libs软件包实现了主机控制接口(HCI)和套接字接口的全部功能。
内核源代码采用模块化设计,由设备驱动程序模块和蓝牙核心协议模块组成,分别位于Linux内核代码的drivers子目录和net子目录下。
drivers子目录下的代码包括Linux内核对各种接口的蓝牙设备的驱动。
net子目录下代码包括蓝牙核心协议和一部分扩展协议的内核代码,如L2CAP、RFCOMM、SCO、SDP、BNEP等协议。
。
对于用户态程序,BlueZ提供函数库及应用程序接口,便于程序员开发蓝牙应用程序。
BlueZutils是蓝牙设备配置和应用的主工具集,实现对蓝牙设备的初始化和控制。
3BlueZ在S3C2410开发板上的移植
蓝牙模块除了需要Linux内核的支持外,还需要相关工具集来帮助管理蓝牙设备。
本文涉及的S3C2410开发板[3]操作系统内核版本是Linux,为了在开发板上实现对蓝牙设备的驱动,必须在PC机上交叉编译Linux内核,移植BlueZ协议栈,然后烧写到开发板上。
创建交叉编译环境
为进行Linux操作系统下的嵌入式开发,完成编译内核、驱动程序和应用程序等工作,首先要做的工作就是建立交叉编译环境,在Linux上可以使用GNU提供的arm工具链。
创建交叉编译环境和编译Linux内核不是本文研究的重点,这方面具体可以参考相应的文献。
配置、编译开发板上Linux内核
创建了交叉编译环境,其后配置内核使之支持蓝牙协议栈BlueZ和蓝牙设备。
配置、编译Linux内核的具体步骤:
(1)下载,为开发板的的内核打补丁。
通过给Linux内核
打补丁,BlueZkernel被安装到Linux操作系统上。
具体执行命令如下:
#gzip-dc../|patch-p1
(2)配置Linux内核使支持蓝牙协议栈BlueZ,BlueZ协议配置选项说明如表1。
表1BlueZ协议配置选项。
(3)配置Linux内核使支持BlueZ硬件,在BlueZ硬件支持设置选项中,设置关于USB接
口蓝牙设备支持,具体方法:
CONFIG_BLUEZ_HCIUSB=y;
(4)用makezImage编译修改后的Linux内核。
安装BlueZ软件包
BlueZ软件包主要由bluez-kernel,bluez-libs,bluez-utils和bluez-pin等组成。
软件包的具体构成和主要程序包的功能见表2。
表2BlueZ软件包。
由于BlueZ协议栈核心代码已经通过打补丁的形式安装到Linux操作系统上,因此只需安装bluez-libs、bluez-utils和bluez-pin三个程序包。
(1)下载BlueZ的基础库。
解压后,源代码在/src/下,
编译动态库:
#/usr/local/arm//bin/arm-linux-gcc-shared-o,然后建立动态连接,执行以下命令:
#ln-s
库交叉编译完毕后,BlueZ的基础库被安装到S3C2410/application/bluezport/libs/lib目录下。
(2)下载、安装Bluez的工具集。
安装成功后,BlueZ的工具集被安装
至S3C2410/applications/bluezport/utils目录下。
(3)安装bluez-pin,编写pin_helper程序;
由于BlueZ协议栈所携带的pin_helper是用python写的代码,在S3C2410开发板上不能使用,所以须重新编写pin_helper的程序,用C语言实现:
#include
intmain(intargc,char*argv[]){
printf("
PIN:
123"
);
}
用arm-linux-gcc交叉编译工具,将pin_helper程序编译成my_pin_helper,放至开发板内核的/usr/bin下,然后修改:
pin_helper/usr/bin/my_pin_helper
向S3C2410开发板的移植
(1)烧写Linux内核到开发板
编译后的Linux内核映像zImage放至在S3C2410/kernel/arch/arm/boot下。
用FlashProgrammer工具将zImage烧写到Flash的6-17扇区。
(2)烧写文件系统和BlueZ软件包到开发板
将cramfs文件系统和其目录下的BlueZ库、BlueZ工具集和bluez-pin,使用mkcramfs在Linux下编译生成文件系统映像,烧写到Flash的18-35扇区。
给S3C2410开发板加电,系统自动加载内核和文件系统。
出现Linux操作系统shell提示符。
然后插上USB接口的蓝牙适配器,手动加载蓝牙协议栈各模块到开发板的Linux内核上,加载模块的命令如下:
#modprobebluez
#modprobehci_usb
#modproberfcomm
#modprobel2cap
接着启动hci设备和hci精灵进程,执行命令:
#hciconfighci0up
#hcid-f/etc/bluetooth/
用命令#hciconfig–a查看蓝牙适配器的配置情况。
运行结果显示蓝牙适配器工作正常,验证USB蓝牙适配器驱动已经安装成功。
4用BlueZ开发应用程序
移植蓝牙协议栈BlueZ后,一个嵌入式蓝牙应用开发平台就已经搭建好了。
用户可以充分利用协议栈提供的蓝牙函数库,进行蓝牙应用程序的开发。
蓝牙系统开发结构如图2所示。
图2蓝牙系统开发结构。
从图2中可以看出,蓝牙协议栈是蓝牙系统开发结构的核心。
在操作系统的用户模式下,蓝牙协议栈主要功能包括:
负责和硬件打交道,处理蓝牙的数据包;
处理服务浏览程序发来的服务发现和设备管理请求;
和虚拟串口ttyBx交互。
在蓝牙协议栈启动的时候,通过读入一个配置文件来判断HCI传输层使用的硬件类型和硬件的配置状况。
HCI可以通过USB传输层来实现,USB传输层模块以动态链接库(.so)方式体现。
在Linux操作系统下,蓝牙系统向用户提供若干个虚拟串口ttyBx,ttyBx和实际串口的操作是一样的。
可以通过对虚拟串口的读写来与其它蓝牙设备进行数据通信。
开发板上应用程序是用户进行访问服务或是提供服务的程序[4],如局域网访问服务,或以服务器运行等。
对于局域网访问的应用,可使用开发板上的ftp等;
开发板作为服务器,可以用
[5]开发板上的httpd提供web服务,也可使用自行编写的TCP的Server端程序。
5结束语
本文在对蓝牙协议栈BlueZ分析的基础上,将BlueZ成功移植到S3C2410开发板上,建立了嵌入式蓝牙应用开发平台,并提出了用BlueZ开发蓝牙应用程序的基本思路。
BlueZ的移植在蓝牙系统开发中具有重要的作用。
文中介绍的方法已成功应用于嵌入式信息家电蓝牙网关系统中。
实践证明,以上方法切实可行,具有实际意义。
本文作者创新点:
在系统的底层上对蓝牙协议栈BlueZ的结构进行分析,总结在该协议栈下进行编程的思路,并在S3C2410开发板实现移植及开发。
参考文献
[1]InternetReference:
B1ueZprotocolstack,http:
//www
[2]InternetReference:
BSIG.SpecificationoftheBluetoothSystem(Core)
[EB/OL]./.Nov.XX
[3]SamsungElectronicData
[4]DavidKammer著,李静等译.蓝牙应用开发指南-近程互连解决方案[M].北京:
科学
出版社,XX
[5]马洪连,丁男,林晓惠.基于S3C2410的烟气采样控制系统的设计与实现.微计算机信
息,XX(4):
107~109
作者简介:
欧阳鑫(),男,汉族,硕士,讲师,研究方向为嵌入式应用;
E-mail:
kmoyx@;
于红岩(),女,汉族,在读硕士研究生,研究方向为嵌入式技术与计算机控制;
吕杨(),教授,研究方向为嵌入式技术与计算机控制。
Authorbriefintroduction:
OuYangxin(),Male,Hannation,GraduateStudent,Teacher,mainresearchfield,embeddedtechnologyapplication;
YuHongyan,Female,GraduateStudent,mainresearchfield,embeddedtechnologyandcomputercontrolsystem;
LvYang,Femail,Professor,mainresearchfield,embeddedtechnologyapplicationandcomputercontrolsystem。
篇三:
智能手环开发方案--蓝牙通讯协议
智能手环开发方案--蓝牙通讯协议
深圳智能手环方案公司《酷点网络》定制手环方案,本文档针对手环显示,控制的需求说明。
编写目的
本协议针对智能手环显示,控制的需求说明,供开发人员,测试人员,美工参考。
项目术语
数据库字段全为小写
参考资料
手机端app和手环蓝牙模块通讯协议采用10Byte数据传输,1Byte校验码,1Byte
:
数据校验方式Byte10=(Byte1+Byte2+Byte3+Byte4+Byte5+Byte6+Byte7+Byte8+Byte9)&
0xFF
2系统需求
任务概述
1,睡眠追踪记录2,运动步数追踪记录3,手机来电提示。
4,手机短信提示。
5,定时定点提醒
6,手机APP设置手环时间。
功能描述睡眠追踪记录
1,手环蓝牙模块1分钟检测到Sensor数据变化在某一区间(代表不运动)时开始进行记录时间A,直到Sensor数据开始变化(1分钟内都在大范围变化)时结束,时间为B。
B-A的时间间隔就为此次睡眠时间。
此时将数据上报给手机端App。
3,读取历史睡眠记录数
,运动步数追踪记录
1,计步模式两种
1,按目标计步
2,随意走动即计步统计2,数据保存
1,如果到23:
59分目标还未完成,保存目标记步,且自动切换到随意模式。
定时提醒
手机到手环蓝牙芯片1秒震动
手机设置手环时间,日期,星期设置
1,日期年月日4Byte,数据位的前4个Byte表示,高位为年低位为日。
eg:
XX-10-31数据位表示为:
0x140E0A1F
20:
0x1414:
0x0E10:
0x0A31:
0x1F
2,时间2Byte,数据为的后2个Byte表示高位为小时,低位为分钟,eg:
15:
56数据表示为:
0x0F38
3,秒1Byte
eg:
30秒数据表示为0x1E
5,星期几1Byteeg:
星期1,0x01范围:
0x01到0x07
,设置闹钟时间。
,手机发出,寻找WATCH提示4秒
,手环和手机断开后手环是否提示的开关功能
手环电池电量显示
手环硬件信息
手机和手环连上后,手环设置闹钟时间
名字传输
智能蓝牙手环方案开发----酷点网络