基于STM32(HAL库)的水质检测(浑浊度、PH值、温度、手机APP显示、wifi上云)

article/2025/7/4 10:33:46

本系统由通过wifi将浑浊度、PH值、温度采集的数据发送到手机APP,超过设定的阈值报警。

一、硬件材料清单:

1、STM32C8T6:控制器

2、OLED显示屏:显示传感器采集的数据

3、PH传感器:检测PH值

4、TDS传感器:检测浑浊度

5、DS18B02水温传感器:检测温度

6、ESP8266:将数据发送到手机端

7、蜂鸣器:超过阈值报警

二、实物图:

三、部分源码:

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)//定时器中断回调函数
{
    
    HAL_TIM_Base_Stop_IT(&htim2);//停止定时器中断
    
    static uint8_t cot = 0;
    char temp_a [50] = {0};
    char humidity_a[20] = {0};
    uint16_t ADC_Value,PH_Value1;
    double  ADC_ValueFF,PH_Value;
    char charadc[50]={0};
    char charph[50]={0};
    
    
    
    beep_OFF();//关闭蜂鸣器
    if(flag == 1)//关灯
    {
        HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET);
    }
    else //开灯
    {
        HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET);
    }

    if (htim == (&htim2))
    {
       if(cot == 25)//5s发一次心跳包
       {
           HAL_UART_Transmit(&huart2,(uint8_t *)xtb, 2, 200);//发送心跳包
           cot = 0;//定时器计数归0
              
       }
        
       
         temperature = DS18B20_Get_Temperature();                //读取温度值
   
        HAL_ADC_Start_DMA(&hadc1,(uint32_t*)&AD_Value,2);        //开启DMA

        ADC_ValueFF = -865.68*(AD_Value[0]*3.3/4096.0)+3291.3;//通过公式得到浑浊度的值
        
        PH_Value = AD_Value[1]*3.3/4096;                    //得到采集PH值的电压
        PH_Value = -5.9647*PH_Value+22.255;                        //通过公式转换成PH值

        if(PH_Value<=0) PH_Value = 0;                            //PH值小于0 矫正为0
        else if(PH_Value>=14) PH_Value = 14;                    //PH值大于14 矫正为14
   
        sprintf(temp_a,"%d.%dC",(int)temperature/10,(((int)temperature)%10));//将温度转换成字符串的格式
        sprintf(charph,"%.2F",PH_Value);                         //将PH转换成字符串的格式
        sprintf(charadc,"%.2F",ADC_ValueFF);                     //将浑浊度转换成字符串的格式
            
        Release((char*)"temp",(char*)temp_a);                    //在手机APP上面显示温度
        Release((char*)"PH",(char*)charph);                        //在手机APP上面显示PH值
        Release((char*)"Turbidity",(char*)charadc);                //在手机APP上面显示浑浊度
        
        OLED_ShowString(0,16,(uint8_t *)"temp:        ",16,1);    //在OLED显示屏上面显示temp:
        OLED_ShowString(40,16,(uint8_t *)temp_a,16,1);            //在OLED显示屏上面显示温度
        
        OLED_ShowString(0,32,(uint8_t *)"PH:       ",16,1);        //在OLED显示屏上面显示PH:
        OLED_ShowString(40,32,(uint8_t *)charph,16,1);            //在OLED显示屏上面显示PH值
   
        OLED_ShowString(0,48,(uint8_t *)"ZD:       ",16,1);        //在OLED显示屏上面显示ZD: 
        OLED_ShowString(40,48,(uint8_t *)charadc,16,1);            //在OLED显示屏上面显示浑浊度的值
        OLED_Refresh();                                            //刷新OLED显示屏


        if((int)(temperature/10)<T_Min||(int)(temperature/10)>T_MAX)//判断温度是否在设定范围 不在则蜂鸣器响
        {
            beep_On();//蜂鸣器响
        }
        else if((int)(ADC_ValueFF)<TDS_Min||(int)(ADC_ValueFF)>TDS_MAX)//判断浑浊度是否在设定范围 不在则蜂鸣器响
        {
            beep_On();//蜂鸣器响
        }
        else if((int)(PH_Value)<PH_Min||(int)(PH_Value)>PH_MAX)//判断PH值是否在设定范围 不在则蜂鸣器响
        {
            beep_On();//蜂鸣器响
        }
        else beep_OFF();//全部条件都不满足则关闭蜂鸣器

       cot++;//定时器计数加1
   
      
    }


    HAL_TIM_Base_Start_IT(&htim2);//开启定时器
}
 

四、原理图:

        以下是整个工程各个模块的原理图:

五.更多:

 如果想要更加详细的了解整个工程的话可以去b站看这个视频演示,下面为视频链接:

单片机毕业设计:基于stm32的远程水质检测_哔哩哔哩_bilibili

给个免费的三连哦!!!


http://chatgpt.dhexx.cn/article/rV5sWT3w.shtml

相关文章

JEB动态调试与篡改攻防世界Ph0en1x-100

文章目录 题目APK静态分析jadx反编译IDA反汇编 JEB动态调试工具的使用操作内存值 AndroidKiller工具的使用篡改软件包 总结 题目 攻防世界 Mobile 新手区题目链接 Ph0en1x-100&#xff0c;如下&#xff1a; 下载附件得到一个 apk&#xff0c;安装后如下&#xff1a; 要求输入…

php 抓站,如何跨站抓取别的站点的页面的补充

如何跨站抓取别的站点的页面的补充 更新时间&#xff1a;2006年10月09日 00:00:00 作者&#xff1a; 在实际的应用中&#xff0c;经常会遇到一些特殊的情况&#xff0c;比如需要新闻&#xff0c;天气预报&#xff0c;等等&#xff0c;但是作为个人站点或者实力小的站点 我们不…

用python计算ph,用python下载PH上的学习视频

努力学习&#xff0c;天天向上 闲来无事&#xff0c;用python写个脚本下载PH上的学习视频 环境&#xff1a;python3 用法&#xff1a;python ph_downloader.py viewkey viewkey是PH上的一串字符 代码在 https://paste.ubuntu.com/p/jXVYD3NGP9 多线程下载&#xff0c;网络不好时…

浮标水质监测站--河流湖泊水库现场水质自动监测的解决方案

浮标水质监测站--河流湖泊水库现场水质自动监测的解决方案 什么是浮标水质监测站&#xff1f; 浮标水质监测站是设立在河流、湖泊、水库、近岸海域等流域内进行现场水质自动监测的监测仪器&#xff0c;是以水质监测仪为核心&#xff0c;运用传感器技术&#xff0c;结合浮标体…

html全屏背景视频特效,HTML5全屏背景视频特效插件Vidage.js源码

下面我们对HTML5全屏背景视频特效插件Vidage.js源码文件阐述相关使用资料和HTML5全屏背景视频特效插件Vidage.js源码文件的更新信息。 HTML5全屏背景视频特效插件Vidage.js源码 本特效是一款移动友好的基于HTML5插件Vidage.js实现全屏背景视频特效的代码。Vidage.js可以在手机或…

html背景图片只显示一张图片,img只显示图片一部分 或 css设置背景图片只显示图片指定区域(示例代码)...

17:14 2016/3/22 img只显示图片一部分 或 css设置背景图片只显示图片指定区域 background-position: 100% 56%; 设置背景图片显示图片的哪个坐标区域&#xff0c;图片左上角为0&#xff0c;0或0%&#xff0c;0%&#xff0c;右下角为高度和宽度&#xff0c;或100%&#xff0c;10…

html的背景图片设置

背景颜色&#xff1a;background-color&#xff0c;可用rgb、rgba、#off等进行设置 背景图片&#xff1a;background-img&#xff0c;可用网址或图片存放地址进行设置 平铺方式&#xff1a; background-repeat:repeat&#xff0c;在背景上只出现一张图片&#xff0c;没有设置…

Html手机web背景全屏,使用全屏背景的网页设计欣赏 全屏网页背景教程

使用全屏背景的网页设计欣赏 & 全屏网页背景教程 Sponsor 全屏的大背景网站之前分享过不少&#xff0c;这是2012年以及2013年的设计趋势&#xff0c;适合用全屏背景的网站有很多&#xff0c;比如摄影类、建筑类、餐厅美食行业等等。全屏背景不仅仅是一些插画及设计图&#…

html背景全屏,23个使用大背景的全屏网页设计作品

23个使用大背景的全屏网页设计作品 7月 20, 2015 评论 (2) Sponsor 在2013年的时候使用全屏背景或者大图片的网页开始流行起来&#xff0c;到了今年&#xff0c;还是经常看到这类风格的页面出现&#xff0c;可见这个趋势还是很流行的&#xff0c;值得运用。 一张大图再配合一个…

