一、功能简介

项目名:多功能便携保温杯的设计与实现
项目编号:dz-853
单片机类型:STM32F103C8T6
具体功能:
1、通过防水式DS18B20测量水杯中水温,当温度小于最小值时,进行加热,直到水温大于最大值停止;
2、通过液位检测模块检测杯内水的剩余量,当液位值为0时,不进行加热,并能计算总的饮水量;
3、通过按键设定定时多长时间提醒喝水一次,当时间到后,声光报警2s提醒喝水;
4、通过按键设置各阈值,设置喝水间隔时间,另外,可通过按键手动控制加热、搅拌杯内液体;
7、通过OLED显示屏显示数据;
8、通过语音识别控制加热、搅拌、定时开关;
9、通过4G模块将检测的数据传输到手机端,手机可以设置参数、控制加热、搅拌。
 

二、系统框图设计

本设计以STM32F103C8T6单片机为核心控制器,加上其他的模块一起组成多功能便携保温杯的整个系统,其中包含中控部分、输入部分和输出部分。中控部分采用了STM32F103C8T6单片机,其主要作用是获取输入的部分数据,经过内部处理,控制输出部分。
输入由五部分组成,第一部分是温度检测模块,通过该模块可以获取当前的水温值;第二部分是液位检测模块模块,通过该模块检测当前的液位值;第三部分是语音识别模块,通过语音指令进行控制加热、搅拌和定时;第四部分是按键模块,通过该模块切换界面、设置阈值等;第五部分是供电模块,通过该模块可给整个系统进行供电。
输出由五部分组成,第一部分OLED显示模块,显示检测值和倒计时等;第二部分是声光报警模块,当定时结束后时间到了进行声光报警提醒;第三部分是继电器模块,进行加热和搅拌;
除此之外,4G模块可以当输入和输出;将检测的数据传输到手机端也可以远程控制继电器的开关,系统框图如图3.1所示。

三、32实物图

单片机型号:STM32F103C8T6

板子为绿色PCB板,两层板,厚度1.2,上下覆铜接地。元器件基本上为插针式,个别降压芯片会使用贴片式。

供电接口:TYPE-C

 四、原理图

软件版本:AD2013

电路连线方式:网络标号连线方式

注意:原理图只是画出了模块的引脚图,而并不是模块的内部结构原理图

 五、PCB图

由原理图导出,封装很大一部分都是作者自己绘制,不提供封装库,只提供连接好的源文件。中间有一个项目编号,隐藏在单片机底座下,插入单片机后不会看到。

两层板,上下覆铜接地。

六、部分程序展示

软件版本:keil5

逻辑程序和驱动程序分开,分布于main.c和其他.c文件

/**********************************
函数名:处理函数
传参值:无
返回值:无
**********************************/
void Manage_Function(void)
{
	if(display_num == 0)										//测量界面
	{
		if(water_value == 0)															//当杯内没有水时,不进行加热
		{
			RELAY_JR = 0;
		}
		else															  							//否则,温度不在阈值内,打开相应的继电器
		{
			if(temp_value < temp_min)          							//温度低于最小值,打开加热继电器
			{
				RELAY_JR = 1;
			}
			else if(temp_value > temp_max)          				//温度高于最大值,打开制冷继电器
			{
				RELAY_JR = 0;
			}	
		}
		
		if(water_value > water_record+5)								//加水开始五秒计时,结束把检测值赋值给记录值
		{
			flag_time_begin_5s = 1;
			
			if(flag_time_finish_5s == 1)
			{
				water_record = water_value;
				flag_time_finish_5s = 0;
			}
		}
		else if(water_value < water_record-5)						//喝水开始五秒计时,结束把差值赋值给总喝水量,把检测值赋值给记录值
		{
			flag_time_begin_5s = 1;
			
			if(flag_time_finish_5s == 1)
			{
				water_all = water_all + ((water_record - water_value) / 100.0);
				water_record = water_value;
				flag_time_finish_5s = 0;
			}
		}
		else
		{
			flag_time_begin_5s = 0;
			flag_time_finish_5s = 0;											//否则不进行计时
		}		
		
		if(flag_time == 1)
		{
			if(time_all_dingshi != 0)
			{
				flag_time_begin_1s = 1;
				
				if(flag_time_finish_1s == 1)
				{
					flag_time_finish_1s = 0;
					time_all_dingshi--;
				}
			}
			else if((time_all_dingshi == 0) && (time_hour_dingshi != 0 || time_minute_dingshi != 0 || time_second_dingshi != 0))											//定时时间减少变量减到0,触发蜂鸣器提醒,开盖
			{
				flag_time_begin_1s = 0;
				flag_time_finish_1s = 0;

				Oled_ShowString(3,6,"00:00:00");

				ALERT = 1;
				Delay_ms(1000);
				Delay_ms(1000);
				ALERT = 0;
				
				time_all_dingshi = time_hour_dingshi *3600 + time_minute_dingshi*60 + time_second_dingshi;
			}
		}
		else
		{
			flag_time_begin_1s = 0;
			flag_time_finish_1s = 0;
			time_all_dingshi = time_hour_dingshi *3600 + time_minute_dingshi*60 + time_second_dingshi;
		}
	}
	else																		//设置界面
	{
		RELAY_JR = 0;
		RELAY_JO = 0;
		ALERT = 0;
	}	
	
	if(flag_finish_5s == 1)								 //5秒上传一次数据
  {
    flag_begin_5s = 0;
    Air_4G_SendData();
    flag_begin_5s = 1;
  }
}

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