智能硬件蓝牙配网方案概要

news2024/10/7 12:18:37

智能硬件开发系列

  1. Google Protobuf 实践使用开发
  2. 智能硬件蓝牙配网方案概要
  3. JNI开发必学C++基础
  4. JNI开发必学C++使用实践
  5. Android Studio 4.0.+NDK项目开发详细教学
  6. Android NDK与JNI的区别有何不同?
  7. Android Studio 4.0.+NDK .so库生成打包
  8. Android JNI的深度进阶学习
  9. Android Studio 4.0.+NDK开发 This files is not part of the project

智能硬件蓝牙配网

  • 前言
  • 设备配网流程
  • 蓝牙配网流程
    • 1. 蓝牙权限检查
    • 2. 蓝牙开关检查
    • 3. 蓝牙状态判断
    • 4. 蓝牙扫描配对
    • 5. 连接互联网
    • 6. 配网注册
  • 配网异常处理
    • 1. 配网失败
    • 2. 通信异常处理
  • 蓝牙数据分包
  • 其他配网方式
    • 1. AP配网(softAP模式)
    • 2. 二维码配网
    • 3. 声波配网
    • 4. 一键配网
  • 总结

博客创建时间:2023.03.19
博客更新时间:2023.03.24

以Android studio build=7.0.0,SDKVersion 31来分析讲解。如图文和网上其他资料不一致,可能是别的资料版本较低而已。


前言

设备配网: 设备接入互联网并与用户的账户进行绑定,如果没有云端后台配网只完成了一半。 只有将设备归属到用户的账户下,用户才能控制、获取信息,此即绑定。

配网与绑定应该是一起谈论的。因为硬件设备没有操作交互界面且无强大的操作系统,配网的重点是如何让硬件难道接入网络的参数信息。

配网目的
1)配网是让设备接入互联网
2)脱离了服务端,缺少设备和用户的绑定关系,单纯的手机与蓝牙模块连接通信的过程并不是配网。

关键字
配网ssid、pwd:设备需要连接的路由器或热点的网络名称和密码

设备配网流程

智能设备的配网流程基本是一致的,不管是蓝牙配网还是AP或其他配网方式,大体步骤一样。

  1. 首先设备需要进入可配网状态,智能硬件一般需要经过某些步骤能恢复到可配网状态
  2. 智能硬件和手机APP之间建立连,连接方式可以是wifi或者蓝牙等多方式
  3. 连接建立成功后,将网络的ssid、pwd、证书、配网token等配网信息传输给智能硬件
  4. 智能硬件拿到信息参数后,通过WiFi模块或者4G、5G模块等方式连接互联网,然后在服务端中进行注册与用户进行关系绑定,配网完成
    在这里插入图片描述

蓝牙配网流程

个人总结蓝牙配网的操作步骤分为如下几步:

  1. 开始配网,App功能页面中点击功能按钮,开始蓝牙配网流程
  2. App进行蓝牙权限检查,蓝牙权限授予成功进入下一步,授予不成功则进行弹框提示
  3. 蓝牙开关检查,蓝牙不可用则提示用户打开蓝牙,蓝牙未打开则通过代码打开蓝牙
  4. 手机蓝牙状态判断,如果手机已与目标设备建立连接则算蓝牙配对成功,否则手机需要进行蓝牙的扫描用户手动配对连接
  5. 蓝牙扫描配对,当前面各种逻辑走过需要蓝牙扫描配对时,需要用户主动点击按钮发起蓝牙扫描和配对。
    蓝牙扫描配对后,可能出现未扫描到设备、配对失败、配对成功等多种情况,App针对各情况进行对应处理
  6. 设备接入互联网,设备与APP建立通信连接后,app将配网信息(网络连接信息和配网token)传递给设备,设备会先连接互联网
  7. 配网注册,设备连接到互联后,然后在服务后台中进行注册(如涂鸦或自研服务器),注册成功后通知到APP,那么配网流程就走完了
    在这里插入图片描述

1. 蓝牙权限检查

蓝牙的配对连接能成功对Android 6.0及以上有一个前提条件:要有蓝牙权限和位置定位开启。
蓝牙权限检查不通过,不能进行蓝牙的其他操作。检查不通过的原因应该弹出提示给用户
在这里插入图片描述

