陸 鋒
(太原工業(yè)學(xué)院電子工程系,山西太原030008)
兒童在學(xué)習(xí)時,不知不覺中坐姿產(chǎn)生變化,眼睛距離桌面越來越近。隨著學(xué)習(xí)時間的增加,坐姿不端正會引起勁椎、腰椎的變形和眼睛近視,不利于以后的生長發(fā)育。為此設(shè)計一款兒童坐姿監(jiān)測器,可以實(shí)時監(jiān)測用戶坐姿和學(xué)習(xí)時間,當(dāng)坐姿不正確時做出報警,當(dāng)學(xué)習(xí)時間超過預(yù)設(shè)值時鬧鈴提醒。
兒童坐姿監(jiān)測系統(tǒng)主要由單片機(jī)核心控制模塊、紅外測距模塊、時鐘模塊、液晶顯示模塊、蜂鳴器報警模塊和按鍵輸入模塊等組成,系統(tǒng)設(shè)計總框圖如圖1所示。
圖1 兒童坐姿監(jiān)測系統(tǒng)總體方案框圖
1.1.1 STM32系統(tǒng)電路設(shè)計
系統(tǒng)采用低成本、低功耗,專門為嵌入式應(yīng)用設(shè)計的ARM Cortex-M3內(nèi)核STM32系列單片機(jī)[1]。STM32F103VT6片內(nèi)集成有32~128 K字節(jié)的閃存,從6~20 K字節(jié)的SRAM,DMA有7個通道,外設(shè)定時器、3個USART、2個I2C、2個 SPI、USB2.0全速接口和CAN接口。而且,STM32F103VT6采用封裝為LQFP100,包含80個快速I/O口,所有I/O口與16個外部中斷構(gòu)成映射關(guān)系[2-3]。
1.1.2 超聲波測距模塊
SHARP公司的GP 2Y0A21YK0F和GP2Y0A02 YK0F測距模塊是一種距離測量傳感器單元,該類傳感器基于三角測量原理工作,而且波束角比較小,在測量用戶距離時,不會因?yàn)榻嵌榷斐烧`差[4]。紅外傳感器的發(fā)射端口會發(fā)射紅外光束,當(dāng)遇到物體的時候,光束會反射到接收端[5]。本設(shè)計中,因?yàn)楸O(jiān)測兒童坐姿的水平距離較近,而斜方向的距離較遠(yuǎn),所以測量角度較大的斜方向的兩個傳感器選用了測距范圍為20~150 cm的GP2Y0A02YK0F測距模塊,而水平的測距模塊和斜向角度較小的傳感器選用了測距范圍為10~80 cm的GP 2Y0A21YK0F測距模塊。
如圖2所示,紅外測距傳感器測量兩個不同角度的用戶距離b和c值,根據(jù)公式(1)、余弦定理和已知的紅外夾角α,計算三角形的第三邊長a。然后再根據(jù)余弦定理和公式(2),計算用戶與桌面所成的角度β。
圖2 坐姿監(jiān)測原理圖
系統(tǒng)上電初始化完成后,首先開始采集DS1302時鐘模塊的數(shù)據(jù),從DS1302時鐘模塊中讀取日期、時間數(shù)據(jù),將日期、時間數(shù)據(jù)進(jìn)行字符串的拼接,將拼接好的數(shù)據(jù)通過串行的方式發(fā)送到LCD12864液晶顯示屏上顯示,重復(fù)進(jìn)行這個采集時間數(shù)據(jù)并顯示的過程。開啟單片機(jī)的外部中斷,等待用戶按鍵被按下,當(dāng)按鍵被按下時,檢測是否改變時間,若修改時鐘的時間信息,則將用戶設(shè)定的時間存儲到DS1302時鐘芯片中。若不改變時間,則檢測是否設(shè)定鬧鐘,若設(shè)定鬧鐘,則將設(shè)定的鬧鈴進(jìn)行存儲。單片機(jī)還需要每秒鐘檢測當(dāng)前時間是否是鬧鈴設(shè)定的時間,若是鬧鈴設(shè)定的時間,則蜂鳴器實(shí)現(xiàn)鬧鐘提醒,否則不提醒。
單片機(jī)通過通過數(shù)模轉(zhuǎn)換模塊ADC采集50次水平紅外測距模塊的數(shù)據(jù),將采集到的50次距離數(shù)據(jù)進(jìn)行中值濾波,得到一個濾波后的距離值。再通過單片機(jī)的數(shù)模轉(zhuǎn)換模塊ADC,采集50次斜向紅外測距模塊的數(shù)據(jù),將采集的50次斜向距離數(shù)據(jù)也進(jìn)行中值濾波,得到濾波后的斜向距離值。通過兩次測量的距離,計算用戶與桌面所成的角度。依靠這個原理,用設(shè)計中安裝的三個紅外測距模塊測出用戶的三個坐姿角度,然后對三個坐姿角度再進(jìn)行中值濾波得到最終的用戶坐姿角度。最后,判斷用戶與桌面所成的角度是否介于規(guī)定的角度之間,若不在規(guī)定的范圍內(nèi),則蜂鳴器進(jìn)行報警,否則不做出任何提示信息。上述過程循環(huán)進(jìn)行。
圖3所示為超聲波測距系統(tǒng)的機(jī)械結(jié)構(gòu)圖,3個超聲波測距模塊安裝在由3D打印機(jī)打印的機(jī)械結(jié)構(gòu)上。工作時,只需要將該系統(tǒng)放置在兒童的書桌前方即可完成兒童坐姿的監(jiān)測。
圖3 超聲波測距系統(tǒng)的機(jī)械結(jié)構(gòu)圖
軟件設(shè)計需要實(shí)現(xiàn)的功能主要有:坐姿監(jiān)測、坐姿報警、顯示時間、鬧鐘報警和按鍵調(diào)時。圖3描述了兒童坐姿監(jiān)測系統(tǒng)主要的程序設(shè)計流程。
以STM32單片機(jī)為控制器,采集紅外測距模塊的數(shù)據(jù),通過對數(shù)據(jù)的計算分析,來判定使用者是否為正確的坐姿,重復(fù)監(jiān)測,若發(fā)現(xiàn)坐姿不正確,則控制蜂鳴器模塊報警,直到監(jiān)測到使用者變成正確的坐姿才停止報警。同時,采集DS1302時鐘模塊的數(shù)據(jù),通過得到的時鐘數(shù)據(jù)得到當(dāng)前的日期時間,并把時間信息顯示在LCD12864液晶顯示屏上,并且當(dāng)兒童學(xué)習(xí)時間超過預(yù)設(shè)值時,系統(tǒng)鬧鈴提醒用戶休息。
完成兒童坐姿監(jiān)測系統(tǒng)的軟、硬件設(shè)計后,驗(yàn)證了該系統(tǒng)是否可以按要求實(shí)現(xiàn)功能。首先,通過計算得出用戶的坐姿角度理論值。然后啟動系統(tǒng),對坐姿監(jiān)測器計算的坐姿角度進(jìn)行測試,記錄不同情況的坐姿角度參數(shù)。最后,將測試值與理論值進(jìn)行比較分析,結(jié)果表明,本系統(tǒng)滿足功能及精度的要求。
圖4 程序設(shè)計流程圖