功能说明
功能如下:
1、用stm32控制ds18b20采集温度
2、然后按键可以设置上下限温度
3、采集的温度低于下限温度时候打开加热片开始加热
4、加热到上限温度关闭加热片停止加热
5、采集的温度可以在oled显示
6、然后弄个按键控制一个紫外线灯模块,按一下打开紫外线灯一段时间,30s后自动关闭
7、将采集的温度上传到物联网平台onenet
系统框图
原理图
程序源代码-部分
int main(void) { unsigned char *dataPtr = NULL; unsigned short timeCount = 0; //发送间隔变量 delay_init(); //延时函数初始化 NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 LED_Init(); //LED端口初始化 KEY_Init(); //初始化与按键连接的硬件接口 uart2_init(115200);//串口2初始化 YHGUI_Config(); //OLED初始化 YHGUI_DispString(0,0,"正在初始化>>>>>>",16,1); //OLED显示初始化 YHGUI_DispString(0,32,"正在连接onenet",16,1); ESP8266_Init(); //初始化ESP8266 printf("8266_INIT_END "); RELAY=1; LED0=1; while(DS18B20_Init())//温度初始化 { } DS18B20_Get_Temp();//温度初始化 while(OneNet_DevLink()) //接入OneNET YHGUI_DispString(0,32,"连接onenet成功 ",16,1); delay_ms(500); printf("接入onenet成功"); YHGUI_DispString(0,32," ",16,1); YHGUI_DispString(0,0," ",16,1); while(1) { keyscan(); temperature = DS18B20_Get_Temp();//获取温度 temperature=temperature/10; if(temperature<0) { temperature=-temperature; //转为正数 } if(set_flag==0){ if(time_miao==1) sprintf(dis1," 恒温外卖柜 %02ds ",add_miao); else sprintf(dis1," 恒温外卖柜 "); YHGUI_DispString(0,0,dis1,16,1);} else if(set_flag==1)YHGUI_DispString(0,0," 温度上限设置 ",16,1); else if(set_flag==2)YHGUI_DispString(0,0," 温度下限设置 ",16,1); sprintf(dis1," 当前温度:%02d℃ ",temperature); YHGUI_DispString(0,16,dis1,16,1); //显示 sprintf(dis1," 温度上限:%02d℃ ",temp_high); YHGUI_DispString(0,32,dis1,16,1); //显示 sprintf(dis1," 温度下限:%02d℃ ",temp_low); YHGUI_DispString(0,48,dis1,16,1); //显示 if(temperaturetemp_high)RELAY=0; if(++timeCount >= 5) //时间间隔1s { if(time_miao==1){add_miao++;LED0=1;}else LED0=0; if(add_miao>30){add_miao=0;time_miao=0;} delay_ms(100); humidityH=11; humidityL=22; temperatureH=temperature; //温度整数部分 temperatureL=0; //温度小数部分 printf("hum temp=%d .%d %d .%d ",humidityH,humidityL,temperatureH,temperatureL); printf( "OneNet_SendData ");//通过串口1发送提示信息(要开始发送数据了) OneNet_SendData();//发送数据给onenet printf("send_data_end "); timeCount = 0; ESP8266_Clear(); } dataPtr = ESP8266_GetIPD(0);//获取平台返回的数据 if(dataPtr != NULL)//如果返回数据不为空 OneNet_RevPro(dataPtr);//平台返回数据检测 delay_ms(10); } }
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !