文章目录
- 一、功能简介
- 二、软件设计
- 三、实验现象
- 联系作者
一、功能简介
本项目使用Proteus8仿真51单片机控制器,使用LCD1604显示模块、按键模块、LED和蜂鸣器、DHT11温湿度、DS18B20温度传感器、SR04超声波,声音传感器、L298N直流电机、语音蓝牙控制等。
 主要功能:
 系统运行后,LCD1604显示DHT11检测环境湿度值、DS18B20检测体温、HC-SR04超声波检测距离、声音传感器检测是否有声音;如果超声波检测距离大于报警值120CM,则蜂鸣器报警。否则,如果检测到儿童哭泣,开启摇篮,如果检测到没有声音,则停止摇篮。
 当检测没有声音时,可通过语音/蓝牙控制摇篮的开启和关闭;
 当检测到有声音时,可通过语音/蓝牙控制打开和关闭声音。
 语音/蓝牙控制指令:
 0X01–>开启摇篮
 0X02–>停止摇篮
 0X03–>开启声音
 0X04–>关闭声音
二、软件设计
/*
作者:嗨小易(QQ:3443792007)
*/
//系统功能控制
void sys_fun_ctrl(void)
{
	static u16 i=0;
	static u8 cnt=0;
	//如果检测距离超限,蜂鸣器报警
	if(sys_ctrl.dis>ALARM_DIS)
	{
		beep_alarm(100,20);//蜂鸣器报警
	}
	//有效距离内
	else
	{
		//如果检测到有声音,开启摇床
		if(sys_ctrl.sound==1)
		{
			sys_ctrl.run=1;
			i++;
			if(i%10==0)
			{
				cnt++;
				if(cnt>2)cnt=0;
				dc_motor_dir_ctrl(cnt);//开启摇床
			}
			//如果语音/蓝牙播放音乐
			if(UART_RX_BUF[0]==PLAY_MUSIC_CMD)
			{
				beep_alarm(1000,10);
			}		
		}
		//如果检测到没有声音
		else
		{
			//如果语音/蓝牙打开摇床,开启摇床
			if(UART_RX_BUF[0]==START_CMD)
			{
				sys_ctrl.run=1;
				i++;
				if(i%10==0)
				{
					cnt++;
					if(cnt>2)cnt=0;
					dc_motor_dir_ctrl(cnt);//开启摇床
				}		
			}
			//如果语音/蓝牙关闭摇床,关闭摇床
			else if(UART_RX_BUF[0]==STOP_CMD)
			{
				UART_RX_BUF[0]=0;
				sys_ctrl.run=0;
				dc_motor_dir_ctrl(0);//停止摇床	
			}
			//没有收到语音/蓝牙指令
			else
			{
				sys_ctrl.run=0;
				dc_motor_dir_ctrl(0);//停止摇床	
			}
		}	
	}		
}
//应用控制系统
void appdemo_show(void)
{
	u8 i=10;
	sys_parm_init();//系统参数初始化
	lcd1604_init();
	DHT11_Init();
	ds18b20_init();
	UART_Init();//串口初始化,4800
	UART_SendString("UART Init OK\r\n");
	//读取温度数据,等待稳定
	while(i--)
	{
		//读取DHT11温湿度值
		DHT11_Read_Data(&sys_ctrl.htemp,&sys_ctrl.humi);
		//读取DS18B20温度值
		sys_ctrl.temp=ds18b20_read_temperture()*10;
		delay_ms(100);	
	}
	ultrasonicwave_init();//超声波初始化
	sys_open_show();//系统开机界面显示
	while(1)
	{	
		sys_data_get();//系统数据获取
		sys_data_show();//系统数据显示
		sys_data_set();//系统数据设置
		sys_fun_ctrl();//系统功能控制
	}
}
三、实验现象
B站演示视频:https://space.bilibili.com/444388619

 
 
 
联系作者
专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。



