位置权限
在Android 高版本中,蓝牙扫描需要打开位置定位开关,打开后蓝牙才能进行扫描设备。 定位开关Android中需要跳转到系统页面进行打开

权限申请顺序
蓝牙权限授予后,才继续进行定位开关的打开,如果蓝牙权限未授权,后续操作无意义。

2. 蓝牙开关检查

蓝牙使用中,蓝牙必须是开启状态,才能进行后续操作,否则其他操作无意义。检测蓝牙是否开启前需要进行蓝牙权限授权,通过方可进行后续。
在这里插入图片描述
蓝牙硬件可用判断
用户的手机各种各样,有可能使用中蓝牙模块已经损坏,在使用时可以进行判断并进行必要的提示。


3. 蓝牙状态判断

当进行手机蓝牙配对连接时,当前面的流程已经走过后,可能需要先判断一下蓝牙是否已经连接成功且是与目标设备建立的连接,如果是则可以直接判定蓝牙配对连接成功,否则需要进行扫描重新配对连接。
在这里插入图片描述

4. 蓝牙扫描配对

当蓝牙已检查开启可用且获得权限后,可以进行蓝牙的扫描,并计划进行配对连接。蓝牙配对成功是执行后续智能硬件配网的前提。
在这里插入图片描述
蓝牙搜索
蓝牙搜索会在一定时间内进行结果反馈,搜索结束后会出现两种情况:
1)搜索到设备:设备可能有一个或多个被扫描到
2)未搜索到设备:此时搜索页面会提示未搜索到设备,用户可以排查后重新搜索。

5. 连接互联网

当设备和APP建立连接后,接下来就可以进行设备接入网络的操作了。
1)App通过蓝牙连接向设备发送获取wifi列表指令
3)当设备得到WiFi扫描指令后,会自动进行Wifi扫描并将结果反馈给App,App获取Wifi列表
4)App获得wifi列表后选择一条可访问互联网WiFi热点,将热点的ssid和密码、配网token等信息传输给设备
5)设备在获取到可用准确的配网信息后,会先连接如路由器热点接入互联网
在这里插入图片描述
发送获取wifi列表指令
App发送指令给设备,获取设备的可用wifi列表信息。此流程中需要注意如下几点
1)过程中需要进行蓝牙连接状态的判断,此时蓝牙是连接状态设备才能收到指令
2)该指令设备可能由于某些原因未收到,需要采取机制进行判定,然后提示用户重新发送指令

6. 配网注册

设备连接互联网成功后,就可以进行将设备信息注册到服务平台,同时通知注册结果到APP。设备进行服务端注册是为了让设备和APP用户间形成绑定关系,方便绑定的用户控制设备,排除其他指令干扰
在这里插入图片描述


配网异常处理

1. 配网失败

常见的配网失败原因可能有如下:

【注1】蓝牙配对不成功
蓝牙配对过程中,可能会失败,配对失败后进行最多3次的重连,如重连3次后还没成功,则提示用户可能的失败原因,让用户排查后,重新发起 蓝牙扫描配对 流程,
1)设备或手机 蓝牙已关闭
2)设备蓝牙可能已与其他设备连接
3) 手机或设备的蓝牙硬件已损坏

【注2】 ** 无法获取wifi列表**
手机软件未接收到蓝牙可用wifi列表,可能是wifi信号太弱、设备硬件故障。 此无可用Wifi列表返回的情景,通信中硬件应给软件反馈一个异常resultCode

【注3】 扫描不到wifi的特定原因
根据【注1】中的resultCode判定,如果是类似wifi信号太弱,硬件偶发性故障造成的 设备扫描可用wifi列表失败,此时是应该允许设备重新扫描wifi,并将信息再次传递给手机软件

【注4】 wifi连接不上原因
1)配网信息包括wifi的ssid、pwd、后台域名、uid及配网code等基础信息错误
2)wifi模块是否损坏
3)连接时,wifi热点是否已关闭

2. 通信异常处理

