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