Desarrollo de microcontroladores | Diseño de sistema de monitorización del sueño del bebé basado en microcontrolador

Página de inicio del autor: Programación de las mil grullas de papel

Sobre el autor: Java, front-end y Python se han desarrollado durante muchos años y he trabajado como ingeniero senior, director de proyectos y arquitecto.

Contenido principal: desarrollo de proyectos Java, desarrollo de proyectos Python, desarrollo de proyectos de inteligencia artificial y datos universitarios, diseño de proyectos MCU, organización de tecnología de entrevistas, intercambio de última tecnología

Favoritos, me gusta, no te pierdas, es bueno seguir al autor.

Obtenga el código fuente al final del artículo.

Número de artículo: BS-DPJ-003

Prefacio:

Los bebés duermen la mayor parte del día, cómo controlar el sueño del bebé, consolarlo a tiempo y cómo resolver el problema de humedad del bebé son los temas que más preocupan a las nuevas madres. La mayoría de las familias eligen pañales cómodos, pero los pañales no sólo son caros, sino también muy absorbentes. Si no se reemplazan a tiempo, es probable que se desarrollen enfermedades de la piel como erupciones, lo que también es una amenaza para el cuerpo del bebé; el bebé se despierta. arriba Llorará y los padres no lo escucharon a tiempo, lo que provocó que el bebé se quedara solo por mucho tiempo. Por lo tanto, diseñar un sistema de monitorización del sueño adecuado para bebés resulta de gran ayuda para los padres novatos. Esta tesis utiliza la microcomputadora de un solo chip STC89C52 como núcleo, adopta control de voz, transmisión de voz y circuito de adquisición de humedad para recopilar datos de varias escenas y realiza el monitoreo en tiempo real de los niños a través de luces LED, transmisión de voz y otros métodos.

1. Introducción ambiental

Entorno del lenguaje: desarrollo del lenguaje C

 

Tecnología de desarrollo: 51 microcomputadoras de un solo chip; circuito de control de sonido; transmisión de voz; recolección de humedad; pantalla de cristal líquido

2. Introducción del proyecto

El sueño es un proceso fisiológico importante del cuerpo humano y su calidad está directamente relacionada con la salud del cuerpo humano. En medicina, la comprensión de las personas sobre la estructura y el proceso del sueño se logra principalmente mediante la polisomnografía y el registro del sueño multicanal. Específicamente, utiliza electroencefalografía (EEG) para monitorear las ondas cerebrales de las personas que duermen y predecir las condiciones del sueño. Sin embargo, dado que los dispositivos y tecnologías médicos se utilizan principalmente en hospitales e institutos de investigación científica, su popularidad está limitada por sus altos costos. En los últimos años, con el rápido desarrollo de la tecnología de detección, el desarrollo de microdetectores también ha mejorado continuamente. En la actualidad, lo más común es utilizar un actígrafo para el monitoreo, usualmente usando sensores en tres direcciones para obtener los movimientos de varias partes del cuerpo humano, como Fitbit, JawboneUP, WakeMate, YawnLog, etc., son todos teléfonos inteligentes portátiles. actualmente en el mercado. El software de análisis puede analizar el consumo de energía, la calidad del sueño, la hora de despertarse, la eficiencia del sueño, etc. del cuerpo humano en función de la información recopilada.

Al mismo tiempo, una gran cantidad de software de gestión del sueño basado en teléfonos inteligentes (SleepAsAndroid, Sleep Cycle) registran el comportamiento del sueño llamando al sensor de aceleración en el hardware inteligente, de modo que la calidad del sueño solo se puede monitorear mediante el uso de hardware inteligente. .el objetivo de. Sin embargo, este tipo de sensor todavía tiene algunos inconvenientes, como: reconocimiento de comportamiento poco claro y alta tasa de reconocimiento falso.

En la sociedad actual, la presión laboral está aumentando y las mujeres tienen que hacerse cargo del trabajo y la familia al mismo tiempo, especialmente las nuevas madres, que tienen que cuidar a los bebés y hacerse cargo de las tareas del hogar, lo que hace que las nuevas madres se sientan muy ansiosas. Los bebés duermen la mayor parte del día, y cómo controlar su sueño, cómo calmarlos y cómo solucionar los problemas de humedad son preocupaciones de las nuevas madres ocupadas. La mayoría de las familias optarán por utilizar pañales portátiles, pero los pañales no solo son caros, sino también muy absorbentes y, si no se reemplazan a tiempo, es probable que provoquen erupciones en la piel del bebé. Los pañales de algodón son higiénicos y cómodos, y deben ser reemplazados a tiempo. La mayoría de los equipos de prueba de humedad de la orina en el mercado son únicos, lo que es fácil de causar falsos positivos. Por lo tanto, cuando el bebé duerme, es muy importante que los padres novatos sepan si el bebé ha mojado la cama.

Esta tesis está dirigida principalmente al diseño de un sistema de monitorización del sueño del bebé con un microordenador de un solo chip como núcleo. Cuando se monitorea al bebé durante el sueño, se enviará una alarma cuando esté mojado o llorando porque necesita ser atendido.

