草庐IT

无线串口模块通信技术参数快速选型指南

成都亿佰特 2023-03-28 原文

首先我们来说一下什么是无线串口模块?无线模块即是通过无线电信号来传输数据的软硬件模组,串口模块即是使用串口通信协议来传输数据的软硬件模组,那么无线串口模块也就是使用串口协议来进行无线电通信的软硬件模组。就以下文产品为例来介绍如何更具自己的需求选择合适自己的无线串口模块。

1.   串口模块的选型要点

1.1 通信频点

通信频点就是无线模块在工作的时候向外辐射出去的电波频率,无线串口模块常用的频点大致可以分为170MHz、230MHz、315MHz、433MHz、490MHz、780MHz、868MHz、915MHz、2.4GHz等。在使用的环境中更具自身的环境需求选择不同频点的模块已避免干扰,同时不同频点在通信方面也有不同特点,比如170MHz的模块其频率较低那么波长也就较长,那么在信号的穿透和绕射能力方面相较868MHz、2.4GHz的模块就具有更好的通信效果。

1.2 芯片方案

芯片方案指的就是无线串口模组中使用的射频处理IC,不同的芯片有不同的特点,常用的有“SEMTECH”公司的SX1278、SX1276、SX1212、SX1280;“SILICON LABS”公司的SI4463、SI4438、SI4432;以及TI公司的CC1110、CC1101、CC1310等。这些芯片都有其不同的特点,使用不同芯片方案的模块在射频通信方面也就具有起特点,对于我们用户的选型来说这里从这里也就大概的可以估计模块之间性能的差异以及不同的价格了。

1.3 通信距离

通信距离也就是无线模块最核心的参数之一,我们根据自己使用的通信距离要求选择合适模块,无线通信因为受到环境等因素的影响因此我们在模块选型的过程中需要注意的是需要预留一定的距离,比如我需要通过500米,那么最好就不要选择指标为500米的模块了,至少选择600米以上的,这样才有应对环境影响的空间,也就保证了产品的适应性以及稳定性等。

1.4 发射功率、接收灵敏度

那什么是发射功率呢?发射功率是用来表示射频模块向外辐射电波信号的能力,无线串口模块的发射功率也就表示了模块对外辐射电波的能力,模块的发射功率越大也在同等的条件下通信距离也就会有所提升,但是其功耗也会随之提升,这就要更具自己做的产品情况来评估了。那什么是接收灵敏度呢?接收灵敏度和发射功率是成对应的发射功率表示的是模块的对外辐射能力也就是发射性能,接收灵敏度表示的就是无线模块的接收能力,灵敏度通常都是用负值表示的,由此可见灵敏度对应的值越小也就是接收性能更好。比如两个模块其它参数都相同1号模块的灵敏度为-120dBm,2号模块的为-126dBm那么也就说明2号模块的接收性能更好些。可别小看这6dBm的差距,从理论上来说这可以使得2号模块的通信距离比1号模块远一倍哦。

1.5 发射电流、接收电流、休眠电流

发射电流指的就是模块在发射的时候需要的供电电流,这一参数对我们的选择也很重要,因为有的产品能够提供的电源并不大,比如穿戴设备,所以选择模块的时候就需要注意这一参数,通常电源的供电能力至少是发射电流的1.3倍以上。接收电流也就是模块在处于正常接收状态下的工作电流,休眠电流就是模块大部分功能都不使用的时候的工作电流,这一参数对于制作低功耗产品的用户是非常重要的。

1.6 空中速率

这里的空中速率指的就是无线模块的射频信号在空中传输信号的速率,空速关系到无线模块传输的数据量的大小,空中速率越大则无线模每秒可传输的数据量也就越大,比如无人机的遥控器就需要有较高的空速以保证传输较大的数据量来控制飞行。空速越高则无线传输的延时也就越小,当然空速的选择与设置也不是绝对的越大则越适合我们使用,这个就要更具自身产品的情况而定了,同时空速越高对模块的通信距离也会导致一定程度的变短,这也就需要结合距离条件,数据量,实时性等问题一同考虑了。

1.7 天线接口形式

天线之前我也有文章介绍过天线对于无线模块通信距离的影响,天线增益对于无线通信系统也是至关重要的,因此选择模块是也应该考虑它的天线接口形式,常用的接口大致分为SMA、IPEX有的模块同时也是具有板载的PCB天线的,这也是我们选择产品需要注意的,板载PCB天线具有体积小便于集成等优点,但是其通信的距离较短,SMA和IPEX接口的天线在增益体积等方面就比PCB的大些。

