首頁 > 評測 > 來自Arduino的小巧的LoRa開發(fā)板——MKR WAN 1300開發(fā)板評測
來自Arduino的小巧的LoRa開發(fā)板——MKR WAN 1300開發(fā)板評測
- [導(dǎo)讀]
- LoRa的優(yōu)勢在于低功耗和遠距離,理論上來說,相比于BLE和WiFi更具優(yōu)勢。不過在可穿戴領(lǐng)域,依舊是BLE一枝獨秀;而WiFi則一直獨霸著局域網(wǎng)無線通信領(lǐng)域。相對來說,LoRa在工業(yè)應(yīng)用方面正逐漸顯露自己獨特的優(yōu)勢。市面上LoRa產(chǎn)品不少,大多以模塊的方式提供給用戶,借助三方MCU來實現(xiàn)自己的遠程通信功能。
這里是專門為了本次測試而建立的一個應(yīng)用程序,應(yīng)用程序一般包括APP EUI及APP KEY兩個要素,用來區(qū)別不同的應(yīng)用程序。
建立好應(yīng)用程序之后,要為該應(yīng)用程序綁定一個或多個設(shè)備,也就是將MKR1300和應(yīng)用程序?qū)?yīng)起來,方便接收及處理數(shù)據(jù)。
圖中可以看到,注冊設(shè)備時一般要提供設(shè)備的EUI信息,EUI可以理解為網(wǎng)絡(luò)設(shè)備中的MAC地址,在設(shè)備出廠時就已固化在設(shè)備內(nèi)部,每個設(shè)備的Device EUI都是不同的。
如何獲取設(shè)備的EUI呢,一般情況下,例如網(wǎng)卡及WiFi設(shè)備都會使用不干膠貼紙寫出并貼在設(shè)備上。而對于MKR1300來說,要獲取設(shè)備的EUI,需要運行配套程序提供的代碼,通過Arduino的串口監(jiān)視器來獲取,如下
這里看到的Your device EUI is: a8610xxx就是設(shè)備的EUI。
支持庫里的FirstConfiguration程序還可以用來測試與TTN的連接情況,不過需要指定幾個參數(shù):激活方式,使用OTTA還是使用ABP;應(yīng)用程序EUI,區(qū)分不同的應(yīng)用程序;APP KEY,該值類似一些REST API中的授權(quán)機制,以免數(shù)據(jù)被濫用。
這是指定連接(激活)方式后再指定APP EUI及APP KEY后連接成功的情況。
配套的庫文件還提供了一個發(fā)送及接收數(shù)據(jù)的示例LoRaSendAndReceive.ino文件,演示了如何通過LoRa來發(fā)送及接收數(shù)據(jù)的例子,關(guān)鍵代碼如下
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()來發(fā)送數(shù)據(jù),通過modem.read()來讀取數(shù)據(jù)。
其實我們都知道,LoRa通信中一般需要指定具體的能數(shù),如使用868MHz還是使用915MHz來進行通信,另外還有SF、CR等參數(shù)的設(shè)置,這些都可以通過moderm實例來進行設(shè)置。
另外還要提一下的是還需要在代碼中指定APP EUI及APP KEY兩個值,否則通信是不會成功的。
將修改后的代碼編譯并上傳到MKR1300開發(fā)板,找開串口監(jiān)視器
從串口監(jiān)視中可以看到,我們發(fā)送了字符串"Hello, MKR1300!",同時看到信息發(fā)送成功的提示。
在TTN的控制臺上,我們也可以看到類似的信息,如下
注意Payload字段的值,與我們在Arduino串口監(jiān)視器上看到的信息是一致的,只不過只里只顯示了二進制的表示形式。
另外我們也可以看到通信的具體參數(shù)設(shè)置,例如頻段為867.7,調(diào)制方式為LORA,data_rate的值為SF12BW125,還有CR的值為4/5等,其它的一些信息則是網(wǎng)關(guān)傳遞過來的信息,如timestamp等信息,別忘了,這些信息都是通過網(wǎng)關(guān)轉(zhuǎn)發(fā)過來的!
除了上行信息,也可以控制下發(fā)信息,不過目前TTN還只提供了簡單的機制來實現(xiàn)信息的下發(fā),參考下圖
這里我們指定下發(fā)的信息為三個字節(jié):65 66 67,這個下發(fā)的動作是自動觸發(fā)的,一旦收到數(shù)據(jù),自動下發(fā)指定的三個字節(jié)!
再次運行客戶端程序,重新發(fā)送一次一次數(shù)據(jù),得到如下的結(jié)果
這里我們看到了接收到的三個字節(jié):65 66 67,對應(yīng)的ASCII字符為efg。
如果我們要在粒度控制上獲取更好的控制效果應(yīng)該怎么辦呢?TTN提供了數(shù)據(jù)的編、解碼機制和Integration來增強其功能,詳情請參考TTN的相關(guān)文檔。
總的來說,MKR1300集Arduino Zero與LoRa通信功能于一身,體積小巧但是功能強大,結(jié)合Arduino的簡單易用,確實是LoRa入門者首選開發(fā)板!
最后有個疑問,據(jù)Arduino官方文檔介紹,該開發(fā)板支持LoRa 433/868/915通信頻段,但是從ABZ官方的文檔中得知,該模塊只支持868/915通信頻段,本次測試只測試了868頻段的通信,其它兩個頻段都沒有測試,留下了一個小困惑!
- 本文系21ic原創(chuàng),未經(jīng)許可禁止轉(zhuǎn)載!
網(wǎng)友評論
- 聯(lián)系人:巧克力娃娃
- 郵箱:board@21ic.com
- 我要投稿
-
歡迎入駐,開放投稿
-
人均百萬?英偉達中國員工收入曝光! 2024-08-29
-
《黑神話:悟空》玩家硬盤升級攻略:提升游戲體驗,暢享3A大作 2024-08-29
-
數(shù)睿數(shù)據(jù)參加《系統(tǒng)與軟件工程 低代碼開發(fā)平臺通用技術(shù)要求》國家標準編制 2024-08-29
- NRF52810藍牙數(shù)字耳機找人定制
預(yù)算:¥30005天前
- 125KW模塊式PCS軟硬件外包開發(fā)
預(yù)算:¥1100000015小時前
- 12V汽車啟動電源項目BMS設(shè)計
預(yù)算:¥50000023小時前
- 數(shù)據(jù)可視化軟件 開發(fā)
預(yù)算:¥5000023小時前
- PLC項目調(diào)試修改
預(yù)算:¥100001天前
- 起動電機控制器開發(fā)
預(yù)算:¥1100001天前