物联网无线技术LoRa、Wi-Fi、ZigBee、NB-IoT、蓝牙5.0技术盘点

物联网无线技术LoRa、Wi-Fi、ZigBee、NB-IoT、蓝牙5.0技术盘点,第1张

LoRa

LoRa(长 距离)是由Semtech公司开发的一种技术,典型工作频率在美国是915MHz,在欧洲是868MHz,在亚洲是433MHz。LoRa的物理层 (PHY)使用了一种独特形式的带前向纠错(FEC)的调频啁啾扩频技术。这种扩频调制允许多个无线电设备使用相同的频段,只要每台设备采用不同的啁啾和 数据速率就可以了。其典型范围是2km至5km,最长距离可达15km,具体取决于所处的位置和天线特性。

LoRa芯片在整个产业链中处于基础核心地位,重要性不言而喻。值得注意的是,目前美国Semtech公司是LoRa芯片的核心供应商,掌握着LoRa底层技术的核心专利。而Semtech的客户主要有两种,一是获得Semtech LoRa芯片IP授权的半导体公司;二是直接采用Semtech芯片做SIP级芯片的厂商,包括微芯 科技 (Microchip)等。

Wi-Fi

Wi-Fi被广泛用于许多物联网应用案例,最常见的是作为从网关到连接互联网的路由器的链路。然而,它也被用于要求高速和中距离的主要无线链路。

大多数Wi-Fi版本工作在24GHz免许可频段,传输距离长达100米,具体取决于应用环境。流行的80211n速度可达300Mb/s,而更新的、工作在5GHz ISM频段的80211ac,速度甚至可以超过13Gb/s。

一 种被称为HaLow的适合物联网应用的新版Wi-Fi即将推出。这个版本的代号是80211ah,在美国使用902MHz至928MHz的免许可频段, 其它国家使用1GHz以下的类似频段。虽然大多数Wi-Fi设备在理想条件下最大只能达到100米的覆盖范围,但HaLow在使用合适天线的情况下可以远达1km。

80211ah 的调制技术是OFDM,它在1MHz信道中使用24个子载波,在更大带宽的信道中使用52个子载波。它可以是BPSK、QPSK或QAM,因此可以提供宽 范围的数据速率。在大多数情况下100kb/s到数Mb/s的速率足够用了——真正的目标是低功耗。Wi-Fi联盟透露,它将在2018年前完成 80211ah的测试和认证计划。

针对物联网应用的另外一种新的Wi-Fi标准是80211af。它旨在使用从54MHz到698MHz范围内的电视空白频段或未使用的电视频道。这些频道 很适合长距离和非视距传输。调制技术是采用BPSK、QPSK或QAM的OFDM。每个6MHz信道的最大数据速率大约为24Mb/s,不过在更低的 VHF电视频段有望实现更长的距离。
ZigBee

ZigBee,也称紫蜂,是一种低速短距离传输的无线网上协议,底层是采用IEEE 802154标准规范的媒体访问层与物理层。主要特色有低速、低耗电、低成本、支持大量网上节点、支持多种网上拓扑、低复杂度、快速、可靠、安全。ZigBee是物联网的理想选择之一。

虽然ZigBee一般工作在24GHz ISM频段,但它也可以在902MHz到928MHz和868MHz频段中使用。在24GHz频段中数据速率是250kb/s。它可以用在点到点、星形和网格配置中,支持多达254个节点。与其它技术一样,安全性是通过AES-128加密来保证的。ZigBee的一个主要优势是有预先开发好的软件应用配 置文件供具体应用(包括物联网)使用。最终产品必须得到许可。

ZigBee技术所采用的自组织网是怎么回事?举一个简单的例子就可以说明这个问题,当一队伞兵空降后,每人持有一个ZigBee网络模块终端,降落到地面后,只要他们彼此间在网络模块的通信范围内,通过彼此自动寻找,很快就可以形成一个互联互通的ZigBee网络。而且,由于人员的移动,彼此间的联络还会发生变化。因而,模块还可以通过重新寻找通信对象,确定彼此间的联络,对原有网络进行刷新。这就是自组织网。

NB-IoT

窄带物联网(Narrow Band Internet of Things, NB-IoT)成为万物互联网络的一个重要分支。NB-IoT构建于蜂窝网络,只消耗大约180KHz的带宽,可直接部署于GSM网络、UMTS网络或LTE网络,以降低部署成本、实现平滑升级。

NB-IoT是IoT领域一个新兴的技术,支持低功耗设备在广域网的蜂窝数据连接,也被叫作低功耗广域网(LPWAN)。NB-IoT支持待机时间长、对网络连接要求较高设备的高效连接。据说NB-IoT设备电池寿命可以提高至少10年,同时还能提供非常全面的室内蜂窝数据连接覆盖。

蓝牙50

蓝牙是一种无线传输技术,理论上能够在最远 100 米左右的设备之间进行短距离连线,但实际使用时大约只有 10 米。其最大特色在于能让轻易携带的移动通讯设备和电脑,在不借助电缆的情况下联网,并传输资料和讯息,目前普遍被应用在智能手机和智慧穿戴设备的连结以及智慧家庭、车用物联网等领域中。新到来的蓝牙 50 不仅可以向下相容旧版本产品,且能带来更高速、更远传输距离的优势。

您好,树莓派和手机之间的蓝牙通信速度取决于多种因素,包括设备的蓝牙版本、距离、干扰等。通常情况下,树莓派和手机之间的蓝牙通信速度可以达到每秒1Mbps,最高可达3Mbps。但是,如果两个设备之间的距离超过10米,蓝牙通信速度会显著降低,最低可达每秒01Mbps。此外,如果环境中有干扰,如其他蓝牙设备或者Wi-Fi设备,蓝牙通信速度也会受到影响。

做安卓手机APP通常使用高端大气的Android Studio,开发语言是Java,该开发IDE就是体积大
学习成本高,入手慢,这里给大家推荐一款国产的软件,体积小,运行和编译速度快。最重要的是编程语言是中文
这个软件就是E4A
本次我将向大家介绍如何使用E4A开发BLE蓝牙手机上位机APP。
当然,该软件自带了丰富的例子,也提供了一个BLE例子,大家可以借鉴。
由于没有提供各种库的说明文档和帮助文件,学这个软件可能有经过一段摸索,这里我将向大家介绍我在开发这个软件中
获得的经验。
中文编程语言:易语言,采用中文作为关键字,但是编程的语法和思想和C语言是类似的
为了方便理解,这里我结合单片机开发的思路简单介绍一下
变量要声明类型
对象 *** 作的函数称为:方法
对象可触发的中断函数称为:事件
对象可设置的参数称为:属性
-----------------------------------------------------------------------------------------
好接下来介绍 BLE蓝牙库
BLE(Bluetooth Low Energe)低功耗蓝牙设备主要用于智能穿戴和物联网。
BLE蓝牙类库,包含两种 *** 作:方法和事件
方法:

初始化

置可被发现

开始搜索

停止搜索

连接设备

断开连接

释放资源

是否可读

是否可写

是否可通知

读取数据

写入数据

事件:

创建完毕

发现设备

信号强度改变

发现服务

连接状态改变

读取数据完毕

通道数据改变
由于不存在可见的对象,因此蓝牙没有属性设置。
了解方法和事件的用法可通过左侧类库目录选中对应的条目,在下面的提示信息中查看
例如选中BLE蓝牙库的方法 初始化 条目后:
方法:初始化()为 逻辑型
分类:BLE蓝牙类库---BLE蓝牙
注释:初始化BLE蓝牙设备,成功返回真,失败返回假,BLE蓝牙需要安卓43以上系统的支持。
另外 事件类似中断函数,因此在代码中没有先后顺序,可以根据易读的排列顺序进行排版。
所有的动作均属于触发的事件,因此,方法通常在事件里面进行调用。
自己创建的函数,需要自己实现该函数的具体过程,因此函数在这里称为:过程
不过我们这里做BLE蓝牙APP可以不用到过程。
好了,基本的概念已经介绍了,我们可以开始整了。
-----------------------------------------------------------------------------------------
第一步,先根据我们的需要完成可视化的组件布局,并给添加的组件起上一个跟 *** 作相关的名字,在组件的属性对话框设置,同时可以设置组件的其他相关属性。

第二步,使用中需要完成单击响应的,我们可以在设计区直接双击组件,即可自动在代码区生成一个空的事件(类似单片机开发中的中断处理函数,用于响应单击事件),例如四个方向键的单击事件。以下代码我已经填充了单击后执行的蓝牙方法:写入数据,即发数据给连接到手机的蓝牙模块。
事件 按钮上被单击()