在设备与App进行蓝牙通信过程中,很多操作指令及操作回调都需要在蓝牙通信连接成功且可正常通信的前提下,否则可能出现指令操作一直无响应,用户傻等的情况。对于解决方案一般有如下解决方案

  1. 指令进行响应超时处理,发送某些指令后如果在指定时间内无响应反馈,则判定操作失败,需要先检测通信链路是否正常,然后根据需要进行处理
  2. 当通信链路正常,但是反馈操作失败时,可以采取重试操作,当然要限制重试次数,超过如3次,操作依然失败则结束操作

蓝牙数据分包

因为蓝牙BLE数据传输比较小,如果硬件不支持扩大,一般支持20byte大小的数据。如果指令数据数据在APP<—>BLE BT过程中数据超过20byte,则发送前需要进行数据的切割分包。

在蓝牙数据传输过程中,如突然断开链接等特殊情况,可能会有蓝牙数据的丢包,所以蓝牙数据分包时应该有一定的规则和校验机制 。如:

1byte1byte1byte1byte1 - 15byte1 byte
0xC4Total packagCurrent package numTotal data lengthapp_codecheck
  • Total package: 数据总包数
  • Current package num:当前包index,从0x00开始编号;
  • Total data length:数据总长度
  • data:改包有效数据
  • check_sum:CRC校验

其他配网方式

1. AP配网(softAP模式)

优点:稳定、快速,成功率高,成功率接近100%
缺点:流程相对较长,耗时

主要流程:

  1. 设备进入 AP 模式(开机自动建立或按键操作)并且建立一个 AP 热点(设备说明书或者机身标签贴上会写明人点的 SSID 和 Password)
  2. 用户手动在手机 Wi-Fi 设置中输入设备热点的 SSID 和 Password 与设备建立局域网连接
  3. 用户在 App 中输入要连接的路由器 SSID 和 Password 并发送给设备,设备切换到 station 模式(即终端模式)并连接路由器
  4. 用户手动将手机 Wi-Fi 网络切回到当前的路由网络中等待设备入网。

2. 二维码配网

优点: 配网方便新颖,流程简单
缺点: 需要摄像头,加大成本
二维码配网的方式,是将硬件获取网络ssid、pwd等信息的方式由扫二维码获取得到。
无法复制加载中的内容

3. 声波配网

使用声波通信来实现wifi配网其实很简单,其核心就是把wifi热点的名字和密码通过声波传输给智能硬件,然后智能硬件通过wifi热点的名字和密码连接wifi热点从而完成wifi配网

流程:

  1. 在手机中安装智能硬件的app。
  2. 打开app,输入wifi热点名字和密码,点击自动配网按钮。这时app会通过声波库把wifi热点名和密码编码成声音播放出去,循环播放。
  3. 开启智能硬件,按下配网键,这时智能硬件开始录制声音,并把录制到的声音交给声波库去解码,解码成功后得到wifi热点名和密码,然后停止录音。
  4. 智能硬件使用wifi热点名和密码连接wifi热点,进行平台注册配网

优点:

  1. 操作简单。成本低。仅需智能硬件端支持录音模块就可以了
  2. 兼容性好。市面上绝大多数智能硬件都可以使用声波配网。
  3. 成功率高。声波的识别率比较高,一般在98%以上。
  4. 趣味性强。可以使用定制的声波,比如狗叫,猫叫,窍门声等作为传输用户名和密码的媒介,进一步增加智能硬件的附加值。
    缺点:
  5. 声波通信的有效距离一般小于10米,所以范围比较有限。

4. 一键配网

  1. APP直接连接到路由,将将ssid和pwd及自定义的一些信息编码,以UDP报文格式通过广播包或组播包发送
  2. 智能设备进入Sniffer模式抓取空气中的广播或者组播包。
  3. 抓包成功后,解析得到正确的ssid和pwd及自定义信息,然后连接路由。
  4. APP广播发现设备,配网完成。
    在这里插入图片描述

优点:
5. 速度快、操作简单

缺点:
6. 成功率低,主要不同厂商WiFi兼容性很差,比如有的路由器能够发广播包、有的WiFi Soc芯片不能抓到广播包,适合定制系统的toB产品,不适合toC产品


总结

智能硬件配网不管是蓝牙、AP还是其他方式,配网的核心目的和手法是不变的,都是将可用网络的ssid 和 密码告诉智能硬件,使固件能在服务端进行注册实现固件和用户之间的一一绑定关系


