LoRa模塊學習

什么是LoRa調制

LoRa(Long Range,遠距離)是一種調制技術,與同類技術相比,提供更長的通信距離。調制是基于擴頻技術,線性調制擴頻(CSS)的一個變種,具有前向糾錯(FEC)。

LoRa顯著地提高了接受靈敏度,與其它擴頻技術一樣,使用了整個信道帶寬廣播一個信號,從而使信道噪聲和由于使用低成本晶振而引起頻率偏移的不敏感性更健壯。

LoRa 可以調制信號 19.5dB 低于底噪聲,而大多數頻移鍵控(FSK)在底噪聲上需
要一個 8-10dB 的信號功率才可以正確調制。

LoRa調制是物理層(PHY),可為不同協議和不同網絡架構所用-Mesh、Start、點對點等等。

LoRa網關

LoRa網關設計用于遠距離星型架構,并運用在LoRaWAN系統中。
他們是多信道、多調制收發、可多信道同時解調、由于LoRa的特性甚至可以同一信道上同時多信號解調。

網關使用不同于終端節點的RF器件,具有更高的容量,作為一個透明橋在終端設備和中心網絡服務器間中繼消息。

網關通過標準IP連接到網絡服務器,終端設備使用單跳的無線通信到一個或多個網關。

所有終端節點的通信一般都是雙向的,但還支持如組播功能操作,軟件升級,無線傳輸或其他大批量發布消息,這樣就減少了無線通信時間。根據要求的容量和安裝位置(家庭或塔),有不同的網關版本。

LoRa集中器是什么?

網關和集中器這兩個術語都有在使用,但在LoRa系統中他們是等效的部件。

LoRa處理干擾怎么樣

LoRa調制解調器對同信道GMSK干擾抑制可達19.5dB,換句話說,它可以接受低于干擾信號或低噪聲的信號。
因為擁有這么強的抗干擾性,所以 LoRaTM 調制系統不僅可以用于頻譜使用率較高的頻段,也可以用于混合通訊網絡,以便在網絡中原有的調制方案失敗時擴大覆蓋范圍。

LoRa數據速率

LoRa 定義了一組特定的數據速率,但終端芯片或 PHY 是可以有多種選項。SX1272 支持數據速率從 0.3到 37.5kbps,SX1276 支持 0.018 到 37.5kbps。

LoRa終端節點

LoRa終端節點是LoRa網絡的部分,進行感應或控制。
他們在遠程電池供電。
這些終端節點使用LoRa私有協議與LoRa網關建立通信。

自適應數據速率(ADR)

ADR是一種方法,改變實際的數據速率以確保可靠的數據包傳送,最優的網絡性能,容量的規模。
例如,靠近網關的節點使用較高的數據速率(縮短傳輸時間)和較低的輸出功率。只有在鏈路預算非常邊緣的節點才能使用最低的數據速率和最大的輸出功率。

ADR方法可以適應網絡基礎設施的變化,支持變化的路徑損耗。
為使中斷設備的電池壽命和總體網絡容量最大化,LoRa網絡基礎設施通過實現ADR對每個終端設備的數據速率和RF輸出分別進行管理。

碰撞丟包

在LoRa調制技術中,同一時刻不同節點給同一集中器或主機的同一通道發送數據會造成碰撞丟包,避免此問題的方式是做分時處理然后增加多通道來緩解壓力從而提高效率。

Ra-06如何進行組網?

模塊通過AT指令設置其類型,申請入網成功后,變可與網關通信。
另外模塊在class B模式下還可與網關同步。

Ra-06模塊實現點對點通信的要求

兩通信模塊的頻率,空中等級速率要想通,發送模塊的目標節點地址須為接收模塊的本地節點地址。

Ra-06與Ra-01,Ra-02最大的區別

Ra-06是帶MCU的模組(同一模組上含有127X射頻芯片和主控MCU芯片),此MCU內含有LoRa驅動固件,可以直接進行AT設置參數并進行數據透傳;Ra-01和Ra-02是SPI硬件模塊(模塊時只有一片12x射頻芯片),需要用戶自己寫LoRa驅動程序。

當兩個LoRa模塊不能相互通信時,故障檢測的步驟是什么?

