智慧灌溉平台

2023-11-01 18:04
文章标签 智慧 平台 灌溉

本文主要是介绍智慧灌溉平台,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.知识百科

  智慧灌溉是运用物联网、云计算、大数据等新一代信息技术,结合农业生产的实际需求,通过传感器采集土壤温湿度、光照强度等信息,利用无线传感网络传输到中央控制系统进行智能控制。智慧灌溉系统由传感器(水位传感器)、无线通信模块(GPRS/CDMA/WLAN/蓝牙)和计算机组成;在农业生产中,通过自动感知环境信息(温度、湿度),实时监控作物生长状况并做出判断和决策。

智慧灌溉

2.开发环境

  本次智慧灌溉平台包含有硬件和软件两部分。其中硬件部分有 基于STM32的主控制器,USB接口水泵、稻田模型、水位监测传感器,硬件配置如下所所示:

  • 主控制器
    主控制器
  • 稻田模型
      稻田模型中添加了水位监测传感器设备。
    在这里插入图片描述
  • 水泵
    在这里插入图片描述
  • 应用APP
    在这里插入图片描述

3.硬件设计

在这里插入图片描述

4.软件设计

  本次硬件主控MCU选择的是ST公司的基于Cortex-M3架构的STM32F103C8T6,供电部分是12V转5V,采用MP2359实现,5V转3.3V则采用AMS1117-3.3实现。软件设计通过HAL库+KEIL软件。

主控MCU: STM32F103C8T6
通信设备: ESP8266WIFI
传感器设备: 水位检测传感器
水泵: USB接口3W水泵
其他: RGB工作状态指示、串口调试接口、ST_Link下载口

4.1 ESP8266WIFI驱动

  ESP8266系列无线模块是一个经济高效的WIFI SOC模块,支持标准IEEE802.11b/g/n协议,内置完整的TCP/IP协议栈。 用户可以使用此系列模块向现有设备添加网络功能,也可以构建独立的网络控制器。

  • 支持STA、AP、STA+AP动作模式;
  • 体积非常小的802.11b/g/n WiFi SOC模块
  • 内置10bit高精度ADC采用低功率32位CPU,兼作应用程序处理器
  • 支持USART、GPIO、IIC、PWM、ADC、SPI等接口时钟频率最大为160MHz
  • 支持smart config、AirKiss一键网络支持多个休眠模式,深休眠电流低到20uA
  • 嵌入式LWIP协议栈
  • 支持SDK二次开发
  • 通用AT指令可以快速使用支持串行本地升级和远程固件升级( FOTA )

  本次采用通用AT指令开发,串口通信,波特率为115200,配置模式为AP+TCP服务器。

/*****************ESP8266初始化*****************
**形参:u8 *wifi_name      -- 热点名称
**			u8 *wifi_password  -- 密码
**			u16 port           -- 端口号
**
**返回:0--成功,其他值 -- 失败
const char *AP_TCPSERVER[]=
{"AT\r\n",//测试指令"ATE0\r\n",//关闭回显"AT+CWMODE=2\r\n",//--设置为AP(热点)模式"AT+RST\r\n",//模块重启"ATE0\r\n",//关闭回显"AT+CWSAP=\"EPS8266_123\",\"01234567\",1,4\r\n", //--设置wifi信息"AT+CIPMUX=1\r\n",//设置多连接"AT+CIPSERVER=1,10\r\n", //--设置TCP服务器模式,端口号(0~65535)"AT+CIFSR\r\n"//查询IP地址
};
************************************************/
u8 Esp8266_AP_TcpServer_Init(u8 *wifi_name,u8 *wifi_password,u16 port)
{char buff[100];char *p=NULL;u8 i=0;printf("1.发送测试指令\r\n");if(Esp8266_SendCmdCheckStat("AT\r\n","OK\r\n"))return 1;printf("2.关回显\r\n");if(Esp8266_SendCmdCheckStat("ATE0\r\n","OK\r\n"))return 2;printf("3.设置模式\r\n");if(Esp8266_SendCmdCheckStat("AT+CWMODE=2\r\n","OK\r\n"))return 3;	printf("4.模块复位\r\n");if(Esp8266_SendCmdCheckStat("AT+RST\r\n","OK\r\n"))return 4;	Delay_Ms(1000);Delay_Ms(1000);printf("5.关回显\r\n");if(Esp8266_SendCmdCheckStat("ATE0\r\n","OK\r\n"))return 5;	//字符串拼接snprintf(buff,sizeof(buff),"AT+CWSAP=\"%s\",\"%s\",1,4\r\n",wifi_name,wifi_password);printf("buff:%s",buff);printf("6.设置热点信息\r\n");if(Esp8266_SendCmdCheckStat(buff,"OK\r\n"))return 6;	printf("7.设置多连接\r\n");if(Esp8266_SendCmdCheckStat("AT+CIPMUX=1\r\n","OK\r\n"))return 7;	printf("8.设置端口号\r\n");snprintf(buff,sizeof(buff),"AT+CIPSERVER=1,%d\r\n",port);if(Esp8266_SendCmdCheckStat(buff,"OK\r\n"))return 8;	printf("9.查询IP地址\r\n");if(Esp8266_SendCmdCheckStat("AT+CIFSR\r\n","OK\r\n"))return 9;/*****提取IP地址信息*//*usart3:+CIFSR:APIP,"192.168.4.1"+CIFSR:APMAC,"86:f3:eb:a6:be:f9"OK*/p=strstr((char *)usart3_rx_buff,"APIP");if(p!=NULL){p+=6;while((*p!='"') && (*p!='\0')){buff[i]=*p;p++;i++;}}buff[i]='\0';printf("buff:%s\r\n",buff);strcpy((char *)esp8266_info.esp8266_ip,buff);//IP地址strcpy((char *)esp8266_info.esp8266_name,(char *)wifi_name);//wifi名称strcpy((char *)esp8266_info.esp8266_key,(char *)wifi_password);//wifi密码esp8266_info.esp8266_prot=port;return 0;
}

