LoRa模塊往往會(huì)內(nèi)置相關(guān)的傳感器產(chǎn)品,比如RAK7204是一個(gè)溫濕度的LoRaWAN傳感器產(chǎn)品,他就內(nèi)置了多種環(huán)境傳感器,可以采集溫度、濕度、氣壓及室內(nèi)空氣質(zhì)量參數(shù)。
不同的用戶(hù)、不同的應(yīng)用場(chǎng)景,可能會(huì)導(dǎo)致用戶(hù)對(duì)于該節(jié)點(diǎn)的收發(fā)數(shù)據(jù)的實(shí)際需求并不相同。
通常作為一個(gè)嵌入式工程師開(kāi)始去開(kāi)發(fā)一款物聯(lián)網(wǎng)產(chǎn)品,對(duì)于物聯(lián)網(wǎng)模塊的選擇,通常有幾種方式,包括串口AT命令,串口透?jìng)?,如果希望獲得更低的功耗和更優(yōu)的成本,就可以選擇使用模塊內(nèi)置的MCU做自己的應(yīng)用程序。
但是,OpenMCU的方式需要模塊供應(yīng)商具備很強(qiáng)的SDK整合能力和良好的支持文檔,比如瑞科慧聯(lián)公司就具備多款LoRa模塊允許用戶(hù)進(jìn)行二次開(kāi)發(fā),并且,還提供了多個(gè)經(jīng)低功耗設(shè)計(jì)的二次開(kāi)發(fā)應(yīng)用實(shí)例,可以幫助用戶(hù)實(shí)現(xiàn)更低的系統(tǒng)成本和更低的系統(tǒng)功耗。用戶(hù)可以參考這些實(shí)例,并根據(jù)自己的實(shí)際需求來(lái)對(duì)這些實(shí)例略作修改,就可以實(shí)現(xiàn)自己的應(yīng)用目的。
本文針對(duì)初次使用LoRaWAN模塊產(chǎn)品并希望用OpenMCU方式做二次開(kāi)發(fā)的開(kāi)發(fā)者們,介紹了LoRa模塊模塊二次開(kāi)發(fā)的具體步驟。
在物聯(lián)網(wǎng)模塊內(nèi)部做二次開(kāi)發(fā)有兩種方式,通常的做法是集成一個(gè)可以做開(kāi)發(fā)的SDK,根據(jù)SDK的一些配置接口去實(shí)現(xiàn)自己的應(yīng)用程序,但是這個(gè)做法需要用戶(hù)對(duì)于物聯(lián)網(wǎng)模塊內(nèi)部的MCU的開(kāi)發(fā)環(huán)境有一定的熟悉才可以實(shí)現(xiàn)高效的開(kāi)發(fā)。瑞科慧聯(lián)(RAK Wireless)提供一個(gè)新的方式幫助開(kāi)發(fā)者實(shí)現(xiàn)利用內(nèi)部的MCU做二次開(kāi)發(fā)。瑞科慧聯(lián)針對(duì)LoRaWAN的協(xié)議棧封裝出來(lái)多種面向場(chǎng)景的API, 用戶(hù)只需要了解API的用法,編寫(xiě)自己的應(yīng)用程序,通過(guò)一個(gè)基于Web的在線編譯平臺(tái)得到自己的開(kāi)發(fā),這個(gè)在線編譯器,相當(dāng)于就是,開(kāi)發(fā)者只需要編寫(xiě)具體的應(yīng)用部分,然后將主程序,傳上去之后,編譯好了,平臺(tái)輸出一個(gè)可執(zhí)行文件,即完成全部開(kāi)發(fā)過(guò)程。
圖1 ??以RUI方式進(jìn)行OpenMCU二次開(kāi)發(fā)的流程圖
1、了解RUI的構(gòu)成和RUI API的用途。
基于RUI開(kāi)發(fā)的固件,由兩部分組成:RUI SDK,以及Application,如本文圖1所示。
其中,RUI SDK部分為RUI的內(nèi)核,已經(jīng)適配了RAK的LoRaWAN模塊產(chǎn)品,同時(shí)向上提供一組統(tǒng)一的RUI API,供Application部分調(diào)用。
RUI API的用途和用法介紹,請(qǐng)參考RUI API手冊(cè)(可以在瑞科慧聯(lián)的官網(wǎng)上,公司官網(wǎng)->資源->文檔中心,這樣的方式可以獲取到所有產(chǎn)品的手冊(cè))。
注:1) Application是開(kāi)放源碼的,用戶(hù)可以對(duì)其進(jìn)行二次開(kāi)發(fā),按照自己的應(yīng)用邏輯進(jìn)行修改,需要的底層功能支撐都有相應(yīng)的RUI API可以調(diào)用。
2)RUI SDK部分是非開(kāi)放源碼的,它被放置于RUI在線編譯器中,當(dāng)用戶(hù)完成Application部分的二次開(kāi)發(fā)并使用RUI在線編譯器進(jìn)行編譯時(shí),RUI SDK會(huì)被自動(dòng)加載到定制化固件中。
2、?對(duì)照RAK瑞科慧聯(lián)在Github上的RUI產(chǎn)品開(kāi)發(fā)實(shí)踐代碼,了解RUI API的用法。
RAK的LoRaWAN模塊及衍生產(chǎn)品,其官方發(fā)布的固件所對(duì)應(yīng)的Application代碼,均可以在RAK的Github中找到。
圖2是Github上的文件的示例:
圖2 ??瑞科慧聯(lián)發(fā)布在Github上的固件所對(duì)應(yīng)的Application代碼文件存放示例圖
可以看到,這個(gè)代碼倉(cāng)是按照核心模塊的型號(hào)來(lái)分目錄的。我們只需要找到對(duì)應(yīng)的核心模塊目錄,就可以看到基于該模塊的一些產(chǎn)品實(shí)踐代碼了。
以LoRaWAN模塊RAK811為例,如圖3所示,當(dāng)我們進(jìn)入到“based on RAK811”目錄后,可以看到一些基于RAK811模塊的產(chǎn)品實(shí)踐示例,這些代碼展示了如何基于RAK811模塊增加一些外設(shè)和傳感器,通過(guò)這些示例代碼可以讓開(kāi)發(fā)者更快了解如何通過(guò)RUI加載傳感器:
圖3 ?瑞科慧聯(lián)在Github上的LoRaWAN模塊RAK811的產(chǎn)品實(shí)踐示例目錄圖
其中,
1)?“app_5205”是LoRaWAN追蹤器模塊RAK5205的官方固件所對(duì)應(yīng)的Application源碼,文件夾目錄示例如圖4所示。
圖4 ?瑞科慧聯(lián)在Github上的LoRaWAN追蹤器模塊RAK5205的產(chǎn)品實(shí)踐示例目錄圖
LoRaWAN追蹤器模塊RAK5205是基于RAK811模塊,增加了環(huán)境監(jiān)測(cè)傳感器(BME680)、三軸加速度傳感器(LIS3DH)、以及GPS模塊(Ublox MAX 7Q)。該目錄中的代碼示例展示了如何基于RAK811模塊,通過(guò)I2C掛接其它sensor以及通過(guò)UART掛接GPS模塊,并通過(guò)RUI API調(diào)用的方式完成定制化固件的開(kāi)發(fā)。
2)?“app_7204”是RAK7204的官方固件所對(duì)應(yīng)的Application源碼,包括RAK7204的傳感器驅(qū)動(dòng)、AT命令實(shí)現(xiàn)、應(yīng)用邏輯處理等,都在這里(如圖5所示),這里面使用了很多RUI API,用于實(shí)現(xiàn)相關(guān)功能。
圖5 ?瑞科慧聯(lián)在Github上的LoRa模塊RAK7204的產(chǎn)品實(shí)踐示例目錄圖
LoRa模塊RAK7204是基于RAK811模塊,增加了環(huán)境監(jiān)測(cè)傳感器(BME680)。因此,可以通過(guò)該產(chǎn)品實(shí)踐代碼了解到如何基于RAK811模塊增加一款I(lǐng)2C的傳感器,并通過(guò)RUI API的調(diào)用,快速完成定制化固件的開(kāi)發(fā)。例如,圖5中紅色長(zhǎng)方形圈出來(lái)的文件“app_7204.c”是應(yīng)用邏輯處理的實(shí)現(xiàn),如果要做應(yīng)用邏輯的定制開(kāi)發(fā),可以重點(diǎn)對(duì)照這里面的代碼來(lái)理解RUI API的實(shí)際用法。?
3)??“app_PT100_Digital_Pressure_Sensor”是基于RAK811模塊,增加一款液壓傳感器PT100.
4)?“app_RAK811”是RAK811模塊的官方固件所對(duì)應(yīng)的application代碼,如果想要修改RAK811模塊的工作邏輯和流程,可以基于該實(shí)例代碼進(jìn)行修改。
3、?從RAK Github上的RUI產(chǎn)品開(kāi)發(fā)實(shí)踐代碼中挑選一個(gè)合適的實(shí)例代碼,并在它的基礎(chǔ)上進(jìn)行修改,按照實(shí)際應(yīng)用需求進(jìn)行二次開(kāi)發(fā)。
RAK Github上的這些產(chǎn)品開(kāi)發(fā)實(shí)踐代碼已經(jīng)實(shí)現(xiàn)了Application的主體部分,基于它進(jìn)行代碼修改和二次開(kāi)發(fā)將事半功倍。
例如,圖5所示的RAK7204示例代碼對(duì)于節(jié)點(diǎn)收到的LoRa下行數(shù)據(jù),只是將其通過(guò)串口打印出來(lái),并未做處理,這一點(diǎn)可以從圖6所示的”app_7204.c”文件中的代碼看出:
圖6 ?瑞科慧聯(lián)在Github上的LoRa模塊RAK7204的app_7204.c代碼示例
如果你希望自己的定制化固件中對(duì)LoRa的下行數(shù)據(jù)進(jìn)行處理,可以通過(guò)修改該函數(shù)的代碼實(shí)現(xiàn)來(lái)達(dá)成目標(biāo)。
4、?完成二次開(kāi)發(fā)后,使用RUI的在線編譯器進(jìn)行編譯,得到最終的定制化固件。
RUI是瑞科慧聯(lián)深度優(yōu)化的IoT端側(cè)軟件工具。完成Application部分的定制化開(kāi)發(fā)后,就可以使用RUI的在線編譯器進(jìn)行編譯了,編譯的界面如圖7以及圖8所示。
圖7 ?瑞科慧聯(lián)RUI的使用界面之登錄界面
圖8 ?瑞科慧聯(lián)RUI的使用界面之選擇產(chǎn)品型號(hào)
如前所述,編譯時(shí),編譯器會(huì)自動(dòng)將Application和RUI SDK進(jìn)行加載并編譯都一起,輸出最終的定制化固件。
RUI在線編譯器的網(wǎng)址可以參見(jiàn)產(chǎn)品使用文檔的說(shuō)明。可以用郵箱自行注冊(cè)并使用,詳細(xì)的使用方法請(qǐng)參見(jiàn)RUI在線編譯器的使用說(shuō)明文檔。
5、?將編譯出的定制化固件燒寫(xiě)到RAK物聯(lián)網(wǎng)終端產(chǎn)品中并使用
OK,經(jīng)過(guò)前面的步驟,你已經(jīng)編譯得到了最終的定制化固件二進(jìn)制文件了,現(xiàn)在可以將它燒寫(xiě)到產(chǎn)品中進(jìn)行使用了。燒寫(xiě)固件的方法,在對(duì)應(yīng)的產(chǎn)品使用文檔中都有詳述,此處不再?gòu)?fù)述,可到瑞科慧聯(lián)的官網(wǎng)中文檔中心(官網(wǎng)->資源->文檔中心),查找對(duì)應(yīng)的產(chǎn)品使用文檔,按照產(chǎn)品使用文檔中的操作步驟執(zhí)行即可完成固件燒寫(xiě)。
三、總結(jié)
直接在內(nèi)置OpenMCU的LoRa模塊上進(jìn)行二次開(kāi)發(fā),可以參考供應(yīng)商提供的二次開(kāi)發(fā)實(shí)例,這些二次開(kāi)發(fā)實(shí)例往往是經(jīng)過(guò)低功耗設(shè)計(jì)的,因此,用戶(hù)不僅可以節(jié)約大量開(kāi)發(fā)時(shí)間、無(wú)需另外購(gòu)置部件,從而節(jié)約大量成本,還可以通過(guò)這些經(jīng)過(guò)低功耗設(shè)計(jì)的二次開(kāi)發(fā)應(yīng)用實(shí)例,來(lái)實(shí)現(xiàn)更低的系統(tǒng)成本和更低的系統(tǒng)功耗。
評(píng)論
查看更多