html点击图片可以放全屏,html:点击图片放大到全屏,再次点击缩回

做手机网页开发时,经常遇到的效果:点击某个不加链接的图片时,图片放大,当再次点击放大的图片时,图片缩回(实质上将层隐藏掉了)。 实现思路: 准备原材料:一个遮档整个屏幕的不透明接近黑色的背景层( ),一个位于背景层之上的图片容器( ) ; 加工过程:当点击不加链接的图…

利用css 把背景图片全屏铺满

1.html代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><!--引入我自己写的css文件--><link text"text/css" rel"stylesheet" href"../cs…

html5设置全屏背景图,HTML5 body设置全屏背景图片 如何让body的背景图片自适应整个屏----实战经验...

用什么代码实现&#xff1f;不允许有白色底色产生&#xff0c;因为手机高度不一样 错误的写法&#xff1a;加到div中结合图片设置min-height&#xff0c;但是页面不会回弹 话不多说直接上代码 终极方案 html,body{ width:100%; height:100% } 再加一段 body{ font-family: &quo…

html背景图片手机端全屏,css 背景图全屏显示,兼容移动端

.login { background: url(img/login.jpg) no-repeat center center; background-size: cover; background-attachment: fixed;//当页面的其余部分滚动时&#xff0c;背景图像不会移动。 width: 100%; height: 100%; position: fixed; top: 0; left: 0; right: 0; bottom: 0; }…

HTML全屏背景图

当我们在写前端页面的时候为了页面的美观我们通常会为页面设置图片背景&#xff0c;那么我们如何来设置全屏的背景图呢&#xff1f;&#xff1f;&#xff1f; 设置全屏背景图需要三个属性 background-image: url(img/untitled.png);background-repeat: no-repeat;background-s…

html怎么设置背景图 一张图平铺,html怎么设置背景图片全屏平铺?_WEB前端开发...

ps画笔工具快捷键是什么&#xff1f;_WEB前端开发 ps画笔工具的快捷键是“B”&#xff1b;默认使用前景色绘图&#xff0c;通过设置后可以多种色彩一起绘制。ps的画笔分为了4类&#xff1a;常规画笔、干介质画笔、湿介质画笔、特殊效果画笔。 html怎么设置背景图片全屏平铺&…

html背景图片如何自动平铺,html怎么设置背景图片全屏平铺?

html怎么设置背景图片全屏平铺&#xff1f; 1、新建一个html文档。 2、设置一下HTML的框架&#xff0c;然后把图片设置在同一个文件夹里面。 3、加入&#xff0c;这样可以有样式设置。 4、因为背景设置在主体&#xff0c;所以还要定义为body{}。 5、background-image:url(图片)…

html 怎么让背景图铺满整个页面

为了让背景图片铺满整个页面&#xff0c;我们可以这样设置&#xff1a; 第一、页面只有屏幕大小&#xff1a; background: url(../images/banner.jpg) no-repeat;background-size: 100% 100% ; 如果页面大于屏幕时&#xff0c;如果滑动就会出现白板 第二、页面随内容大小变化…

自媒体大咖啡馆钦佩的5个流行点标题规则

由于大多数自媒体浏览方式都是受手机界面限制的手机&#xff0c;因此读者通常会看到标题然后看内容。如果在看到标题时不允许读者阅读冲动&#xff0c;则读者不能被标题所吸引。进入&#xff0c;媒体文章基本上可以宣告失败。因此&#xff0c;媒体文章标题的发音与传统新闻&…

《惢客创业日记》2020.06.19(周五)为“创业日记”写序(五)

今天&#xff0c;继续给您分享《惢客创业日记》这本书的第五个序&#xff0c;提到这个人&#xff0c;不得不让我想起面试的那一幕&#xff0c;记得当时&#xff0c;他留着长头发&#xff0c;一身艺术范儿&#xff0c;再加上长的白白净净&#xff0c;一幅小鲜肉模样&#xff0c;…

你什么都没错,只是太老了。

我从业到现在已经十年多了&#xff0c;这个问题是我从业五到七八年时最苦恼的话题。当时觉得这个世界太不友好了&#xff0c;互联网这个行业全是年轻人&#xff0c;30岁以上就压力非常大&#xff0c;我缓解这种压力的方式就是每个周末必须得去做一些我认为比较有意义的事。 说…