STM32单片机智能蓝牙APP定时开关插座喂食器药盒

Posted Sandra_C

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32单片机智能蓝牙APP定时开关插座喂食器药盒相关的知识,希望对你有一定的参考价值。

程序源码PCB参考设计 +QQ2142686503
产品功能描述:
本系统由STM32F103C8T6单片机核心板、蓝牙模块、蜂鸣器驱动、LCD1602液晶显示、继电器及电源组成。
1、通过手机蓝牙app可以设置继电器打开的时间段。
2、通过STM32内部RTC实时时钟获取时间信息,将年月日时分秒周几时间信息实时上传到手机蓝牙APP。
3、通过手机蓝牙app可以校时。
4、例如当天设置时间段为:
蓝牙更新数据命令:08:20-11:50,当前时间在09:10时继电器打开,当前时间12:20时继电器关闭。

unsigned char setMin = 12;
unsigned char setSec = 12;
unsigned char midWeek = 0;//星期中间变量

unsigned char dsHour_start_01 = 8;	 //A组定时时分
unsigned char dsMin_start_01 = 0;
unsigned char dsHour_end_01 = 10;	 
unsigned char dsMin_end_01 = 30;

unsigned char timeOverFlag = 0; //设置时间范围内 即时间覆盖
unsigned char buzzerReportFlag = 0; //报警置位 表示报过警了
int main(void)
 { 
	delay_init();	    	 //延时函数初始化	  
	uart_init(9600);	 	//串口初始化为115200
  TIM3_Int_Init(499,7199);//50ms  	 
	LED_Init();		  		//初始化硬件接口
//	KEY_Init();	

	relay=1; buzzer =1 ;//继电器打开
	delay_ms(200);
	relay=0;relayFlag=0;buzzer = 0 ;	//继电器状态标识

	Lcd_GPIO_init();  //初始化lcd接口
	Lcd_Init();		  //初始化lcd
	delay_ms(20);	 

	while(RTC_Init())		//RTC初始化	,一定要初始化成功
	{ 
		delay_ms(100);
	}		 

//	RTC_Set(2020,1,19,15,52,10);  //设置时间 年 月 日 时  分 秒
	 
	delay_ms(10);

	while(1)
	{
		if(setTimeFlag == 1)//接收到设置时间命令
		{
			setTimeFlag = 0;//清空标志
			RTC_Set(setYear,setMonth,setDate,setHour,setMin,setSec);		
		}
		
		if(disFlag == 1)//更新显示
		{
			disFlag = 0;
		
			if(calendar.week == 0) midWeek = 7;//星期 切换
			else midWeek = calendar.week ;//星期 切换	
				
				sprintf((char*)dis0,"%02d-%02d-%02d %ds%02d:%02d",(int)calendar.w_year%100,(int)calendar.w_month,(int)calendar.w_date,(int)midWeek,(int)dsHour_start_01,(int)dsMin_start_01);//年月日周
				Lcd_Puts(0,0,dis0);//显示	

				sprintf((char*)dis1,"%02d:%02d:%02d  e%02d:%02d",(int)calendar.hour,(int)calendar.min,(int)calendar.sec,(int)dsHour_end_01,(int)dsMin_end_01);//时分秒	10		
				Lcd_Puts(0,1,dis1);//显示		
				
				if((calendar.hour>=dsHour_start_01)&&(calendar.hour<=dsHour_end_01))  //对比时间段1
				{
					if((dsHour_start_01 != dsHour_end_01))  //设置起止时不再同一小时
					{
						if((calendar.hour>dsHour_start_01)&&(calendar.hour<dsHour_end_01))	//两个时 范围内
						{
							timeOverFlag = 1;//打开							
						}
						else if((calendar.hour == dsHour_start_01) && (calendar.min>=dsMin_start_01))  //启停不在一个小时内 当前时间在启动时内
						{
							timeOverFlag = 1;//打开	
						}
						else if((calendar.hour == dsHour_end_01) && (calendar.min<dsMin_end_01)) //启停不在一个小时内 当前时间在停止时内
						{
							timeOverFlag = 1;//打开	
						}
						else
						{timeOverFlag = 0;}								
					}
					else if((dsHour_end_01 == dsHour_start_01))  //同一个小时内
					{
						if((calendar.min>=dsMin_start_01) && (calendar.min<dsMin_end_01)) //统一小时分钟范围内
						{timeOverFlag = 1;}//打开									
						else
						{timeOverFlag = 0;}	  //关闭
					}
				}
				else
				{
					timeOverFlag = 0;	  //关闭
				}
			
				if(timeOverFlag == 1){//时间段内				
					relay=1;relayFlag=1;	//闭合
					if(buzzerReportFlag==0){  //蜂鸣器是否报警标志
						buzzerReportFlag = 1; //报警置位 表示报过警了
						buzzer = 1;delay_ms(200);buzzer = 0;delay_ms(200);
						buzzer = 1;delay_ms(200);buzzer = 0;delay_ms(200);
						buzzer = 1;delay_ms(200);buzzer = 0;
					}
				}
				else{				
					relay=0;relayFlag=0;	//继电器状态标识
					buzzerReportFlag = 0;//蜂鸣器没有报警过
					buzzer = 0;
				}

				sendDataFlag++;// 数据发送延时计数
				if(sendDataFlag >= 8)//大概800ms
				{
					sendDataFlag = 0;//清空		
					sprintf((char*)dis2,"*D20%02d%02d%02d#\\r\\n",(int)calendar.w_year%100,(int)calendar.w_month,(int)calendar.w_date);//年月日
					printf((char*)dis2);//显示	

					sprintf((char*)dis2,"*T%02d%02d%02d#\\r\\n",(int)calendar.hour,(int)calendar.min,(int)calendar.sec);//时分秒		
					printf((char*)dis2);//显示		
					
					sprintf((char*)dis2,"*S%02d:%02d~%02d:%02d#\\r\\n",(int)dsHour_start_01,(int)dsMin_start_01,(int)dsHour_end_01,(int)dsMin_end_01);//打印				
					printf((char*)dis2);//显示	
				}				
			}		
		}													    
}	

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

以上是关于STM32单片机智能蓝牙APP定时开关插座喂食器药盒的主要内容,如果未能解决你的问题,请参考以下文章

毕业设计:基于STM32的智能家居无线(蓝牙wifi)语音控制系统

基于STM32智能马蹄锁设计

基于stm32的串口/蓝牙控制LED灯的开关和亮度(超基础)

STM32语音识别的智能蓝牙音箱

基于STM32的智能鱼缸设计

基于STM32的智能鱼缸设计