先檢查SPI通信是否成功,成功的標志是讀取芯片的Version值是0x12,DIO0引腳負責通知MCU接收完成,檢查DIO0引腳配置是否正常。
LoRa的配置參數要一致,包括頻率、擴頻因子、帶寬、編碼率,前導碼長度、跳頻使能、同步自、低速率優化,以上參數有一個不同就無法通信。

LoRa網關,集中器,節點

LoRa網關:將多個節點或者集中器的LoRa數據轉換為其它信號數據并且進行收發的設備。
集中器:將多個節點的數據收集,集中發送給網關和下發網關數據的設備,具有分擔網關數據壓力和中繼的功能。
節點設備:節點設備又稱為終端設備。

LoRa網關的容量?一個網關可以連接多少個節點?

容量是在一定時間內節接受數據包數量的一個結果。一個 SX1301 有 8 個通道,使用
LoRaWAN 協議每天可以接受接近 150 萬包數據。因此,如果你的應用每小時發送一個包,那么一個 SX1301
網關可以處理大約 62500 個終端設備。

LoRa私有網關和LoRaWAN網關的區別

LoRa私有網關指對應客戶私有服務器或者私有云開發的網關,走的自定義的加密及通信協議,只適用于對應協議及加密開發的節點模塊,并且無法接入走LoRaWAN標準的物聯網平臺;
LoRaWAN 網關 L 聯盟制定的通信標準,只要符合此標準開發的網關設備都可以接入走 LoRaWAN 標準的物聯網平臺,也能對接走此標準開發
的節點設備。

LoRa設備可以頻繁地在FSK和LoRa調制之間改變模式

LoRa 模塊低功耗模式是怎樣實現的?

一種基于LoRa無線模塊的低功耗無線網絡的實現方法,該無線網絡由發送源及多個節點組成,每一個LoRa無線模塊自行維護一個計時器,節點進入休眠模式時,計時器開始計時;到達計時器預設時間后,節點被喚醒并進入CAD檢測模式;節點在CAD模式下檢測信號,如果檢測到信號進入工作模式,執行下一步,如果沒有信號則進入休眠模式;節點根據接收到的數據判斷出該信號是否是發給自己的,如果是則進入正常數據接收模式,完成與發送源的數據交互;否則,節點重新設置計時器的休眠時間后,進入休眠模式。

本發明利用LoRa無線模塊CAD模式下能耗低的特點,對接收到的數據進行判斷分析來切換工作狀態,從而實現低功耗的目的。

怎樣把LoRa終端功耗降到極致?

硬件方面:

  1. 選用低功耗器件終端,MCU選用STM8L151C8T6,它屬于超低功耗,不帶RTC休眠為400nA,帶RTC休眠為1.4uA。
  2. 終端射頻芯片選用SX1278,在休眠模式下,該芯片功耗低至忽略不計。
  3. 盡可能快地讓射頻模塊休眠,SX1278屬于LoRa擴頻調制技術,它的遠距離優勢得益于調制增益,不是靠增大發射功率(那將消耗更多電能)。
  4. 該射頻芯片的電流消耗如下:休眠<0.2uA,空閑=1.6mA,接收=12mA,發射=120mA。
  5. 終端MCU通過“終端+定時器超時”方式控制SX1278,一旦射頻完成發送或接收,立即進入休眠模式。
  6. 降低MCU的功耗首先盡可能少地開啟外設,其次盡可能地讓其休眠。
  7. 靜態配置MCU引腳,即使MCU和RF都進入休眠模式,如果沒有設置好MCU引腳,它們照樣會“偷偷”消耗電能。

軟件方面:

  1. 動態切換MCU引腳,有2類MCU引腳:MCU輸出和MCU輸入,它們需要動態進行配置。具體地說,在進入低功耗模式時,將其分別配置成:輸入上拉和輸入懸浮;在退出低功耗模式時,將配置成定義的功能狀態。
  2. 在動態切換時需要考慮2點:首先,動態切換引腳是需要時間的,以STM8L151C8T6為例,動態切換5個引腳需要447us,可見它一般用于休眠這種長周期的節能模式,不適合空閑停止這種短暫節能模式。
  3. 其次,在實際開發中引腳的連接是變化的,換句話說,今天這個引腳是空閑,下次產品升級該引腳可能設計成特定功能。為減少軟件維護成本,需要設計一種優秀的數據結構,它能描述 MCU 所有引腳,如果引腳功能改變,只需要修改數據定義,而不需要修改程序
  4. 一旦無事可干,MCU立即停止或休眠,在LoRa終端系統中,MCU是能源的持續消耗者,軟件設計需要盡可能快地讓MCU節能,有兩種節能模式。
  5. 短暫等待:如等RF發送數據幀完畢,MCU執行WFI指令,一旦RF完成發送,中斷將MCU喚醒繼續運行;
  6. 長期等待:如等待下一次主動上報數據幀,MCU執行HALT執行,當指定時間到達時,RTC中斷將MCU喚醒繼續運行。
  7. 采用高效率算法,軟件算法效率越高,MCU 計算時間更少,可以更快進入低功耗,也就更節能。在終端設計中有 2 個算法比較消耗時間:CRC16:無線傳輸易受干擾,一般通信幀需要添加 CRC16 檢測正確性,我們采用查表的方法減少 CRC16 的計算時間。

在LoRA調制技術中,我們可以做定時喚醒或者前導碼喚醒的方式做到低功耗。
前者利用主控MCU定時喚醒,后者采用前導碼喚醒的方式來促使模組進入正常收發狀態。

Preamble寄存器

x1278在接收數據期間會接收前導碼,如果在設置的時間內接收不到便進入睡眠,如果接收到前導碼則開始接收后面的數據。設置改寄存器確定接收前導碼的查長度。在LoRaWAN的模式下一步設置到8。

中斷是高電平有效。

在LoRa模式中最大數據包長度是256字節。

SX1276/77/78芯片數字IO引腳映射

SX1276/7/8的6個DIO通用IO引腳在LoRa模式下均可用。
在這里插入圖片描述
DIO0最常用,主要是發送/接收/CAD完成的中斷產生。

在LoRa模式中如何使用DIOx引腳?所有DIOx引腳都要連接到MCU嗎?

在LoRa和FSK兩種模式中檢查DIO映射。可以在SX127x LoRa數據手冊中找到DIO映射信息。
DIO沒有像通常MCU GPIO那樣的功能。有一些特殊的中斷信息(或時鐘輸出)指示事件或芯片狀態,也可以不連接DIO引腳,那么久輪詢相關的寄存器知道狀態結果。
當然,我們建議連接DIO盡可能多地用作外部中斷功能,節省MCU的資源負載,可以很低功耗工作模式(當打包發送或接受數據包時,MCU睡眠)。

前導碼長度如何設置?

前導碼長度設置比較特殊,接收端配置的前導碼長度必須大于等于發送端的前導碼長度,接收端才能接收到數據,這就是基于前導碼長度的數據包過濾,默認長度為8個字節,最小可以設置6個字節。

LoRa數據包結構

數據包包含以下三個組成部分:前導碼、數據報頭和數據有效負載。
在這里插入圖片描述
前導碼
前導碼用于保持接收機與輸入的數據流同步。
默認情況下,數據包含有12個符號長度的前導碼。前導長度是一個可以通過編程來設置的變量,所以前導碼的長度可以擴展。

例如,在接收密集型應用中,為了縮短接收機占空比,可縮短前導碼的長度。然而,前導碼的最小允許長度就可以滿足所有通訊需求。

對于希望前導碼是固定開銷的情況,可以將前導碼寄存器長度設置在 6 到65536 之間來改變發送前導碼長度,實際發送前導碼的長度范圍為 6+4 至 65535+4 個符號。這樣幾乎就可以發送任意長的前導碼序列。

接收機會定期執行前導碼檢測。因此,接收機的前導碼長度應與發射機一致。
如果前導碼長度為未知或可能會發生變化,應將接收機的前導碼長度設置為最大值。

顯示報頭
顯示報頭模式是默認的操作模式。
在這種模式下,報頭包含有效負載的相關信息,包括:

  • 以字節數表示的有效負載長度;
  • 前向糾錯碼率
  • 是否打開可選的16位負載CRC

報頭按照最大糾錯碼(4/8)發送。另外,報頭還包含自己的CRC,使接收機可以丟棄無效的報頭。

隱式報頭模式
在特定情況下,如果有效負載長度、編碼率以及CRC為固定或已知,則比較有效的做法是通過調用隱式報頭來縮短發送時間。
這種情況下,需要手動設置無線鏈路兩端的有效負載長度、錯誤編碼率以及CRC。

如果將擴頻因子SF設定為6,則只能使用隱式報頭模式。

