【单片机毕业设计选题24064】-基于阿里云的鱼塘水质检测系统
创始人
2025-01-07 07:07:05
0

系统功能:

主控为STM32F103C8T6,通过PH值传感器、浑浊度传感器、温度传感器采集各项水质数据,系统可设定各参数

的阈值,超过设定的阈值将通过蜂鸣器响来提醒用户做出措施,同时通过ESP-12F WIFI模块将设备连接阿里云

物联网平台,实现在pc与手机端进行远程实时数据实时交互。

系统需要连接阿里云,手机开启2.4G WiFi热点后再给主机系统上电

系统连接阿里云后可在阿里云界面查看到系统上报的温度,浊度,PH值信息

上电后OLED显示 “欢迎使用环境监测系统请稍后”,两秒后显示Connecting...表示

正在连接阿里云,正常连接阿里云后显示第一页面,如长时间显示Connecting...请

检查WiFi网络是否正确。

正常连接阿里云后可在云平台上查看到设备在线并且OLED显示从机发送过来的各种传

感器数据

第一页面第一行显示“系统状态信息”,第二行显示温度和PH值,第三行显示水质浑浊度

第四行显示系统状态(正常或报警状态)

短按B4按键可切换到第二界面

第二页面第一行显示“温度阈值设定”,第二行显示获取到的温度值,第三行显示设定的

温度值,第四行显示温度状态是否超标,获取到的温度超过设定温度后蜂鸣器报警。

短按B4按键可切换到第三页面

短按B5按键可增加湿度设定阈值

短按B6按键可减少湿度设定阈值

第三页面第一行显示“浊度阈值设定”,第二行显示获取到的浑浊度值,第三行显示设定的

浑浊度值,获取到的混浊度超过设定浑浊度后蜂鸣器报警。

短按B4按键可切换到第四页面

短按B5按键可增加混浊度设定阈值

短按B6按键可减少混浊度设定阈值

第四页面第一行显示“酸碱阈值设定”,第二行显示获取到的PH值,第三行显示设定的PH值,

第四行显示PH值状态是否超标,获取到的PH值超过设定的PH值后蜂鸣器报警。

短按B4按键可切换到第一页面

短按B5按键可增加PH值设定阈值

短按B6按键可减少PH值设定阈值

主要功能模块原理图:

电源时钟烧录接口:

单片机和按键输入电路:

传感器采集电路:

资料获取地址

系统主要功能模块代码

初始化代码:

  /* USER CODE BEGIN 1 */     /* USER CODE END 1 */     /* MCU Configuration--------------------------------------------------------*/     /* Reset of all peripherals, Initializes the Flash interface and the Systick. */    HAL_Init();     /* USER CODE BEGIN Init */      InitVar();     /* USER CODE END Init */     /* Configure the system clock */    SystemClock_Config();     /* USER CODE BEGIN SysInit */     /* USER CODE END SysInit */     /* Initialize all configured peripherals */    MX_GPIO_Init();    MX_USART1_UART_Init();    MX_USART2_UART_Init();    MX_ADC1_Init();    /* USER CODE BEGIN 2 */  //uart2打开接收中断      HAL_UART_Receive_IT(&huart2, (uint8_t*)&uart2RecBuff, 1);      InitOled();      InitOledDisp();      if(InitDS18B20()==0)      {  //        printf("%s", "DS18B20初始化成功");  //DS18B20在上电第一次读取时显示温度为85℃,这是正常的。  //85℃是DS18B20在上电复位后在温度寄存器内的对应数字量,  //这里DS18B20初始化成功后读一次值,避免出现85℃          DS18B20GetTemp_SkipRom();      }  //初始化ESP8266      ESP8266_Init();        HAL_Delay(100);      OledFill(0x00);     //全屏熄灭        /* USER CODE END 2 */

ESP8266接入阿里云代码:
 

