前言
🔥这里是小殷学长,单片机毕业设计篇1 基于stm32的智能加湿系统
🧿创作不易,拒绝白嫖 可私
一、功能介绍
------------------------------------------智能加湿系统-----------------------------------------
1.按键进行界面模式切换和参数阈值调节(定时时间、温湿度值)
2.蓝牙进行界面模式切换和参数阈值调节(定时时间、温湿度值)
3.语音进行界面模式切换和参数阈值调节(定时时间、温湿度值)
4.通过Oled和Onenet数据上传云端两种形式实时显示
5.蜂鸣器进行阈值报警提示,以及红绿led进行不同状态显示
6.实时采集环境温湿度值
功能可定制
🔥 实物展示
二、硬件部分
下面为该毕设中所用到的相关硬件说明,具体参数不做细节描述
硬件材料
PCB和原理图
三、软件部分
main.c部分代码
int main(void)
{
unsigned char *dataPtr = NULL,flag = 0;
unsigned short timeCount = 0; //发送间隔变量
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置系统中断优先级分组4
delay_init(); //延时初始化
LED_Init(); // led初始化
Buzzer_Relay_Init(); //蜂鸣器和继电器初始化
KEY_Exit_Init(); //按键初始化
Init_Usart(); //串口初始化
DHT11_Init(); //温湿度初始化
TIM3_PWM_Init(); //定时器初始化
OLED_Init(); //初始化OLED
delay_ms(500);
OLED_Clear(0); //清屏
Oled_WIFI(); //显示wifi连接
printf("wait wifi connect...\r\n");
ESP8266_Init(); //初始化ESP8266
//printf("8266_INIT_END\n");
while(OneNet_DevLink()) //接入OneNET
delay_ms(500);
printf("接入onenet成功");
delay_ms(500);
OLED_Clear(0); //清屏
Interface_Init(); //主界面
Buzzer_Voice(); //开机蜂鸣器提示
Buzzer_Voice();
flag = 1;
while(flag)
{
DHT11_Read_Data(&temp,&humi); //温湿度获取
Interface_Task(work_mode); //界面显示任务
Data_Task(); //数据处理任务
Logical_Task(); //逻辑处理任务
Usart_Task(); //串口处理任务
if(++timeCount >= 150) //时间间隔1s
{
OneNet_SendData();//发送数据给onenet
//printf("send_data_end\n");
timeCount = 0;
ESP8266_Clear();
}
dataPtr = ESP8266_GetIPD(0);//获取平台返回的数据
if(dataPtr != NULL)//如果返回数据不为空
OneNet_RevPro(dataPtr);//平台返回数据检测
delay_ms(10);
}
}
/*-------------------------------串口中断服务函数-------------------------*/
//串口1接收 PA9 PA10 蓝牙模块
void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断
{
usart_cmd = USART_ReceiveData(USART1);
//USART_SendData(USART1,Usart1_cmd); //打开可通过串口观察接收的数据
USART_ClearFlag(USART1, USART_FLAG_RXNE);
}
}
//语音 RX- PA2 TX-PA3
void USART2_IRQHandler(void)
{
if(USART_GetITStatus(USART2,USART_IT_RXNE) != RESET)
{
usart_cmd = USART_ReceiveData(USART2);
USART_ClearFlag(USART2, USART_FLAG_RXNE);
}
}
void TIM3_IRQHandler(void) //TIM3中断
{
static unsigned char temp_t = 0,t = 0,send_t = 0,time = 0;
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查TIM3更新中断发生与否
{
//时间
time++;
if(time == 100) //1s
{
time = 0;
sec++;
if(sec == 60)
{
sec = 0;
min++;
if(min == 60)
{
min = 0;
hour++;
if(hour == 24)
{
hour = 0;
}
}
}
}
send_t++;
if(send_t == 200) //2s将数据发送到手机一次
{
send_flag = 1;
send_t = 0;
}
if(time_flag)
{
t++;
if(t == 100) //1s
{
t = 0;
if(set_time-- == 0) //定时时间到
{
time_flag = 0; //重置标志位
set_time = 5; //重置默认值
}
}
}
//下面为温度刷新周期控制
if(temp_t++ == 10) //100ms更新一次温度数据
{
temp_t = 0;
//下面写更新温度功能函数
if(DHT11_Read_Data(&temp,&humi) == 1)
{
//delay_ms(200);
//printf("temp:%02d humi:%02d \r\n",temp,humi);
}
}
TIM_ClearITPendingBit(TIM3, TIM_IT_Update); //清除TIMx更新中断标志 //10ms
}
}
总结
上面为基于stm32f103c8t6的智能加湿系统功能相关的大致介绍,源码,pcb和原理图以及相关文档说明做了详细说明,有需可私
🧿创作不易,拒绝白嫖