智能蓝牙防丢器的开发教程(含APP开发)

发布时间:2016-12-22 阅读量:6753 来源: 我爱方案网 作者: candytang

智能蓝牙(Smart Bluetooth)防丢器是利用蓝牙技术,通过距离变化来判断物品是否还控制在安全范围的设备。蓝牙技术本身是为了连接(比如蓝牙耳机,蓝牙键盘等)而并非防丢,手机是连接防丢器的终端和核心,一切寻物防丢,都是建立在手机的反馈和控制。蓝牙防丢器主要适用于手机、钱包、钥匙、行李等贵重物品的防丢,也可用于防止儿童或宠物的走失。



目前比较成熟的产品一般是采用蓝牙4.0技术,具有低功耗、双向防丢、自动报警等优点。虽然市场上该类产品种类繁多、层出不穷,但其核心构成一般包括:蓝牙4.0芯片、蓝牙芯片辅助电路、蓝牙天线、蜂鸣器、开关、电源等。


图1 蓝牙防丢器的主要构成


本文中我们先用一个相对简单但常用的蓝牙模块HC-05/HC-06进行蓝牙防丢器的制作。如下图该模块把天线、滤波电路、Soc、晶振都集成在了一起,当我们用的时候只要关注1、2、12、13、24、26这几个引脚就能实现比较完整的蓝牙通信功能,这样就为我们制作蓝牙防丢器节省了很多挑选元件、设计电路、焊接制板的功夫。


图 2  蓝牙模块1


由于考虑到很多读者在硬件方面还都是新手,初次拿到邮票边缘式引脚的模块会焊接不好,于是我们又找到了一款封装更好的蓝牙模块(其实就是把上面的模块加一个托,然后将VCC\GND\TXD\RXD四个关键的引脚引出)。当我们只是想把蓝牙模块作为标签时,只要在VCC和GND之间给它加上相应的电压就行了;当想用它进行无线数据传输时,这时TXD和RXD两个引脚就起作用了。


图 3 蓝牙模块2


下面开始制作一个简易的蓝牙防丢器

上面说了这么多了,那么我们的蓝牙防丢器的设计方案到底是什么样的呢?简单起见,咱么仅仅实现通过距离变化来判断物品是否还控制在你的安全范围内的具有核心功能的防丢器,对于节能功能、双向报警功能甚至是自拍功能咱们就先不考虑了。哈哈,可能说到这里大家还是对咱们要做的防丢器一点想法都没有,其实通过上面的铺垫楼主有信心大家可以在一分钟之内知道怎么完成它。

图4 简易蓝牙防丢器


相信很多看完上面图片同学会恍然大悟——不是嘛,只要将蓝牙模块接上相应的电源模块就能够做成一个简单的可以发出蓝牙信号的防丢器了!对的,由于我们没有加入复杂的通信功能,所以我们仅仅把蓝牙模块通上电做成一个蓝牙标签就可以了。但是大家不要高兴太早,没发现上面图片中手机屏幕里的应用还是一片空白吗?哈哈

如何找到并学习要用到的API ?


上面制作蓝牙防丢器的硬件部分让大家觉得没什么挑战性,那么接下来的东西可就有一定难度了!强烈建议大家着手了解安卓某个功能的应用时最好去安卓开发者社区,但是随着Google被屏Android Developer也不能被访问了。虽然在MIT网站上又找到了一个类似的网页,但是访问速度不是那么流畅,为了方便,LZ挑出了和本节相关的知识帮助大家理解和运用。


图 5 Android Developer页面


安卓蓝牙编程小知识

安卓平台支持蓝牙协议栈,允许一台设备和其他设备进行无线数据交换,当大家想使用蓝牙时可以通过调用相应的API实现功能。这些API提供的主要功能有:

△ 扫描搜索其他蓝牙设备(Scan for other Bluetooth devices)
△ 查询本地蓝牙适配器配对的蓝牙设备(Query the local Bluetooth adapter for paired Bluetooth devices)
△ 建立RFCOMM通道(Establish RFCOMM channels)
△ 连接其他设备(Connect to other devices through service discovery)
△ 与其他设备进行数据交换(Transfer data to and from other devices)
△ 管理多组连接(Manage multiple connections)

当准备在应用程序中使用蓝牙时,首先需要在manifest文件中包含BLUETOOTH和BLUETOOTH_ADMIN权限:



接着涉及蓝牙的操作主要有:1、开启蓝牙 2、关闭蓝牙 3、能被搜到 4、获取配对设备 5、传输数据。由于本节只涉及到搜索周边设备,所以配对并传输数据暂时不介绍。


安卓蓝牙编程主要操作

要想通过编程操作蓝牙设备,首先我们得了解一下有可供我们使用的相关类及其成员函数有哪些,如下图:蓝牙设备包括本地设备和远程设备,本地设备对应的类为BluetoothAdapter,远程设备对应的类为BluetoothDevice,两者的成员函数基本相同,接下来详细讲解。下面是蓝牙设备的相关函数。







打开本地蓝牙设备

我们要做带有蓝牙的应用,首先要保证用户的本地蓝牙设备是打开的,否则什么都不管直接使用搜索、连接、通信等函数肯定会得到和预期不一样的效果。但是有时候用户为了节省电池电量会把蓝牙关闭,那我们该怎么办呢?

其实,遇到这种情况大家也不用担心!请看下面的解决方案:其中第1行调用BluetoothAdapter的getDefaultAdapter()方法获得本地蓝牙设备,接着调用isEnabled()判断本地蓝牙设备是否被打开,如果被打开了就执行接下来的操作,否则可以发送Intent消息,请求打开本地蓝牙设备,接着待用户打开蓝牙后再进入接下来的操作。

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (!mBluetoothAdapter.isEnabled()) {
Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableIntent, REQUEST_ENABLE_BT);
} else {
nextOperation();
}

这时候有些同学可能要问了“你上面发送、请求、接着、然后说的挺轻巧,我怎么知道我发送完Intent消息后系统到底干了什么?用户又如何打开蓝牙的?应用程序又在哪里等待用户完成打开蓝牙事件,然后在哪里执行nextOperation()函数的?”下面将给大家详细介绍这一过程。由于篇幅限制,有兴趣的同学请加智能硬件QQ群:642391572,敲门暗号:我爱方案网,联系群主索要资料。

相关资讯
Qorvo联合贸泽发布电机控制技术白皮书,解析BLDC/PMSM设计新方案

2025年7月14日,全球知名电子元器件授权代理商贸泽电子(Mouser Electronics)联合半导体技术厂商Qorvo共同发布技术电子书《10位专家畅谈电机控制基础》。本书聚焦电机控制设计的核心挑战,集结行业专家对控制方法、能效优化及集成化方案的深度解析。伴随移动自动化与机器人技术的迅猛发展,高效电机系统已成为工业设计的战略性需求。

面板市场遭遇寒流:TV面板价格6月下旬起加速下跌

根据最新市场数据与行业分析,全球电视(TV)面板市场正经历显著的价格下行压力。自今年6月下旬开始,TV面板报价出现下跌趋势,进入7月上旬后跌幅进一步扩大。这一波价格调整的核心驱动力在于终端市场需求的持续不振。主要电视品牌厂商在面临销售压力的情况下,正积极采取更为灵活的采购策略,向面板制造商寻求价格折让,以期在下半年关键的促销季节(如“双十一”、黑五、圣诞季等)获得更大的定价与促销操作空间,刺激消费者购买。

英特尔18A工艺良率达55% 超三星2纳米,瞄准2025量产

据KeyBanc Capital Markets最新研究报告显示,英特尔在18A(1.8纳米)工艺节点取得显著突破。当前该工艺良率已提升至55%,超越三星SF2(2纳米)工艺约40%的水平,但仍落后于台积电N2(2纳米)工艺65%的良率表现。这一里程碑标志着英特尔在先进制程研发上的加速追赶,为其2025年量产计划奠定关键技术基础。

集成电路领衔出口升级,中国制造向"新质生产力"跨越

2025上半年,中国货物贸易进出口总值达21.79万亿元,同比增幅2.9%,首次在半年度突破20万亿大关。出口表现亮眼,实现13万亿元规模,增速达7.2%;进口则呈现阶段性调整,8.79万亿元的总量较上年回落2.7%。分季度观察,二季度**4.5%**的同比增幅较第一季度提速3.2个百分点,连续七个季度维持正增长轨道,显现出稳固的复苏态势。

2025全球工业显示面板增长3.4%,智能场景占比超六成

根据Omdia的最新权威报告数据,2024年全球工业显示面板市场展现了强劲韧性,出货量达到2.811亿台。展望2025年,该领域预计将保持稳健增长态势,出货量同比提升3.4%,总量攀升至2.906亿台。这一积极预期,预示着工业显示技术正深度融入全球智能化转型的核心进程。