BLE蓝牙1写入数据(服务UUID,通道UUID,文本到字节("上\n","GBK"))

结束 事件
事件 按钮下被单击()

BLE蓝牙1写入数据(服务UUID,通道UUID,文本到字节("下\n","GBK"))

结束 事件
事件 按钮左被单击()

BLE蓝牙1写入数据(服务UUID,通道UUID,文本到字节("左\n","GBK"))

结束 事件
事件 按钮右被单击()

BLE蓝牙1写入数据(服务UUID,通道UUID,文本到字节("右\n","GBK"))

结束 事件
第三步,完成主窗口的创建工作,因为我们要使用蓝牙库,所以我们可以在APP启动后就申请使用蓝牙的权利,并初始化一个蓝牙对象。
另外就是要实现软件退出的 *** 作,所以我们可以设置一个退出的按钮,实现结束程序。内容如下。
事件 主窗口创建完毕()

'安卓60以上的系统需要动态申请权限,否则app可能无法正常运行

如果 权限 *** 作1取系统版本号()>=23 则

权限 *** 作1申请全部权限()

结束 如果

变量 结果 为 逻辑型

结果 = BLE蓝牙1初始化()

d出提示("初始化结果:" & 结果)

结束 事件
事件 权限 *** 作1申请完毕(权限数组 为 文本型(),申请结果 为 整数型())

'可以把需要特殊权限的代码写在此处,当申请权限成功后再执行相关代码

结束 事件
事件 框_返回被单击()

结束程序()

结束 事件
第四步,实现蓝牙设备的搜索,从搜索到的蓝牙信号中选出我们要的那个,另外在搜索的过程中显示信号的强度
通过按钮单击实现搜索与停止搜索,并设定搜索时间为10秒,10秒后自动停止搜索。
通过发现设备事件,读取搜到的设备,并匹配名称是否为自己要找的信号。这里我内置了信号名称,也可以通过一个输入框,实现敏感信号名称的修改
如果发现的设备名称是指定名字的信号,就将名称和地址写入到列表框的项目,同时给项目做个编号和标记,方便后面取出
使用信号强度改变事件读取搜索中的信号强度,我们只读取感兴趣的那个名字的信号。
当列表中出现我们感兴趣的那个信号名称和地址时候,我们可以单击列表中的该项,触发连接设备,实现手机与蓝牙模块的连接。
同时通过颜色和文字提示是否连接上或者断开了。这可以使用BLE蓝牙对象的连接状态改变事件实现。
事件 搜索按钮被单击()

如果 搜索按钮标题 = "开始搜索" 则

位置传感器1开始监测()

BLE蓝牙1开始搜索()

时钟1时钟周期 = 101000

搜索按钮标题 = "停止搜索"

否则

BLE蓝牙1停止搜索()

时钟1时钟周期 = 0

搜索按钮标题 = "开始搜索"

结束 如果

结束 事件
事件 时钟1周期事件()

BLE蓝牙1停止搜索()

搜索按钮标题 = "开始搜索"

时钟1时钟周期 = 0

结束 事件
事件 BLE蓝牙1发现设备(名称 为 文本型,地址 为 文本型,MajorID 为 整数型,MinorID 为 整数型,配对状态 为 整数型)

如果 名称 = "BT24" 则

'屏蔽掉没有名称的蓝牙设备
d出提示("发现设备")

列表框1添加项目("名称:" & 名称 & "\n地址:" & 地址)

列表框1置项目标记(列表框1取项目数()-1,地址)

结束 如果

结束 事件
事件 BLE蓝牙1信号强度改变(名称 为 文本型,地址 为 文本型,信号强度 为 整数型)

如果 名称 = "BT24" 则

列表框1置项目内容(0,"名称:" & 名称 & "\n地址:" & 地址 & "\n信号:" & 信号强度)

结束 如果

结束 事件
事件 列表框1表项被单击(项目索引 为 整数型)

设备地址 = 列表框1取项目标记(项目索引)

BLE蓝牙1连接设备(设备地址)

'BLE蓝牙1连接设备(列表框1取项目标记(项目索引))

d出提示("正在连接")

连接状态标题 = "正在连接"
结束 事件
事件 BLE蓝牙1连接状态改变(状态 为 整数型)

