作者簡(jiǎn)介:全棧開(kāi)發(fā)工程,從事Java、Python、前端、小程序方面的開(kāi)發(fā)和研究,對(duì)大數(shù)據(jù)應(yīng)用與開(kāi)發(fā)比較感興趣,
主要內(nèi)容:Java項(xiàng)目、前端項(xiàng)目、Python項(xiàng)目、小程序開(kāi)發(fā)、大數(shù)據(jù)項(xiàng)目、單片機(jī)
收藏點(diǎn)贊不迷路? 關(guān)注作者有好處
文末獲取源碼?
感謝您的關(guān)注,請(qǐng)收藏以免忘記,點(diǎn)贊以示鼓勵(lì),評(píng)論給以建議,愛(ài)你喲
項(xiàng)目編號(hào):BS-DPJ-003
前言:
嬰兒一天中的大多數(shù)時(shí)間都處于睡眠狀態(tài),如何對(duì)嬰兒進(jìn)行睡眠監(jiān)測(cè)、及時(shí)安撫嬰兒,以及如何解決嬰兒的尿濕問(wèn)題,這些都是新媽媽們最關(guān)心的問(wèn)題。大部分的家庭都會(huì)選擇方便的紙尿褲,但是紙尿褲不僅價(jià)格昂貴,而且吸水性很強(qiáng),如果不及時(shí)更換,很可能會(huì)長(zhǎng)出紅疹等皮膚疾病,對(duì)嬰兒的身體也是有威脅的;嬰兒醒了就會(huì)大哭,家長(zhǎng)沒(méi)有及時(shí)的聽(tīng)見(jiàn),造成嬰兒很長(zhǎng)一段時(shí)間沒(méi)有人照料。所以,為嬰兒設(shè)計(jì)一個(gè)適合嬰兒的睡眠監(jiān)測(cè)系統(tǒng),對(duì)于新手家長(zhǎng)來(lái)說(shuō)是很有幫助的。本論文采用STC89C52單片機(jī)為核心,采用聲控、語(yǔ)音播報(bào)、濕度采集電路采集各種場(chǎng)景的數(shù)據(jù),并通過(guò) LED燈光、語(yǔ)音播報(bào)等方式來(lái)實(shí)現(xiàn)對(duì)幼兒進(jìn)行實(shí)時(shí)監(jiān)測(cè)。
一,環(huán)境介紹
語(yǔ)言環(huán)境:C語(yǔ)言開(kāi)發(fā)
開(kāi)發(fā)技術(shù):51單片機(jī);聲音控制電路;語(yǔ)音播報(bào);濕度采集;液晶顯示
二,項(xiàng)目簡(jiǎn)介
睡眠是人體的一個(gè)重要的生理過(guò)程,其質(zhì)量的高低直接關(guān)系到人體的健康。在醫(yī)學(xué)上,人們對(duì)睡眠的結(jié)構(gòu)和過(guò)程的認(rèn)識(shí),主要是通過(guò)多導(dǎo)睡眠記錄儀和多通道睡眠描記法來(lái)實(shí)現(xiàn)。具體來(lái)說(shuō),就是使用腦電圖(EEG)來(lái)監(jiān)測(cè)睡眠者的腦波,來(lái)預(yù)測(cè)睡眠狀況。但是,由于醫(yī)療器械和技術(shù)都以醫(yī)院、科研院所為主,其普及程度受到高昂的費(fèi)用限制。近年來(lái),隨著傳感技術(shù)的飛速發(fā)展,微型探測(cè)器的研制也在不斷地進(jìn)步。目前,最常見(jiàn)的是使用體動(dòng)記錄儀進(jìn)行監(jiān)測(cè),通常使用三個(gè)方向的傳感器來(lái)獲取人體各個(gè)部分的動(dòng)作,如 Fitbit、 JawboneUP、 WakeMate、 YawnLog等都是目前市場(chǎng)上使用的一種便攜式智能手機(jī)。分析軟件可以根據(jù)采集到的信息,對(duì)人體的能量消耗、睡眠質(zhì)量、喚醒時(shí)間、睡眠效率等進(jìn)行分析。
與此同時(shí),一大批以智能手機(jī)為基礎(chǔ)的睡眠管理軟件(SleepAsAndroid、 Sleep Cycle),通過(guò)調(diào)用智能硬件中的加速傳感器,對(duì)睡眠行為進(jìn)行記錄,從而達(dá)到了只需使用智能硬件就能夠監(jiān)測(cè)睡眠質(zhì)量的目的。然而,這種類型的傳感器仍然有一些缺陷,如:行為識(shí)別不清楚,錯(cuò)誤識(shí)別率高。
現(xiàn)在的社會(huì),工作壓力越來(lái)越大,女人要同時(shí)兼顧工作與家庭,特別是剛做母親的,要照顧嬰兒,又要操持家務(wù),這讓新媽媽很是焦頭爛額。嬰兒一天中的大多數(shù)時(shí)間都是在睡覺(jué),如何監(jiān)測(cè)嬰兒的睡眠,如何安撫嬰兒,如何解決嬰兒的尿濕問(wèn)題,這些都是忙碌的新媽媽們所關(guān)心的問(wèn)題。大部分的家庭都會(huì)選擇用便攜的紙尿褲,但是紙尿褲不僅價(jià)格昂貴,而且吸水性很強(qiáng),如果不及時(shí)更換,很可能會(huì)引起嬰兒的皮膚起疹子。純棉紙尿褲既衛(wèi)生又舒服,又要及時(shí)更換,目前市場(chǎng)上的尿液濕度測(cè)試設(shè)備大都是單一的,容易造成漏報(bào)。所以在嬰兒睡覺(jué)的時(shí)候,要想知道嬰兒有沒(méi)有尿床,這對(duì)于新手家長(zhǎng)來(lái)說(shuō)也是非常重要的。
本論文主要針對(duì)以單片機(jī)為核心的嬰兒睡眠監(jiān)測(cè)系統(tǒng)進(jìn)行了設(shè)計(jì)。當(dāng)嬰兒在睡眠中被監(jiān)測(cè),當(dāng)嬰兒被尿濕或者因?yàn)樾枰樟隙奁鼤r(shí),就會(huì)發(fā)出警報(bào)。
首先,在參考了有關(guān)的數(shù)據(jù)之后,確定了整個(gè)方案和功能,并按照設(shè)計(jì)的要求,完成了電路的設(shè)計(jì)和硬件的構(gòu)建,然后編寫了單片機(jī)的控制軟件,最后進(jìn)行了實(shí)際的焊接和試驗(yàn)。
該系統(tǒng)主要包括:51單片機(jī)最小系統(tǒng), LED指示燈,ULN2003驅(qū)動(dòng)步進(jìn)電機(jī),功能按鍵,WT588D播放,聲音采集模塊,濕度檢測(cè), LCD顯示當(dāng)前信息和狀況,聲音傳感器檢測(cè)嬰兒哭鬧,濕度傳感器檢測(cè)嬰兒尿床,檢測(cè)尿床, LED燈亮,聲音播報(bào)。具體是這樣的:
1)查閱有關(guān)數(shù)據(jù),了解51微處理器的基本原理;
2)了解51微處理器在嬰兒睡眠監(jiān)測(cè)中的應(yīng)用;
3)完成了以單片機(jī)為核心的嬰兒睡眠監(jiān)測(cè)系統(tǒng)的電路設(shè)計(jì);
4)用 C語(yǔ)言進(jìn)行有關(guān)的控制;
5)對(duì)程序進(jìn)行調(diào)試,使之符合設(shè)計(jì)要求;
6)焊接一塊用于檢測(cè)和分析嬰兒睡眠監(jiān)測(cè)系統(tǒng)的硬件電路;
7)完成畢業(yè)設(shè)計(jì)報(bào)告。
2.1 系統(tǒng)總體框圖
此方案的整體設(shè)計(jì)方框圖見(jiàn)圖2-1。
圖2-1 系統(tǒng)框圖
圖2-1是本系統(tǒng)的系統(tǒng)配置,從圖中可以看出,它包括九個(gè)部件:
1)微處理器:
由于STC89C52是一種低功耗,高性能的COMS8位單片機(jī),它的系統(tǒng)中有8 K的可編程 Flash內(nèi)存。該系統(tǒng)以STC89C52系列微處理器為核心,根據(jù)采集到的數(shù)據(jù)進(jìn)行相應(yīng)的數(shù)據(jù)處理和控制。
2)聲控電路:
本系統(tǒng)主要用于采集超過(guò)某一特定數(shù)值分貝的聲音,以滿足起動(dòng)步進(jìn)電動(dòng)機(jī)的要求。
3)濕度度采集電路:
本電路主要完成對(duì)各溫度的測(cè)量,并將其送至單片機(jī)進(jìn)行處理。
4)語(yǔ)音采集電路:
該線路用于判斷嬰兒是否在哭泣。
5)步進(jìn)電機(jī):
此模塊可實(shí)現(xiàn)嬰兒床的晃動(dòng)。
6)LED燈:
在這個(gè)系統(tǒng)中, LED燈會(huì)及時(shí)發(fā)光,可以讓保姆們及時(shí)地照看嬰兒,查看嬰兒有沒(méi)有尿床。
7)語(yǔ)音播報(bào):
WT588D在這個(gè)系統(tǒng)中會(huì)自動(dòng)報(bào)警,提醒保姆注意嬰兒有沒(méi)有尿床,并能及時(shí)的哄嬰兒入睡。
8)LCD1602模塊:
本系統(tǒng)采用杜邦線路與單片機(jī)連接,由單片機(jī)采集相關(guān)的信號(hào),并將其傳輸至液晶顯示器,以提高其亮度。
9)系統(tǒng)供電電路:為報(bào)警系統(tǒng)的工作提供穩(wěn)定的直流穩(wěn)壓電源。
2.2 系統(tǒng)功能設(shè)計(jì)
在系統(tǒng)啟動(dòng)后,將會(huì)針對(duì)以下情況進(jìn)行相應(yīng)的處理:
1.每當(dāng)嬰兒號(hào)角哭泣時(shí),電機(jī)由音響控制回路自動(dòng)搖擺,語(yǔ)音模組會(huì)自動(dòng)播放輕歌,以安撫嬰兒的心情;
2.語(yǔ)音控制模塊能夠?qū)崟r(shí)獲取嬰兒的哭鬧情況;
3.每當(dāng)兒童小便造成棉被濕時(shí),由濕度傳感器發(fā)出的信號(hào)觸發(fā)自動(dòng)警報(bào),語(yǔ)音提示是否尿床, LED燈點(diǎn)亮;
4.采用ULN2003驅(qū)動(dòng)步進(jìn)電動(dòng)機(jī),在需要哄嬰兒的時(shí)候,可以控制馬達(dá)左右轉(zhuǎn)動(dòng),讓嬰兒安靜。
5.按鍵用于進(jìn)行3種不同的設(shè)定,便于對(duì)各種情況進(jìn)行快速的處理。
三,系統(tǒng)展示
整體展示
系統(tǒng)測(cè)試:濕度檢測(cè)器檢測(cè)到嬰兒尿床會(huì)進(jìn)行語(yǔ)音播報(bào)+LCD燈閃爍展示
四,核心代碼展示
#include <reg52.h> //調(diào)用單片機(jī)頭文件
#include <intrins.h>
#include "lcd1602.h"
#include "StepMotor.h"
#define uchar unsigned char //無(wú)符號(hào)字符型 宏定義 變量范圍0~255
#define uint unsigned int //無(wú)符號(hào)整型 宏定義 變量范圍0~65535
#include "WT588D.h"
//按鍵引腳定義
sbit KEY1 = P3^5;
sbit KEY2 = P3^6;
sbit KEY3 = P3^7;
sbit ShiDu = P1^0;//濕度傳感器
sbit LED = P1^1;
sbit Voice = P1^2;//聲音傳感器
bit openFlag = 0;//電機(jī)開(kāi)啟標(biāo)志
bit Mode = 0;//0是自動(dòng)模式,1是手動(dòng)模式
uint DJ_TIME = 0;//電機(jī)開(kāi)啟時(shí)間
/*********************定時(shí)器1初始化******************/
void time_init()
{
TMOD |= 0X10;
TH1=0x4c;//50ms
TL1=0x00;
ET1 = 1;
TR1 = 1;//開(kāi)啟定時(shí)
EA = 1; //開(kāi)總中斷
}
void keyscan()
{
if(KEY1 == 0)//切換鍵按下
{
delay_ms(10);
if(KEY1 == 0)
{
while(!KEY1);//等待按鍵松開(kāi)
Mode = !Mode;
if(Mode==0)lcd_write_str(0, 1, "MODE: ZIDONG ");
else lcd_write_str(0, 1, "MODE: SHOUDONG ");
openFlag = 0;
}
}
if(Mode==1)//手動(dòng)模式
{
if(KEY2 == 0)//手動(dòng)開(kāi)關(guān)鍵按下
{
delay_ms(10);
if(KEY2 == 0)
{
while(!KEY2);
openFlag = 1;
}
}
if(KEY3 == 0)//手動(dòng)開(kāi)關(guān)鍵按下
{
delay_ms(10);
if(KEY3 == 0)
{
while(!KEY3);
openFlag = 0;
}
}
}
}
void motoRotate()//電機(jī)處理
{
static uint djcount=0;
static bit flag = 0;
if(flag == 0)
{
djcount++;
if(djcount < 30)
{
MotorCW();//正轉(zhuǎn)
}
else
{
if(djcount < 130)
{
MotorStop();//電機(jī)停止
}
else
{
flag = 1;
djcount = 130;
}
}
}
else
{
djcount--;
if(djcount > 100)
{
MotorCCW();//電機(jī)反轉(zhuǎn)
}
else
{
if(djcount<=0){flag = 0;djcount=0;}
MotorStop();//電機(jī)停止
}
}
}
void main()
{
uint sy_count1 = 0;
uint sy_count2 = 0;
uint yuyin = 0;
bit flag = 0;
time_init();//定時(shí)器初始化
lcd_init();//1602初始化
lcd_write_str(0, 0, "STATE: CLOSE ");
lcd_write_str(0, 1, "MODE: ZIDONG ");
while(1)
{
keyscan();
if(Mode == 0)//在自動(dòng)模式下
{
if(Voice == 0)//檢測(cè)到有聲音
{
if(sy_count1++ > 10)//檢測(cè)哭聲是否延續(xù)
{
DJ_TIME = 60;//電機(jī)開(kāi)啟時(shí)間1分鐘
openFlag = 1;//電機(jī)開(kāi)啟
sy_count1 = 0;
if(ShiDu==0)Line_1A(1);//播報(bào)歌曲
}
}
else
{
if(sy_count2++ > 200)
{
sy_count2 = 0;
sy_count1 = 0;
}
}
}
if(ShiDu==1)//檢測(cè)到尿不濕濕了
{
LED = 0;
if(flag == 0)//只播報(bào)一次
{
flag = 1;
Line_1A(0);//播報(bào)
yuyin = 0;
}
if(flag==1)
{
if(yuyin++ > 400)
{
yuyin = 0;
Line_1A(0);//播報(bào)
}
}
}
else
{
LED = 1;flag = 0;
}
if(openFlag==1)//電機(jī)開(kāi)啟
{
lcd_write_str(0, 0, "STATE: OPEN ");
motoRotate();
}else
{
lcd_write_str(0, 0, "STATE: CLOSE");
MotorStop();//電機(jī)關(guān)閉
}
delay_ms(1);
}
}
void zd1() interrupt 3
{
static uchar cnt1=0;
TH1=0x4c;//50ms
TL1=0x00;
if(cnt1++ >= 20)//1s
{
cnt1 = 0;
if(DJ_TIME > 0)
{
DJ_TIME--;
}
else
{
if(Mode == 0)openFlag=0;
}
}
}
#include <reg52.h>
#include <intrins.h>
#include "lcd1602.h"
sbit RS = P2^5;//數(shù)據(jù)命令引腳
sbit RW = P2^6;//讀寫引腳
sbit E = P2^7;//使能引腳
#define DataPort P0//1602并行通信口
void delay_ms(unsigned int ms)//延時(shí)毫秒函數(shù)
{
unsigned char i, j;
do
{
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}while(--ms);
}
void lcd_clear(void)//清屏函數(shù)
{
lcd_write_com(0x01);
delay_ms(5);
}
void lcd_write_com(unsigned char byte)//寫命令
{
RS = 0;
RW = 0;
E = 1;
DataPort = byte;
_nop_();
_nop_();
delay_ms(1);
E = 0;
}
void lcd_write_data(unsigned char byte)//寫數(shù)據(jù)
{
RS = 1;
RW = 0;
E = 1;
DataPort = byte;
_nop_();
_nop_();
delay_ms(1);
E = 0;
}
void lcd_init()//1602初始化
{
delay_ms(5);
lcd_write_com(0x38);//設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口
delay_ms(5);
lcd_write_com(0x38);//設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口
delay_ms(5);
lcd_write_com(0x38);//設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口
delay_ms(5);
lcd_write_com(0x08); //關(guān)閉顯示
delay_ms(5);
lcd_write_com(0x01);//清屏指令
delay_ms(5);
lcd_write_com(0x06);
delay_ms(5);
lcd_write_com(0x0c);
delay_ms(5);
}
void lcd_write_char(unsigned char x,unsigned char y,unsigned char byte)//在某一位置顯示一字符
{
if(0 == y)
{
lcd_write_com(0x80 + x);//第一行
}
else if(1 == y)
{
lcd_write_com(0x80 + 0x40 + x);//第二行
}
lcd_write_data(byte);//顯示數(shù)據(jù)
}
void lcd_write_str(unsigned char x, unsigned char y, unsigned char *s)//在某一位置顯示一字符串
{
if(0 == y)
{
lcd_write_com(0x80 + x);//第一行
}
else
{
lcd_write_com(0x80 + 0x40 + x);//第二行
}
while(*s)//判斷是否檢測(cè)到結(jié)尾符
{
lcd_write_data(*s);//顯示數(shù)據(jù)
s++;//指針加1
}
}
五,項(xiàng)目總結(jié)
本論文采用了信息學(xué)習(xí)法、文獻(xiàn)研究法、經(jīng)驗(yàn)法等多種研究方法,包括:
(1)信息學(xué)習(xí)法:了解和實(shí)踐嬰兒的睡眠監(jiān)測(cè)功能,并結(jié)合當(dāng)前的實(shí)際情況,進(jìn)行嬰兒的睡眠監(jiān)測(cè)系統(tǒng)的開(kāi)發(fā)。
(2)文獻(xiàn)調(diào)研:收集了國(guó)內(nèi)外有關(guān)嬰兒睡眠監(jiān)測(cè)設(shè)計(jì)的研究成果,并對(duì)其進(jìn)行了梳理,并對(duì)其進(jìn)行了系統(tǒng)的需求分析。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-685231.html
(3)經(jīng)驗(yàn)方法:在進(jìn)行系統(tǒng)設(shè)計(jì)時(shí),常常會(huì)出現(xiàn)代碼錯(cuò)誤等問(wèn)題。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-685231.html
到了這里,關(guān)于單片機(jī)開(kāi)發(fā)|基于單片機(jī)的嬰兒睡眠監(jiān)測(cè)系統(tǒng)設(shè)計(jì)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!