4.2 水位监测传感器

在这里插入图片描述
  本模块工作电压为5V,采用ADC方式采集液位值,原理为印刷电路板侵入水中,阻值会改变,通过测量阻值的变化来测量水位。

在这里插入图片描述
在这里插入图片描述

  • 获取水位值示例
u16 Get_Regular_Channelx(u16 ch)
{ADC_ChannelConfTypeDef sConfig = {0};sConfig.Channel=ch;//通道号sConfig.SamplingTime=ADC_SAMPLETIME_239CYCLES_5;//采样周期if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)//ADC通道初始化{Error_Handler();}	HAL_ADC_Start(&hadc1);//开启ADCHAL_ADC_PollForConversion(&hadc1,20);//等待规则通道转换完成return HAL_ADC_GetValue(&hadc1);
}
//采集AD值,多次测量求平均值
int Get_WeatherVal()
{u16 buffer[10];u32 count=0;int i=0,j=0;u16 temp;for(i=0;i<10;i++){buffer[i]=Get_Regular_Channelx(ADC_CHANNEL_8);//100ms采集一次水位值Delay_Ms(2);}for(i=0;i<10-1;i++){for(j=0;j<10-1-i;j++){if(buffer[j]>buffer[j+1]){temp=buffer[j];buffer[j]=buffer[j+1];buffer[j+1]=temp;}}}for(j=2;j<8;j++){count+=buffer[j];}return (count/6);
}

4.3 水泵驱动

  本次水泵选择的是3W USB接口抽水电机,通过继电器控制水泵启动和关闭,配合上位机软件和水位传感器实时监测水位值实现电机自动启动和停止工作。低电平启动水泵工作,高电平停止水泵工作。

#define moto_ctl_start() HAL_GPIO_WritePin(moto_clt_GPIO_Port,moto_clt_Pin,GPIO_PIN_RESET)
#define moto_ctl_stop()  HAL_GPIO_WritePin(moto_clt_GPIO_Port,moto_clt_Pin,GPIO_PIN_SET)

4.4 核心控制功能

  设备上电初始化WIFI,等待app连接。水位传感器实时检测当前水位状态,通过APP启动水泵抽水,当前水位值超过设定是阈值,则水泵自动停止工作。
  板载RGB状态指示灯。硬件电源检测正常位红色,WIFI工作工作则红灯闪烁,APP连接成功则白灯闪烁,电机工作则绿灯闪烁。通过RGB灯光状态即可得知当前设备工作状态。

  while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */if(usart1_flag){usart1_rx_buff[usart1_cnt]='\0';printf("rx1=%s,%d\r\n",usart1_rx_buff,usart1_cnt);usart1_cnt=0;usart1_flag=0;}if(usart3_flag){usart3_rx_buff[usart3_cnt]='\0';printf("rx3=%s,%d\r\n",usart3_rx_buff,usart3_cnt);if(strstr((char *)usart3_rx_buff,"0,CONNECT")){wifi_stat=1;//连接成功time=0;stat=0;RGB_Ctl(0,0,0);snprintf(buff,sizeof(buff),"#%d,%d,%d",0,0,threshold_val%101);Esp8266_SendData(0,(u8*)buff);//发松数据到客户端}else if(strstr((char *)usart3_rx_buff,"0,CLOSED")){wifi_stat=0;//断开连接time=0;stat=0;RGB_Ctl(0,0,0);moto_ctl_stop();}else if(strstr((char *)usart3_rx_buff,"motor:1")){wifi_stat=2;//启动工作time=0;stat=0;RGB_Ctl(0,0,0);moto_ctl_start();motor_stat=1;}else if(strstr((char *)usart3_rx_buff,"motor:0")){wifi_stat=1;//停止工作time=0;stat=0;RGB_Ctl(0,0,0);moto_ctl_stop();motor_stat=0;}else if(strstr((char *)usart3_rx_buff,"max:"))//水位阈值{//+IPD,0,6:max:97,17p=strstr((char *)usart3_rx_buff,"max:");p+=strlen("max:");threshold_val=atoi(p);//printf("threshold_val=%d\r\n",threshold_val);}usart3_cnt=0;usart3_flag=0;}time++;time2++;time3++;Delay_Ms(1);if(wifi_stat==0 && time>=500)//应用app未连接(红灯闪烁){time=0;stat=!stat;if(stat)RGB_Ctl(200,0,0);elseRGB_Ctl(0,0,0);}if(wifi_stat==1 && time>=500)//应用app连接成功(白灯闪烁){time=0;stat=!stat;if(stat)RGB_Ctl(255,253,85);elseRGB_Ctl(0,0,0);}else if(wifi_stat==2 && time>=500)//电机工作(绿灯闪烁){time=0;stat=!stat;if(stat)RGB_Ctl(0,255,0);elseRGB_Ctl(0,0,0);}if(time3>=100){time3=0;data=Get_WeatherVal();temp=data/3900.00*100;//printf("data=%.2f.%d\r\n",temp,data);if((temp)>=threshold_val)//当前水位值超过设定阈值,则停止电机工作{if(motor_stat==1){time=0;stat=0;RGB_Ctl(0,0,0);moto_ctl_stop();motor_stat=0;//关闭电机wifi_stat=1;snprintf(buff,sizeof(buff),"#%d,%d,%d",motor_stat,threshold_val,threshold_val);Esp8266_SendData(0,(u8*)buff);//发松数据到客户端time2=0;}}}if(time2>=1000 && motor_stat==1 && wifi_stat>=1)//1s上报一次当前水位状态,且需要再电机工作时进行上报{time2=0;snprintf(buff,sizeof(buff),"#%d,%d,%d",motor_stat,((int)temp)%101,threshold_val%101);//printf("buff=%s\r\n",buff);Esp8266_SendData(0,(u8*)buff);//发松数据到客户端}}/* USER CODE END 3 */
}

5.工程示例

这篇关于智慧灌溉平台的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/324782

相关文章

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

如何解决线上平台抽佣高 线下门店客流少的痛点!

目前,许多传统零售店铺正遭遇客源下降的难题。尽管广告推广能带来一定的客流,但其费用昂贵。鉴于此,众多零售商纷纷选择加入像美团、饿了么和抖音这样的大型在线平台,但这些平台的高佣金率导致了利润的大幅缩水。在这样的市场环境下,商家之间的合作网络逐渐成为一种有效的解决方案,通过资源和客户基础的共享,实现共同的利益增长。 以最近在上海兴起的一个跨行业合作平台为例,该平台融合了环保消费积分系统,在短

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

《纳瓦尔宝典》是纳瓦尔·拉维坎特(Naval Ravikant)的智慧箴言

《纳瓦尔宝典》是一本由埃里克·乔根森(Erik Jorgensen)编著的书籍,该书于2022年5月10日由中信出版社出版。这本书的核心内容围绕硅谷知名天使投资人纳瓦尔·拉维坎特(Naval Ravikant)的智慧箴言,特别是关于财富积累和幸福人生的原则与方法。 晓北斗推荐 《纳瓦尔宝典》 基本信息 书名:《纳瓦尔宝典》作者:[美] 埃里克·乔根森译者:赵灿出版时间:2022

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景