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