【单片机毕业设计】【dz-853】多功能便携保温杯的设计与实现
一、功能简介
项目名:多功能便携保温杯的设计与实现
项目编号: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;
}
}
更多推荐



所有评论(0)