//硬件复位ESP8266      HAL_GPIO_WritePin(ESP8266RST_GPIO_Port, ESP8266RST_Pin, GPIO_PIN_RESET);           HAL_Delay(250);      HAL_GPIO_WritePin(ESP8266RST_GPIO_Port, ESP8266RST_Pin, GPIO_PIN_SET);           HAL_Delay(500);  //关闭板载LED      HAL_GPIO_WritePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin, GPIO_PIN_SET);           ESP8266_Clear();  //测试AT指令           printf("AT Testing\r\n");           while(ESP8266_SendCmd("AT\r\n", "OK", 200))           {                    HAL_Delay(1000);           }           HAL_GPIO_TogglePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin);            HAL_Delay(500);  //设置为Station              printf("set CWMODE\r\n");           while(ESP8266_SendCmd("AT+CWMODE=1\r\n", "OK", 200))           {                    HAL_Delay(1000);           }           HAL_GPIO_TogglePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin);            HAL_Delay(500);  //上电不自动连接AP           printf("set CWAUTOCONN\r\n");           while(ESP8266_SendCmd("AT+CWAUTOCONN=0\r\n", "OK", 200))           {                    HAL_Delay(1000);           }           HAL_GPIO_TogglePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin);            HAL_Delay(500);  //关闭回显      printf("set ATE0\r\n");      while(ESP8266_SendCmd("ATE0\r\n", "OK", 200))      {          HAL_Delay(1000);      }      HAL_GPIO_TogglePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin);        HAL_Delay(500);  //配置WIFI           printf("set Wifi\r\n");           while(ESP8266_SendCmd("AT+CWJAP=\""WIFI_SSID"\",\""WIFI_PASSWD"\"\r\n", "OK", 500))           {                    HAL_Delay(1000);      }                 HAL_GPIO_TogglePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin);           HAL_Delay(500);  //MQTT USER CONFIG      printf("mqtt config\r\n");      while(ESP8266_SendCmd("AT+MQTTUSERCFG=0,1,\""MQTT_CLIENT_ID"\",\""MQTT_USER_NAME"\",\""MQTT_PASSWD"\",0,0,\"\"\r\n", "OK", 500))      {          HAL_Delay(1000);      }        HAL_GPIO_TogglePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin);      HAL_Delay(1000);  //MQTT连接服务器      printf("mqtt broker\r\n");      while(ESP8266_SendCmd("AT+MQTTCONN=0,\""BROKER_ASDDRESS"\",1883,0\r\n", "OK", 500))      {          HAL_Delay(1000);      }        HAL_GPIO_TogglePin(OnBoardLED_GPIO_Port, OnBoardLED_Pin);  HAL_Delay(500);

系统控制代码:

//系统信息更新  void SystemControl(void)  {      static uint8_t updateCnt = 0;           updateCnt++;         if(updateCnt>=SYSTEM_UPDATE_INTER)      {          updateCnt = 0;          Aliyun_SendData();      }  //更新DHT11温湿度数据      UpdateTempData();  //读取传感器值      ReadSensorVal();  }

此设计提供的资料包含原理图PCB(包含PDF,AD,立创EDA三个版本),源代码,系统框图,主程序流程图,物料清单(包含使用到的器件手册),功能操作说明等。

相关内容

热门资讯

绝活儿辅助!广西老友玩老是输怎... 绝活儿辅助!广西老友玩老是输怎么办(辅助挂)都是真的有辅助app(讲解有挂)在进入广西老友玩老是输怎...
法门辅助!福建13水插件(辅助... 法门辅助!福建13水插件(辅助挂)一贯是有辅助技巧(有挂技术)1、许多玩家不知道福建13水插件辅助怎...
办法辅助!潮友会app下载官方... 办法辅助!潮友会app下载官方辅助器(辅助挂)真是真的是有辅助app(有挂教程)该软件可以轻松地帮助...
妙招辅助!邯郸胡乐挂辅助(辅助... 妙招辅助!邯郸胡乐挂辅助(辅助挂)好像存在有辅助插件(有挂方略)1、上手简单,内置详细流程视频教学,...
教程书辅助!乐酷辅助(辅助挂)... 教程书辅助!乐酷辅助(辅助挂)其实存在有辅助脚本(有挂细节)乐酷辅助能透视中分为三种模型:乐酷辅助模...
学习辅助!决战卡五星辅助(辅助... 学习辅助!决战卡五星辅助(辅助挂)本来真的是有辅助软件(有人有挂)学习辅助!决战卡五星辅助(辅助挂)...
绝活辅助!边锋嘉兴麻将辅助器(... 绝活辅助!边锋嘉兴麻将辅助器(辅助挂)真是真的有辅助神器(新版有挂)1、边锋嘉兴麻将辅助器公共底牌简...
举措辅助!枫叶辅助器(辅助挂)... 举措辅助!枫叶辅助器(辅助挂)本来存在有辅助技巧(竟然有挂)1、下载好枫叶辅助器正确养号方法之后点击...
讲义辅助!点我达辅助(辅助挂)... 讲义辅助!点我达辅助(辅助挂)一直存在有辅助技巧(有人有挂)1、点我达辅助辅助器安装包、点我达辅助辅...
模块辅助!威信茶馆有挂的吗(辅... 模块辅助!威信茶馆有挂的吗(辅助挂)一直真的是有辅助脚本(揭秘有挂)1、玩家可以在威信茶馆有挂的吗线...