首页 > 评测 > 轻松实现远距离通信——P-NUCLEO-LRWAN1评测

轻松实现远距离通信——P-NUCLEO-LRWAN1评测

P-NUCLEO   LRWAN1   ST   LoRa   SemTech   低功耗远距通信   
  • 作者:SATURN
  • 来源:21ic
  • [导读]
  • LoRa之风愈吹愈劲,ST也与SemTech合作推出了P-NUCLEO的LoRa套装、一个Discovery的LoRa板子以及一个拓展板。这次我们就先来给大家评测一下基础版的入门P-Nucleo-LRWAN1套装,一起来看看STM32+LoRa会有什么化学反应产生。

接下来就是代码了,测试代码使用的是arduino-lmic代码库的raw,这里实现的就是简单的LoRa通信,第一步设置硬件的连接方式,SPI连接采用ARDUINO的默认值,LORA特定的设置还包括NSS、RST及DIO的通信,具体设置如下

// Pin mapping

const lmic_pinmap lmic_pins = {

.nss = 10,

.rxtx = LMIC_UNUSED_PIN,

.rst = 9,

.dio = {2, 6, 7},

};

其它需要设置的通信参数还包括

• ISM频段, 设置为868MHz

• SF, SpreadFactor,有效值为7-12,这里设置为SF9

• BW,BANDWIDTH,设置为125K

• CR,Coding Rate,设置为4/5

• 发射功率,由于距离比较近,随意设置即可

这些参数的设置在结点与网关端都必须相同,否则通信会失败。程序通过LoRa发送Hello, world!字符串,另外为了和网关的LINUX系统通信,还需要使用Process,这里为了测试,只实现了简单的数据显示,通过Process调用LINUX端的Python程序的代码如下

void send_message(String msg) {

Process p;

//delay(1000);

p.begin("python");

p.addParameter("/root/process.py");

p.addParameter(msg);

p.run();

while(p.running());

while(p.available()) {

char c = p.read();

Console.print(c);

}

Console.flush();

//send_func(&sendjob);

}

这一段代码调用LINUX系统上的process.py脚本,实现简单的数据显示,process.py的内容如下

root@dragino-168b7c:~# cat process.py

import sys

import socket

import subprocess

import struct

import random

import base64

from struct import *

argvs = sys.argv

argc = len(argvs)

#print "*****Message from GateWay*****"

print argvs[1]

#print "*****Message from Gateway ends. *****"

这里只是简单的将传递过来的数据打印出来,以测试LINUX端是否接收到了数据,只要数据能从ARDUINO端传递到LINUX端,接下来就是如何将数据发送到网络的问题。

  • 本文系21ic原创,未经许可禁止转载!

网友评论