相关链接

  1. Google Protobuf 实践使用开发
  2. 智能硬件蓝牙配网方案概要
  3. JNI开发必学C++基础
  4. JNI开发必学C++使用实践
  5. Android Studio 4.0.+NDK项目开发详细教学
  6. Android NDK与JNI的区别有何不同?
  7. Android Studio 4.0.+NDK .so库生成打包
  8. Android JNI的深度进阶学习
  9. Android Studio 4.0.+NDK开发 This files is not part of the project

扩展链接:

  1. Lottie动画 轻松使用
  2. PNG、JPG等普通图片高保真转SVG图
  3. Android 完美的蒙层方案
  4. Android MMKV框架引入使用
  5. 强大无匹的自定义下拉列表

博客书写不易,您的点赞收藏是我前进的动力,千万别忘记点赞、 收藏 ^ _ ^ !

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/412668.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Leetcode】题库-爽刷简单题(1)

目录 写在前面&#xff1a; 题目&#xff1a;67. 二进制求和 - 力扣&#xff08;Leetcode&#xff09; 解题思路&#xff1a; 代码&#xff1a; 过过过过过过啦&#xff01;&#xff01;&#xff01;&#xff01; 题目&#xff1a;83. 删除排序链表中的重复元素 - 力扣&a…

linux之jdk1.8环境安装与配置和Maven安装与配置

文章目录一、jdk1.8环境安装1、官网下载&#xff1a;<https://www.oracle.com/java/technologies/downloads/#java8>2、在usr文件夹下新建一个java文件夹3、解压完成后&#xff0c;将文件jdk文件传入到java目录下二、配置环境&#xff08;重点&#xff09;1、按 i 进行编…

docker环境下搭建rocketmq集群

rocketmq是一个分布式消息中间件&#xff0c;分布式的意思就是多台机器可以通过网络连接协同工作&#xff0c;因此rocketmq可以运行在多台机器上&#xff0c;以达到超越单机的服务能力。rocketmq的架构图如下所示 我们首先搭建一个最小的rocketmq集群&#xff0c;需要启动一个n…

MySQL安装配置与连接Navicat

本文详细记录win11系统MySQL安装配置与Navicat连接过程&#xff0c;每个知识点都解释了&#xff0c;不止安好了&#xff0c;你还学懂了&#xff01;你不知道选择哪个版本&#xff0c;不知道参数啥意思&#xff0c;不知道哪种安装方式好&#xff1f;这里都有答案&#xff01;&am…

最大二叉树

1题目 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点&#xff0c;其值为 nums 中的最大值。 递归地在最大值 左边 的 子数组前缀上 构建左子树。 递归地在最大值 右边 的 子数组后缀上 构建右子树。 返回 nums 构建的 最…

六、Locust之TaskSets详解

​ TaskSets是一种结构化测试分层网站/系统的方法。你可以在这里阅读更多关于它的信息。 1.TaskSet class ​ 如果你正在对一个以分层方式构建的网站进行性能测试&#xff0c;有章节和子章节&#xff0c;以同样的方式构建你的负载测试可能是有用的。 ​ 为了这个目的&#x…

全终端办公电子邮件集成方案

面临挑战 应用场景复杂&#xff0c;经常需要在不同终端进行切换&#xff0c;多屏、跨屏及移动办公要求高&#xff1b; 业务系统较多&#xff0c;需要同时支持多种业务的开展&#xff0c;对第三方应用集成及协同办公要求高&#xff1b; 对邮件系统的稳定及高效性要求高&#x…

【Linux】线程中的互斥锁、条件变量、信号量(数据安全问题、生产消费模型、阻塞队列和环形队列的实现)

文章目录1、线程互斥1.1 线程间频繁切换导致的问题1.2 使用互斥锁1.3 互斥锁的原理1.4 线程中的数据安全问题2、线程同步之条件变量2.1 生产消费模型2.2 条件变量概念和调用函数2.3 阻塞队列的实现3、线程同步之信号量3.1 理解信号量3.2 信号量接口3.3 环形队列的实现4、小结1、…

[golang gin框架] 23.Gin 商城项目-前台templates模板分离,首页,顶部导航,轮播图 左侧分类数据渲染

