【RT-Thread作品秀】基于ST傳感器的跌落及傾倒檢測(cè)
作者:pto1011
概述
在消費(fèi)電子領(lǐng)域,跌落通常會(huì)對(duì)便攜式電子產(chǎn)品(如手機(jī),平板,筆記本電腦)的零部件(屏幕及機(jī)械硬盤(pán))造成損傷,如何可靠的檢測(cè)這些跌落事件并實(shí)時(shí)啟動(dòng)保護(hù)裝置,采取主動(dòng)避震措施來(lái)減少觸地帶來(lái)的沖擊。中國(guó)即將步入老年社會(huì),如何實(shí)時(shí)檢測(cè)老人摔倒事件并做到事前主動(dòng)啟動(dòng)保護(hù)減震裝置和事后第一時(shí)間發(fā)出告警。 這些都需要有快速(Fast)準(zhǔn)確(Accurate)可靠(Reliable)的跌落及傾倒檢測(cè)能力。
本應(yīng)用即是基于ST公司的LSM6DSOX六軸傳感器,高速采集加速度計(jì)和陀螺儀的信號(hào),通過(guò)算法來(lái)提供跌落及傾倒實(shí)時(shí)檢測(cè),其結(jié)果顯示于交互界面(串口輸出)和板載LED狀態(tài)(未進(jìn)入檢測(cè)模式:LED blink; 開(kāi)始進(jìn)入檢測(cè):LED OFF; 檢測(cè)到跌落或傾倒:LED ON)。
開(kāi)發(fā)環(huán)境
硬件:ART-Pi STM32H750 開(kāi)發(fā)板, STEVAL-MKI197V1(LSM6DSOX)六軸傳感器,PARALAX USB2SERIAL轉(zhuǎn)接板
RT-Thread版本:4.0.3
開(kāi)發(fā)工具及版本:RT-Thread Studio 1.1.15
RT-Thread使用情況概述
內(nèi)核部分:創(chuàng)建了一個(gè)獨(dú)立線程用于實(shí)現(xiàn)讀取ST傳感器參數(shù),輸出至高速串口或?qū)崟r(shí)檢測(cè),詳情見(jiàn)下圖。
組件部分:finsh組件是本應(yīng)用開(kāi)發(fā)過(guò)程中最重要的程序調(diào)試工具及交互窗口
硬件框架
主要使用了ART-PI開(kāi)發(fā)板上的STM32H750處理器的SPI,Timer, UART, 板載資源使用了LED,其它硬件模塊包括ST的六軸傳感器以及自備的USB轉(zhuǎn)串口板。
軟件框架說(shuō)明
軟件模塊說(shuō)明
演示效果
視頻演示:
比賽感悟
通過(guò)參與比賽,第一次接觸并了解RT-Thread及其生態(tài)系統(tǒng), 用戶(hù)體驗(yàn)很好。尤其是Finsh組件,作為交互界面,程序的調(diào)試過(guò)程中幾乎完全依賴(lài)于之。
本應(yīng)用中分別使用了MCU的SPI,UART和硬件定時(shí)器組件,UART的使用較為簡(jiǎn)單,硬件定時(shí)器在使用時(shí)則遇到了問(wèn)題,在RT-Thread Setting中配置之后,一直無(wú)法進(jìn)入中斷,通過(guò)單步調(diào)試,發(fā)現(xiàn)寄存器在寫(xiě)入數(shù)值之后仍全為0,進(jìn)一步檢測(cè)發(fā)現(xiàn)其時(shí)鐘未enable。
在拿到ART-Pi板之前,曾設(shè)想實(shí)現(xiàn)所有傳感器參數(shù)讀取及detection算法都在1ms定時(shí)器中斷服務(wù)自程序中完成,但編譯時(shí)遇到錯(cuò)誤 ,ISR中無(wú)法調(diào)用mutex,曾嘗試移除mutex,但讀取的sensor參數(shù)幾乎全部錯(cuò)誤。后來(lái)選擇在新建的獨(dú)立線程中來(lái)實(shí)現(xiàn),讀取的sensor數(shù)據(jù)全部正確。
通過(guò)實(shí)測(cè),本應(yīng)用基本實(shí)現(xiàn)了最初的設(shè)計(jì)目標(biāo)。仍存在如下問(wèn)題:在1ms采樣間隔下仍會(huì)觀測(cè)到存在數(shù)十毫秒未讀取傳感器信號(hào)的現(xiàn)象,期待將來(lái)有可能實(shí)現(xiàn)RT-Thread下對(duì)于高速(亞毫秒級(jí)別)的實(shí)時(shí)關(guān)鍵任務(wù)的支持。
最后,感謝比賽組織方提供的硬件和軟件開(kāi)發(fā)環(huán)境,以及工作人員的熱情幫助!