




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第2章 LoRa無(wú)線(xiàn)通信技術(shù)開(kāi)發(fā)2.3 LoRa協(xié)議棧協(xié)議棧解析與應(yīng)用開(kāi)發(fā)項(xiàng)目場(chǎng)景LoRa無(wú)線(xiàn)系統(tǒng)ContikiLoRa無(wú)線(xiàn)函數(shù)接口分析傳感器應(yīng)用接口分析項(xiàng)目實(shí)踐項(xiàng)目場(chǎng)景LoRa網(wǎng)絡(luò)相較于其他無(wú)線(xiàn)傳感網(wǎng)絡(luò)擁有更遠(yuǎn)的傳輸距離、擁有更好的抗干擾能力以及可控的數(shù)據(jù)收發(fā)數(shù)據(jù),同時(shí)LoRa節(jié)點(diǎn)的計(jì)算能力可控。因此LoRa模塊在無(wú)線(xiàn)傳感網(wǎng)絡(luò)領(lǐng)域擁有很大的使用優(yōu)勢(shì),在智慧畜牧方面擁有廣泛的應(yīng)用。但正因?yàn)樗倪@些特點(diǎn)使得LoRa模塊的配置變的復(fù)雜,企業(yè)為了方便LoRa模塊的物聯(lián)網(wǎng)項(xiàng)目的快速開(kāi)發(fā)專(zhuān)門(mén)為其制定了物聯(lián)網(wǎng)協(xié)議棧,用戶(hù)通過(guò)物聯(lián)網(wǎng)協(xié)議??梢詫?shí)現(xiàn)快速的項(xiàng)目開(kāi)發(fā)。因此學(xué)習(xí)協(xié)議棧的使用可以實(shí)現(xiàn)LoRa無(wú)線(xiàn)網(wǎng)絡(luò)的
2、快速開(kāi)發(fā)。任務(wù)目標(biāo)通過(guò)基于LoRa無(wú)線(xiàn)網(wǎng)的畜牧大棚空氣質(zhì)量采集和調(diào)節(jié)項(xiàng)目實(shí)例了解LoRa的網(wǎng)絡(luò)協(xié)議棧的工作原理和協(xié)議棧的關(guān)鍵接口,學(xué)習(xí)和掌握邏輯接口的使用,掌握應(yīng)用接口的使用,通過(guò)使用應(yīng)用接口能夠?qū)崿F(xiàn)快速的LoRa無(wú)線(xiàn)傳感網(wǎng)絡(luò)開(kāi)發(fā)。LoRa無(wú)線(xiàn)系統(tǒng)ContikiContiki 兩個(gè)主要機(jī)制:事件驅(qū)動(dòng)和 protothread 機(jī)制,前者是為了降低功耗,后者是為了節(jié)省內(nèi)存。在 Contiki 系統(tǒng)中,事件被分為以下三種類(lèi)型:定時(shí)器事件(timer events)進(jìn)程可以設(shè)置一個(gè)定時(shí)器,在給定的時(shí)間完成之后生成一個(gè)事件,進(jìn)程一直阻塞直到定時(shí)器終止,才繼續(xù)執(zhí)行。外部事件(external event
3、s)外圍設(shè)備連接到具有中斷功能的微處理器 IO 引腳, 觸發(fā)中斷時(shí)可能生成事件。內(nèi)部事件(internal events)任何進(jìn)程都可以為自身或其它進(jìn)程指定事件。事件驅(qū)動(dòng)LoRa無(wú)線(xiàn)系統(tǒng)Contiki傳統(tǒng)的操作系統(tǒng)使用棧保存進(jìn)程上下文,每個(gè)進(jìn)程需要一個(gè)棧,這對(duì)于內(nèi)存極度受限的傳感器設(shè)備將難以忍受。protothread 機(jī)制恰解決了這個(gè)問(wèn)題,通過(guò)保存進(jìn)程被阻塞處的行數(shù)(進(jìn)程結(jié)構(gòu)體的一個(gè)變量,unsiged short 類(lèi)型,只需兩個(gè)字節(jié)),從而實(shí)現(xiàn)進(jìn)程切換,當(dāng)該進(jìn)程下一次被調(diào)度時(shí),通過(guò) switch(_LINE_)跳轉(zhuǎn)到剛才保存的點(diǎn),恢復(fù)執(zhí)行。整個(gè) Contiki 只用一個(gè)棧,當(dāng)進(jìn)程切換時(shí)清空
4、,大大節(jié)省內(nèi)存。 protothread 機(jī)制LoRa無(wú)線(xiàn)系統(tǒng)ContikiContiki的用戶(hù)進(jìn)程建立較為簡(jiǎn)單。用戶(hù)進(jìn)程的建立有三個(gè)步驟,分別是定義用戶(hù)進(jìn)程,在進(jìn)程列表中添加進(jìn)程信息,編寫(xiě)進(jìn)程實(shí)體。定義用戶(hù)進(jìn)程PROCESS(hello, hello); 進(jìn)程列表中添加進(jìn)程信息struct process * const autostart_processes = &hello,NULL;autostart_start(autostart_processes);編寫(xiě)進(jìn)程實(shí)體PROCESS_THREAD(hello, ev, data) . contiki用戶(hù)進(jìn)程與程序LoRa無(wú)線(xiàn)系統(tǒng)Cont
5、iki編寫(xiě)進(jìn)程實(shí)體/hello進(jìn)程主體PROCESS_THREAD(hello, ev, data) PROCESS_BEGIN(); /進(jìn)程啟動(dòng)while(1) /進(jìn)程循環(huán)體printf(HelloWorld!rn); /進(jìn)程打印信息etimer_set(&hello_timer, CLOCK_SECOND); /進(jìn)程定時(shí)進(jìn)入執(zhí)行設(shè)置process_status = 2; PROCESS_YIELD(); /進(jìn)程跳轉(zhuǎn)PROCESS_END(); /進(jìn)程結(jié)束LoRa無(wú)線(xiàn)系統(tǒng)ContikiContiki包含一個(gè)時(shí)鐘模型和5個(gè)定時(shí)器模型(timer, stimer, ctimer, etimer,
6、 and rtimer) 5種timer簡(jiǎn)述如下:timer、stimer提供了最簡(jiǎn)單的時(shí)鐘操作,即檢查時(shí)鐘周期是否已經(jīng)結(jié)束。程序從timer中讀出狀態(tài),判斷時(shí)鐘是否過(guò)期。tmiers 是使用的系統(tǒng)時(shí)鐘的ticks,而stimers是使用的秒。Ctimer回調(diào)定時(shí)器,驅(qū)動(dòng)某一個(gè)回調(diào)函數(shù)。etimer事件定時(shí)器,驅(qū)動(dòng)某一個(gè)事件。Rtimer實(shí)時(shí)時(shí)鐘。 Contiki定時(shí)器LoRa無(wú)線(xiàn)函數(shù)接口分析LoRa協(xié)議棧工程主要包含三個(gè)文件夾。LoRa appLoRa無(wú)線(xiàn)應(yīng)用層api at-uart.c調(diào)試串口初始化 at.c提供給串口調(diào)試的AT交互協(xié)議 lora-net.cLoRa無(wú)線(xiàn)數(shù)據(jù)收發(fā)api接口
7、zxbee-sys-command.c處理下行的用戶(hù)命令 zxbee.c無(wú)線(xiàn)數(shù)據(jù)包封包、解包 devLoRa射頻驅(qū)動(dòng)及部分硬件驅(qū)動(dòng) sx1278-a.cLoRa無(wú)線(xiàn)進(jìn)程 sx1278-io.cLoRa SPI總線(xiàn)驅(qū)動(dòng) sx1278.cLoRa無(wú)線(xiàn)射頻驅(qū)動(dòng) sensorLoRa節(jié)點(diǎn)傳感器驅(qū)動(dòng) autoapps.cContiki操作系統(tǒng)進(jìn)程列表 sensor.c傳感器進(jìn)程、驅(qū)動(dòng)及應(yīng)用 contiki-conf.hLoRa網(wǎng)絡(luò)參數(shù)配置 contiki-conf.cContiki操作系統(tǒng)入口LoRa無(wú)線(xiàn)函數(shù)接口分析LoRa無(wú)線(xiàn)協(xié)議運(yùn)行于Contiki操作系統(tǒng),在系統(tǒng)啟動(dòng)后會(huì)運(yùn)行LoRa無(wú)線(xiàn)進(jìn)程進(jìn)行無(wú)線(xiàn)
8、協(xié)議的處理,并執(zhí)行:LoRa射頻初始化、LoRa網(wǎng)絡(luò)參數(shù)初始化、循環(huán)監(jiān)聽(tīng)無(wú)線(xiàn)收發(fā)數(shù)據(jù)響應(yīng)。LoRa無(wú)線(xiàn)相關(guān)主要程序文件如下:函數(shù)名稱(chēng)函數(shù)說(shuō)明sx1278-a.c啟動(dòng)LoRa無(wú)線(xiàn)協(xié)議進(jìn)程,完成無(wú)線(xiàn)網(wǎng)絡(luò)參數(shù)的初始化,循環(huán)監(jiān)聽(tīng)無(wú)線(xiàn)收發(fā)數(shù)據(jù)響應(yīng)sx1278-io.cSX1278 LoRa射頻模塊SPI總線(xiàn)讀寫(xiě)驅(qū)動(dòng)sx1278.cSX1278 LoRa射頻模塊驅(qū)動(dòng)lora-net ()LoRa無(wú)線(xiàn)協(xié)議初始化,無(wú)線(xiàn)數(shù)據(jù)收發(fā)api接口LoRa無(wú)線(xiàn)函數(shù)接口分析智云框架下SX1278模塊的物聯(lián)網(wǎng)項(xiàng)目開(kāi)發(fā)均在sensor.c文件下進(jìn)行。sensor.c文件中為上層應(yīng)用開(kāi)發(fā)設(shè)置了五個(gè)接口函數(shù),這五個(gè)應(yīng)用開(kāi)發(fā)接口函數(shù)
9、功能描述如下表所示:智云傳感器框架函數(shù)名稱(chēng)函數(shù)說(shuō)明sensorInit()傳感器硬件初始化sensorUpdate()傳感器數(shù)據(jù)定時(shí)上報(bào)sensorControl()傳感器/執(zhí)行器控制函數(shù)sensorCheck ()傳感器預(yù)警監(jiān)測(cè)及處理函數(shù)ZXBeeInfRecv()解析接收到的傳感器控制命令函數(shù)PROCESS_THREAD(sensor, ev, data)傳感器進(jìn)程(處理傳感器上報(bào)、傳感器預(yù)警監(jiān)測(cè))LoRa無(wú)線(xiàn)函數(shù)接口分析智云框架下LoRa無(wú)線(xiàn)節(jié)點(diǎn)示例程序基于Contiki系統(tǒng)框架開(kāi)發(fā),詳細(xì)程序流程圖如下:智云傳感器程序解析項(xiàng)目實(shí)踐畜牧氣體采集和調(diào)節(jié)硬件框圖設(shè)計(jì)如下:硬件功能設(shè)計(jì)項(xiàng)目實(shí)踐L
10、oRa無(wú)線(xiàn)節(jié)點(diǎn)示例程序LoRaApiTest基于LoRa無(wú)線(xiàn)協(xié)議框架開(kāi)發(fā)的詳細(xì)程序流程圖如下:軟件邏輯設(shè)計(jì)項(xiàng)目實(shí)踐通信協(xié)議設(shè)計(jì)為了實(shí)現(xiàn)LoRa節(jié)點(diǎn)的數(shù)據(jù)能夠?qū)崿F(xiàn)遠(yuǎn)程與本地的識(shí)別,需要設(shè)計(jì)一套約定的通訊協(xié)議,約定的通信協(xié)議可以被遠(yuǎn)程設(shè)備和本地節(jié)點(diǎn)識(shí)別。根據(jù)項(xiàng)目特性設(shè)計(jì)通信協(xié)議如下:數(shù)據(jù)方向協(xié)議格式說(shuō)明上行(節(jié)點(diǎn)往應(yīng)用發(fā)送數(shù)據(jù))gas=XX表示采集的氣體濃度值下行(應(yīng)用往節(jié)點(diǎn)發(fā)送指令)cmd=XX為0表示關(guān)閉風(fēng)扇,1表示開(kāi)啟風(fēng)扇。項(xiàng)目實(shí)踐運(yùn)行LoRaApiTest工程,通過(guò)IAR工具的進(jìn)行程序的開(kāi)發(fā)、調(diào)試,設(shè)置 斷點(diǎn)理解LoRa無(wú)線(xiàn)框架程序調(diào)用關(guān)系。項(xiàng)目實(shí)踐LiteB-LR節(jié)點(diǎn)每隔20s會(huì)上傳一次氣體數(shù)據(jù)到應(yīng)用層(氣體數(shù)據(jù)是通過(guò)隨機(jī)數(shù)產(chǎn)生)。同時(shí)通過(guò)ZCloudTools工具發(fā)送風(fēng)扇控制
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年宣傳教育全年工作總結(jié)模版
- 傭金返還合同范例
- 企業(yè)文化在辦公空間人性化設(shè)計(jì)中的體現(xiàn)
- 2025年新《黨政領(lǐng)導(dǎo)干部選拔任用工作條例》學(xué)習(xí)討論發(fā)言稿模版
- 機(jī)器人焊接 14 項(xiàng)目七任務(wù)7.2教學(xué)設(shè)計(jì)
- 醫(yī)療大數(shù)據(jù)挑戰(zhàn)與機(jī)遇并存的價(jià)值挖掘
- 倉(cāng)儲(chǔ)協(xié)議合同范例簡(jiǎn)短范例
- 幼兒園教師年度考核個(gè)人工作總結(jié)模版
- 關(guān)于建筑師負(fù)責(zé)制的工作總結(jié)模版
- 醫(yī)療物資全鏈條管理的實(shí)踐與思考
- 職業(yè)生涯規(guī)劃家庭影響因素
- 潔凈環(huán)境監(jiān)測(cè)課件
- Python數(shù)據(jù)分析與應(yīng)用-從數(shù)據(jù)獲取到可視化(第2版)課件 第3章 數(shù)據(jù)分析庫(kù)pandas基礎(chǔ)
- 疼痛科護(hù)理的現(xiàn)狀與發(fā)展趨勢(shì)
- 用戶(hù)思維培訓(xùn)課件
- 企業(yè)反商業(yè)賄賂法律法規(guī)培訓(xùn)
- 安心護(hù)行 從個(gè)案分析看創(chuàng)傷骨科患者VTE管理低分子肝素合理應(yīng)用版本
- CONSORT2010流程圖(FlowDiagram)【模板】文檔
- 軟件質(zhì)量保證與測(cè)試技術(shù)智慧樹(shù)知到課后章節(jié)答案2023年下青島工學(xué)院
- 備用柴油發(fā)電機(jī)定期啟動(dòng)試驗(yàn)記錄表
- 學(xué)前教育畢業(yè)論文5000字【6篇】
評(píng)論
0/150
提交評(píng)論