智能硬件开发系列

  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,则发送前需要进行数据的切割分包。

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

1byte 1byte 1byte 1byte 1 - 15byte 1 byte
0xC4 Total packag Current package num Total data length app_code check
  • 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. 强大无匹的自定义下拉列表

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

智能硬件蓝牙配网方案概要相关推荐

  1. 【微信小程序控制硬件15 】 重认识无线物联网的配网协议,了解腾讯物联蓝牙协议LLSync SDK,腾讯连连小程序也可以蓝牙配网了。

    文章目录 一.配网的认识 1.1 各类Wi-Fi配网方式对比 1.2 设备热点配网 1.3 零配配网 1.4 蓝牙辅助配网 1.5 一键配网 1.6 手机热点配网 1.6 摄像头扫码配网 二.LLSy ...

  2. WIFI配网方案:1、蓝牙配网 2、WIFI自身配网 3、SmartConfig一键配网

    蓝牙配网: 顾名思义,通过蓝牙给WIFI配网,过程相对较为简单,首先设备上具有WIFI和蓝牙两种功能.然后通过手机的小程序或者APP连接产品蓝牙,连接之后发送WIFI连接所需要的SSID和PASSID ...

  3. 开源一个微信小程序,支持蓝牙配网+WiFi双控制ESP32-C3应用示范;(附带Demo)

    文章目录 一.前言 二. Blufi乐鑫自研的蓝牙配网协议 ESP32 配网流程 流程图 三.相关代码 3.1 蓝牙快速配网 3.2 蓝牙本地控制 2.3 外设驱动 3.1 蓝牙搜索 3.2 蓝牙服务 ...

  4. 乐鑫Esp32学习之旅 19 重磅开源,如何在微信小程序上ble蓝牙配网esp32,blufi的那些事!

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

  5. 智能开发——蓝牙宠物喂食器方案

    现在年轻人特别是在一.二.三线城市的,工作节奏快.加班.出差.旅游成常态,无法经常在宠物身边照看,宠物智能自动喂食机能够解放宠主的双手和解决不能长时间在处的无奈,很好地满足了年轻宠物主照顾宠物的需求. ...

  6. 微信小程序-蓝牙配网功能

    蓝牙配网-连接设备 注:这两天接手了一个设备运维端小程序,需要在上面加一个新功能,蓝牙配网,就是通过扫描设备二维码,拿到该设备的uuid.设备名等信息,然后通过蓝牙连接上该设备并往设备中写入数据.读取 ...

  7. 智能配网方案 Airkiss 技术原理介绍及应用

    写在前面 站在巨人的肩膀上,可以看得更远 一.什么是Air Kiss 可以说AirKiss 是微信硬件平台提供的一种WIFI硬件设备快速配置连接网络的技术,是一种创新性的信息传递技术.通过该技术可以便 ...

  8. 鼎铛有耳 智能硬件供应链新一代“网红”诞生 ——第三届HCFT智能硬件供应链大会品牌盛会颁奖典礼在深成功举办...

    2016年10月21日,由慧聪电子网.慧聪LED网.慧聪智能硬件网主办的第三届HCFT智能硬件供应链大会暨品牌盛会在深圳大中华喜来登酒店盛大开启,来自智能硬件产业链上中下游的众多企业代表.专业买家,行 ...

  9. 智能电网与配网自动化工程建设

    [导读] 智能电网是一项集计算机技术.数据传输.控制技术.现代化设备及管理于一体的综合信息管理系统,通常习惯称为电网自动化系统.智能电网建设的主要任务是重点推进智能化电气设备装备推广应用,实现电网管理 ...

最新文章

  1. 拨开云雾见天日:剖析单机事务原理
  2. 最详细的JavaScript和事件解读
  3. ascx页面获取标签的通用方法
  4. Silverlight.XNA(C#)跨平台3D游戏研发手记:(一)差集运算在SLG战斗范围设定中的应用...
  5. 汉字与区位码(2) - 分析
  6. 算法第四版课后习题答案 西安电子科技大学 计算机学院 算法课
  7. icmp判断可达_伪造目标不可达的ICMP数据包
  8. c语言ODBC连接数据库
  9. 湖北工业大学机械c语言考试试题,关于部分同学重新参加《C语言程序设计》、《计算机及网络应用基础》课程补考的通知...
  10. 2021-11-1-无法在此设备上激活WINDOWS因为无法连接到你的组织的激活服务器
  11. unity 导出 stl
  12. Irrational problem
  13. springboot使用logback
  14. 你为什么错过优质信息?
  15. 解读|Cocos新平台、新生态的行业意义
  16. 史上最简单的rar压缩包文档解密方法,rar压缩包权限密码如何解开?
  17. 创建一个简单的workflow工作流(WF4)
  18. Windows下将Tomcat8注册为系统服务
  19. CODING 敏捷实战系列课第一讲:正本清源——敏捷的为什么
  20. 稀疏矩阵的转置(矩阵转置和快速转置)

热门文章

  1. springSecurity之PasswordEncoder
  2. 三电平半桥LLC谐振变换器电路仿真 采用频率控制方式 引入一定的移相角度
  3. 0x03-无线局域网
  4. 俞敏洪的一分钟励志演讲
  5. Distributed System
  6. 怎么查看自己微信支付宝绑定银行卡号
  7. 【产业互联网周报】阿里将暂停阿里云美国扩张计划;协同办公领域硝烟又起,华为推WeLink,企业微信与微信打通;申通全面迁至阿里云...
  8. 合成大西瓜小游戏微信小程序源码
  9. 基于区块链技术的性能测试
  10. BME相关SCI期刊