議詳解:從物理層原理到傳感網(wǎng)實(shí)戰(zhàn)組網(wǎng))
簡(jiǎn)介傳感網(wǎng)應(yīng)用開發(fā)中的LoRa通信協(xié)議是面向物聯(lián)網(wǎng)領(lǐng)域的重要知識(shí)點(diǎn)。這份PPT課件系統(tǒng)講解了LoRa低功耗廣域網(wǎng)技術(shù)的特點(diǎn)及其在傳感網(wǎng)數(shù)據(jù)交換中的應(yīng)用適合正在學(xué)習(xí)傳感網(wǎng)應(yīng)用開發(fā)、物聯(lián)網(wǎng)通信協(xié)議或準(zhǔn)備相關(guān)課程與競(jìng)賽的讀者。課件聚焦LoRa模塊通訊協(xié)議逐一說(shuō)明數(shù)據(jù)幀關(guān)鍵參數(shù)HEAD、CMD、NET_ID、LORA_ADDR、LEN、DATA、CHK的含義并給出了請(qǐng)求命令與響應(yīng)命令的完整結(jié)構(gòu)及示例報(bào)文例如0x55命令頭、讀傳感數(shù)據(jù)指令、校驗(yàn)和計(jì)算方式等便于讀者對(duì)照理解設(shè)備間通信過(guò)程。同時(shí)課件還結(jié)合典型場(chǎng)景介紹了傳感數(shù)據(jù)采集、數(shù)據(jù)傳輸和設(shè)備控制等應(yīng)用幫助讀者將協(xié)議知識(shí)落地到實(shí)際開發(fā)中。資源為單個(gè)PPTX演示文稿共1個(gè)文件壓縮包大小僅299KB輕量易下載。目前已有325人學(xué)習(xí)瀏覽適合需要快速梳理LoRa協(xié)議要點(diǎn)并用于課堂講解或自學(xué)參考的開發(fā)者。 我最近正好在整理一份叫《傳感網(wǎng)應(yīng)用開發(fā)LoRa通信協(xié)議》的講課PPT翻資料時(shí)把自己以前做過(guò)的LoRa實(shí)測(cè)記錄也一并調(diào)了出來(lái)。如果你正在學(xué)傳感網(wǎng)、做物聯(lián)網(wǎng)方向畢設(shè)或者工作里要把一批電池供電的傳感器終端組進(jìn)網(wǎng)絡(luò)這篇文章就是那份PPT的文字“加厚版”。LoRa這個(gè)技術(shù)在低功耗廣域網(wǎng)里出場(chǎng)率極高但網(wǎng)上信息非常分散講協(xié)議的不管實(shí)操講模塊的不管參數(shù)原理容易讓人越看越暈。我打算把協(xié)議原理、參數(shù)計(jì)算、點(diǎn)對(duì)點(diǎn)調(diào)試、星型組網(wǎng)和故障排查一次性串起來(lái)講清楚盡量讓零基礎(chǔ)的人也能照著做下來(lái)。1. 項(xiàng)目定位傳感網(wǎng)里為什么選了LoRa1.1 先分清兩個(gè)容易混淆的縮寫每次講LoRa都要先做一次概念澄清LoRa和LoRaWAN是兩層?xùn)|西。LoRa是物理層調(diào)制技術(shù)本質(zhì)上是Semtech公司提出的一種線性調(diào)頻擴(kuò)頻通信方式解決的是“0和1怎么在電磁波上高效傳出去”的問(wèn)題。而LoRaWAN是跑在LoRa物理層之上的MAC層組網(wǎng)協(xié)議定義了網(wǎng)關(guān)、網(wǎng)絡(luò)服務(wù)器、終端設(shè)備之間的通信機(jī)制和加密方式。打個(gè)比方LoRa像公路本身LoRaWAN是公路上的交通規(guī)則。用LoRa調(diào)制可以自己口對(duì)口商量著跑不一定上LoRaWAN但商業(yè)物聯(lián)網(wǎng)項(xiàng)目里要用多網(wǎng)關(guān)、大規(guī)模節(jié)點(diǎn)管理和移動(dòng)性基本都得走LoRaWAN。傳感網(wǎng)課程里一般先學(xué)LoRa點(diǎn)對(duì)點(diǎn)通信再擴(kuò)展到LoRaWAN組網(wǎng)順序是對(duì)的。另一點(diǎn)必須提醒如果你在搜“LoRA微調(diào)”看到的是深度學(xué)習(xí)里的一種參數(shù)高效微調(diào)方法和本文完全兩個(gè)世界。深度學(xué)習(xí)的LoRA是Low-Rank Adaptation通信領(lǐng)域的LoRa是Long Range字母大小寫不一樣領(lǐng)域也完全無(wú)關(guān)。搜索時(shí)很容易互相污染注意區(qū)分就行。1.2 LoRa和其他傳感網(wǎng)無(wú)線方案的取舍傳感網(wǎng)的無(wú)線方案其實(shí)不少ZigBee、BLE、NB-IoT、Wi-Fi、LTE都能做但選型邏輯完全不同。我把常見方案梳理成一張對(duì)比表基本一眼能看明白。方案頻段典型通信距離功耗速率組網(wǎng)成本適合場(chǎng)景LoRa470-510MHz / 868/915MHz市區(qū)1-3km開闊地5-15km低0.3-22kbps自建網(wǎng)關(guān)成本較低分散傳感器、抄表、農(nóng)業(yè)、井蓋監(jiān)測(cè)NB-IoT運(yùn)營(yíng)商授權(quán)頻段覆蓋極好依賴運(yùn)營(yíng)商基站中幾十到一百多kbps需要SIM卡和資費(fèi)要求運(yùn)營(yíng)商管理的表計(jì)、煙感ZigBee2.4GHz室內(nèi)10-100m低250kbps需協(xié)調(diào)器組網(wǎng)樓宇自動(dòng)化、室內(nèi)傳感器簇BLE2.4GHz10-50m低1-2Mbps手機(jī)可直接連接穿戴設(shè)備、門鎖、Beacon4G/5G運(yùn)營(yíng)商授權(quán)頻段覆蓋廣高高模組貴、資費(fèi)高視頻、語(yǔ)音、復(fù)雜業(yè)務(wù)從項(xiàng)目實(shí)踐看選LoRa的傳感網(wǎng)項(xiàng)目通常有三個(gè)共性節(jié)點(diǎn)分布分散且距離遠(yuǎn)、要求電池能撐一年以上、業(yè)務(wù)數(shù)據(jù)量很小。比如一個(gè)果園墑情監(jiān)測(cè)項(xiàng)目傳感器每分鐘采集一次土壤濕度其實(shí)只需要每20分鐘上報(bào)一次幾十字節(jié)的數(shù)據(jù)這種場(chǎng)景用4G就是殺雞用牛刀用ZigBee距離又不夠。LoRa的優(yōu)勢(shì)在于把“低功耗”和“遠(yuǎn)距離”這對(duì)矛盾調(diào)和到了極致。不過(guò)也要潑一盆冷水LoRa速率很低實(shí)測(cè)有效吞吐量也就每秒幾百到幾千字節(jié)不適合傳圖片、音頻或高頻數(shù)據(jù)。把LoRa當(dāng)Wi-Fi用一定會(huì)翻車。1.3 器件選型與設(shè)計(jì)目標(biāo)市面上LoRa芯片和模塊很多課程開發(fā)和原型驗(yàn)證我只推薦三類方案。第一類是現(xiàn)成的AT指令模塊比如市面上常見的E22-400M系列、ATK-LORA模塊它們把寄存器封裝好了串口發(fā)幾條指令就能通信適合快速跑通鏈路。第二類是SPI接口的射頻模塊典型如SX1278、SX1276、SX1262需要自己寫寄存器驅(qū)動(dòng)適合課程深入學(xué)習(xí)也是我下面實(shí)操部分用的方案。第三類是高集成模組比如ASR6501這種把MCU和LoRa射頻集成在一起的芯片適合產(chǎn)品化開發(fā)。SX1278的寄存器有上百個(gè)第一次看數(shù)據(jù)手冊(cè)很容易被嚇到。實(shí)際開發(fā)中真正需要操作的寄存器并不會(huì)太多核心就集中在頻率配置、SF/BW/CR配置、FIFO讀寫、中斷標(biāo)志這幾塊。模塊廠商通常會(huì)給出初始化參考代碼建議先跟著跑通再回頭逐個(gè)寄存器研究不然容易陷在手冊(cè)里出不來(lái)。設(shè)計(jì)目標(biāo)上傳感網(wǎng)應(yīng)用開發(fā)課程里的LoRa項(xiàng)目一般圍繞三點(diǎn)低功耗、遠(yuǎn)距離、高穩(wěn)定性。低功耗要求終端的平均電流控制在微安到毫安級(jí)別遠(yuǎn)距離要求鏈路預(yù)留足夠的信號(hào)余量高穩(wěn)定性則要靠合理的上報(bào)機(jī)制和錯(cuò)誤處理。2. 協(xié)議拆解LoRa物理層的關(guān)鍵參數(shù)與計(jì)算公式2.1 擴(kuò)頻因子SF和啁啾調(diào)制到底在干什么LoRa最核心的技術(shù)是CSS啁啾擴(kuò)頻調(diào)制。傳統(tǒng)FSK調(diào)制用頻率高低代表0和1LoRa則把頻率在一個(gè)符號(hào)周期內(nèi)連續(xù)掃頻形成類似“鳥叫聲”的啁啾信號(hào)。接收端根據(jù)啁啾的起始頻率偏移來(lái)解調(diào)數(shù)據(jù)避免了對(duì)絕對(duì)頻率的高精度要求抗干擾和抗多徑能力也更強(qiáng)。擴(kuò)頻因子SF是理解LoRa最重要的參數(shù)。一個(gè)符號(hào)由2的SF次方個(gè)碼片構(gòu)成SF7時(shí)一個(gè)符號(hào)有128個(gè)碼片SF12時(shí)有4096個(gè)碼片。碼片數(shù)越多信號(hào)被“展開”得越充分接收機(jī)靈敏度越高。SF每增加1靈敏度大約提升2到3dB傳輸速率則減半。生活化理解就是食堂里很吵讓同桌把每個(gè)字拖長(zhǎng)了說(shuō)、放慢節(jié)奏說(shuō)你更容易聽清。SF就是那個(gè)“拖長(zhǎng)”的程度拖得越長(zhǎng)越抗噪但說(shuō)一句話的時(shí)間也越長(zhǎng)。在125kHz帶寬下SF12的接收靈敏度能達(dá)到約-137dBmSF7大約-123dBm左右。不要不理解為什么要犧牲速率換靈敏度因?yàn)樵陔姵毓╇姷膽敉鈧鞲袌?chǎng)景里多這十幾dB可能就決定了信號(hào)能不能到網(wǎng)關(guān)。2.2 帶寬BW、編碼率CR和發(fā)射功率TP怎么配合帶寬BW決定了掃頻范圍可選125kHz、250kHz、500kHz。帶寬越大符號(hào)時(shí)間越短傳輸速率越高但噪聲底也被抬高了靈敏度會(huì)下降約3dB。250kHz對(duì)比125kHz速率翻倍相應(yīng)鏈路預(yù)算變緊張。低速遠(yuǎn)距離場(chǎng)景首選125kHz對(duì)速率敏感的時(shí)候再考慮250kHz或500kHz。編碼率CR是前向糾錯(cuò)的冗余度可選4/5、4/6、4/7、4/8。CR4/5開銷最小、速率最快CR4/8糾錯(cuò)能力最強(qiáng)但吞吐?lián)p失明顯。常規(guī)傳感應(yīng)用我一般固定在4/5或4/6只有在鏈路質(zhì)量很差時(shí)才調(diào)到4/7。發(fā)射功率TP也是可調(diào)的模塊最大常見20dBm上下功率越高耗電越大但距離增長(zhǎng)不是線性的一味拉高功率真不如把天線處理好。這三個(gè)參數(shù)加SF共同決定鏈路預(yù)算和空中時(shí)間。選型順序建議是先根據(jù)距離確定SF和帶寬再根據(jù)干擾環(huán)境選編碼率最后才考慮功率和上報(bào)頻率。課程里常犯的錯(cuò)誤是一上來(lái)就把所有參數(shù)拉滿——SF12、500kHz、最大功率結(jié)果速度和功耗一塌糊涂距離也沒(méi)見得更好。2.3 空中時(shí)間ToA計(jì)算動(dòng)手算一個(gè)10字節(jié)數(shù)據(jù)包空中時(shí)間ToA是LoRa協(xié)議里最有工程價(jià)值的指標(biāo)決定鏈路占空比和功耗。TooA由前導(dǎo)碼時(shí)間和載荷時(shí)間組成簡(jiǎn)化的計(jì)算公式如下前導(dǎo)碼時(shí)間T_preamble (N_preamble 4.25) × T_sym其中T_sym 2^SF ÷ BW載荷部分需要一個(gè)中間量 n_payload 8 max(ceil((8×PL - 4×SF 28 16×CRC - 20×H) ÷ (4×(SF - 2×DE))) × (CR4), 0)對(duì)應(yīng)的載荷時(shí)間為T_payload n_payload × T_sym參數(shù)含義分別是PL是載荷字節(jié)數(shù)H是頭部開關(guān)顯式頭為0隱式頭為1CRC為1表示啟用DE為低速優(yōu)化SF11和SF12建議為1CR是編碼率參數(shù)。我用SF7、BW125kHz、CR4/5、10字節(jié)載荷代入算過(guò)T_sym 2^7 ÷ 125000 1.024ms前導(dǎo)碼約12.544ms載荷由28個(gè)符號(hào)組成約28.672msToA合計(jì)約41ms。同樣的10字節(jié)如果換成SF12單個(gè)符號(hào)就變成32.768msToA直接逼近991ms接近1秒。擴(kuò)頻因子單符號(hào)時(shí)間10字節(jié)載荷ToABW125, CR4/5理論速率SF71.024ms約41ms約5.5kbpsSF82.048ms約73ms約3.1kbpsSF94.096ms約128ms約1.8kbpsSF108.192ms約226ms約0.98kbpsSF1116.384ms約430ms約0.54kbpsSF1232.768ms約991ms約0.29kbps這個(gè)表看起來(lái)枯燥但信息量很大。SF12發(fā)10字節(jié)接近1秒如果節(jié)點(diǎn)多、上報(bào)頻繁信道幾乎一直處于沖突狀態(tài)。所以對(duì)常規(guī)傳感數(shù)據(jù)SF7到SF9是實(shí)戰(zhàn)黃金區(qū)間SF11和SF12只留給距離很遠(yuǎn)且上報(bào)極低頻的節(jié)點(diǎn)。調(diào)參的一般順序是先壓縮載荷體積再?zèng)Q定SF最后看是否需要調(diào)整帶寬和編碼率。3. 實(shí)操記錄點(diǎn)對(duì)點(diǎn)通信到小型星型網(wǎng)絡(luò)3.1 硬件連接與基礎(chǔ)配置實(shí)操部分我以STM32F103配合SX1278模塊為例這是課程里最常見的一套組合。SX1278通過(guò)SPI接口和STM32通信DIO0和DIO1作為中斷引腳反饋接收、發(fā)送完成和CAD檢測(cè)結(jié)果。常用的接線如下。SX1278引腳STM32引腳說(shuō)明NSSPA4SPI片選低有效SCKPA5SPI時(shí)鐘MOSIPA7SPI主機(jī)輸出MISOPA6SPI主機(jī)輸入RSTPC0復(fù)位引腳DIO0PB0接收完成/發(fā)送完成中斷DIO1PB1CAD檢測(cè)等事件中斷供電必須用3.3V很多新手用5V供電把模塊燒了。天線用SMA座外接或者IPEX天線天線盡量豎直并遠(yuǎn)離金屬外殼模塊不要直接貼在金屬支架上否則距離直接打折。如果你用的是AT指令模塊則不需要接SPI引腳模塊通過(guò)串口TXD/RXD和MCU通信即可調(diào)試會(huì)更簡(jiǎn)單。這類模塊的配置大同小異比如我手上這塊的指令是ATNETWORKID5 ATADDRESS0x0001 ATPARAMETER10,7,1,7這里設(shè)置的是擴(kuò)頻因子10、帶寬125kHz、編碼率4/5、發(fā)射功率7檔。不同廠家AT指令集略有差異拿到模塊先看手冊(cè)確認(rèn)指令格式不要照抄。用SPI模塊的話初始化順序建議是復(fù)位芯片、配置頻率、配置SF/BW/CR、使能CRC、配置中斷引腳、最后切入接收模式。3.2 發(fā)送端代碼把DHT11數(shù)據(jù)變成LoRa數(shù)據(jù)幀我用DS18B20溫度傳感器演示一次完整采集發(fā)送代碼采用事件驅(qū)動(dòng)主循環(huán)不阻塞。自定義的LoRa數(shù)據(jù)幀只有5個(gè)字節(jié)分別是節(jié)點(diǎn)ID、數(shù)據(jù)類型、2字節(jié)溫度值和1字節(jié)CRC8校驗(yàn)。uint8_t node_id 0x01; void send_temperature(void) { int16_t temp_x10 read_ds18b20_x10(); // 實(shí)際值×10避免浮點(diǎn)傳輸 uint8_t frame[5]; frame[0] node_id; frame[1] 0x10; // 0x10表示溫度業(yè)務(wù) frame[2] (uint8_t)(temp_x10 8); frame[3] (uint8_t)(temp_x10 0xFF); frame[4] calc_crc8(frame, 4); // 應(yīng)用層二次校驗(yàn) if (lora_cad() CHANNEL_FREE) { // 發(fā)送前先聽信道 lora_send(frame, sizeof(frame)); lora_wait_tx_done(2000); } }溫度用int16_t存十倍值是為了省掉float的4字節(jié)開銷。LoRa載荷很小每省一個(gè)字節(jié)都能減少空中時(shí)間和功耗。發(fā)送前做CAD信道檢測(cè)是個(gè)好習(xí)慣相當(dāng)于說(shuō)話前先聽周圍有沒(méi)有人說(shuō)話能明顯降低節(jié)點(diǎn)碰撞概率。CAD會(huì)消耗幾毫秒時(shí)間但換來(lái)的是重傳次數(shù)減少值得。時(shí)間數(shù)據(jù)里單獨(dú)加CRC8很有必要。物理層的CRC能判斷整包是否正確但我想在應(yīng)用層把節(jié)點(diǎn)ID和業(yè)務(wù)類型也覆蓋進(jìn)校驗(yàn)避免數(shù)據(jù)“半對(duì)半錯(cuò)”時(shí)被當(dāng)成有效上報(bào)尤其做自動(dòng)控制時(shí)一個(gè)臟數(shù)據(jù)可能觸發(fā)錯(cuò)誤動(dòng)作。3.3 接收端代碼與串口日志判斷接收端一般是一個(gè)始終監(jiān)聽數(shù)據(jù)的網(wǎng)關(guān)設(shè)備。數(shù)據(jù)到達(dá)后DIO0觸發(fā)中斷中斷里只置標(biāo)志位不執(zhí)行耗時(shí)操作主循環(huán)讀取FIFO并解析。void lora_on_rx(void) { uint8_t frame[64]; int len lora_receive(frame, sizeof(frame)); if (len 5) { uint8_t crc calc_crc8(frame, len - 1); if (crc ! frame[len - 1]) return; // 校驗(yàn)失敗直接丟棄 uint8_t node_id frame[0]; int16_t temp_x10 (int16_t)((frame[2] 8) | frame[3]); printf(node%d,temp%d.%dC,rssi%d,snr%d\n, node_id, temp_x10 / 10, temp_x10 % 10, lora_get_rssi(), lora_get_snr()); } }正常的串口日志長(zhǎng)這樣node1,temp23.7C,rssi-58,snr9.5 node2,temp22.1C,rssi-72,snr7.0 node1,temp23.9C,rssi-61,snr8.8RSSI表示接收信號(hào)強(qiáng)度數(shù)值越接近0越強(qiáng)。SNR是信噪比正數(shù)說(shuō)明信號(hào)高于噪聲解調(diào)比較輕松當(dāng)SNR開始掉到0以下丟包風(fēng)險(xiǎn)就明顯升高了。每次上報(bào)看到這兩項(xiàng)指標(biāo)穩(wěn)定鏈路基本就是健康的。3.4 星型網(wǎng)絡(luò)與休眠策略從點(diǎn)對(duì)點(diǎn)擴(kuò)展到星型網(wǎng)絡(luò)核心問(wèn)題從“怎么傳通”變成了“怎么不打架”。我推薦一個(gè)簡(jiǎn)單粗暴但很穩(wěn)定的方案網(wǎng)關(guān)始終處于接收模式各終端按ID錯(cuò)峰上報(bào)ID1在整點(diǎn)后第0秒發(fā)ID2在第10秒發(fā)以此類推。如果某個(gè)節(jié)點(diǎn)上報(bào)時(shí)間固定且間距較大錯(cuò)峰就能覆蓋絕大多數(shù)沖突。終端休眠上MCU進(jìn)入睡眠或停機(jī)模式用RTC定時(shí)喚醒喚醒后采集數(shù)據(jù)、發(fā)一包、然后立刻睡回去。LoRa模塊在發(fā)送結(jié)束后也要切到Sleep模式。實(shí)測(cè)下來(lái)一個(gè)用兩節(jié)18650電池供電的采集節(jié)點(diǎn)每小時(shí)上報(bào)一次、使用SF9理論續(xù)航能到半年以上。很多節(jié)點(diǎn)電池掉電快往往不是發(fā)送耗電而是接收窗口一直開著RX模式持續(xù)十幾毫安再大的電池也扛不住。有條件的項(xiàng)目還可以做ACK確認(rèn)。終端發(fā)完數(shù)據(jù)后等待網(wǎng)關(guān)回一個(gè)1字節(jié)確認(rèn)包收不到就退避重試。這個(gè)機(jī)制雖然增加了一點(diǎn)復(fù)雜度但能顯著提高數(shù)據(jù)可靠性。我之前在一片樹林里測(cè)過(guò)16個(gè)節(jié)點(diǎn)、每10分鐘上報(bào)一次、SF9參數(shù)、連續(xù)跑10小時(shí)配合ACK成功率到了99%以上。唯一掉包的那幾個(gè)點(diǎn)都集中在靠近逆變器的位置天線挪開后問(wèn)題消失。4. 疑難雜癥排查5個(gè)最常見的LoRa坑4.1 距離突然變短多半是天線問(wèn)題不是芯片問(wèn)題通信距離驟減第一件事檢查天線。常見的坑有SMA接頭焊虛焊、用了433MHz天線測(cè)470MHz鏈路、天線被壓彎貼在金屬表面、饋線過(guò)長(zhǎng)。天線問(wèn)題比芯片問(wèn)題好排查多了手里有駐波表最好沒(méi)有就換根天線對(duì)比測(cè)試。LoRa的頻率范圍從模塊到天線必須匹配天線頻段不對(duì)駐波比高功率反射回來(lái)距離斷崖式下跌。模塊放在金屬盒里或者直接裝在鐵皮柜里也會(huì)讓輻射效率大打折扣。戶外部署時(shí)天線要盡量放高、遠(yuǎn)離金屬結(jié)構(gòu)天線周圍不要有大面積導(dǎo)體。教訓(xùn)是之前幫朋友調(diào)試噴灌控制器距離怎么調(diào)都只有100米最后發(fā)現(xiàn)天線綁在鍍鋅鋼管上管子成了屏蔽體挪開后恢復(fù)800米。4.2 丟包率高先看空中時(shí)間和上報(bào)間隔丟包率高時(shí)很多人第一反應(yīng)是加大發(fā)射功率但常見根因其實(shí)是兩個(gè)空中時(shí)間太長(zhǎng)導(dǎo)致碰撞窗口變大或者上報(bào)間隔太短導(dǎo)致信道擁塞。先把節(jié)點(diǎn)當(dāng)前的SF和ToA算出來(lái)再做一下簡(jiǎn)單的信道占用估算。比如一個(gè)節(jié)點(diǎn)用SF12上報(bào)每次耗時(shí)1秒若每小時(shí)才上幾次沒(méi)問(wèn)題若每10秒上報(bào)一次信道幾乎被占滿碰撞概率極高。有一個(gè)實(shí)用的經(jīng)驗(yàn)所有鄰居節(jié)點(diǎn)上報(bào)占用的總信道時(shí)間不要超過(guò)可用時(shí)間的10%。用這個(gè)標(biāo)準(zhǔn)去限制度上報(bào)頻率和節(jié)點(diǎn)數(shù)量比反復(fù)調(diào)功率更有效。4.3 同頻干擾與占空比限制470到510MHz頻段是比較擁擠的周邊可能有各種無(wú)線設(shè)備。如果某一側(cè)出現(xiàn)持續(xù)干擾可以配置模塊把中心頻率偏移到相對(duì)干凈的位置或者把SF調(diào)高一級(jí)讓解調(diào)器有一定抗底噪能力。LoRa自身抗干擾能力確實(shí)強(qiáng)但遇到同頻強(qiáng)干擾誤碼率照樣飆升。需要注意的是免授權(quán)頻段的使用通常也有監(jiān)管要求包括功率上限和占空比限制。做產(chǎn)品或大規(guī)模部署前要確認(rèn)模塊是否符合對(duì)應(yīng)無(wú)線電管理要求不要只看參數(shù)表。4.4 電池不耐用排查RX窗口和睡眠模式電池掉電快的時(shí)候先別急著換個(gè)更大容量的電池先用萬(wàn)用表或者低功耗分析儀測(cè)一下節(jié)點(diǎn)的常態(tài)電流。TX瞬間電流90到120mARX模式10到15mASleep模式應(yīng)該遠(yuǎn)小于1uA。如果節(jié)點(diǎn)電流一直在幾十毫安級(jí)別多半是LoRa模塊沒(méi)真正進(jìn)入Sleep或者M(jìn)CU的外設(shè)沒(méi)關(guān)完。代碼里比較隱蔽的問(wèn)題是中斷喚醒后沒(méi)有正確處理標(biāo)志位導(dǎo)致進(jìn)入睡眠的指令被中斷打斷模塊一直停在RX狀態(tài)。另外SPI上拉電阻沒(méi)接好也會(huì)造成額外漏電。低功耗項(xiàng)目的核心原則是不干活的時(shí)候一切外設(shè)都要斷電包括傳感器否則一個(gè)看似省電的傳感器待機(jī)電流可能吃掉整塊電池。4.5 用RSSI和SNR輔助定位問(wèn)題最后給一個(gè)排障建議每個(gè)節(jié)點(diǎn)上報(bào)數(shù)據(jù)時(shí)把RSSI和SNR一起送到網(wǎng)關(guān)程序里記錄連續(xù)幾十包的趨勢(shì)。信號(hào)弱但SNR正常時(shí)問(wèn)題多在距離和發(fā)射功率SNR持續(xù)偏低時(shí)說(shuō)明干擾大比如環(huán)境底噪高或附近有金屬反射物RSSI和SNR都正常卻丟包那大概率是碰撞或軟件時(shí)序問(wèn)題。有條件的可以準(zhǔn)備一個(gè)USB轉(zhuǎn)TTL配合一個(gè)AT指令LoRa模塊專門當(dāng)“抓包器”用掛在節(jié)點(diǎn)旁監(jiān)聽節(jié)點(diǎn)實(shí)際發(fā)了什么、網(wǎng)關(guān)回了什么。這個(gè)工具幫我解決過(guò)的bug比示波器都多。5. 一些補(bǔ)充經(jīng)驗(yàn)和后續(xù)擴(kuò)展方向我個(gè)人的體會(huì)是LoRa項(xiàng)目能不能成協(xié)議參數(shù)只占三成剩下的七成都在天線部署、供電策略、節(jié)點(diǎn)時(shí)序這些容易被忽略的細(xì)節(jié)上。如果你要拿這份PPT去講傳感網(wǎng)應(yīng)用開發(fā)我的建議是帶一對(duì)真實(shí)模塊到現(xiàn)場(chǎng)先跑一遍點(diǎn)對(duì)點(diǎn)傳輸讓學(xué)生看到串口里打出的RSSI再拋出“為什么發(fā)10字節(jié)要花幾十毫秒”這個(gè)問(wèn)題接下來(lái)再講擴(kuò)頻因子和空中時(shí)間效果比死講公式好太多。演示前要提前確認(rèn)現(xiàn)場(chǎng)的頻點(diǎn)和天線擺放避免翻車。后續(xù)可以往兩個(gè)方向擴(kuò)展一是接LoRaWAN在樹莓派上用開源網(wǎng)關(guān)軟件自建一套小型公有或私有網(wǎng)絡(luò)配合CayenneLPP載荷格式做數(shù)據(jù)上云二是引入Class B和Class C設(shè)備的場(chǎng)景設(shè)計(jì)比如下行控制命令怎么下發(fā)到休眠節(jié)點(diǎn)。LoRa的可玩性在于它把通信系統(tǒng)的各個(gè)層次都攤開了從物理層參數(shù)到MAC層組網(wǎng)都能親手調(diào)一遍這也是它在教學(xué)和產(chǎn)品驗(yàn)證里一直有存在感的原因。本文還有配套的精品資源點(diǎn)擊獲取