首页 > 评测 > 来自Arduino的小巧的LoRa开发板——MKR WAN 1300开发板评测
来自Arduino的小巧的LoRa开发板——MKR WAN 1300开发板评测
- [导读]
- LoRa的优势在于低功耗和远距离,理论上来说,相比于BLE和WiFi更具优势。不过在可穿戴领域,依旧是BLE一枝独秀;而WiFi则一直独霸着局域网无线通信领域。相对来说,LoRa在工业应用方面正逐渐显露自己独特的优势。市面上LoRa产品不少,大多以模块的方式提供给用户,借助三方MCU来实现自己的远程通信功能。
这里是专门为了本次测试而建立的一个应用程序,应用程序一般包括APP EUI及APP KEY两个要素,用来区别不同的应用程序。
建立好应用程序之后,要为该应用程序绑定一个或多个设备,也就是将MKR1300和应用程序对应起来,方便接收及处理数据。
图中可以看到,注册设备时一般要提供设备的EUI信息,EUI可以理解为网络设备中的MAC地址,在设备出厂时就已固化在设备内部,每个设备的Device EUI都是不同的。
如何获取设备的EUI呢,一般情况下,例如网卡及WiFi设备都会使用不干胶贴纸写出并贴在设备上。而对于MKR1300来说,要获取设备的EUI,需要运行配套程序提供的代码,通过Arduino的串口监视器来获取,如下
这里看到的Your device EUI is: a8610xxx就是设备的EUI。
支持库里的FirstConfiguration程序还可以用来测试与TTN的连接情况,不过需要指定几个参数:激活方式,使用OTTA还是使用ABP;应用程序EUI,区分不同的应用程序;APP KEY,该值类似一些REST API中的授权机制,以免数据被滥用。
这是指定连接(激活)方式后再指定APP EUI及APP KEY后连接成功的情况。
配套的库文件还提供了一个发送及接收数据的示例LoRaSendAndReceive.ino文件,演示了如何通过LoRa来发送及接收数据的例子,关键代码如下
LoRaModem modem;
...
int err;
modem.beginPacket();
modem.print(msg);
err = modem.endPacket(true);
if (err > 0) {
Serial.println("Message sent correctly!");
} else {
Serial.println("Error sending message :(");
Serial.println("(you may send a limited amount of messages per minute, depending on the signal strength");
Serial.println("it may vary from 1 message every couple of seconds to 1 message every minute)");
}
delay(1000);
if (!modem.available()) {
Serial.println("No downlink message received at this time.");
return;
}
String rcv;
rcv.reserve(64);
while (modem.available()) {
rcv += (char)modem.read();
}
Serial.print("Received: " + rcv + " - ");
for (unsigned int i = 0; i < rcv.length(); i++) {
Serial.print(rcv[i] >> 4, HEX);
Serial.print(rcv[i] & 0xF, HEX);
Serial.print(" ");
}
通过modem.print()来发送数据,通过modem.read()来读取数据。
其实我们都知道,LoRa通信中一般需要指定具体的能数,如使用868MHz还是使用915MHz来进行通信,另外还有SF、CR等参数的设置,这些都可以通过moderm实例来进行设置。
另外还要提一下的是还需要在代码中指定APP EUI及APP KEY两个值,否则通信是不会成功的。
将修改后的代码编译并上传到MKR1300开发板,找开串口监视器
从串口监视中可以看到,我们发送了字符串"Hello, MKR1300!",同时看到信息发送成功的提示。
在TTN的控制台上,我们也可以看到类似的信息,如下
注意Payload字段的值,与我们在Arduino串口监视器上看到的信息是一致的,只不过只里只显示了二进制的表示形式。
另外我们也可以看到通信的具体参数设置,例如频段为867.7,调制方式为LORA,data_rate的值为SF12BW125,还有CR的值为4/5等,其它的一些信息则是网关传递过来的信息,如timestamp等信息,别忘了,这些信息都是通过网关转发过来的!
除了上行信息,也可以控制下发信息,不过目前TTN还只提供了简单的机制来实现信息的下发,参考下图
这里我们指定下发的信息为三个字节:65 66 67,这个下发的动作是自动触发的,一旦收到数据,自动下发指定的三个字节!
再次运行客户端程序,重新发送一次一次数据,得到如下的结果
这里我们看到了接收到的三个字节:65 66 67,对应的ASCII字符为efg。
如果我们要在粒度控制上获取更好的控制效果应该怎么办呢?TTN提供了数据的编、解码机制和Integration来增强其功能,详情请参考TTN的相关文档。
总的来说,MKR1300集Arduino Zero与LoRa通信功能于一身,体积小巧但是功能强大,结合Arduino的简单易用,确实是LoRa入门者首选开发板!
最后有个疑问,据Arduino官方文档介绍,该开发板支持LoRa 433/868/915通信频段,但是从ABZ官方的文档中得知,该模块只支持868/915通信频段,本次测试只测试了868频段的通信,其它两个频段都没有测试,留下了一个小困惑!
- 本文系21ic原创,未经许可禁止转载!
网友评论
- 联系人:巧克力娃娃
- 邮箱:board@21ic.com
- 我要投稿
-
欢迎入驻,开放投稿
-
人均百万?英伟达中国员工收入曝光! 2024-08-29
-
《黑神话:悟空》玩家硬盘升级攻略:提升游戏体验,畅享3A大作 2024-08-29
-
数睿数据参加《系统与软件工程 低代码开发平台通用技术要求》国家标准编制 2024-08-29
- NRF52810蓝牙数字耳机找人定制
预算:¥30005天前
- 125KW模块式PCS软硬件外包开发
预算:¥1100000015小时前
- 12V汽车启动电源项目BMS设计
预算:¥50000023小时前
- 数据可视化软件 开发
预算:¥5000023小时前
- PLC项目调试修改
预算:¥100001天前
- 起动电机控制器开发
预算:¥1100001天前