如果 状态 = 1 则

连接状态标题 = "已连接"

连接状态背景颜色 = 绿色

否则

连接状态标题 = "已断开"

连接状态背景颜色 = 红色

结束 如果

结束 事件
第五步,通过服务提供的通道进行数据传输
连接上蓝牙模块后,就要建立通信的通道了,这需要通过服务来完成,因此我们要对连接的蓝牙模块索取服务的 *** 作
这称为发现服务 事件,由于蓝牙模块中有多个服务可选,我们要找到我们可以进行通信的那个,这个通常在模块的手册也给了相关的短ID
称为服务UUID,每个服务又含有若干个通道UUID。因为模块的出厂设定,只有能用的那个服务才能通信,其他的服务是不可完全可读写的
在产生BLE蓝牙的发现服务事件后,会自动获取到服务的所有信心,装载到一个名字叫:服务信息的集合里,这个集合类型你就当类似C语言结构体数组的东西。
接下来为了验证每个服务是否可读写,就要一个一个测试,这类似,从一个结构体数组先一个一个读出来数组的元素,在数组元素的结构体里取结构体成员,
这就需要用到两层的for循环了,E4A 的for循环用一对 判断循环首---判断循环尾,进行包围。为了方便记,你可以给循环的变量起名字:i,j
然后就是测试对应的服务与通道是否可读,可写,可通知。如果三者都满足,那就是我们要找的通道,实际上,在多组的服务中,只有厂家指定的那组是
满足这三个条件的。其他的一般只能满足可读这一条。
找到合适的服务与通道后,想实现数据的接收,要执行 读取数据的方法,如果直接读,那么系统没有准备好呢,会导致读失败,后面就容易卡死。
这里就像初始化完单片机,要给系统以反应时间,等待个几百毫秒,然后再进行后面的 *** 作一样。
这里就要用到定时器了,找到服务与通道后执行一个1000ms定时器的启动 *** 作,在定时器计数满了之后的事件中执行读取数据的方法,
同时接收框显示服务和通道的ID,并关闭定时器。
事件 BLE蓝牙1发现服务(服务信息 为 集合)

如果 服务信息取项目总数() < 0 则

退出

结束 如果
变量 i 为 整数型

变量 j 为 整数型

变量 信息数组 为 文本型()
i = 0
判断循环首 i < 服务信息取项目总数()

信息数组 = 服务信息取项目(i)

j = 0

判断循环首 j < 取数组成员数(信息数组)

如果 j >0 则

如果 BLE蓝牙1是否可读(信息数组(0),信息数组(j)) = 真 且 BLE蓝牙1是否可写(信息数组(0),信息数组(j)) =真 且 BLE蓝牙1是否可通知(信息数组(0),信息数组(j)) =真 则

服务UUID = 信息数组(0)

通道UUID = 信息数组(j)

'BLE蓝牙1读取数据(服务UUID,通道UUID)

'接收框内容 = 服务UUID &"\n"& 通道UUID

时钟2时钟周期 = 1000

结束 如果

结束 如果

j = j + 1

判断循环尾

i = i + 1

判断循环尾

结束 事件
事件 时钟2周期事件()

BLE蓝牙1读取数据(服务UUID,通道UUID)

接收框内容 = 服务UUID &"\n"& 通道UUID

时钟2时钟周期 = 0

结束 事件
执行完读取 *** 作后,系统会在通道内有数据发送来的时候触发通道数据改变的事件,在该事件中我们读取数据,另外也会触发读取完毕的事件
发送数据是通过单击发送按钮触发写入数据方法实现的,当完成写入后可通过写入数据完毕事件知道是否发送成功。
事件 BLE蓝牙1读取数据完毕(结果 为 整数型,服务UUID 为 文本型,通道UUID 为 文本型,数据 为 字节型())

如果 结果 = 1 则

d出提示("读取数据成功:" & 通道UUID & "\n数据:" & 字节集到十六进制(数据))
否则

d出提示("读取数据失败:" & 通道UUID & "\n数据:" & 字节集到十六进制(数据))

结束 如果

结束 事件
事件 BLE蓝牙1通道数据改变(服务UUID 为 文本型,通道UUID 为 文本型,数据 为 字节型())

d出提示("通道数据改变" & 通道UUID & "\n数据:" & 字节集到十六进制(数据))