En primer lugar, después de consultar los datos relevantes, se determina todo el esquema y la función y, de acuerdo con los requisitos de diseño, se completa el diseño del circuito y la construcción del hardware, y luego se escribe el software de control del microordenador de un solo chip, y Finalmente se llevan a cabo la soldadura y el experimento.

El sistema incluye principalmente: sistema mínimo de 51 chips individuales, luz indicadora LED, motor paso a paso ULN2003, teclas de función, reproducción WT588D, módulo de adquisición de sonido, detección de humedad, pantalla LCD con información y estado actual, sensor de sonido para detectar el llanto del bebé, sensor de humedad. Detección de enuresis del bebé, detección de enuresis, luz LED encendida, transmisión de sonido. El específico es este:

1) Consultar datos relevantes y comprender los principios básicos de 51 microprocesadores;

2) Comprender la aplicación de 51 microprocesadores en el seguimiento del sueño infantil;

3) Se completó el diseño del circuito del sistema de monitoreo del sueño infantil con una microcomputadora de un solo chip como núcleo;

4) Realizar el control pertinente con lenguaje C;

5) Depurar el programa para que cumpla con los requisitos de diseño;

6) Soldar una pieza de circuito de hardware para detectar y analizar el sistema de monitoreo del sueño del bebé;

7) Completar el informe de diseño de graduación.

2.1 Diagrama de bloques general del sistema

El diagrama de bloques de diseño general de este esquema se muestra en la Figura 2-1.

Figura 2-1 Diagrama de bloques del sistema

La Figura 2-1 es la configuración del sistema de este sistema, como se puede ver en la figura, incluye nueve componentes:

1) Microprocesador:

Debido a que STC89C52 es un microcontrolador COMS de 8 bits de alto rendimiento y bajo consumo de energía, tiene memoria Flash programable de 8K en su sistema. El sistema toma como núcleo el microprocesador de la serie STC89C52 y lleva a cabo el procesamiento y control de datos correspondiente de acuerdo con los datos recopilados.

2) Circuito de control por voz:

Este sistema se utiliza principalmente para recolectar el sonido que excede un cierto decibelio para cumplir con el requisito de arrancar el motor paso a paso.

3) Circuito de adquisición de humedad:

Este circuito completa principalmente la medición de cada temperatura y la envía a la microcomputadora de un solo chip para su procesamiento.

4) Circuito de adquisición de voz:

Esta línea se utiliza para determinar si el bebé está llorando.

5) motor paso a paso:

Este módulo permite el balanceo de la cuna.

6) luces LED:

En este sistema, la luz LED emitirá luz a tiempo, lo que permitirá a las niñeras cuidar al bebé a tiempo para comprobar si ha mojado la cama.

7) Transmisión de voz:

WT588D emitirá una alarma automáticamente en este sistema para recordarle a la niñera que preste atención a si el bebé ha mojado la cama y puede ponerlo a dormir a tiempo.

8) módulo LCD1602:

Este sistema adopta la línea DuPont para conectarse con una microcomputadora de un solo chip, y la microcomputadora de un solo chip recopila señales relevantes y las transmite a la pantalla de cristal líquido para mejorar su brillo.

9) Circuito de alimentación del sistema: proporciona una fuente de alimentación regulada por CC estable para el funcionamiento del sistema de alarma.

2.2 Diseño de funciones del sistema

Después de que se inicie el sistema, se ocupará de las siguientes situaciones en consecuencia:

1. Cada vez que la bocina del bebé llora, el motor oscilará automáticamente mediante el circuito de control de audio y el módulo de voz reproducirá automáticamente canciones ligeras para calmar al bebé;

2. El módulo de control por voz puede obtener la situación de llanto del bebé en tiempo real;

3. Cada vez que un niño orina y la colcha está mojada, la señal del sensor de humedad activa una alarma automática, la voz indica si la cama está mojada y la luz LED se enciende;

4. ULN2003 se utiliza para accionar el motor paso a paso. Cuando es necesario persuadir al bebé, se puede controlar el motor para que gire hacia la izquierda y hacia la derecha para que el bebé se quede tranquilo.

5. El botón se utiliza para 3 configuraciones diferentes, lo cual es conveniente para el procesamiento rápido de diversas situaciones.

 

Tres, pantalla del sistema

visualización general

Prueba del sistema: cuando el detector de humedad detecta que el bebé moja la cama, emitirá una transmisión de voz + pantalla LCD parpadeante.

 

Cuarto, la visualización del código central.

#include <reg52.h>			 //调用单片机头文件
#include <intrins.h>
#include "lcd1602.h"
#include "StepMotor.h"

#define uchar unsigned char  //无符号字符型 宏定义	变量范围0~255
#define uint  unsigned int	 //无符号整型 宏定义	变量范围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;//电机开启标志 
bit Mode = 0;//0是自动模式,1是手动模式

uint DJ_TIME = 0;//电机开启时间

