文章目录
随着无线设备通信的需求不断加大,通信速度和通信距离是必须考虑的因素。之前用的WiFi模块和蓝牙模块都是基本在20米左右,而正点原子出了这款无线串口Lora模块大大改善了距离的问题,可以在3公里的范围内进行数据传输,比较实用。
在使用模块前,请认真阅读完下面的三个文档后再操作:
ATK-LORA-01模块AT指令集_V1.2.pdf
ATK-LORA-01模块配置软件操作说明_V1.2.pdf
ATK-LORA-01无线串口模块用户手册_V1.3.pdf
| USB-TTL 模块 | LORA 模块 |
|---|---|
| VCC (5v) | VCC (5v) |
| GND | GND |
| RXD | TXD |
| TXD | RXD |
| AUX (悬空) | |
| 3.3v | MD0 (配置) |


模块根据 AUX 和 MD0 引脚的配置不同状态进入不同的功能如下:

首先根据上面的接线提示把模块通过USB-TTL模块接到电脑(注意USB-TTL模块的开关选择对应到5v和TTL位置上)。
分别打开模块两个上位机软件: ATK-LORA配置软件 V1.2.exe。

1.分别选择对应的串口端口号,不可重复。
2.对应设置波特率为115200,停止位为1位,数据位为8位,无奇偶校验位。
3.配置完打开后面的串口开关按钮。

第一步:查询配置:
点击查询配置按钮,可以在右边接收栏查到模块当前的配置信息。

如果提示发送指令超时…,检查MD0引脚是否接了3.3v。

第二步:参数配置:
根据需求配置模块基本参数和工作模式,配置好后点击保存配置即可。保存成功后可以在右边的通知栏看到对应配置的参数,对应也可以点击左边查询配置是否修改成功。确保没有问题后拔掉USB线断电再重新上电才是真正的保存成功。
另外的模块也是同样配置这些一样的参数就可以配对上进行通信。

第三步:通信:
通信前确认是否把MD0引脚拔掉了,呈悬空状态才可进行通信,否则还是处于配置状态。
接下来就可以用两个模块进行通信了,可以互传信息如图实现收发数据。

第一步:编译好例程后下载到单片机里面,模块接到开发板上。
第二步:配置参数:
上位机参数:

单片机参数:
根据开发板屏幕按钮的提示对应选择和上位机一样的参数,注意开发板的串口3的跳线帽接法,否则不对就会提示“未检测到模块!!!”的提示。

配置完后点击KEY_UP按键"进入通信"状态。
第三步:通信:
通信前确认是否把MD0引脚拔掉了,呈悬空状态才可进行通信,否则还是处于配置状态。
接下来就可以用模块和开发板进行通信了,可以互传信息在屏幕显示如图,按开发板的KEY1按钮发数据。


略(请参考官方例程)
这个模块在其它的串口调试助手也可以用这个指令的,就是不方便而已,用官方给的配套上位机不用再重新写一遍指令,指令都集成到上位机上了不需要再输入一遍,按对应的按钮就行。
AT 指令注意事项:
(1)AT 指令均为大写,以回车、换行/r/n字符结束(上位机勾选发送新行即可)。
(2)模块在配置功能下,接收的 AT 指令错误或参数有误都会返回 ERROR 错误信息提示。
(3)模块在 AT 指令操作下, 固定串口波特率为 115200, 1 位停止位, 无奇偶校验位.
指令测试示例:
指令 功能
AT //测试
AT+MODEL? //查询设备型号
ATE0 //关闭指令回显
ATE1 //打开指令回显
AT+RESET //模块复位
......

Lora模块在上位机使用还是比较简单的,注意一下MD0引脚在不同工作模式下接线的问题就好了,否则会提示连接超时…的。其它的功能应用查看手册基本可以完成了。
两句话使用总结:
1)接线使用:RX接TX,TX接RX,GND接GND,VCC接5V,配置时MD0接高电平,配置完保存数据先点击保存配置,再拔掉MD0,最后再断开电源再重新上电,这样才能保存成功。
2)参数保存:上位机配置好参数之后点击保存参数,然后将MD0引脚拉低或者是悬空,之后断电再重新上电才能真正保存参数。
假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于
作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah
我刚刚被困在这个问题上一段时间了。以这个基地为例:moduleTopclassTestendmoduleFooendend稍后,我可以通过这样做在Foo中定义扩展Test的类:moduleTopmoduleFooclassSomeTest但是,如果我尝试通过使用::指定模块来最小化缩进:moduleTop::FooclassFailure这失败了:NameError:uninitializedconstantTop::Foo::Test这是一个错误,还是仅仅是Ruby解析变量名的方式的逻辑结果? 最佳答案 Isthisabug,or
我想获取模块中定义的所有常量的值:moduleLettersA='apple'.freezeB='boy'.freezeendconstants给了我常量的名字:Letters.constants(false)#=>[:A,:B]如何获取它们的值的数组,即["apple","boy"]? 最佳答案 为了做到这一点,请使用mapLetters.constants(false).map&Letters.method(:const_get)这将返回["a","b"]第二种方式:Letters.constants(false).map{|c
我的假设是moduleAmoduleBendend和moduleA::Bend是一样的。我能够从thisblog找到解决方案,thisSOthread和andthisSOthread.为什么以及什么时候应该更喜欢紧凑语法A::B而不是另一个,因为它显然有一个缺点?我有一种直觉,它可能与性能有关,因为在更多命名空间中查找常量需要更多计算。但是我无法通过对普通类进行基准测试来验证这一点。 最佳答案 这两种写作方法经常被混淆。首先要说的是,据我所知,没有可衡量的性能差异。(在下面的书面示例中不断查找)最明显的区别,可能也是最著名的,是你的
我一直致力于让我们的Rails2.3.8应用程序在JRuby下正确运行。一切正常,直到我启用config.threadsafe!以实现JRuby提供的并发性。这导致lib/中的模块和类不再自动加载。使用config.threadsafe!启用:$rubyscript/runner-eproduction'pSim::Sim200Provisioner'/Users/amchale/.rvm/gems/jruby-1.5.1@web-services/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:105:in`co
MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO
我有一个Controller,我想为这个Controller创建一个助手,我可以在不包含它的情况下使用它。我尝试像这样创建一个与Controller同名的助手classCars::EnginesController我创建的助手是moduleCars::EnginesHelperdefcheck_fuellogger.debug("chekingfuel")endend我得到的错误是undefinedlocalvariableormethod`check_fuel'for#有没有我遗漏的约定? 最佳答案 如果你真的想在Controll