?
概述:
多點(diǎn)傳感器采集子系統(tǒng)是用基于 STM32 系類芯片STM32H750開(kāi)發(fā)板ART-Pi開(kāi)發(fā),支持無(wú)線采集多種傳感器數(shù)據(jù),子系統(tǒng)收集數(shù)據(jù)后通過(guò)無(wú)線網(wǎng)絡(luò)上傳分站。訪問(wèn)該子系統(tǒng)時(shí)會(huì)展示一個(gè)網(wǎng)頁(yè)顯示本系統(tǒng)采集到的傳感器數(shù)據(jù)。該系統(tǒng)適用與工業(yè)現(xiàn)場(chǎng)各種傳感器數(shù)據(jù)收集轉(zhuǎn)儲(chǔ),可以用在傳感器較多的場(chǎng)景中。
開(kāi)發(fā)環(huán)境
硬件:ART-Pi主板
擴(kuò)展板: ESP8266 WIFI模塊
RT-Thread版本:RT-Thread V 4.0.3
開(kāi)發(fā)工具及版本:RT-Thread Studio 2.0.0
RT-Thread使用情況概述
內(nèi)核部分:調(diào)度器,信號(hào)量,消息隊(duì)列。
調(diào)度器:創(chuàng)建多個(gè)線程來(lái)實(shí)現(xiàn)不同的工作。
信號(hào)量:用來(lái)同步線程。
消息隊(duì)列:用來(lái)實(shí)現(xiàn)線程之間傳遞的數(shù)據(jù)。
組件部分:SPI框架, Sensor框架,SAL 套接字抽象層
軟件包部分:
Webnet:建立一個(gè)簡(jiǎn)單Web服務(wù)器,提供數(shù)據(jù)顯示界面。
cJSON:C語(yǔ)言實(shí)現(xiàn)的極簡(jiǎn)的解析 JSON 格式的軟件包。
TFTP:上傳配置數(shù)據(jù),網(wǎng)頁(yè)文件等。
MicroPython:邏輯實(shí)現(xiàn)的主要部分。實(shí)現(xiàn)與ESP8266的連接以傳輸收集的傳感器數(shù)據(jù)。還要實(shí)現(xiàn)對(duì)展示數(shù)據(jù)的網(wǎng)頁(yè)的動(dòng)態(tài)生成。
硬件框架
將接收到ESP8266的數(shù)據(jù)轉(zhuǎn)儲(chǔ)后傳輸?shù)椒终?a class="article-link" target="_blank" href="/tag/%E4%B8%8A%E4%BD%8D%E6%9C%BA/">上位機(jī)。
軟件框架
軟件框架說(shuō)明
本項(xiàng)目使用2個(gè)線程,其中一個(gè)負(fù)責(zé)基于ESP8266的采集板通過(guò)發(fā)送UDP數(shù)據(jù)包給ARIT-Pi獲得傳感器數(shù)據(jù),另一個(gè)線程負(fù)責(zé)根據(jù)數(shù)據(jù)池的數(shù)據(jù)生成動(dòng)態(tài)網(wǎng)頁(yè)并上傳數(shù)據(jù)。
第一部分:數(shù)據(jù)接收線程
此線程負(fù)責(zé)接收由基于ESP8266的采集板發(fā)送來(lái)的UDP數(shù)據(jù)。并儲(chǔ)存在數(shù)據(jù)池內(nèi)。
第二部分:網(wǎng)頁(yè)生成線程
另一個(gè)線程負(fù)責(zé)從數(shù)據(jù)池內(nèi)提取數(shù)據(jù),并根據(jù)數(shù)據(jù)生成網(wǎng)頁(yè)供展示傳感器數(shù)據(jù)。然后將接收到ESP8266的數(shù)據(jù)轉(zhuǎn)儲(chǔ)后傳輸?shù)椒终旧衔粰C(jī)。
軟件模塊說(shuō)明
server_run:接收UDP數(shù)據(jù)包線程,提取有用傳感器數(shù)據(jù),保存在數(shù)據(jù)池。
web_run:根據(jù)采集到的數(shù)據(jù)生成網(wǎng)頁(yè)文件,并保存在/flash/webnet目錄下。然后將數(shù)據(jù)上傳至上位機(jī)。
main:負(fù)責(zé)led 閃爍,用來(lái)顯示當(dāng)前系統(tǒng)的運(yùn)行狀態(tài)。
演示效果
從傳感器傳來(lái)的數(shù)據(jù)是隨時(shí)變化的。
使用的材料其實(shí)也很簡(jiǎn)單,就是一個(gè)ART-Pi主板和一個(gè)ESP8266模塊。
視頻觀看:
比賽感悟
通過(guò)這次實(shí)踐,我學(xué)習(xí)了RT-Thread 操作系統(tǒng)的裁剪和各種組件和軟件包的搭配使用。在過(guò)程中學(xué)到了許多以前沒(méi)有接觸過(guò)的知識(shí),也對(duì)RT-Thread RTOS也有了新的認(rèn)識(shí)。對(duì)這種小操作系統(tǒng)能做到這樣的程度感到非常吃驚。這讓我以后使用該系統(tǒng)更有底氣。
RT-Thread的軟件包非常豐富,我在這個(gè)小操作系統(tǒng)上找到了需要的web服務(wù)器、TFTP服務(wù)器、socket組件,令人意外的是集成了MicroPython,而且在MicroPython中支持re和json,可以快速開(kāi)發(fā)應(yīng)用,不用每一次修改程序都重新燒寫一遍芯片。但是我在試圖使用動(dòng)態(tài)模塊時(shí)卻不順利,這讓我對(duì)這種操作系統(tǒng)的配置復(fù)雜性有一點(diǎn)卻步,感覺(jué)上手有一點(diǎn)難,其實(shí)還可以做的更好一些。
最后感謝主辦方提供了這么好的一個(gè)平臺(tái),讓我學(xué)到了許多RT-Thread操作系統(tǒng)的特性。通過(guò)這次的實(shí)踐我對(duì)RT-Thread的許多特性有了了解,并且感受到此產(chǎn)品在工程開(kāi)發(fā)上提供的許多便利性,我會(huì)在以后的作品中更多的使用RT-Thread產(chǎn)品,也會(huì)向朋友推薦這款產(chǎn)品。
?