1.8 封装形式及尺寸

封装及尺寸这就是指的模块的机械几何尺寸,这项指标就需要结合自身产品的大小空间要求等综合考虑。模块的封装大致可分为直插和贴片两种。

2.   并举例说明选型要点

下面就以三表为例来说明无线模块的选型方法:

我们常说的三表也就燃气表、电表、水表,生活中无线抄表的应用也是非常广泛的,那在三表中我们选择无线模块需要注意哪些呢?首先无线抄表对模块的传输数据量要求不高,并且对模块的实时性的要求也不需要太高,因此从这两点看无线模块的选择中就不需要很高空速的了。其次我们在看三表应用中由于都是房屋建筑因此对模块的穿透绕射性能也就有一定的要求了比如433MHz、490MHz等。然后在三表中无线模块的使用功耗也不能太高了因此也就需要选择合适功耗的模块了。最后三表的体积限制大部分都不高也就可以综合考虑了,以成都亿佰特的模块为例那么E32系列的模块也就是较为合适的了。

3.   总结

总的来说无线模块的选择我们需要根据自身产品的性能要求,设计尺寸等多方面考虑是一个综合的问题,最后希望本文对你有帮助能够选择到适合的模块。

有关无线串口模块通信技术参数快速选型指南的更多相关文章

  1. ruby - 在 Ruby 中使用匿名模块 - 2

    假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于

  2. ruby-on-rails - Ruby net/ldap 模块中的内存泄漏 - 2

    作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代

  3. ruby-on-rails - 如何在 ruby​​ 中使用两个参数异步运行 exe? - 2

    exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby​​中使用两个参数异步运行exe吗?我已经尝试过ruby​​命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何ruby​​gems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除

  4. ruby-on-rails - Rails 应用程序之间的通信 - 2

    我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此

  5. ruby-on-rails - 在混合/模块中覆盖模型的属性访问器 - 2

    我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah

  6. ruby - RSpec - 使用测试替身作为 block 参数 - 2

    我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere

  7. ruby - 如何在 Ruby 中拆分参数字符串 Bash 样式? - 2

    我正在为一个项目制作一个简单的shell,我希望像在Bash中一样解析参数字符串。foobar"helloworld"fooz应该变成:["foo","bar","helloworld","fooz"]等等。到目前为止,我一直在使用CSV::parse_line,将列分隔符设置为""和.compact输出。问题是我现在必须选择是要支持单引号还是双引号。CSV不支持超过一个分隔符。Python有一个名为shlex的模块:>>>shlex.split("Test'helloworld'foo")['Test','helloworld','foo']>>>shlex.split('Test"

  8. ruby - 检查方法参数的类型 - 2

    我不确定传递给方法的对象的类型是否正确。我可能会将一个字符串传递给一个只能处理整数的函数。某种运行时保证怎么样?我看不到比以下更好的选择:defsomeFixNumMangler(input)raise"wrongtype:integerrequired"unlessinput.class==FixNumother_stuffend有更好的选择吗? 最佳答案 使用Kernel#Integer在使用之前转换输入的方法。当无法以任何合理的方式将输入转换为整数时,它将引发ArgumentError。defmy_method(number)

  9. ruby-on-rails - 在默认方法参数中使用 .reverse_merge 或 .merge - 2

    两者都可以defsetup(options={})options.reverse_merge:size=>25,:velocity=>10end和defsetup(options={}){:size=>25,:velocity=>10}.merge(options)end在方法的参数中分配默认值。问题是:哪个更好?您更愿意使用哪一个?在性能、代码可读性或其他方面有什么不同吗?编辑:我无意中添加了bang(!)...并不是要询问nobang方法与bang方法之间的区别 最佳答案 我倾向于使用reverse_merge方法:option

  10. ruby - 当使用::指定模块时,为什么 Ruby 不在更高范围内查找类? - 2

    我刚刚被困在这个问题上一段时间了。以这个基地为例:moduleTopclassTestendmoduleFooendend稍后,我可以通过这样做在Foo中定义扩展Test的类:moduleTopmoduleFooclassSomeTest但是,如果我尝试通过使用::指定模块来最小化缩进:moduleTop::FooclassFailure这失败了:NameError:uninitializedconstantTop::Foo::Test这是一个错误,还是仅仅是Ruby解析变量名的方式的逻辑结果? 最佳答案 Isthisabug,or

随机推荐