公开源码
Github上Star最多的Arduino LoRa库是一位来自渥太华的印度籍工程师Sandee Mistry。同时是Node.js/LoRa/BLE的开发者。
不仅通过Github可以下载其例程和库,也可以直接在Arduino IDE中检索并引用该软件库。具体方法如下:
IDE | Sketch | Included Libraries | Library Manager
适配移植
基于Sendee的库,Arduino代码真的非常简单,至少比ARM mbed的简单。我的硬件大体上和官方类似,但是有些区别。所以必须设置NSS/RST/IRQ0。
#include <SPI.h>
#include <LoRa.h>
void setup() {
Serial.begin(9600);
while (!Serial);
Serial.println("LoRa Receiver");
LoRa.setPins(D10, A0, D2); // Nucleo pinout
if (!LoRa.begin(915E6)) {
Serial.println("Starting LoRa failed!");
while (1);
}else{
Serial.println("LoRa detected");
}
}
void loop() {
// try to parse packet
int packetSize = LoRa.parsePacket();
if (packetSize) {
// received a packet
Serial.print("Received packet '");
// read packet
while (LoRa.available()) {
Serial.print((char)LoRa.read());
}
// print RSSI of packet
Serial.print("' with RSSI ");
Serial.println(LoRa.packetRssi());
}
}
实验结果
Fig1: 串口终端收发
在接收端,可以收到发送的信息,即
hello <n>
同时还可以收集到接受时刻的RSSI信号强度。该例程没有使用ISR/Callback,所有接受都是在主循环中直接pull register得到的结果。