該作品是基于ART-PI硬件平臺,外接OLED,蜂鳴器,按鍵,X-NUCLEO-IKS01A3傳感器套件完成實現(xiàn)的運動手表。
運動手表應該能夠兼顧溫濕度,氣壓信息,指南針以及步數(shù)等,能夠實時監(jiān)控環(huán)境的狀態(tài)。
該運動手表實現(xiàn)功能如下:
時間日期星期顯示;
網(wǎng)絡時間獲?。?/p>
天氣獲取并顯示;
溫度(HTS221),濕度(HTS221),氣壓(LPS2HH)信息的獲取并顯示;
指南針功能(LIS2MDL);
步數(shù)(LSM6DSO)監(jiān)控;
鬧鐘功能,蜂鳴器鬧鐘;
設置功能,開啟網(wǎng)絡時間以及設置鬧鐘;
OLED顯示功能
板載按鍵
秒表
開發(fā)環(huán)境
硬件:STM32H750-RT-ART-PI, X-NUCLEO-IKS01A3傳感器,OLED,蜂鳴器,板載按鍵 RT-Thread版本:4.0.3 開發(fā)工具及版本:RT-thread studio 2.0.0
RT-Thread使用情況概述
內核部分:線程管理(靜態(tài)線程創(chuàng)建/刪除),臨界操作,時鐘管理。 組件部分:FinSH控制臺,虛擬文件系統(tǒng),LwIP,SAL 軟件包部分:cjson,netutils,easyflash,u8g2 其他:串口,pin,RTC,IIC
硬件框架
項目中使用到了STM32H750中的RTC實時時鐘不在原理圖中。
同時用到了ART-PI板載的wifi模塊對天氣獲取以及網(wǎng)絡時間的獲取。
硬件部分比較簡單主要是通過IIC控制OLED以及傳感器數(shù)據(jù)的讀?。ㄗx取4個傳感器數(shù)據(jù)分別用作溫濕度,氣壓以及磁場和運動檢測),通過GPIO控制蜂鳴器。
按鍵用來切換查看界面以及設置信息,本項目只采用了一個按鍵,通過軟件邏輯實現(xiàn)對4中按下狀態(tài)的識別。
硬件線路連接:
蜂鳴器 - PA9
OLED SCL - PH13
OLED SDA - PH15
X-NUCLEO-IKS01A3傳感器 SCL - PB0
X-NUCLEO-IKS01A3傳感器 SDA - PB2
軟件框架說明
整體軟件實現(xiàn)了功能框架如下:
軟件中主要包括了下面的功能:
按鍵狀態(tài)的信號采集以及濾波功能,由于只有一個按鍵,所以將這一個,按鍵的按下狀態(tài)做了不同的識別,分為了4種按下的狀態(tài)可以用來處理所有的任務。
OLED的顯示功能
啟動界面,會顯示RT-Thread的logo以及項目logo。
時間顯示界面:會顯示時間,日期,星期,wifi連接狀態(tài),天氣信息,在wifi沒有連接的狀態(tài)下,wifi圖標會閃爍。
菜單列表:用來切換顯示的界面,包含設置,秒表、步數(shù)、溫度、濕度、氣壓、方位。通過短按按鈕切換。
設置界面??梢栽O置是否開啟網(wǎng)絡時間更新以及設置鬧鐘。鬧鐘設置界面中可以設置鬧鐘是否啟用以及設置鬧鐘時間。
秒表功能,在該界面下,秒表線程被創(chuàng)建,按下按鈕切換到開啟按鈕下按下按鈕可以開啟計時,再次按下暫停計時,退出該界面自動刪除線程。
步數(shù)查看。步數(shù)線程會一直運行,用于記錄運動狀態(tài),使用LSM6DSO獲取加速度數(shù),由此進行步數(shù)算法檢測步數(shù)。
溫度、濕度、氣壓查看。獲取傳感器的數(shù)據(jù)進行處理之后顯示在界面上。
指南針(方位)界面,可以查看當前面向的方向,使用了LIS2MDL磁力傳感器以及LSM6DSO加速度傳感器通過算法結合計算出指向方位,并通過圖形顯示以及問題提示的方式指向當前的方位(東、南、西、北、東南、東北、西南、西北)。
返回。返回時間顯示界面。
鬧鐘功能
RTC獲取的時間到了鬧鐘設置中設置的指定的時間之后將觸發(fā)鬧鐘功能。在主界面下通過短按按鈕關閉。
軟件模塊說明
一、按鍵功能介紹:因為板載只有一個按鍵,我也沒有外接按鍵資源,所以將這一個按鍵通過按鍵時間的長短分為了4種按下狀態(tài),通過松手判斷按鈕按下的時間長短。 按鍵線程中使用了軟件按鍵濾波功能,濾波時間是50ms。 四種按鍵狀態(tài)分別如下: 1 【短按】:按下時間小于等于500ms 2 【中長按】:按下時間大于500ms小于等于1.5s 3 【偏長按】:按下時間大于1.5s小于等于2.5s 4 【長按】:按下時間大于2.5s 按鍵線程在初始化的時候創(chuàng)建。 1、OLED顯示功能
OLED的顯示功能是主要的功能,這里對OLED的功能做詳述說明。
開機動畫。上電的時候會顯示開機界面,首先顯示RT-Thread的圖標,之后顯示運動手表的logo,顯示完成之后自動進入主界面。
主界面就是時間顯示界面,如下圖:
最上邊顯示【星期 - 月份 日期】;
中間部分顯示時間,如果網(wǎng)絡連接之后會自動更新時間,可以在設置界面關閉自動更新,網(wǎng)絡時間會更新到RTC中,時間直接讀取自RTC。;
最下面一列顯示wifi連接狀態(tài)以及天氣信息,在wifi沒有連接的狀況下會500ms閃爍一次,wifi連接之后,wifi圖標不再閃爍,天氣圖標會自動循環(huán)顯示。
天氣包括晴天,雨天,多云,夜晚,晴轉陰。
天氣信息通過網(wǎng)絡獲取,獲取網(wǎng)絡天氣的json信息,處理出信息,所以需要線連接網(wǎng)絡才可以使用。
如果按下開關,最下一列中間會顯示開關按下的狀態(tài)【KEY1】【KEY2】【KEY3】【KEY4】,如下右圖,沒有開關按下的時候不顯示。
長按按鈕進入菜單選擇界面
中長按按鈕進入設置界面
2、菜單界面
菜單界面顯示【返回】【設置】【秒表】【步數(shù)】【溫度】【濕度】【氣壓】【方位】,如下左圖。
最上邊顯示左邊菜單圖標,右邊顯示退出圖標。
短按按鈕切換菜單在上述1)中的菜單列表中循環(huán)切換
中長按按鈕進入選中的菜單功能中。
長按按鈕退回主界面
按下按鈕的時候屏幕最上面中間會顯示按鈕按下的狀態(tài)【KEY1】【KEY2】【KEY3】【KEY4】,如下右圖
3、設置
設置界面顯示【是否啟動網(wǎng)絡時間】以及【鬧鐘設置】
網(wǎng)絡時間后面的方框表示是否啟用,實心方框表示啟用,默認是啟用的
短按按鈕切換菜單
中長按按鈕設置
選中【鬧鐘設置】,短按進入鬧鐘設置界面。
中長按切換選中菜單,分別有【啟用鬧鐘】【小時設置】【分鐘設置】
選中啟用菜單,短按啟用或者禁止,啟用了鬧鐘之后會創(chuàng)建鬧鐘線程,運行鬧鐘功能,禁止鬧鐘之后會刪除鬧鐘線程。
選中小時設置或者分鐘該設置,短按時間會增加。
鬧鐘設置好了之后,到達指定時間會啟動蜂鳴器報警,在主界面下短按按鈕會關閉鬧鐘,到下一次到指定時間會重新報警。
4、秒表當切換到秒表界面的時候會自動創(chuàng)新秒表線程,在退出秒表顯示界面時會自動刪除秒表任務,秒表任務100ms運行一次。 1、秒表顯示界面,最上邊左邊顯示秒表圖標,右邊顯示退出圖標 2、中間顯示記錄秒表時間 3、下面顯示操作菜單 1) 第一個是開始按鈕,短按啟動計時,菜單編程停止,短按停止計時,如下左圖。 2) 中間是清空按鈕,短按按下清空計時數(shù)據(jù) 3) 右邊是返回,短按返回菜單列表 4、中長按切換下列的菜單 5、長按退回主界面 6、按下按鈕的時候屏幕最上面中間會顯示按鈕按下的狀態(tài)【KEY1】【KEY2】【KEY3】【KEY4】,如下右圖
5、步數(shù)
1、在菜單欄中,選中【步數(shù)】,中長按進入界面,顯示當前步數(shù)。 2、步數(shù)是通過LSM6DSO加速度計和角速度計獲取的數(shù)據(jù)計算出來的。通過采樣加速度值,連續(xù)多次采集數(shù)據(jù),通過算法計算各個軸的加速度值是否滿足步數(shù)運動的條件,以此計算是否運動,步數(shù)檢測的靈敏度也可以在代碼中進行調節(jié)。 3、該界面中間顯示當前步數(shù)信息。 4、該界面下最下邊顯示【清空】和【返回】菜單,通過短按進行切換 5、選中【清空】,中長按之后清空步數(shù),選中【返回】,中長按退回菜單列表。 6、步數(shù)線程在啟動時創(chuàng)建,會一直監(jiān)控步數(shù)。 7、長按按鈕退出 8、按下按鈕會在上方中間顯示開關按下的狀態(tài)【KEY1】【KEY2】【KEY3】【KEY4】
6、溫度1、在菜單列表中,選中【溫度】,中長按進入界面,顯示當前溫度。 2、溫度是通過HST221傳感器,采集的,該傳感器中存在標定數(shù)據(jù),通過獲取標定數(shù)據(jù),然后利用一次線性方程公式對讀取出來的數(shù)據(jù)進行處理,最后會的溫度。 3、該界面中間顯示溫度數(shù)據(jù),每1s刷新一次。 4、該界面下顯示有【刷新】和【返回】,短按進行菜單切換。 5、選中【刷新】,中長按刷新當前溫度 6、選中【返回】,中長按會返回菜單列表界面 7、溫度數(shù)據(jù)在該界面下才會從傳感器中讀取 8、長按按鈕退出 9、按下按鈕會在上方中間顯示開關按下的狀態(tài)【KEY1】【KEY2】【KEY3】【KEY4】
7、濕度1、在菜單列表中,選中【濕度】,中長按進入界面,顯示當前濕度百分比。 2、濕度是通過HST221傳感器,采集的,該傳感器中存在標定數(shù)據(jù),通過獲取標定數(shù)據(jù),然后利用一次線性方程公式對讀取出來的數(shù)據(jù)進行處理,最后會的濕度。 3、該界面中間顯示濕度數(shù)據(jù),每1s刷新一次。 4、該界面下顯示有【刷新】和【返回】,短按進行菜單切換。 5、選中【刷新】,中長按刷新當前濕度 6、選中【返回】,中長按會返回菜單列表界面 7、濕度數(shù)據(jù)在該界面下才會從傳感器中讀取 8、長按按鈕退出 9、按下按鈕會在上方中間顯示開關按下的狀態(tài)【KEY1】【KEY2】【KEY3】【KEY4】
8、氣壓
1、在菜單列表中,選中【氣壓】,中長按進入界面,顯示當前氣壓值。
2、氣壓是通過LPS2HH傳感器獲取,每1s刷新一次
3、該界面中間顯示氣壓數(shù)據(jù)。
4、該界面下顯示有【刷新】和【返回】,短按進行菜單切換。
5、選中【刷新】,中長按刷新當前氣壓值
6、選中【返回】,中長按會返回菜單列表界面
7、氣壓數(shù)據(jù)在該界面下才會從傳感器中讀取
8、長按按鈕退出
9、按下按鈕會在上方中間顯示開關按下的狀態(tài)【KEY1】【KEY2】【KEY3】【KEY4】
9、指南針1、在菜單列表中,選中【方位】,中長按進入界面,指南針功能,創(chuàng)建指南針線程。 2、指南針數(shù)據(jù)是通過LIS2MDL傳感器獲取,LIS2MDL獲取磁力數(shù)據(jù),通過,用LSM6DSO的加速度數(shù)據(jù)進行補償,通過公式計算出X軸與Y軸方向的磁力強度,進而計算當前傳感器所指向的方向。 3、該界面通過圖形顯示指示的方向,中間的指針會指向當前的方位; 左下角的文字會顯示指向的方位數(shù)據(jù),分別有東、南、西、北、東南、東北、西南、西北。 4、長按按鈕退出 (a)按下按鈕會在上方中間顯示開關按下的狀態(tài)【KEY1】【KEY2】【KEY3】【KEY4】
10、RTC功能RTC線程會在初始化的時候創(chuàng)建,最開始會顯示設定的時間,這個時候會等待網(wǎng)絡連接,在設置了獲取網(wǎng)絡時間的狀態(tài)下,網(wǎng)絡連接之后會獲取網(wǎng)絡時間并更新到RTC,網(wǎng)咯時間每24小時更新一次,如果關閉網(wǎng)絡時間功能則不會更新。
原文標題:【RT-Thread開源作品秀】運動手表
文章出處:【微信公眾號:RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
傳感器
+關注
關注
2548文章
50740瀏覽量
752147 -
操作系統(tǒng)
+關注
關注
37文章
6747瀏覽量
123204 -
RT-Thread
+關注
關注
31文章
1274瀏覽量
39944
原文標題:【RT-Thread開源作品秀】運動手表
文章出處:【微信號:RTThread,微信公眾號:RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論