摘要:文章以STM32F103單片機為控制芯片,基于壓電薄膜傳感器,設計了一款實時監測人體睡眠姿勢的健康監測系統。系統由數據采集、數據處理和數據傳輸三部分組成。傳感器采集的睡眠等生理信號經過微處理器處理后,通過ESP8266 Wi-Fi模塊傳輸至后臺系統。客戶端連接后臺系統,實現睡眠健康數據的實時顯示與異常提醒功能,具有一定的實用價值。
關鍵詞:STM32;ESP8266;壓電薄膜傳感器;睡眠監測;睡姿識別
中圖分類號:TP391" " 文獻標識碼: A
文章編號:1009-3044(2025)12-0073-03
開放科學(資源服務) 標識碼(OSID)
0 引言
睡眠是人類生命維持的基本需求,對于保持身心健康至關重要。研究顯示,我國超過3億人存在睡眠障礙,有38%的成年人受到失眠的困擾[1]。睡眠姿勢與睡眠健康有著密切關系,不良的睡眠姿勢可能增加多種健康問題的風險。在臨床診斷過程中,準確辨識患者的睡眠姿勢對診斷潛在的睡眠障礙疾病具有重要意義。
目前,一些學者利用嵌入式技術開發出智能可穿戴設備,能夠實時獲取人體生理指標,并對異常生理情況進行提醒[2]。然而,可穿戴監測設備可能帶來不便和不適,反而加劇睡眠問題。因此,開發一套精準且無感知的睡眠姿勢監測系統,通過PC端或手機應用端實時監測睡眠狀態,對于提高睡眠障礙診斷的準確性和便捷性具有重要的實際應用價值。
1 系統總體設計方案
本系統采用聚偏氟乙烯(Polyvinylidene fluoride,PVDF) 壓電薄膜傳感器進行睡眠信息的采集。該傳感器利用壓電薄膜材料的高靈敏度,將作用在傳感器上的振動信號轉換成對應的電荷量輸出[3],從而獲取心沖擊信號(Ballistocardiogram,BCG) 。然而,BCG信號相當微弱,且容易受到腸胃蠕動、呼吸波動以及身體運動等干擾,導致采集信號中包含噪聲。因此,需要通過信號處理模塊對信號進行濾波和放大,以便于后續的準確分析工作。
基于上述功能需求,系統總體設計方案由睡眠生理信號采集模塊、信號處理與濾波模塊、信號控制與傳輸模塊以及后臺數據處理系統四部分組成。系統的總體設計框架如圖1所示。
2 硬件電路設計
2.1 信號處理電路
信號處理與濾波模塊由電荷放大電路、低通濾波電路和電壓抬升電路組成。經過處理后的睡眠信號滿足單片機A/D采樣的電壓范圍要求。
當壓電薄膜傳感器因擠壓或變形發生畸變時,會產生與其表面畸變成比例的極化信號[4]。在睡眠姿勢監測系統中,該信號包含心跳、呼吸、體動以及環境噪聲等,從中準確提取BCG信號對睡眠姿勢監測與睡眠質量分析至關重要。然而,極化產生的電荷信號十分微弱,首先需要經過電荷放大電路處理。
電荷放大電路的作用是將壓電薄膜傳感器輸出的電荷信號轉換為電壓信號,其結構如圖2所示。由于現實中的電荷放大器存在偏置電壓、偏置電流以及積分電容的漏電阻,電荷轉換出現誤差[5]。為提高信號精度,設計中采用了具有極高輸入阻抗、極低輸入電流和高速性能的CA3140芯片。
信號采集和電荷放大過程中會伴有毛刺和噪聲干擾,因此需要對放大后的信號進行濾波處理。設計中采用同相輸入的壓控電壓型有源二階低通濾波電路(圖3) 。相比一階濾波器,二階濾波器具有更好的濾波特性,同時壓控電源型濾波電路,能更好滿足BCG信號電壓幅值低、電流小的特點。
由于放大后的信號幅值仍然只有幾微伏到幾毫伏,需要設計電壓放大模塊,將BCG信號幅值放大至滿足單片機ADC采集要求。抬壓電路包括放大電路和加法器兩部分。其中,放大電路用于放大弱信號,但放大后的信號可能包含負電壓,因此需要通過加法器的電壓抬升電路,使輸出信號滿足單片機AD轉換的要求[6]。本設計中,放大電路采用同相比例運算放大電路,具體如圖4所示。
2.2 信號控制與傳輸模塊
經過信號處理與濾波模塊后得到的睡眠信號傳輸至單片機。在進行數字化處理之前,需要通過A/D轉換,將模擬電壓信號轉換為數字信號。本設計選用STM32F103作為主控芯片,經過A/D采樣后,通過ESP8266 Wi-Fi模塊將數據傳輸至后臺系統。客戶端可以讀取相關數據,完成睡眠狀態的實時監測。STM32F103的ADC為12位逐次逼近型模數轉換器,結合DMA可實現數據的及時采集與傳輸,保證數據的完整性。
數據傳輸過程中采用了ESP8266 Wi-Fi模塊。該模塊是一款超低功耗的UART-Wi-Fi透傳模塊,可將設備連接至Wi-Fi無線網絡,實現互聯網或局域網通信。目前廣泛應用于智能電網、智能交通、智能家居、手持設備和工業控制等領域。本設計中,僅需使用模塊的3.3V、GND、RXD、TXD、EN五個I/O口,通過串口通信方式控制Wi-Fi模塊,電路具體連接如圖5所示。
3 軟件總體設計方案
睡眠健康監測系統的軟件設計主要分為兩部分:數據采集終端的底層驅動代碼設計,以及數據處理與傳輸的應用層代碼設計。在硬件設計的基礎上,根據需求進行相應的軟件開發。主要完成硬件電路的自檢,數據的定時采集、處理與傳輸。數據采集軟件的執行流程如圖6所示。通電后,硬件完成系統自檢和模塊初始化,然后在定時器的作用下開始工作。當有人躺下時,系統按照需求完成數據的采集與傳輸;如果沒有人躺下,系統在初始化后進入休眠模式,檢測到有人躺下后自動喚醒工作。
3.1 單片機A/D驅動
單片機的主要工作包括數據采集和數據傳輸。數據采集利用STM32F1的ADC模塊,可直接實現模擬信號的采集。數據采集底層驅動代碼的編寫要點包括:1) 開啟相關外設時鐘,初始化ADC相關的GPIO引腳;2) 初始化ADC工作參數;3) 配置DMA工作模式;4) 讀取ADC采集的數據。引腳初始化的部分代碼如下所示。
[void AdcInit(void)
{
ADC_InitTypeDef ADC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |
RCC_APB2Periph_ADC1 , ENABLE);
RCC_ADCCLKConfig(RCC_PCLK2_Div6);
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, amp;GPIO_InitStructure);
ADC_DeInit(ADC1);
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel = 1;
ADC_Init(ADC1, amp;ADC_InitStructure);
ADC_Cmd(ADC1, ENABLE);
ADC_ResetCalibration(ADC1);
while(ADC_GetResetCalibrationStatus(ADC1));
ADC_StartCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1));
}]
3.2 ESP8266 Wi-Fi模塊驅動
ESP8266是一款由樂鑫科技(Espressif Systems) 推出的低成本、高性能的Wi-Fi模塊。它支持AP(Access Point)模式、STA(Station)模式和混合模式。AP模式下,ESP8266作為熱點,允許其他設備連接;STA模式下,ESP8266連接到現有的Wi-Fi熱點。本系統中,Wi-Fi模塊工作在STA模式,通過連接當前環境的Wi-Fi信號,將數據以無線方式傳輸到后臺系統。
ESP8266是支持AT指令的。在數據傳輸之前,STM32F103主控芯片需要利用AT指令對它進行相應的設置,可以讓它連接當前環境的網絡,與服務器建立TCP連接。ESP8266的一般配置流程如下:
1) AT+CWMODE=1:設置模塊為STA工作模式;
2) AT+RST:模塊重啟(生效工作模式) ;
3) AT+CWJAP=\"111\",\"11111111\":連接當前環境的Wi-Fi熱點(熱點名,密碼) ;
4) AT+CIPMUX=0:設置單路連接模式;
5) AT+CIPSTART=\"TCP\",\"xxx.xxx.xxx.xxx\",xxxx:建立TCP連接;
6) AT+CIPMODE=1:開啟透傳模式;
7) AT+CIPSEND:透傳模式下,傳輸數據;
8) +++:退出透傳模式。
ESP8266與單片機通過UART串口進行通信,因此在利用Wi-Fi模塊進行數據傳輸之前,還需要根據實際的電路連接完成串口的初始化代碼,以及發送指令函數的實現代碼。Wi-Fi模塊的一般配置過程的代碼實現如下所示。
[void Esp8266Config(void)
{
esp8266_send_cmd(\"AT+CWMODE=1\",\"OK\",50);
esp8266_send_cmd(\"AT+RST\",\"ready\",20);
delay_ms(1000);
while(esp8266_send_cmd(\"AT+CWJAP=\\"111\\",\\"11111111\\"\",\"WIFI GOT IP\",600));
esp8266_send_cmd(\"AT+CIPMUX=0\",\"OK\",20);
while(esp8266_send_cmd(\"AT+CIPSTART=\\"TCP\\",\\"xxx.xxx.xxx.xxx\\",xxxx\",\"CONNECT\",200));
esp8266_send_cmd(\"AT+CIPMODE=1\",\"OK\",200);
esp8266_send_cmd(\"AT+CIPSEND\",\"OK\",50);
}]
完成ESP8266 Wi-Fi模塊、STM32F103單片機的串口初始化以后,就可以在定時器中斷的觸發下進行數據傳輸。檢測過程大致是:從檢測到有人開始計時,檢測到無人開啟另一個計時器,如果在1小時內恢復有人,則在床時間繼續計時,否則判斷為離床。
4 結束語
本文基于STM32F103單片機,針對BCG信號的特點,設計了微弱信號采集、濾波與放大電路,并闡述了數據采集系統的硬件設計方案。信號處理模塊包括電荷放大電路、低通濾波電路和電壓抬升電路。通過ESP8266 Wi-Fi模塊,實現了數據的無線傳輸和客戶端的實時監測。本設計基本實現了對人體睡眠參數的實時采集、存儲、可視化及遠程監控,對提升家用醫療設備的智能化與物聯網化具有一定的參考價值。
參考文獻:
[1] 鄭柳,刁佳璽,周蜀溪,等.睡眠障礙對年輕人身心健康的危害以及防治策略研究[J].現代教育論壇,2019,2(8)9-12.
[2] 祝奔奔,萬舟,魏健雄,等.基于PVDF傳感器及鼾聲檢測的智能睡枕設計[J].陜西理工大學學報(自然科學版),2018,34(6):24-30.
[3] 朱金海.PVDF壓電薄膜及其傳感器的制備與性能研究[D].哈爾濱:哈爾濱工業大學,2011.
[4] 孫玥.柔性壓電薄膜傳感器設計以及其在連續血壓測量中的應用研究[D].杭州:杭州電子科技大學,2023.
[5] 劉夢星,秦麗平,葉樹明.一種基于心沖擊圖的床墊式睡眠姿態檢測系統[J].中國醫療器械雜志,2019,43(4):243-247.
[6] 董嘉冀.基于壓電薄膜傳感器的無束縛睡眠心率變異性檢測方法研究[D].天津:河北工業大學,2020.
【通聯編輯:梁書】