低數據速率優化
由于擴頻因子較高時,數據包的發送時間可能較長。因此可以選擇在數據包發送和接受期間提高傳輸對頻率變化的魯棒性。
有效數據速率較低時,可通過 LowDataRateOptimize 位提高
LoRa 鏈路的魯棒性。當單個符號傳輸時間超過 16 毫秒時,必須使用 LowDataRateOptimize
位。注意:發射機和接收機的 LowDataRateOptimize 位設置必須一致。

有效負載
數據包有效負載是一個長度不固定的字段,而實際長度和糾錯編碼率CR則由顯示模式下的報頭指定或者由隱式模式下載寄存器的設置來決定。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/10386.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/10386.shtml
英文地址,請注明出處:http://en.pswp.cn/web/10386.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

安裝SQL Server詳細教程_sql server安裝教程

一&#xff0c;SQL Server數據庫安裝 1.首先&#xff0c;下載安裝程序 &#xff08;1&#xff09;從網盤下載安裝exe 點擊此處直接下載 &#xff08;2&#xff09;從官網下載安裝exe文件 在官網選擇Developer進行下載 2.開始安裝 雙擊安裝程序&#xff0c;開始安裝 這里直…

python-pytorch seq2seq+attention筆記0.5.00

python-pytorch seq2seq+attention筆記0.5.00 1. LSTM模型的數據size2. 關于LSTM的輸入數據包含hn和cn時,hn和cn的size3. LSTM參數中默認batch_first4. Attention機制的三種算法5. 模型的編碼器6. 模型的解碼器7. 最終模型8. 數據的準備9. 遇到的問題10. 完整代碼1. LSTM模型的…

PHP數值數組講解,for循環及函數 遍歷數組獲取元素

源碼 <?phpheader("Content-Type:text/html;Charsetutf8");//創建數值數組$arr1 array();//簡化創建語法 $arr2 [];//通過索引為數組添加不同類型的元素$arr1[0] "zhangsan" ;//也可以亂序添加元素$arr1[2] 12 ;$arr1[1] true ; //true輸出為1 f…

搭建vue3組件庫(四): 樣式庫搭建

文章目錄 1. 樣式目錄文件架構2. SCSS 樣式變量2.1 設置顏色 SCSS 變量2.2 設置多種類型主題2.3 生成全局類型主題 SCSS 變量2.4 分組生成 SCSS 變量 1. 樣式目錄文件架構 packages/theme-chalk 目錄結構&#xff1a; ├── packages │ ├── theme-chalk │ │ ├─…

excel表格里,可以把百分號放在數字前面嗎?

在有些版本里是可以的&#xff0c;這樣做&#xff1a; 選中數據&#xff0c;鼠標右鍵&#xff0c;點擊設置單元格格式&#xff0c;切換到自定義&#xff0c;在右側欄輸入%0&#xff0c;點擊確定就可以了。 這樣設置的好處是&#xff0c;它仍舊是數值&#xff0c;并且數值大小沒…

說一下 hibernate 的緩存機制?

Hibernate 的緩存機制是為了提高應用程序的性能&#xff0c;通過減少對數據庫物理數據源的訪問頻次而設計的。Hibernate 的緩存主要可以分為兩個級別&#xff1a;一級緩存&#xff08;也稱為 Session 級別的緩存&#xff09;和二級緩存&#xff08;也稱為 SessionFactory 級別的…

Veeam - 數據保護和管理解決方案_Windows平臺部署備份還原VMware手冊

Veeam - - 數據保護和管理解決方案 Veeam Backup & Replication Console Veeam Data Platform Veeam Backup & Replication是一款強大的虛擬機備份、恢復和復制解決方案 安全備份、干凈恢復和數據彈性 — 即時交付 在混合云中隨時隨地管理、控制、備份和恢復您的所有數…

ARM時鐘樹結構(GD32)

時鐘樹的簡易框圖 初始化配置系統時鐘 配置系統初始化時鐘&#xff08;參考手冊&#xff09; 對應hal庫函數 使用72MHz的系統時鐘 do -----------while&#xff08;0&#xff09;的使用方法 系統時鐘 #include <stdint.h> #include "gd32f30x.h"int main(void)…

配置Docker對象與管理守護進程

