
IoT产品之蓝牙设计
文章平均质量分 66
产品人卫朋
左手产品,右手技术。《硬件产品经理》作者,“人人都是产品经理”专栏作家,“阿里云”开发者社区专家博主
展开
-
嵌入式开发从入门到精通之第二十八节:CC254x实现BLE设备绑定
蓝牙开发原创 2023-07-14 09:52:31 · 295 阅读 · 0 评论 -
【IoT】ESP32 Arduino 超低功耗模式 Deep-sleep
背景:低功耗是对 IoT 产品的最基本要求,也是一款好产品走向市场的基础,功耗评估显得尤为重要。一、基础资源简析ESP32 支持 Deep-sleep 低功耗模式,通过配置 RTC 外设和 ULP 协处理器的工作模式,可以满足多种应用场景下的低功耗需求。在 Deep-sleep 模式时,所有由 APB_CLK 驱动的外设、CPU 和 RAM 将掉电,RTC_CLK 继续工作;RT...原创 2018-08-02 10:49:21 · 11892 阅读 · 3 评论 -
嵌入式开发从入门到精通之第二十二节:蓝牙芯片CC254x ADC 电压测量
ADC测量原创 2023-06-02 15:48:42 · 584 阅读 · 0 评论 -
嵌入式开发从入门到精通之第二十节:ESP32方案替代
ESP32开发预研究原创 2023-05-12 13:17:09 · 1209 阅读 · 0 评论 -
【IoT】加密与安全:CC254x 低功耗蓝牙 BLE 之 AES-128 加密算法
蓝牙数据是可以通过空中抓包而被抓取到的,因此需要将通信数据进行加密,即使别人截获了加密后的数据,也无法利用该数据。AES 加密原理CC254x 支持对称加密 AES:加密过程:需要加密的数据 A 与秘钥 KEY 进行一定的算法,获得加密过的数据 B。解密过程:加密过的数据 B 与秘钥 KEY 进行一定的逆运算算法,获得加密前的数据 A。因此,在 BLE 连接交互数据时,...原创 2019-01-11 19:01:00 · 4205 阅读 · 1 评论 -
【IoT】CC254x BLE 连接失败错误码汇总
#define bleInvalidTaskID INVALID_TASK // 非法的任务#define bleNotReady 0x10 // 未准备好连接#define bleAlreadyInRequestedMode 0x11 // 任务已...原创 2019-01-02 17:14:22 · 1629 阅读 · 0 评论 -
【IoT】WiFI、Zigbee和蓝牙通信技术对比解析
1、WIFIWIFI 是目前应用最广泛的无线通信技术,传输距离在 100~300M,速率可达 300Mbps,功耗 10-50mA。Wi-Fi 也是是一种短距离无线传输技术,可以随时接入无线信号,移动性强,比较适合在办公室及家庭的环境下应用。当然 Wi-Fi 也存在一个致命缺点:由于 Wi-Fi 采用的是射频技术,通过空气发送和接收数据,使用无线电波传输数据信号,比较容易受到外...原创 2019-02-13 14:41:30 · 22650 阅读 · 3 评论 -
【IoT】Android 各版本对 BLE 兼容支持汇总
1、Android 8.1/9在屏幕关闭之后,扫描会被暂停,如果需要在屏幕被关闭之后还继续进行扫描的话,需要在扫描配置那里,加入一个空的过滤器。如下:List<ScanFilter> filters = Collections.singletonList(new Builder().build());2、Android 8.0新的扫描方法,可以通过外设保活,http...转载 2019-03-05 14:04:40 · 3772 阅读 · 0 评论 -
【IoT】物联网时代无线通信协议种类
1、WIFI2.4G 以及 5G 频段,适合短距离大数据量传输,单品直接连接云端;适合智能硬件单品,不适合小范围密集终端应用,配网方式有瓶颈。2、BLE 蓝牙低功耗,小数据,短距离点对点传输,侧重于穿戴系统,4.2 版本以上已经有 Mesh 组网功能;不适合大数据量传输,云端通讯需要额外增加网关。3、ZigBee小数据量,低功耗组网双向通讯,智能家居应用居多,成熟方案可...原创 2019-02-26 16:46:41 · 2065 阅读 · 1 评论 -
【IoT】产品设计之 BLE 蓝牙连接不稳定的原因和处理方法
设计 BLE 相关产品时经常会遇到连接突然断开的情况,比如刚连接上就断开、连接成功之后传输数据随机断开。一般有四种原因:天线匹配、芯片兼容性、连接参数以及代码逻辑。1、天线匹配一般严格按照官方 DEMO 板的参考设计不会有什么问题,但为了适应自己板子的要求做了一些修改,会造成天线匹配问题、信号不稳定、信号范围小等问题,最终导致连接的不稳定。这个就需要做阻抗匹配、找天线厂家匹配天...原创 2019-05-21 18:24:01 · 8318 阅读 · 2 评论 -
【IoT】产品设计之 Android BLE 蓝牙连接异常
蓝牙 BLE 通信过程中异常很常见,大致有以下几种:1、连接连接失败可能是设备端原因,也可能是手机端原因。不同的手机来自不同的厂家,用的不同的芯片和蓝牙协议栈都会导致蓝牙功能的表现不一致,这都会导致各式各样的兼容性问题,可能有的手机连接成功率高,有的成功率低。设备端原因可能有些时候出现异常导致死机无响应,或某些参数设置得有问题。但对于 Android 应用层开发来说,能做的很有...原创 2019-05-22 09:17:01 · 3110 阅读 · 1 评论 -
【IoT】低功耗蓝牙:CC254x 修改 BLE 广播通道
1、BLE 协议栈PHY 层:1Mbps 自适应跳频 GFSK(高斯频移键控),运行在免证的 2.4GHz;LL 层为 RF 控制器(射频):控制设备处于准备(standby)、广播、监听/扫描(scan)、初始化、连接,这五种状态中任一种;HCI 层为接口层:向上为主机提供软件应用程序接口(API),对外为外部硬件控制接口,可以通过串口、SPI、USB来实现设备控制;...原创 2019-06-21 10:22:44 · 1305 阅读 · 1 评论 -
【IoT】BLE 蓝牙网关与蓝牙定位技术解析
1、蓝牙网关蓝牙网关又叫蓝牙探针,集成了 WiFi 和 BLE 蓝牙两种无线通信方式,WiFi 与 BLE 蓝牙之间通过串口通信,两种无线通信方式决定了蓝牙网关可以灵活地应用于各种场景。比如抓取 BLE 蓝牙设备的数据,再通过 WiFi 的方式转发到后台指定的服务器。蓝牙网关主要用于扫描蓝牙设备、iBeacon 设备,然后实现远程云管理。例如:远程控制 BLE 蓝牙设备,接收 ...原创 2018-12-25 11:25:01 · 11241 阅读 · 1 评论 -
【IoT】蓝牙 BLE 设备地址类型解析
一个 BLE 设备,可以使用两种类型的地址(一个 BLE 设备可同时具备两种地址):Public Device Address 和 Random Device Address。而 Random Device Address 又分为 Static Device Address 和 Private Device Address 两类。其中 Private Device Address 又可...转载 2018-12-25 10:01:48 · 4956 阅读 · 0 评论 -
【IoT】蓝牙 GAP 和 GATT 协议简析
文章背景:理论知识是实践开发的基础,对于产品研发来说更是如此,理论结合实践才可以开发出满足市场需求的稳定产品。1、基础简介1.1、profileprofile 可以理解为一种规范,一个标准的通信协议,它存在于蓝牙从机中(服务端);蓝牙组织规定了一些标准的 profile,例如 HID OVER GATT,防丢器,心率计等;每个 profile 中会包含多个 service,...原创 2018-07-08 13:55:17 · 14148 阅读 · 3 评论 -
【IoT】Arduino 实现 ESP32 BLE 与 Android 手机的数据交互
1、效果描述:通过简单的 Android APP 实现与 ESP32 的双向蓝牙通信。2、实现步骤Step 1:ESP32 硬件支持1、支持蓝牙 4.0 以上协议的安卓手机;2、支持 Micro USB 的 ESP32 dev board;Step 2:配置 Arduino IDE 环境1、下载 Arduino IDE:https://www.arduino.cc/en...原创 2018-07-07 11:39:41 · 19888 阅读 · 7 评论 -
【IoT】CC254x BLE 断连错误码定义
#define LL_STATUS_SUCCESS 0x00 // Success#define LL_STATUS_ERROR_UNKNOWN_CONN_HANDLE 0x02 // Unknown Connection Identifier#define LL_STATUS_ERROR_INA...原创 2018-06-13 16:44:17 · 5527 阅读 · 1 评论 -
【IoT】TI BLE 主从机数据交互过程-蓝牙 Notification 方式
1、Notification与Indication的区别GATT_Indication:从机通知主机后,主机需要调用simpleprofile_writeattrcb,读取从机的数据。GATT_Notification:从机直接发送数据给主机。从机和主机连接后,从手机端打开indication的功能,从机会调用simpleprofile_writeattrcb去通过GATTServA...原创 2017-07-12 17:12:30 · 8639 阅读 · 1 评论 -
【IoT】TI BLE CC2541 串口控制蓝牙详解
一、简介本文以SimpleBLECentral工程为例,介绍串口控制蓝牙。过程:扫描从机 - 根据从机号连接指定从机 - 获取RSSI值(信号强度) - 向char1写入特征值 - 断开连接二、实验平台协议栈版本:BLE-CC254x-1.3.2编译软件: IAR 8.20.2硬件平台: Smart RF开发板(主芯片CC2541)、USB DonglePC: 友善串口调...原创 2017-07-11 16:02:46 · 7304 阅读 · 2 评论 -
【IoT】Android/TI 蓝牙 profile 详解
1、TI BLE profile详解BLE 协议栈的 GATT 层是设计用于应用程序在两个连接设备之间的数据通信。从 GATT 层的角度看,当设备连接后,将充当一下两种角色中的一个:GATT Client —— 从 GATT 服务器读/写数据的设备GATT Server —— 包含客户端需要读/写的数据的设备GATT Client 和 Server 的角色完全独立于 BLE 的链路...原创 2017-07-12 17:09:13 · 6194 阅读 · 1 评论 -
【IoT】加密与安全:蓝牙 BLE 安全机制之 LE 加解密与 SMP 解析
虽然蓝牙协议支持的安全机制安全性一般,但仍然值得了解一下。BLE 的 LE 加密模式是由链路层(LL,Link Layer - 从安全和通信效率的角度)在发送/接收数据时完成加密/解密动作。1、数据加密/解密过程LE 加密/解密的过程如下图所示:Master/Slave 的 LE Host 会保存一个 LTK(Long Term Key,至少 128bits),对 BLE 应用...原创 2018-12-19 17:39:48 · 14508 阅读 · 2 评论 -
【IoT】BLE 广播的基础数据定义:广播名字类型和设备类型标志
BLE 实际广播 AD 数据区满足 LTV 格式,下面介绍的类型就是指数据 LTV 中的 T 字段。1、广播名字类型广播中的 name_type 字段:typedef enum{ BLE_ADVDATA_NO_NAME, /**< Include no device name in advertising data. */ BLE_ADV...原创 2018-12-19 18:11:49 · 5408 阅读 · 1 评论 -
【IoT】蓝牙 BLE 之 CC254x 特征值 character 解析
1、BLE 特征值相关基础1.1、BLE client 和 serverServer(服务器)就是数据中心,Client(客户端)就是访问数据者。但与主/从设备是独立的概念:主设备既可以充当 Server,又可以充当 Client,从设备亦然。Server 首先将一个服务按“属性/句柄/数值/描述”这种格式予以组织,然后调用 API 函数 GATTServApp_Registe...原创 2018-12-20 14:34:20 · 6195 阅读 · 1 评论 -
【IoT】经典蓝牙 BT 与低功耗蓝牙 BLE 区别
蓝牙 4.0 标准包括传统蓝牙部分和低功耗蓝牙模块部分。1、蓝牙模块蓝牙模块(Bluetooth module)是指集成蓝牙功能的芯片基本电路集合,用于短距离 2.4G 的无线通讯模块。对于终端用户来说,蓝牙模块是半成品,通过在模块的基础上做功能二次开发、封装外壳等工序,实现能够利用蓝牙通讯的最终产品。蓝牙模块的分类:按照应用和支持协议划分主要分为两种1)经典蓝牙模块(BT):...原创 2018-12-26 19:18:21 · 14274 阅读 · 1 评论 -
【IoT】CC2541 BLE 4.0 底层协议栈广播连接过程解析
1、主逻辑int main(void){ // 初始化时钟和使能缓存预取模式 HAL_BOARD_INIT(); // 冷启动,关闭 LED 与中断,避免接下来的各种初始化受干扰 InitBoard( OB_COLD ); // 各种驱动的初始化、如按键、lcd、adc、usb、uart 等 HalDriverInit(); // SNV 内部用于保...原创 2019-01-03 19:43:03 · 1729 阅读 · 1 评论 -
【IoT】BLE 协议栈和数据报文解析
1、协议栈:BLE 协议栈就是实现低功耗蓝牙协议的代码,理解和掌握 BLE 协议是实现 BLE 协议栈的前提。要实现一个 BLE 应用,首先需要一个支持 BLE 射频的芯片,然后还需要提供一个与此芯片配套的 BLE 协议栈,最后在协议栈上开发自己的应用。BLE 协议栈是连接芯片和应用的桥梁,是实现整个 BLE 应用的关键。那 BLE 协议栈具体包含哪些功能呢?简单来说,BL...原创 2018-12-03 19:11:45 · 4190 阅读 · 2 评论