本系统由通过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

给个免费的三连哦!!!

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

  1. 基于STM32 HAL库的遥控小车

    目录 前言 一.材料清单 二.系统概述 三.硬件设计 1.HC-SR04超声波模块 2.HC-05/06蓝牙模块 3.L298n电机驱动模块 四.代码 1.引脚设置 2.遥控部分 3.超声波报警部分 ...

  2. HIH8121(HIH8000系列)温湿度传感器驱动代码-基于STM32 HAL库

    HIH8121温湿度传感器代码基于STM32 HAL库 HIH8121传感器简介 驱动代码.c 驱动代码.h main函数 HIH8121传感器简介 HIH8121是霍尼韦尔公司生产的测量温湿度参数一 ...

  3. [STM32F1]基于STM32 HAL库实现鼠标键盘摇杆的USB复合设备

    序: 其实这样一个设备我们在ch32v103上实现过,但移植到STM32 HAL库上面,还是发现很多问题的,现在就移植过程给大家分享一下在基于STM32 HAL库实现鼠标键盘摇杆的USB复合设备的实现 ...

  4. 毕业/课程设计——基于STM32的智能灯光控制系统(物联网、智能家居、手机APP控制、语音控制)

    文章首先介绍本系统所包含的功能,主要包含六方面功能,之后逐步分享开发过程,其流程如下:点亮灯带(三极管)→调节灯光亮度(PWM)→为系统添加远程控制功能→为系统添加语音识别功能→添加超声波姿态监测功能 ...

  5. DW1000开发笔记(三)基于STM32 HAL库裸机工程移植DW1000官方驱动

    系列文章 DW1000开发笔记(一)DW1000芯片概览 DW1000开发笔记(二)使用STM32硬件SPI+STM32cubeMX+HAL库测试DW1000通信 一.官方驱动 Decawave官方提 ...

  6. MAX6675 带冷端补偿的热电偶测温芯片驱动-基于STM32 HAL库

    MAX6675 简介 MAX6675 是一款带冷端补偿的热电偶测温芯片,通过3线SPI总线直接输出热电偶测量温度值. 引脚如下: 与单片机连接关系如下: 通信时序与数据格式如下: MAX6675 驱动 ...

  7. STM32 HAL库+ESP8266+华为云物联网平台

    文章内容: STM32 HAL库通过串口发送AT指令完成与ESP8266的控制实现接入华为云物联网平台,并完成基本通信与控制,包括设备属性上报和命令下发解析与响应. 文末获取"STM32 H ...

  8. 移植Freemodbus到STM32(基于CubeMX,HAL库)-避坑篇

    具体Freemodbus移植到STM32步骤参考: STMC2CubeMX | STM32 HAL库移植FreeModbus详细步骤 基于STM32HAL库移植FreeModbus FreeModbu ...

  9. STM32 HAL库 驱动 MT6701 磁编码器

    写在前面: MT6701 是 MagnTek 推出的新一代基于差分霍尔感应原理的磁性角度编码器芯片.值得一提的是 MT6701不仅提供 0~360° 的角度信号,而且还提供了一个"按压&qu ...

最新文章

  1. 关于Struts2三种访问Servlet API方式的总结
  2. 计算机二级mysql是什么_计算机二级mysql考什么内容?
  3. php中函数封装怎么弄,php封装函数步骤
  4. SQL Server 服务器硬件配置
  5. 大王——有趣干货集合
  6. 我和Django那些事儿(8)----相册django插件photologue,jQuery插件Slides
  7. 【web开发】☆★之利用POI操作Excel表格系列教程【6】遍历工作簙行和列取值
  8. wpf之代码给grid添加内容
  9. Kubernetes入门——k8s概念和架构
  10. Spring - 基于JPA的动态SQL执行器
  11. algorithm:next_permutation
  12. Atitit 模块打包器(module bundler)的概念与使用 目录 1. 解决问题 1 1.1. 多js合并方便性能加载 1 1.2. 静态模块打包 2 1.3. 动态模块打包 2 2. 最
  13. FSCapture录屏软件
  14. Nginx跨域配置--端口转发
  15. html中的背景颜色渐变效果,如何CSS实现网页背景三种颜色渐变效果?
  16. 【学习笔记】seckill-秒杀项目--(8)页面优化
  17. 数据分析必备43个Excel函数
  18. 情侣间常犯的7个沟通问题
  19. 计蒜客 2018ICPC徐州邀请赛D Persona5(组合计数 + 分块打表)
  20. 打造全国性社会化大数据中心

热门文章

  1. 惠普硬盘测试工具_短DST未通过,详细教您惠普笔记本如何检测硬盘
  2. 【叶神中级】四篇-3.页面访问
  3. zookeeper之Curator
  4. 复制宝贝到淘宝店铺,主图和标题不做修改,是否会被封店?
  5. 88---Python 以符号的方式给出积分表达式,类似Mathematics
  6. 固态硬盘和机械硬盘区别-表格对比
  7. 知识在超网络中的传播模型
  8. 菜孔孔学python--列表
  9. android4.2屏幕录像,android——使用自带录屏工具进行屏幕录像
  10. Android 使用CameraX实现预览/拍照/录制视频/图片分析/对焦/缩放/切换摄像头等操作