?本設計的硬件構成:
STM32F103C8T6單片機最小系統板(包含+3.3V穩壓電路+時鐘晶振電路+復位電路(上電自復位,手動復位)),心率傳感器、氣壓傳感器、液晶顯示、按鍵、蜂鳴器、LED燈、藍牙模塊組合而成;
功能介紹:
1、檢測呼吸狀態頻率、心率。LCD顯示屏幕進行數據顯示呼吸頻率、心率值。
2、可以按鍵設置呼吸狀態閾值,如果超過閾值,發生聲光報警。按鍵1:設置鍵;按鍵2:加一鍵;按鍵3:減一鍵。
3、通過藍牙模塊通信連接手機 APP,顯示呼吸、心率數據。
4、系統根據呼吸頻率判斷并且顯示睡眠階段:深度睡眠、淺度睡眠、清醒。
PCB:
部分程序源碼:
int main(void){ u8 key_value=0;delay_init(); //延時函數初始化 UART1_INIT(9600);Lcd_GPIO_init();Lcd_Init() ;Lcd_Puts(0,0," Initialzing");HX711_GPIO_Init();BEEP_Init();RELAY_Init();EXTIX_Init(); // 初始化外部中斷KEY_Init();//IO初始化 TIM2_Init(49,7199);//5ms beep=0;delay_ms(500); //上電瞬間加入一定延時在初始化beep=1;To_Zero();
?while(1){ key_value=KEY_Scan(0);key_handle(key_value);?if(time_5ms>=100){time_5ms=0;if(set==0)display();APP_Update(); //向APP上傳數據if((setbreath<breath)||(setheart<xinLv) &&(set==0)) //判斷是否達到報警值{if(GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_9)==0)//開啟蜂鳴器報警{beep=1;}elsebeep=0;}else beep=1;}
?if(time_50ms>=2) //采集呼吸值{time_50ms=0;weight=get_weight();count2++;if(weight>FullScale){weight_data[count2]=(weight-FullScale)/100;}if(count2>=100) //采集達到100次,計算呼吸頻率{find_peak_value(); //計算峰值數據interval=interval2-interval1; breath=interval*7/3;if(breath>500) //清空緩沖區數據breath=0;for(count2=0;count2<100;count2++){weight_data[count2]=0;}count2=0;}interval1=0;interval2=0;}}}}
資料鏈接:https://pan.baidu.com/s/1qzs4kjQijdTl1ywN1v753A?
提取碼:ncoq