前言&#xff1a;本博客僅作記錄學習使用&#xff0c;部分圖片出自網絡&#xff0c;如有侵犯您的權益&#xff0c;請聯系刪除 本章節的快速目錄導航&#xff1a; 一、配置Docker對象 1.1、Docker對象的標記 1.2、格式化命令和日志的輸出 二、示例&#xff1a; 2.1、管理…

(delphi11最新學習資料) Object Pascal 學習筆記---第11章第2節 (接口的多態性)

11.2.4 接口的多態性 ? 在上一節中&#xff0c;我們看到了如何定義多個接口&#xff0c;并讓一個類實現其中的兩個接口。當然&#xff0c;這可以擴展到任何數量。您還可以創建接口的層次結構&#xff0c;因為一個接口可以繼承另一個接口&#xff1a; ITripleJumper interfa…

開源RAG框架匯總

前言 本文搜集了一些開源的基于LLM的RAG&#xff08;Retrieval-Augmented Generation&#xff09;框架&#xff0c;旨在吸納業界最新的RAG應用方法與思路。如有錯誤或者意見可以提出&#xff0c;同時也歡迎大家把自己常用而這里未列出的框架貢獻出來&#xff0c;感謝~ RAG應用…

【代碼隨想錄37期】Day04 兩兩交換鏈表中的節點、刪除鏈表的倒數第N個節點、鏈表相交、環形鏈表II

兩兩交換鏈表中的節點 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), ne…

光通信行業專業術語解析大全

近期公司內部開展了一期學習交流會&#xff0c;各位同事收獲頗多&#xff0c;特別是關于一些專業術語的簡稱&#xff0c;大家都覺得非常有意思&#xff01;小編馬不停蹄的整理出來分享給大家&#xff0c;希望可以給學習光通信知識的萌新們小小助力&#xff01; 以下是光通信行…

QRegExp

描述 QRegExp 類使用正則表達式提供模式匹配。 正則表達式或“正則表達式”是一種用于匹配文本中子字符串的模式。這在許多情況下都很有用&#xff0c;例如&#xff0c; 驗證 正則表達式可以測試子字符串是否滿足某些條件&#xff0c;例如是整數或不包含空格。搜索 正則表達式…

網關路由的方式有哪些

在微服務架構中&#xff0c;網關路由通常用于集中處理請求分發、認證、限流、熔斷等任務。以下是幾種常見的網關路由配置方式&#xff1a; Spring Cloud Gateway 1. **基于配置文件的路由**&#xff1a; - 在Spring Cloud Gateway中&#xff0c;可以通過YAML或JSON配置文件定…

【Linux】shell編程,()圓括號, []方括號, {}花括號與(())雙括號的使用區別

1. ( )圓括號 初始化數組使用圓括號&#xff1b; 命令組&#xff0c;將一系列命令用空格隔開&#xff1b; 命令替換&#xff0c;使用$ 美元符&#xff0c;將命令進行嵌套使用&#xff1b;&#xff08;有點兒類似于管道符作用的感覺&#xff09; arr(1 2 3 4 5)2. [ ]方括號 …

【Linux】搭建私有yum倉庫(類阿里云)

在搭建本地yum倉庫并配置國內鏡像阿里云源中了解yum源 yum &#xff1a; Yellow dog Updater&#xff0c;Modified&#xff0c;是一種基于rpm包的自動升級和軟件包管理工具。yum能從指定的服務器自動下載rpm包并安裝&#xff0c;自動計算出程序之間的依賴關系和軟件安裝的步驟&…

《Python編程從入門到實踐》day25

# 昨日知識點回顧 如何創建多行外星人 碰撞結束游戲 創建game_stats.py跟蹤統計信息 # 今日知識點學習 第14章 記分 14.1 添加Play按鈕 14.1.1 創建Button類 import pygame.font# button.py class Button:def __init__(self, ai_game, msg):"""初始化按鈕…

【Python系列】Python中列表屬性提取

&#x1f49d;&#x1f49d;&#x1f49d;歡迎來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

地下工程中測斜儀的關鍵應用

地下工程&#xff0c;如隧道、地鐵和基坑等項目的建設&#xff0c;對于現代城市的發展至關重要。然而&#xff0c;這些工程的實施往往伴隨著諸多風險&#xff0c;特別是與周圍土體的穩定性有關的風險。為了確保工程的安全進行&#xff0c;實時監測技術變得尤為關鍵。其中&#…