一、硬件材料清单:
1、STM32核心板
2、OLED显示屏
3、PH传感器
4、TDS浑浊度传感器
5、DS8B02水温传感器
6、ESP8266
二、实现的功能
1、数据的实时检测
2、本地OLED数据实时刷新
3、远程终端上位机数据显示刷新
三、效果演示
四、硬件部分源代码共享
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | while(1) { delay_ms(1000); temperature=DS18B20_Get_Temp(); if(temperature<0) { OLED_ShowString(40,40,"-",16); //??ê??oo? temperature=-temperature; //×a?a?yêy } else OLED_ShowString(40,40," ",16); //è¥μ??oo? OLED_ShowNum(50,40,temperature/10,2,16);//??ê??yêy2?·? OLED_ShowString(70,40,".",16); //??ê?D?êyμ? OLED_ShowNum(80,40,temperature%10,1,16);//??ê?D?êy2?·? OLED_ShowString(90,40,"'C",16); //??ê?μ¥?? OLED_Refresh(); msg[4]=temperature/10; msg[5]=temperature%10; //get TDS value TU = Get_Adc_Average(ADC_Channel_1,5)*(3.3/4096);// PA1 AD×a?? TU_calibration=-0.0192*(temperature/10-25)+TU; TU_value=-865.68*TU_calibration + K_Value; if(TU_value<=0){TU_value=0;} if(TU_value>=3000){TU_value=3000;} delay_ms(5); //OLED??ê?TDS value OLED_ShowNum(50,20,(int)TU_value,4,16); OLED_ShowString(85,20,"mg/L",16); //??ê?μ¥?? OLED_Refresh(); msg[6]=(int)TU_value/255; msg[7]=(int)TU_value%255; //get PH value PH = Get_Adc_Average(ADC_Channel_2,5)*(3.3/4096);// PA2 AD×a?? PH_value=-5.7541*PH+16.654; if(PH_value<=0.0){PH_value=0.0;} if(PH_value>=14.0){PH_value=14.0;} delay_ms(5); //OLED??ê?PH value OLED_ShowNum(50,0,(int)PH_value,2,16); OLED_Refresh(); } |
五、上位机部分源代码共享
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | string gate = msg.Substring(4, 2); string node = msg.Substring(6, 2); string temp = msg.Substring(8, 2); string temp2 = msg.Substring(10, 2); string tds = msg.Substring(12, 4); string ph = msg.Substring(16, 2); Int16 data_temp = 0, data_temp2 = 0, data_tds = 0, data_ph = 0; data_temp = Convert.ToByte(temp, 16); data_temp2 = Convert.ToByte(temp2, 16); data_tds = Convert.ToInt16(tds, 16); data_ph = Convert.ToInt16(ph, 16); string tt = data_temp.ToString() + '.' + data_temp2.ToString(); Text_Temp.Invoke(showTemp, tt); Text_Hum.Invoke(showHum, data_tds.ToString()); Text_Lux.Invoke(showLux, data_ph.ToString()); Write(DateTime.Now.ToString("yyyy-MM-dd"), nowtime + "+" + tt + "," + data_tds.ToString() + "," + data_ph.ToString() + "\r\n"); |
六、源代码链接
1 | https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.15d11deblBXfYB&ft=t&id=632361207620 |