接收框加入文本(字节到文本(数据,"GBK"))

结束 事件
事件 发送按钮被单击()

BLE蓝牙1写入数据(服务UUID,通道UUID,文本到字节(发送框内容,"GBK"))

结束 事件
事件 BLE蓝牙1写入数据完毕(结果 为 整数型)

如果 结果 = 1 则

d出提示("写入数据成功")

否则

d出提示("写入数据失败")

结束 如果

结束 事件
其他的 *** 作可在以下完整代码中查看
变量 服务UUID 为 文本型

变量 通道UUID 为 文本型

变量 设备地址 为 文本型
事件 主窗口创建完毕()

'安卓60以上的系统需要动态申请权限,否则app可能无法正常运行

如果 权限 *** 作1取系统版本号()>=23 则

权限 *** 作1申请全部权限()

结束 如果

变量 结果 为 逻辑型

结果 = BLE蓝牙1初始化()

d出提示("初始化结果:" & 结果)

结束 事件
事件 权限 *** 作1申请完毕(权限数组 为 文本型(),申请结果 为 整数型())

'可以把需要特殊权限的代码写在此处,当申请权限成功后再执行相关代码

结束 事件
事件 框_返回被单击()

结束程序()

结束 事件
事件 搜索按钮被单击()

如果 搜索按钮标题 = "开始搜索" 则

位置传感器1开始监测()

BLE蓝牙1开始搜索()

时钟1时钟周期 = 101000

搜索按钮标题 = "停止搜索"

否则

BLE蓝牙1停止搜索()

时钟1时钟周期 = 0

搜索按钮标题 = "开始搜索"

结束 如果

结束 事件
事件 时钟1周期事件()

BLE蓝牙1停止搜索()

搜索按钮标题 = "开始搜索"

时钟1时钟周期 = 0

我们在购买电子商品的时候,如果有蓝牙这个功能的话,都会说明蓝牙是20、30、40还是41的,对于蓝牙20、30、40这个区别我们还是比较清楚的,数值越大传送速率就越快,不过我想很少有人知道蓝牙40和41的区别,下面就来具体了解下吧。

蓝牙40和41有什么区别

1、蓝牙40

蓝牙40标准最重要的特性是省电,随着蓝牙技术由手机、游戏、耳机、便携电脑和汽车等传统应用领域向物联网、医疗等新领域的扩展,蓝牙设备对低功耗的要求会越来越高。蓝牙40专门面向对成本和功耗都有较高要求的无线方案,一粒纽扣电池甚至可连续工作一年之久。它有低功耗、经典、高速三种协定模式,正因为有了三种可以互相组合搭配的协定,蓝牙40因此成为唯一一个综合协定规范。此外,低成本和跨厂商互通性,延迟时间只有3毫秒,还有AES-128加密等诸多特色。

蓝牙40适用范围:用于计步器、心律监视器、智慧型仪器表、感测器物联网等众多领域。


2、蓝牙41

最新的蓝牙41标准是个很有前途的技术,它比41有很大的提升,其智慧、低功耗、高传送速率、连接简单的特性将适合用在许多新兴设备上。虽然性能更强,但是它完全适应IPv6还需要时间,现在的相容性也还是一个问题。

如果单纯现在的蓝牙耳机,目前技术也不能指望它也干很智慧的事。蓝牙41使得批量资料可以以更高的速率传输,这并不意味着可以用蓝牙高速传输流媒体视频,只能说它是40的升级版本,不过其生产的成本费用相对也更高,技术上也不是很成熟。

主要用途,通过蓝牙41能够更快速地将跑步、游泳、骑车过程中收集到。

3、蓝牙耳机选40的还是41的

蓝牙耳机优秀的便携及通用性,被广泛的应用于移动终端设备,与传统的有线不同的是蓝牙耳机必须介入电池,所以续航时间对于无线耳机来说至关重要,就单独的40技术来看,高达24Mbps的传送速率用来传输普通无损音乐完全无压力,而且保证了较长的续航时间。

编辑总结:总的来说蓝牙40和41其实区别不大,41在传输效率上高于40,但是在能耗以及稳定性、相容性上面不如40。如果就耳机或者是音响的话我还是建议推荐使用蓝牙40。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/dianzi/13208386.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-20
下一篇 2023-06-20

发表评论

登录后才能评论

评论列表(0条)

保存