-
Notifications
You must be signed in to change notification settings - Fork 6
Description
如果没有这样做,请先阅读建立创建你自己的私有 LoRa 网络。
现在你已经建立了网关,数据可以到达互联网,是时候安装 LORIOT 软件了,它可以发送 LoRa 数据包。
注意在 Kerlink IoT 站:通常,Kerlink IoT 站预先配置了数据包转发器(运行 ps | grep pkt 以查看是否正在运行)。如果是这种情况,请通过从 /etc/init.d 中删除该条目来确保数据包转发器在启动时不启动。
安装 LORIOT 软件
- 1.注册一个帐号,注册页面。
- 2.您被重定向到仪表板页面。
- 3.点击链接注册新网关。
- 4.有一个向导页面,选择您拥有的网关,并按照步骤。
- 5.进入网关页面,在其中找到你平台的 LORIOT 二进制文件和设置文档的链接。
提示:使用像 scp 这样的工具将二进制文件从计算机复制到网关。例如:
scp〜/ Downloads / loriot_pi_2_iC880A_USB_1.0.1.tar pi@192.168.2.7:〜/
- 6.在网关上,运行LORIOT二进制文件。
- 7.网关显示为连接在 LORIOT 网关页面上,已准备好在设备上工作。
提示:LORIOT 有一个“网关点击”,可以从你的网关页面访问。这允许你查看网关正在拾取哪些消息,这在调试时非常有用。
网关启动时自动启动LORIOT二进制文件
Kerlink IoT站
如果您遵循 LORIOT 文档中的安装步骤,则每当网桥引导时,二进制文件自动启动。
MultiTech Conduit
- 通过 SSH 或串行端口登录。
- 创建一个新文件 /etc/init.d/start-loriot.sh。
- 编辑此文件(通过nano /etc/init.d/start-loriot.sh),并添加以下内容:
cd / home / root / && ./loriot_multitech_conduit_mCard_USB_1.0.1- 如果你在其他地方提取了LORIOT二进制文件,请编辑该路径。
- CD 首先进入文件夹;否则,LORIOT 找不到其证书。
- 使文件可执行:
chmod + x /etc/init.d/start-loriot.sh
- 链接脚本:
ln -s /etc/init.d/start-loriot.sh /etc/rc5.d/S99start-loriot.sh - 现在,重新启动网关,并验证LORIOT二进制文件是否正在运行(通过
ps aux | grep loriot)。
Raspberry Pi and IMST iC880A
当Raspberry Pi启动时,按照此页面上的步骤启动LORIOT二进制文件。
构建设备
现在开始有趣的工作:构建可以通过 LoRa 网络发送传感器数据的设备。例如,您可以使用 PIR 传感器创建运动传感器(当地五金店不到10欧元,从中国订购时为2欧元)。当然,你可以使用任何其他传感器。
一些关于写固件的笔记
不断发送数据
由于占空比限制,你不能持续发送数据。这是使用开放频谱的要求。如果发送太快,发送将失败。允许发送的速度取决于你使用的扩展因子。以较高的扩展因子,尽管网关收到的机会增加,但发送消息需要更长时间。因此,您需要等待更长时间才能再次发送。在开发过程中,您可以将扩展因子设置为SF7(最低),它可以每6-7秒发送一次。
LoRaWAN 具有称为自适应数据评估(ADR)的功能,网络可以通过该功能来控制扩展因子。 �你可能希望启用此功能。
阻塞针
LoRa 屏蔽的一个缺点是它会阻塞所有引脚。您可以在屏蔽背面焊接一些新的接头以添加新的外围设备,或者使用像 nRF51-DK 这样的微控制器,其引脚可用两次,一次通孔连接器,一次通过母头。
在 LORIOT 上注册设备
LoRa 是端对端加密的,带有两组密钥。你需要将这些密钥和设备 ID 编程到设备固件中。你将使用这些密钥签署邮件,并由网络服务器进行验证。
生成新的密钥对:
- 转到 LORIOT 仪表板。
- 单击应用程序>示例应用程序>管理设备>生成新设备。
- 将设备添加到列表中。
- 单击设备以转到设备页面。
- 在页面的底部,找到 Seqno 检查,并将此设置更改为 Relax。 (如果按钮不显示,则从 JS 控制台调用 setRelax())。
现在你有 keys,你可以开始编写软件。
使用LoRa屏蔽
将样板程序导入在线IDE
- 在ARM mbed上注册一个帐户,它将托管你将要使用的在线编译器。
- 在“平台”页面上找到你的微控制器。
- 单击添加到你的 mbed 编译器。
- 去 LoRaWAN-lmic 应用程序。
- 单击导入此程序。
- 你被重定向到在线编译器,可以在其中给程序一个名称。
注意:确保您选择编译器右上角的正确微处理器。
设置屏蔽频率
你需要为你拥有的屏蔽版本(以及�你在世界上的哪个位置)设置正确的频率。
打开 LMiC / lmic.h,找到以下几行:
// mbed compiler options
//#define CFG_eu868
#define CFG_us915
确保正确的行被取消注释,具体取决于你拥有的屏蔽版本。
如果使用 SX1276MB1LAS:
//#define CFG_eu868
#define CFG_us915
如果使用 SX1276MB1MAS:
#define CFG_eu868
//#define CFG_us915
添加 LORIOT keys
将 keys 从 LORIOT 编程到设备固件中。
打开 "main.cpp",并更改以下行:
#define LORAWAN_DEV_ADDR ( uint32_t )0x12345678
static uint8_t NwkSKey[] =
{
0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,
0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C
};
// application session key
static uint8_t ArtSKey[] =
{
0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,
0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C
};
- 将 LORAWAN_DEV_ADDR从LORIOT(绿色)设置为大端的 DevAddr,前缀为0x。
- 将 NwkSKey 和 ArtSKey 从 LORIOT 设置为 NWKSKEY(橙色)和APPSKEY(黄色),但将其转换为十六进制数。例如,您的代码中,5ADA30AA的 LORIOT 键应为0x5A,0xDA,0x30,0xAA。
�验证设置
现在,您可以通过单击编译按钮来验证设置是否工作。
当编译成功时,下载一个文件。
将开发板插入计算机(通过 micro-USB)将其作为 USB 大容量存储设备进行安装。在大多数情况下,您不需要驱动程序,但�你可以在此找到驱动程序,以防万一。
设备挂载后,将编译好的文件拖到板上。这将导致设备启动。然后,你可以看到消息进入 LORIOT 设备页面:
切换到手动发送
默认情况下,应用程序会自动发送数据。如果要更改此选项,请从 main.cpp 中删除这些行:
if( txOn == true )
{
//Sends frame every APP_TX_DUTYCYCLE +/- APP_TX_DUTYCYCLE_RND random time (if not duty cycle limited)
os_setTimedCallback( &sendFrameJob,
os_getTime( ) + ms2osticks( APP_TX_DUTYCYCLE + randr( -APP_TX_DUTYCYCLE_RND, APP_TX_DUTYCYCLE_RND ) ),
onSendFrame );
////Sends frame as soon as possible (duty cycle limitations)
//onSendFrame( NULL );
}
现在,您可以随时添加发送消息的代码,例如当有人在PIR传感器前移动时中断触发:
InterruptIn pir(D5);
static void prepareTxFrame( void )
{
LMIC.frame[0] = pir; // current state of the pir sensor
#if ( LORAWAN_CONFIRMED_MSG_ON == 1 )
LMIC.frame[1] = LMIC.seqnoDn >> 8;
LMIC.frame[2] = LMIC.seqnoDn;
LMIC.frame[3] = LMIC.rssi >> 8;
LMIC.frame[4] = LMIC.rssi;
LMIC.frame[5] = LMIC.snr;
#endif
}
void movement() {
onSendFrame(NULL);
}
void no_movement() {
onSendFrame(NULL);
}
int main( void ) {
pir.rise(movement);
pir.fall(no_movement);
// ... lora related things
}
更改 prepareTxFrame 函数的内容以更改你要发送的数据(也更新 LORAWAN_APP_DATA_SIZE)。每当 PIR 传感器改变状态(从运动到不运动,另一方面)时,你会收到消息
使用 MultiTech mDot
将样板程序导入在线IDE
- 在 ARM mbed 上注册一个帐户,它将托管您将使用的在线编译器。
- 转到 MultiTech mDot 平台页面。
- 单击添加到您的 mbed 编译器。
- 转到 mdot_personalized_activation 项目页面。
- 单击导入此程序。
- 你被重定向到在线编译器,可以在其中给程序一个名称。
添加 LORIOT 键
现在,将密钥从 LORIOT 编程到设备固件中。
打开 main.cpp,并从 LORIOT 将大码头 DevAddr(绿色),NWKSKEY(橙色)和 NWKSKEY(黄色)复制到应用程序中:
static const char LORIOT_DEV_ADDR[] = "AABBCCDD"; // green
static const char LORIOT_NWK_S_KEY[] = "E8A25EBD07F85800E08478A041FACBA7"; // orange
static const char LORIOT_APP_S_KEY[] = "BE8EF84E745D0AB14D4507B0BA600555"; // yellow
验证设置
现在, 你可以通过单击编译按钮来验证设置是否工作。
当编译成功时,下载一个文件。
将开发板插入计算机(通过 micro-USB)将其作为 USB 大容量存储设备进行安装。在大多数情况下,您不需要驱动程序,但你可以在此找到驱动程序,以防万一。
设备挂载后,将编译好的文件拖到板上。这将导致设备启动。然后,你可以看到消息进入 LORIOT 设备页面:
切换到手动发送
默认情况下,应用程序会自动发送数据。如果要更改,请删除 send_data();调用,并手动调用(例如从中断)。有关更多信息,请参阅上面有关 LoRa 屏蔽的部分。
构建Web应用程序
现在网络的前三个部分一句就绪,到了在一个小应用程序中使用传感器数据的时候了。 LORIOT 提供了将数据从服务中删除的方法,但最简单的方法是使用 Websocket。您可以编写一个 Web 应用程序,当检测到移动时将页面变红,当一切正常时,都会显示绿色。您可以通过检查 LoRa 有效负载的第一个字节(1=运动,0=无运动)来执行此操作。
1.在 LORIOT 中:转到你的信息中心,然后单击应用程序>示例应用程序>输出。
2.将输出类型更改为 WebSocket。
3.在当前输出设置下复制 URL 和令牌,并将其粘贴到下面的代码示例中:
<!DOCTYPE html>
<html>
<head>
<title>PIR Sensor monitoring!</title>
</head>
<body>
<p id="status">Connecting...</p>
<script>
var token = 'YOUR_AUTHENTICATION_TOKEN_HERE';
var url = 'YOUR_TARGET_URL_HERE (incl {token} part)';
var ws = new WebSocket(url.replace('{token}', token));
ws.onopen = function() {
document.querySelector('#status').textContent = 'Connected';
};
ws.onclose = function() {
document.querySelector('#status').textContent = 'Disconnected';
};
ws.onmessage = function(e) {
console.log('onmessage', e);
var data = JSON.parse(e.data);
if (data.cmd !== 'rx') return;
switch (Number(data.data.slice(0, 2))) {
case 0: document.body.style.backgroundColor = 'green'; break;
case 1: document.body.style.backgroundColor = 'red'; break;
}
};
</script>
</body>
</html>您现在拥有一个功能齐全的 LoRa 网络,其中包含设备,网关和 Web 应用程序:
结束语
LoRa 是一项具有很大潜力的伟大技术,特别是因为任何人都可以建立网络,并开始建立投影相对较小的远程 IoT 设备。我们希望本指南帮助您开始使用,我们很乐意看到你使用 LoRa 和 ARM mbed 制作的内容!
原文链接:https://docs.mbed.com/docs/lora-with-mbed/en/latest/iotx/
















