STM32项目分享:智能水质检测系统

目录

一、前言

二、项目简介

1.功能详解

2.主要器件

三、原理图设计

四、PCB硬件设计

PCB图 

五、程序设计 

六、实验效果 

七、资料内容

项目分享


一、前言

项目成品图片:

哔哩哔哩视频链接:

STM32智能水质检测系统

(资料分享见文末) 

二、项目简介

1.功能详解

功能如下:

  1. 主控芯片为STM32单片机;
  2. DS18B20温度传感器测量水温度
  3. TDS电导率传感器测量水的电导率
  4. PH值传感器检测水的酸碱度
  5. 浊度传感器测量水的浑浊度
  6. OLED显示屏实时显示当前水温、电导率、浊度和PH值
  7. 按键可设置阈值,超出阈值触发蜂鸣器报警
  8. 异常报警下可控制继电器执行操作
  9. 接入机智云平台,通过机智云手机APP远程查看水质数据信息
  10. 手机APP显示信息并完成控制

2.主要器件

  • STM32F103C8T6单片机
  • OLED 屏幕
  • DS18B20数字温度传感器
  • TDS电导率传感器
  • PH传感器
  • 继电器
  • 蜂鸣器

三、原理图设计

四、PCB硬件设计

PCB图 

五、程序设计 


int main(void)
{	
		u8 i;
	  DelayInit();//系统延时函数初始化
		DelayMs(500);
		usart2_init(9600);//串口2初始化	
		ADC1_DMA_Config();
		Gizwits_Init();//机智云初始化	
	  Key_Init();//按键引脚初始化	
		TIM2_Int_Init(10000,3600);//输出话定时器  这边用到定时器2作为0.5秒钟中断发生源
		TIM_Cmd(TIM2, ENABLE);//开启定时器2	
		OLED_Init();//OLED屏幕初始化
	  OLED_CLS();//清屏		
		OLED_ShowCC(0,0,"====LOADING====");//显示标题	
	  	
		mod = 0;//开机显示开机界面
		DS18B20_Init();//初始化温湿度传感器
	  DelayMs(100);

	
		Readflash(set_code,0,20);  //读取内部保存数据
	  DelayMs(10);
		if(set_code[19] != 66)//对比内部数据是不是以及被重新覆盖  是的话载入初始化数据
		{
			OLED_ShowStr(0,0,"===NO  FLASH===",2);
      Writeflash(0,begin_code,0,20);//写入初始化数据
			DelayMs(500);
			Readflash(set_code,0,20);//读取写写入后的数据
			sprintf(str,"Init System [%2d]",set_code[19]);//显示验证数据
			OLED_ShowStr(0,4,(unsigned char *)str,2);
			DelayMs(100);
			OLED_CLS();//清屏		
		}	
	
		gizwitsHandle((dataPoint_t *)&currentDataPoint);//机智云协议处理
		gizwitsSetMode(WIFI_AIRLINK_MODE);//WIFI_SOFTAP_MODE模式接入
		DelayMs(1000);
		userInit();
		OLED_CLS();//清屏	
    while (1)
		{	
		
			PH = (float)ADCConvertedValue[1];		//PH对应的AD值
			PH = PH * (3.3/4096) * 2;//PH数据处理
			PH = PH * (-5.7541) + 16.654;
			//PH = PH * (-5.7541) + 16.654 +15 ; 	//PH数据处理		
			//if ((PH > 14) || (PH <= 0))//PH数据判断是否在此范围  超过PH=7
			//PH = 7;
			if(PH > 14.0) PH = 14.0;
			if(PH < 0) PH = 0.0;
			PH_temp = PH ;//赋值给临时变量
			turbidity  = (float)ADCConvertedValue[0]*3.3/4096;//浊度对应的AD值  数据处理
			
		  turbidity  = turbidity_K - turbidity*865.68; 
//		turbidity = 100 - turbidity;//数据转化
			turbidity = turbidity-200;//数据转化
			if(turbidity<35) turbidity = 0;	//浊度小于0时等于0
			turbidity_temp  = turbidity;//赋值给临时变量			
			TDS_DAT = (ADCConvertedValue[2]/4095.0)*3.3;
			TDS_DAT = 66.71*TDS_DAT*TDS_DAT*TDS_DAT-127.93*TDS_DAT*TDS_DAT+428.7*TDS_DAT;
			if(TDS_DAT<20) TDS_DAT = 0;

			temperature =	DS18B20_Get_Temp();//读取温湿度
			temperature_temp = (float)temperature/10;//赋值给临时变量			
			display();//显示程序
			key();//按键程序			
			if(mod==0)run();//逻辑控制
		  userHandle();		//用户数据采集
		  gizwitsHandle((dataPoint_t *)&currentDataPoint);//机智云协议处理
		}
}

六、实验效果 

七、资料内容

项目分享

猜你喜欢

转载自blog.csdn.net/qq_44016222/article/details/145326571
今日推荐