物联网与蓝牙技术概述
各位同学,欢迎来到我们的第一课。说实话,每次讲物联网,我总会想起十年前做的一个智能灯控项目。那时候蓝牙还是2.0时代,功耗高、配对慢,客户抱怨说「这灯还没连上,手机都快没电了」。嗯,现在回头看,技术演进真的太快了。
这一章,我们先把地基打牢。搞懂物联网的整体架构,理清蓝牙技术的发展脉络,再看看Android在这个生态里到底扮演什么角色。你想想看,没有这些基础认知,后面写代码很容易跑偏。
物联网体系架构:从端到云
物联网说白了,就是让物理世界的设备能「说话」。我习惯把物联网分成四层,这样理解起来最清晰:
| 层级 | 名称 | 典型设备/技术 | 我的理解 |
|---|---|---|---|
| 第一层 | 感知层 | 传感器、执行器、蓝牙模块 | 设备的「五官」 |
| 第二层 | 网络层 | 蓝牙、Wi-Fi、ZigBee、4G/5G | 设备的「神经」 |
| 第三层 | 平台层 | 云服务器、数据中台 | 设备的「大脑」 |
| 第四层 | 应用层 | 手机App、Web控制台 | 用户的「界面」 |
我在项目中遇到过不少新手,一上来就写蓝牙通信代码,结果发现设备数据根本传不到云端。为什么?因为感知层的数据格式和网络层的协议没对齐。说白了,每一层都有它自己的「语言」,你得做好翻译工作。
核心要点:Android手机通常位于应用层和网络层的交界处。它既是用户交互的入口,也是蓝牙通信的桥梁。我们这门课,重点就是打通「感知层 → 网络层(蓝牙)→ 应用层(Android)」这条链路。
蓝牙技术演进:经典蓝牙 vs BLE
蓝牙技术从1994年诞生到现在,经历了几个重要阶段。我个人习惯把它们分成两大家族:
- 经典蓝牙(BR/EDR):蓝牙2.0/3.0时代的老将。特点是速率高、功耗大,适合传输音频、文件。我早期做蓝牙耳机项目时,一天要充两次电,那体验真是一言难尽。
- 低功耗蓝牙(BLE):蓝牙4.0及以后的新秀。功耗极低,一颗纽扣电池能跑几个月甚至几年。但速率相对较低,适合传输小数据包。
你可能会问:「那我该用哪个?」其实很简单——
我的选择原则:
- 传输音频、大量文件 → 用经典蓝牙
- 传输传感器数据、控制指令 → 用BLE
- 如果设备是电池供电 → 优先考虑BLE
我曾经在一个智能门锁项目里,因为选错了蓝牙版本,导致门锁电池撑不过两周。后来换成BLE,直接干到一年以上。嗯,选型真的很重要。
BLE还有一个核心概念叫「GATT协议」。它定义了设备之间如何交换数据。我建议你把它理解成一个「属性表」——服务(Service)包含特征(Characteristic),特征里存着真正的数据。后面写代码时,你会发现所有操作都是围绕这个表展开的。
Android在物联网中的角色
Android在物联网生态里,位置很特殊。它不是感知层设备,也不是云平台,但它恰恰是用户和物联网世界之间的「窗口」。
我总结了一下,Android主要扮演三个角色:
- 控制终端:通过App连接蓝牙设备,发送指令、接收数据。这是最常见的使用场景。
- 数据网关:手机作为中转站,把蓝牙设备的数据上传到云端,或者从云端下发指令给设备。
- 本地处理中心:有些场景下,设备数据不需要上云,直接在手机上完成计算和展示。比如体脂秤的数据分析。
避坑指南:我曾经在做一个医疗设备项目时,忽略了Android系统的蓝牙扫描限制。Android 6.0以后,扫描蓝牙需要位置权限;Android 12以后,扫描间隔还有强制限制。这些坑,后面我们会一个一个填上。
另外,Android的蓝牙API也经历了多次迭代。从早期的BluetoothAdapter到后来的BluetoothLeScanner,再到Jetpack的BluetoothAdapter封装,API越来越友好。但底层逻辑没变——你依然需要处理连接、发现服务、读写特征值这些步骤。
好了,这一章的内容就到这里。你想想看,物联网其实没那么神秘,无非是「设备采集数据 → 蓝牙传输 → 手机处理 → 云端存储/控制」这条链路。后面我们会一步步把它实现出来。
下一章,我们开始搭建Android蓝牙开发环境,到时候我会分享一些我踩过的坑,保证让你少走弯路。