【RT-Thread作品秀】基于RT-Thread的氣壓溫度測(cè)量系統(tǒng)
作者:安靜的句型
概述(說(shuō)明應(yīng)用產(chǎn)生的背景、實(shí)現(xiàn)功能)
基于ART-Pi,利用MS-P2XD10氣壓傳感器模塊,L610-CN-00-MiniPCIe-10Cat模塊,設(shè)計(jì)了一款氣壓溫度測(cè)量系統(tǒng),測(cè)量環(huán)境的大氣壓力和溫度,并上報(bào)到阿里云,連接到物模型,實(shí)時(shí)顯示。
開(kāi)發(fā)環(huán)境(所采用的軟、硬件方案)
硬件:ART-Pi;L610;LPS22HH
RT-Thread版本:4.0.3
開(kāi)發(fā)工具及版本:MDK-v5.27.0.0
RT-Thread使用情況概述(簡(jiǎn)要總結(jié)下應(yīng)用中RT-Thread使用情況:內(nèi)核部分、組件部分、軟件包部分、內(nèi)核、其他)
使用了RT-Thread內(nèi)核中使用線程、信號(hào)量、 郵箱、內(nèi)存池等功能,在讀取到傳感器數(shù)據(jù)后,將氣壓和溫度數(shù)據(jù)通過(guò)郵箱傳輸?shù)桨⒗镌瓢l(fā)布線程,向云端發(fā)送。
調(diào)用了FinSH組件用于系統(tǒng)過(guò)程調(diào)試,監(jiān)視線程應(yīng)用情況、設(shè)備使用情況、其它信息等。
加載了多個(gè)軟件包:
AT DEVICE軟件包,用于L610的驅(qū)動(dòng)。
WebClient軟件包,測(cè)試L610功能。
ali_iotkit軟件包,配置阿里云三元組信息,連接阿里云。
cJSON軟件包,進(jìn)行數(shù)據(jù)封裝。
硬件框架(概述應(yīng)用所采用的硬件方案框圖,并對(duì)核心部分做介紹)
利用ART-Pi作為主控單元,通過(guò)I2C接口與LPS22HH氣壓傳感器模塊通訊,獲取氣壓和溫度值。通過(guò)UART接口與L610Cat通訊模塊通訊,與云端連接。
其中LPS22HH需注意連線,具體連線如下:
LPS22HH板 |
ART-Pi |
定義 |
P1-1 |
3.3V |
|
VDDIO |
P1-1 |
3.3V |
SA0 |
P2-39 |
GND |
SDA |
P1-3 |
I2C-SDA |
SCL |
P1-5 |
I2C-SCL |
CS |
P1-1 |
3.3V |
GND |
P1-39 |
GND |
其中VDD和VDDIO都是為L(zhǎng)PS22HH供電,直接使用ART-Pi的3.3V電源。SA0是用于選擇地址,接地后地址為0x5C。SDA和SCL是I2C接口“i2c3”。CS作為片選信號(hào),接高電平后選擇接口為I2C。
L610連線如下:
L610板 |
ART-Pi |
定義 |
UA1_TX |
P1-10 |
UART-TX |
UA1_RX |
P1-8 |
UART-RX |
AUTO_POWER_ON_1 |
P1-6 |
GND |
AUTO_POWER_ON_2 |
P1-12 |
PI5 |
CTS短路帽不接。
電源短路帽接至VUSB。
連接USB接口供電和通訊。
軟件框架說(shuō)明(介紹應(yīng)用所采用的軟件方案框圖、流程圖等,并加以解說(shuō))
在main.c文件中首先進(jìn)行了L1610的上電,mqtt初始化,lps22hh初始化等,并創(chuàng)建了四個(gè)線程,LED閃爍線程、阿里云發(fā)送數(shù)據(jù)線程、接收阿里云命令線程、定時(shí)器線程。
當(dāng)前實(shí)現(xiàn)了基礎(chǔ)功能:
- 通過(guò)控制臺(tái)發(fā)送讀取傳感器數(shù)據(jù)指令后,在阿里云顯示的功能。
后期還需繼續(xù)完善兩個(gè)功能:
- 硬件定時(shí)器功能,可按設(shè)定的時(shí)間間隔進(jìn)行工作,采集傳感器數(shù)據(jù)并上報(bào)云端,當(dāng)前使能了timer13,但是定時(shí)器無(wú)法正常工作,程序是按照文檔和原潘多拉板直接移植的,暫未找到問(wèn)題原因。
- 阿里云下發(fā)命令功能,阿里云可以下發(fā)命令控制LED開(kāi)關(guān),下發(fā)命令控制硬件定時(shí)器定時(shí)間隔,隨時(shí)修改傳感器上報(bào)數(shù)據(jù)頻率。除了阿里云在線調(diào)試界面,暫未找到如何下發(fā)命令方法。
還有一些問(wèn)題:
- L610的初始化過(guò)程有些不太清楚,看at_device_l610.c文件,是在其中創(chuàng)建了一個(gè)初始化的線程并直接調(diào)用了,這個(gè)怎么能在main中統(tǒng)一初始化呢,現(xiàn)在是在main中延時(shí)了10秒等待初始化完成后再執(zhí)行mqtt等初始化。
- 對(duì)接sensor設(shè)備框架未成功,嘗試了創(chuàng)建sensor設(shè)備成功,但是初始化過(guò)程應(yīng)該有問(wèn)題,對(duì)于一個(gè)傳感器兩個(gè)參數(shù)的情況暫未了解透徹。
軟件模塊說(shuō)明(介紹應(yīng)用軟件關(guān)鍵部分的邏輯、采用的實(shí)現(xiàn)方式等)
sensor_st_lps22hh應(yīng)用模塊
直接調(diào)用了st的函數(shù)庫(kù)lps2hh_reg,首先創(chuàng)建了stmdev_ctx_t變量,完成了寄存器讀寫(xiě)函數(shù)的實(shí)例化,在此需注意lps22hh的地址,選擇了sa0為gnd后地址為0x5c,此地址為7位,可以直接在i2c設(shè)備框架中直接賦值無(wú)需右移。另外在讀取寄存器值時(shí)應(yīng)首先寫(xiě)地址然后才是讀數(shù)據(jù)。參考st的polling文件,編寫(xiě)了初始化函數(shù)和讀取數(shù)據(jù)函數(shù),直接讀取氣壓和溫度值,并發(fā)送至郵箱。
api_ali應(yīng)用模塊
參考ali-iotkit的mqtt_example文件,在ENV中配置好三元組信息后,進(jìn)行mqtt初始化,讀取三元組,與云端建立mqtt連接,并訂閱了發(fā)布和讀取主題。編寫(xiě)了數(shù)據(jù)發(fā)布函數(shù),可由發(fā)布線程直接調(diào)用。試驗(yàn)了cJSON軟件包,直接打包成json數(shù)據(jù),試驗(yàn)了直接賦值字符串,均可正常實(shí)現(xiàn)。試驗(yàn)了接收命令線程,在阿里云中在線調(diào)試發(fā)送命令,可以在串口助手中看到接收的命令。
演示效果(演示效果請(qǐng)采用3張高清圖片,并錄制一段不少于1min視頻解說(shuō)應(yīng)用所實(shí)現(xiàn)的效果,視頻上傳至B站或者騰訊視頻或其他視頻平臺(tái),給出鏈接即可)
比賽感悟(可以圍繞這次比賽學(xué)到了什么,克服了哪些困難,有哪些收獲,不低于200字)
- 第一次使用L610這種無(wú)線通訊模塊,遇到了很多問(wèn)題,從模塊連接、模塊自測(cè)、模塊連云等,還出現(xiàn)了USB插座掉落等問(wèn)題,感謝群里的leon和廣和通技術(shù)王工,耐心的指點(diǎn),解決了很多問(wèn)題,例如沒(méi)有例程中的算法,其實(shí)加載rtt的算法也可以正常運(yùn)行;L610的連線和功能定義;AT+CLOUDAUTH錯(cuò)誤;模塊有多個(gè)程序版本(有的可以直接連阿里云,有的是通過(guò)ART-Pi連接);物聯(lián)網(wǎng)卡初始化過(guò)程需要屏蔽掉CREG自測(cè)等等。
- lps22hh使用過(guò)程中的問(wèn)題主要是連線,對(duì)于開(kāi)發(fā)板的各個(gè)引腳連接不太清楚,查看手冊(cè)后根據(jù)開(kāi)發(fā)板上絲印嘗試了CS和SA0等的連接,解決問(wèn)題。
- 還有一些問(wèn)題,sensor框架對(duì)接還是沒(méi)有實(shí)現(xiàn),硬件定時(shí)器不工作。
- ART-Pi及L610的手冊(cè)還是有豐富和規(guī)范的空間。例如ART-Pi找各個(gè)功能模塊和引腳定義比較復(fù)雜,后來(lái)看到了《RT-Thread 開(kāi)源硬件ART-Pi引腳擴(kuò)展說(shuō)明》簡(jiǎn)化了很多工作,還可以有很多類(lèi)似工作。
L610的手冊(cè)很多而且是一個(gè)個(gè)給出,沒(méi)有一個(gè)清晰的了解。希望能有一個(gè)包括連線說(shuō)明、快速使用、自測(cè)方法、移植方法等的一個(gè)循序漸進(jìn)的說(shuō)明手冊(cè)。