01項目簡介
本項目實現了基于啟明RA6M5的《物聯網居家環境健康監控設備》。項目以啟明RA6M5為主控,OLED為顯示設備用于顯示信息,HS3003傳感器用于采集環境溫濕度數據,MQ-5可燃氣體傳感器采集空氣中可燃氣體濃度,Max30102傳感器采集人體心率以及血氧值,遙感模塊為設備的本地控制端,內部RTC用于實時時鐘,ESP8266模塊用于連接物聯網平臺以及更新實時時鐘時間,并且實現阿里云物聯網平臺的連接,用于數據上傳與下發,蜂鳴器用于環境危險報警。本項目實現了集環境監控,健康監控以及物聯網為一體的多功能監控裝置。
02系統架構
使用到的外設模塊有:
LED:紅色用于模擬燈,可以被遠程控制打開與關閉。綠色LED周期性呼吸,指示系統是否正常運行。
蜂鳴器:用于可燃氣體超閾值報警。
搖桿模塊:用于搖桿控制顯示界面切換以及報警關閉。
MQ-5可燃氣體傳感器:用于檢測空氣中可燃氣體濃度值。
EEPROM:用于保存MQ-5可燃氣體濃度閾值。
ESP8266 WIFI模塊:用于更新網絡時間以及連接物聯網平臺。
MAX30102:用于采集人體的心率以及血氧值。
HS3003:用于采集環境溫濕度信息。
OLED:用于顯示時間,溫濕度信息,可燃氣體濃度,心率,血氧數值,物聯網平臺鏈接狀態等信息。
詳細結構描述見下圖:
所使用的板載資源以及OS資源見下圖所示:
03硬件資源說明
3.1 線路連接
板載資源不做說明(連線參考開發板原理圖),只說外接模塊的連線。
3.1.1 OLED
使用了SCI I2C6:
SCL - P505
SDA - P506
VCC - 3.3V
GND - GND
3.1.2 HS3003
同OLED,使用了SCI6 I2C:
SCL - P505
SDA - P506
VCC - 3.3V
GND - GND
3.1.3 MQ-5
使用了ADC0 AN003:
ADC- P003(AN003)
3.1.4 MAX30102
使用了SCI3 I2C:
SCL - P408
SDA - P409
VCC - 3.3V
GND - GND
INT引腳使用了外部中斷:
INT - P804
3.1.5 搖桿模塊
使用了ADC0 AN001,AN002,AN010:
X軸 - P001(AN001)
Y軸 - P002(AN002)
Z軸(按鈕) - P010(AN010)
+5V - 3.3V
GND - GND
04軟件實現
4.1 OS資源說明
軟件使用了FreeRTOS實時操作系統,創建了7個任務,功能如下:
Os_Display:用于控制OLED顯示信息。
Os_LedCtrl:用于控制LED功能。
Os_HwInit:用于初始化公共資源,并且該任務是首先執行的,執行完畢之后其他任務才允許執行,避免資源在未初始化之前使用。
Os_WifiCtrl:用于控制ESP8266模塊,進行聯網控制以及網絡資源管理。
Os_Sensor:用于采集傳感器信息,包括HS3003,MQ-5。
Os_JoystickCtrl:用于采集搖桿模塊信息,并且判斷搖桿模塊的動作。
Os_Max30102Ctrl:用于采集人體的心率以及血樣數值。
下圖簡單描述了各個任務的工作,由于各個部分的關系型較為復雜,下面以文字和示例圖詳細說明。
4.2 功能說明
首先上一張全家福:
4.2.1 HS3003溫濕度采集
通信方式:
HS3003通過I2C通信,與OLED控制使用了同一路SCI的I2C,通過互斥量相互隔離,實現一路I2C控制兩個從設備的目的。功能:
HS3003可以測量環境的溫度以及濕度信息,通過計算公式進行轉換成攝氏度以及百分比值。
周期性采集,每一秒鐘采集一次。供其他模塊使用。
4.2.2 MQ-5 可燃氣體濃度采集
通信方式:
MQ-5通過將采集到的可燃氣體濃度值轉換為ADC值輸出,單片機周期性采集ADC信號用于計算空氣中可燃氣體濃度。
功能:
MQ-5可燃氣體濃度傳感器可以采集空氣中的可燃氣體濃度,單位為ppm(百萬分之一),每一秒鐘更新一次數據。供其他模塊使用。
4.2.3 MAX30102心率血樣采集
通信方式:
MAX30102使用I2C通信,為了精度以及采集速率,使用了單獨的一路I2C來工作(其實和OLED使用同一路也是可以的)
功能:
MAX30102上面的INT中斷引腳用于判斷數據是否更新,當有更新數據時,中斷會拉高,數據被讀取之后拉低。
MAX30102會一直處于通信狀態,當中斷引腳變高之后,開始采集數據。當沒有手指放上去的時候,采集到的傳感器輸出值RED以及IR數值,輸出值大概在2000以內,但是當手指放上去之后,輸出值會突變為100000以上,以此來判斷是否有手指放在傳感器上做數據采集。
采集到的RED以及IR值會周期性變化,以此來計算心率以及血樣數值。
手指剛放上去的時候采集到的數值是不穩定的,需要等待一段時間才會采集到穩定的數值,血氧值大于95%,心率在60到120之前是較為正常的值。
4.2.4 搖桿模塊控制功能
通信方式:
搖桿模塊有兩個方向(X軸和Y軸)以及一個按鈕(Z軸),都是通過ADC進行采樣。
功能:
對搖桿模塊的控制,在X軸,Y軸和Z軸上都會輸出一個ADC值,通過對采樣值進行分析判斷可以直到當前搖桿處于什么位置,以此來實現控制的功能。
搖桿模塊用于對現實界面進行切換,當搖桿模塊滑向右和上方時(即X軸以及Y軸的正方向),則會切換到傳感器顯示界面;當搖桿模塊滑向左或者下方時(即X軸和Y軸的負方向)則切換到時間顯示界面。
4.2.5 報警功能
報警使用了板載的蜂鳴器,當MQ-5采集到的空氣中可燃氣體濃度大于設定閾值的時候就會打開蜂鳴器報警,報警閾值可以通過物聯網設置。也可以通過物聯網控制報警功能打開/關閉。
當設定閾值更新時,會判斷更新的閾值是否和當前閾值相等,不等則寫入EEPROM,下次系統上電的時候會自動從EEPROM中讀取閾值
4.2.6 ESP8266 網絡通信
板載的ESP8266 WIFI模塊用于物聯網通信,通信平臺為阿里云物聯網平臺,通信方式為MQTT。
ESP8266上電工作流程:
復位ESP8266
關閉回顯,連接AP
連接AP完成之后更新SNTP時間,并將時間寫入到RTC
時間更新完成之后MQTT通信連接阿里云物聯網平臺
數據通信(上載和下發),上載一秒鐘更新一次
使用了一個定時器用來判斷ESP8266 AT指令是否響應超時,如果超時,會重新發送。
連接了物聯網平臺之后,會將溫度、濕度、可燃氣體濃度、血氧數值,心率數值,可燃氣體報警閾值、報警開關以及LED亮度上傳到阿里云物聯網平臺。
物聯網平臺可以下發LED亮度百分比命令來控制本地LED的亮度。
物聯網平臺可以下發可燃氣體濃度報警閾值到本地。
物聯網平臺可以下發可燃氣體報警使能命令到本地。
下圖為阿里云平臺收到的數據:
下圖為阿里云平臺下發數據的調試界面:
4.2.7 OLED顯示功能
OLED提供顯示功能,包括:
上電顯示
日期時間星期顯示
wifi連接狀態顯示
IoT物聯網平臺連接狀態顯示
溫度、濕度、可燃氣體濃度顯示
心率、血氧顯示
上電之后會顯示啟動界面,1s之后切換到時間顯示界面
時間顯示界面下會顯示WIFI連接狀態,IoT物聯網平臺連接狀態,日期時間星期,空氣濕度和溫度。wifi圖標閃爍,表示在連接AP,常亮表示連接成功;IoT圖標閃爍表示在連接物聯網平臺,常亮表示連接成功;時間或從RTC中讀取并顯示。
當搖桿模塊滑向X軸或者Y軸正方向時,切換到傳感器數據顯示界面,此界面下,搖桿模塊滑到X軸或者Y軸負方向時,切換到時間顯示界面
當手指放到MAX30102傳感器上進行測量時,切換到心率血樣顯示界面,此界面下,手指離開MAX30102,則退回到之前的界面
4.2.8 燈控制功能
板載的LED1來模擬普通LED燈,亮度控制位百分比,支持0~100:0為關閉LED;100為全亮度。
通過物聯網平臺下發控制亮度命令,本地接收到命令之后使用PWM控制LED的亮度。
4.2.9 RTC
RTC用于本地實時時鐘
上電會自動從上一次的時間開始計時,EAP8266成功連接AP之后之后會自動發起時間更新命令獲取SNTP時間,并更新到本地RTC中。
06總結
本人是第一次使用野火的開發板,之前聽說過野火,但是一直沒機會接觸。無意間在公眾號中看到了本次比賽,遂毫不猶豫的參加了。啟明RA6M5給我的感覺就是精簡,美觀,板載資源豐富,擴展性強,給作品開發帶來了很多便攜性,像是板載ESP8266以及蜂鳴器,就減少了外擴模塊的工作。歷時三個月,終于算是完成了比賽,期間的心酸以及收獲也難以述說,遇到了很多難題,也收獲了很多知識。
簡而言之,本次比賽學習到了很多東西,也讓我了解了更多野火的產品。感謝野火提供的本次機會。祝愿野火越來越好,開發更多物美價廉的產品,方便廣大愛好者以及工程師。
審核編輯:湯梓紅
-
傳感器
+關注
關注
2553文章
51392瀏覽量
756593 -
mcu
+關注
關注
146文章
17318瀏覽量
352649 -
物聯網
+關注
關注
2913文章
44925瀏覽量
377022 -
蜂鳴器
+關注
關注
12文章
893瀏覽量
46095 -
監控設備
+關注
關注
0文章
92瀏覽量
12992
原文標題:【瑞薩RA MCU創意氛圍賽作品賞析】項目10——物聯網居家環境/健康監控設備
文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論