一.首页界面展示以及项目结构分析首页界面展示项目结构分析二.代码展示首页相关模型首页相关模型如下:[golang gin框架] 21.Gin 商城项目-导航模块功能[golang gin框架] 17.Gin 商城项目-商品分类模块, 商品类型模块,商品类型属性模块功能操作[golang gin框架] 16.Gin 商城项目…

2023中国程序员薪酬报告出炉,你拖后腿了吗?

程序员薪资高已是公认的事实&#xff0c;但是具体高到什么程度呢&#xff1f;近期&#xff0c;全球人力服务公司 Michael Page Internatioal 就发布了《2023 中国大陆薪酬报告》&#xff0c;揭示了中国程序员的薪酬情况。 该报告中一共调研了国内 7 个行业以及 6 大城市不同职…

Doris的基本概述

目录 Doris是什么 使用场景 技术概述 Doris是什么 由百度大数据部研发&#xff0c;之前加做百度palo&#xff0c;20118年共享到Apache社区后&#xff0c;更名Doris一个现代化的MPP分析型数据库产品 支持压秒级别响应架构非常简洁&#xff0c;易于运维支持10PB以上的超大数据…

企业数字化转型全是坑?这几篇数字化转型成功案例,减少70%损失

这篇给大家整理了200企业数字化转型案例合集&#xff0c;涵盖了制造、建筑、教育、零售、互联网等10行业的大中小型企业数字化转型思路&#xff0c;希望对大家有所帮助。 案例全部整合在这篇文章中&#xff0c;点击即可查看>>数字化干货资料合集&#xff01; 01 首先&…

【FineReport】帆软报表平台的安装与连接 SAP HANA 数据库

【FineReport】帆软报表平台的安装与连接 SAP HANA 数据库1、下载帆软2、安装软件3、连接HANA4、访问数据1、下载帆软 &#xff08;1&#xff09;帆软最新版本软件下载地址&#xff1a;https://www.finereport.com/product/download 此处&#xff0c;以下载FineReport v11.0 …

设计模式 : 构造型 —— 单例模式

单例模式 Creational Patterns/Singleton.md belien/DesignPattern-23 (gitee.com) Singleton Pattern&#xff0c;属于创建型设计模式&#xff0c;这种模式涉及到一个单一的类&#xff0c;该类负责创建自己的对象&#xff0c;同时确保只有单个对象被创建&#xff0c;这个类提…

PHY- PHY芯片概述

1 PHY概述 关于Internet Protocal的分层模型可以参考文章 :【Internet Protocal-OSI模型中的网络分层模型】,下面我们讲讲底层以太网控制器和收发器的知识。其主要是处理OSI模型中的物理层和链路层的事情。 在CAN/CANFD、FlexRay等总线中,有控制器Controller和收发器Transc…

【三十天精通Vue 3】第五天 Vue 3指令详解

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: 三十天精通 Vue 3 文章目录引言一、Vue 3 指令概述1.1 指令的简介1.2 指令的分类1.3 指令的语…

基于消息调度优化启动速度方案实践

背景 在抖音的技术博客 https://juejin.cn/post/7080065015197204511#heading-10中&#xff0c;其介绍了通过修改消息队列顺序实现冷启动优化的方案&#xff0c;不过并未对其具体实现展开详细说明。 本文是对其技术方案的思考验证及实现。 详细代码见github: https://github.c…

PMO在企业项目管理中起到的重要性

在现代企业中&#xff0c;项目管理助力企业在激烈的市场竞争中获得成功&#xff0c;而这需要一个专业化的项目管理办公室&#xff08;PMO&#xff09;来确保项目的顺利实施。在企业项目管理中&#xff0c;PMO扮演着至关重要的角色&#xff0c;下文我们将对其的重要作用进行探讨…

docker+jenkins+maven+git构建聚合项目,实现自动化部署,走了800个坑

流程 主要的逻辑就是Docker上安装jenkins&#xff0c;然后拉取git上的代码&#xff0c;把git上的代码用Maven打包成jar包&#xff0c;然后在docker运行 这个流程上的难点 一个是聚合项目有可能Maven install的时候失败。 解决办法&#xff1a;在基础模块的pom文件上添加 <…

【配电网故障重构SOP】基于二阶锥松弛的加光伏风机储能进行的配电网故障处理和重构【考虑最优潮流】(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…