首頁 > 評測 > 讓LoRa來得更猛烈些吧--B-L072Z-LRWAN1評測
讓LoRa來得更猛烈些吧--B-L072Z-LRWAN1評測
- [導(dǎo)讀]
- LoRa和NB-IoT是當(dāng)前物聯(lián)網(wǎng)的兩大熱門話題。從技術(shù)、應(yīng)用、費用及現(xiàn)有的解決方案等方面綜合考慮,二者各有千秋。不過芯片廠商卻是忙壞了,忙著推出各自的技術(shù)產(chǎn)品,ST就是如此,一口氣推出五款基于LoRa技術(shù)的評估板,包括b-l072z-lrwan1、I-CUBE-LRWAN1、I-NUCLEO-LRWAN1、P-NUCLEO-LRWAN1及I-NUCLEO-SX1272D,看來準(zhǔn)備打造一個LoRa帝國。
I-CUBE-LRWAN默認(rèn)的LoRa通信參數(shù)如下
#if defined( USE_BAND_868 )
#define RF_FREQUENCY 868000000 // Hz
#elif defined( USE_BAND_915 )
#define RF_FREQUENCY 915000000 // Hz
#else
#error "Please define a frequency band in the compiler options."
#endif
#define TX_OUTPUT_POWER 23 // dBm
#if defined( USE_MODEM_LORA )
#define LORA_BANDWIDTH 0 // [0: 125 kHz,
// 1: 250 kHz,
// 2: 500 kHz,
// 3: Reserved]
#define LORA_SPREADING_FACTOR 7 // [SF7..SF12]
#define LORA_CODINGRATE 1 // [1: 4/5,
// 2: 4/6,
// 3: 4/7,
// 4: 4/8]
#define LORA_PREAMBLE_LENGTH 8 // Same for Tx and Rx
#define LORA_SYMBOL_TIMEOUT 5 // Symbols
#define LORA_FIX_LENGTH_PAYLOAD_ON false
#define LORA_IQ_INVERSION_ON false
將FREQUENCY_BAND修改為868,帶寬設(shè)置為125KHZ,擴頻因子設(shè)置為7,CODERATE設(shè)置為4/5。
接下來修改回調(diào)函數(shù)onRxDone(),該函數(shù)是接收到信息之后的處理操作,這里主要是顯示接收到溫度信息,添加如下代碼
PRINTF((char *)(Buffer + 4));
PRINTF("\n\r");
PRINTF("OnRxDone\n\r");
PRINTF("RssiValue=%d dBm, SnrValue=%d\n\r", rssi, snr);
注意這里的Buffer+4,這個位置才是數(shù)據(jù)負(fù)載的起始地址,詳細(xì)解說見后文。
B-L072Z-LRWAN1端的設(shè)置就完成了,接下來修改LoRa Hat端的代碼。
LoRa的開發(fā)環(huán)境基于Arduino,使用的RF庫是Radio Head,該庫是SX127X在Arduino上的移植,這里要注意幾處代碼的修改,先看代碼
/* for feather32u4 */
#define RFM95_CS 10
#define RFM95_RST 9
#define RFM95_INT 2
這一段代碼指定LoRa模塊與Arduino的一些硬件接口,如片選引腳、中斷信號源等。
Radio Head默認(rèn)的通信頻率是433MHz,這里需要修改為868,所以要添加如下代碼
#define RF95_FREQ 868.0
......
rf95.setFrequency(RF95_FREQ))
DHT11溫度采集代碼如下
temp = DHT.temperature;
Serial.println(temp);
sprintf(radiopacket+13, "%2d.%02d", (int)temp, (int)(temp * 100) % 100) ;
最后一行代碼很奇怪,原因是因為Arduino的sprintf函數(shù)在格式化浮點數(shù)時存在BUG,只能先轉(zhuǎn)換為整數(shù)。
現(xiàn)在來解釋下前面的Buffer+4是什么原因,這是一個坑,很深的坑。雖然說出來不值一文錢,但不明白的話,看到的數(shù)據(jù)就是一堆亂碼!
在RH_RF95::init()的代碼中有這么一段話,挖出來給大家看
// Packet format is preamble + explicit-header + payload + crc
// Explicit Header Mode
// payload is TO + FROM + ID + FLAGS + message data
// RX mode is implmented with RXCONTINUOUS
// max message data length is 255 - 4 = 251 octets
Radio Head在發(fā)送數(shù)據(jù)的時候,會在PAYLOAD前添加4個字節(jié)的信息,包括TO,F(xiàn)ROM,ID及FLAGS,然后才是正式的數(shù)據(jù)負(fù)載,下面是一次實際通信中獲取到的數(shù)據(jù)
ff ff 00 00 48 65 6c 6c 6f 20 57 6f 72 6c 64 20 23 31 38 33 31 00 20 00
H e l l o W o r l d #
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 10 21 22 23
注意前面的4個字節(jié),分別代表了TO, FROM, ID及FLAGS,正式的負(fù)載是從第4字節(jié)開始的!
這樣處理后,通信就沒有障礙了,下面看實際的通信效果
這是接收端收到的信息及DHT11采集的溫度信息,室溫27度。
這是發(fā)送端串口輸出的信息,看到與接收端的信息是一致的。
這就是不同硬件及庫文件帶來的麻煩,所以,如果合適的話,使用兩款同型號的開發(fā)板來進行通信,步驟會少許多,當(dāng)然也沒有這么多驚喜了!
現(xiàn)在還只是兩個結(jié)點之間的通信,純粹的LoRa通信,如果想要實現(xiàn)聯(lián)網(wǎng)的話,需要一個網(wǎng)關(guān),從而實現(xiàn)完整的LoRaWAN通信。
還有兩個問題沒有提及:低功耗及遠(yuǎn)距離。低功耗方面可以參考ST低功耗方面的評測;遠(yuǎn)距離通信方面,本站的評測《完整的LoRa體驗,有這一套就夠了!——LoRa IoT Kit體驗》一文對遠(yuǎn)距離通信做了基本的測試,這里就不再贅述。
LoRa技術(shù)為IoT的應(yīng)用打開了一扇新的大門,應(yīng)用前景非常廣闊。大佬們都已開始布局謀篇,咱們也沒有理由偷懶,雖然B-L072Z-LRWAN1開發(fā)板目前算是小貴(Mouser報價387元RMB),但是為了未來,選擇一款合適的LoRa開發(fā)板,狠有必要!就算不打算深入,了解一下還是也有必要的。
-------------全文完------------
- 本文系21ic原創(chuàng),未經(jīng)許可禁止轉(zhuǎn)載!
網(wǎng)友評論
- 聯(lián)系人:巧克力娃娃
- 郵箱:board@21ic.com
- 我要投稿
-
歡迎入駐,開放投稿
-
人均百萬?英偉達(dá)中國員工收入曝光! 2024-08-29
-
《黑神話:悟空》玩家硬盤升級攻略:提升游戲體驗,暢享3A大作 2024-08-29
-
數(shù)睿數(shù)據(jù)參加《系統(tǒng)與軟件工程 低代碼開發(fā)平臺通用技術(shù)要求》國家標(biāo)準(zhǔn)編制 2024-08-29
- NRF52810藍(lán)牙數(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天前