/*********************定时器1初始化******************/
void time_init()	  
{
	TMOD |= 0X10;	  
  TH1=0x4c;//50ms
  TL1=0x00; 	
	ET1 = 1;
	TR1 = 1;//开启定时
	EA  = 1;	 	  //开总中断
}

void keyscan()
{
		if(KEY1 == 0)//切换键按下
		{
				delay_ms(10);
				if(KEY1 == 0)
				{
						while(!KEY1);//等待按键松开
						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)//手动模式
		{
				if(KEY2 == 0)//手动开关键按下
				{
						delay_ms(10);
						if(KEY2 == 0)
						{
								while(!KEY2);
						
								openFlag = 1;
						}
				}
				if(KEY3 == 0)//手动开关键按下
				{
						delay_ms(10);
						if(KEY3 == 0)
						{
								while(!KEY3);
						
								openFlag = 0;
						}
				}
		}
}

void motoRotate()//电机处理
{
	  static uint djcount=0;
	  static bit flag = 0;

	  if(flag == 0)
		{
			  djcount++;
				if(djcount < 30)
				{
						MotorCW();//正转
				}
				else
				{
						if(djcount < 130)
						{
								MotorStop();//电机停止
						}
						else
						{
								flag = 1;
							  djcount = 130;
						}
				}
		}
    else
		{
			  djcount--;
				if(djcount > 100)
				{
						MotorCCW();//电机反转
				}
				else
				{
					  if(djcount<=0){flag = 0;djcount=0;}
						MotorStop();//电机停止
				}
		}
}

void main()
{
	  uint sy_count1 = 0;
	  uint sy_count2 = 0;
	  uint yuyin = 0;
	  bit flag = 0;
	
		time_init();//定时器初始化
		lcd_init();//1602初始化
		lcd_write_str(0, 0, "STATE: CLOSE    ");
    lcd_write_str(0, 1, "MODE: ZIDONG    ");

		while(1)
		{
			  keyscan();
			  if(Mode == 0)//在自动模式下
				{
						if(Voice == 0)//检测到有声音
						{
								if(sy_count1++ > 10)//检测哭声是否延续
								{
										DJ_TIME = 60;//电机开启时间1分钟
										openFlag = 1;//电机开启
									  sy_count1 = 0;
									  if(ShiDu==0)Line_1A(1);//播报歌曲
								}
						}
						else
						{
								if(sy_count2++ > 200)
								{
										sy_count2 = 0;
									  sy_count1 = 0;
								}
						}
				}
        if(ShiDu==1)//检测到尿不湿湿了
				{
						LED = 0;
					  if(flag == 0)//只播报一次
						{
								flag = 1;
							  Line_1A(0);//播报
							  yuyin = 0;
						}
						if(flag==1)
						{
								if(yuyin++ > 400)
								{
										yuyin = 0;
									  Line_1A(0);//播报
								}
						}
				}
				else
				{
						LED = 1;flag = 0;
				}
			  if(openFlag==1)//电机开启
				{
					  lcd_write_str(0, 0, "STATE: OPEN ");
						motoRotate(); 
				}else 
				{
					  lcd_write_str(0, 0, "STATE: CLOSE");
						MotorStop();//电机关闭
				}
			  
			  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;//数据命令引脚
sbit RW = P2^6;//读写引脚
sbit E = P2^7;//使能引脚

#define DataPort P0//1602并行通信口

void delay_ms(unsigned int ms)//延时毫秒函数
{
	unsigned char i, j;
		do
		{
				_nop_();
				i = 2;
				j = 199;
				do
				{
					while (--j);
				} while (--i);
		}while(--ms);
}

void lcd_clear(void)//清屏函数
{
     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)//写数据
{
	  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);//设置16*2显示,5*7点阵,8位数据接口
	  delay_ms(5);
	  lcd_write_com(0x38);//设置16*2显示,5*7点阵,8位数据接口
	  delay_ms(5);
	  lcd_write_com(0x38);//设置16*2显示,5*7点阵,8位数据接口
	  delay_ms(5);
	  lcd_write_com(0x08); //关闭显示
	  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);//显示数据
}

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)//判断是否检测到结尾符 
		{
			lcd_write_data(*s);//显示数据
			s++;//指针加1 
		}
		
}



V. Resumen del proyecto

Este artículo adopta varios métodos de investigación, como el método de aprendizaje de información, el método de investigación de literatura y el método de experiencia, que incluyen:

(1) Método de aprendizaje de información: comprenda y practique la función de monitoreo del sueño del bebé y combine la situación real actual para desarrollar el sistema de monitoreo del sueño del bebé.

(2) Investigación bibliográfica: se recopilaron, clasificaron y analizaron sistemáticamente los resultados de investigaciones nacionales y extranjeras sobre el diseño de monitoreo del sueño infantil.

(3) Método empírico: durante el diseño del sistema, a menudo ocurren problemas como errores de código.

Supongo que te gusta

Origin blog.csdn.net/BS009/article/details/132299833
Recomendado
Clasificación