<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

智慧灌溉平臺

嵌入式技術 ? 來源:嵌入式技術 ? 作者:嵌入式技術 ? 2023-11-09 16:55 ? 次閱讀

1.知識百科

智慧灌溉是運用物聯網、云計算、大數據等新一代信息技術,結合農業生產的實際需求,通過傳感器采集土壤溫濕度、光照強度等信息,利用無線傳感網絡傳輸到中央控制系統進行智能控制。智慧灌溉系統由傳感器(水位傳感器)、無線通信模塊(GPRS/CDMA/WLAN/藍牙)和計算機組成;在農業生產中,通過自動感知環境信息(溫度、濕度),實時監控作物生長狀況并做出判斷和決策。

2.開發環境

??本次智慧灌溉平臺包含有硬件和軟件兩部分。其中硬件部分有 基于STM32的主控制器,USB接口水泵、稻田模型、水位監測傳感器,硬件配置如下所所示:

主控制器

wKgaomVMnMKAJkoZACIAsYmLBfY842.png

稻田模型
??稻田模型中添加了水位監測傳感器設備。

wKgaomVMnPiAR213ACHrbAGwvdk486.png

水泵

wKgZomVMnQ6AQD8pACSkrCLmGwc107.png

應用APP

wKgZomVMnTeAUbTzAAwhP9_jAAI419.png

3.硬件設計

wKgZomVMnVOAJ3wuAAhyL0CIcSU840.png

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[]=
{
	"ATrn",//測試指令
	"ATE0rn",//關閉回顯
	"AT+CWMODE=2rn",//--設置為AP(熱點)模式
	"AT+RSTrn",//模塊重啟
	"ATE0rn",//關閉回顯
	"AT+CWSAP="EPS8266_123","01234567",1,4rn", //--設置wifi信息
	"AT+CIPMUX=1rn",//設置多連接
	"AT+CIPSERVER=1,10rn", //--設置TCP服務器模式,端口號(0~65535)
	"AT+CIFSRrn"http://查詢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.發送測試指令rn");
	if(Esp8266_SendCmdCheckStat("ATrn","OKrn"))return 1;
	printf("2.關回顯rn");
	if(Esp8266_SendCmdCheckStat("ATE0rn","OKrn"))return 2;
	printf("3.設置模式rn");
	if(Esp8266_SendCmdCheckStat("AT+CWMODE=2rn","OKrn"))return 3;	
	printf("4.模塊復位rn");
	if(Esp8266_SendCmdCheckStat("AT+RSTrn","OKrn"))return 4;	
	Delay_Ms(1000);
	Delay_Ms(1000);
	printf("5.關回顯rn");
	if(Esp8266_SendCmdCheckStat("ATE0rn","OKrn"))return 5;	
	//字符串拼接
	snprintf(buff,sizeof(buff),"AT+CWSAP="%s","%s",1,4rn",wifi_name,wifi_password);
	printf("buff:%s",buff);
	printf("6.設置熱點信息rn");
	if(Esp8266_SendCmdCheckStat(buff,"OKrn"))return 6;	
	printf("7.設置多連接rn");
	if(Esp8266_SendCmdCheckStat("AT+CIPMUX=1rn","OKrn"))return 7;	
	printf("8.設置端口號rn");
	snprintf(buff,sizeof(buff),"AT+CIPSERVER=1,%drn",port);
	if(Esp8266_SendCmdCheckStat(buff,"OKrn"))return 8;	
	printf("9.查詢IP地址rn");
	if(Esp8266_SendCmdCheckStat("AT+CIFSRrn","OKrn"))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!=''))
		{
			buff[i]=*p;
			p++;
			i++;
		}
	}
	buff[i]='';
	printf("buff:%srn",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 水位監測傳感器

wKgaomVMneOAEuowAB0ompS-R1s774.png

??本模塊工作電壓為5V,采用ADC方式采集液位值,原理為印刷電路板侵入水中,阻值會改變,通過測量阻值的變化來測量水位。

wKgaomVMngCAC2dQAAWx26ktn30824.pngwKgaomVMngyAKWg6AASaUpXXD9I674.png

獲取水位值示例

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);//開啟ADC
	HAL_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;ibuffer[j+1])
			{
					temp=buffer[j];
					buffer[j]=buffer[j+1];
					buffer[j+1]=temp;
			}
		}
	}
	for(j=2;j

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]='';
			printf("rx1=%s,%drn",usart1_rx_buff,usart1_cnt);
			usart1_cnt=0;
			usart1_flag=0;
		}
		if(usart3_flag)
		{
			usart3_rx_buff[usart3_cnt]='';
			printf("rx3=%s,%drn",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,17
				p=strstr((char *)usart3_rx_buff,"max:");
				p+=strlen("max:");
				threshold_val=atoi(p);
				//printf("threshold_val=%drn",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);
			else
				RGB_Ctl(0,0,0);
		}
		if(wifi_stat==1 && time>=500)//應用app連接成功(白燈閃爍)
		{
			time=0;
			stat=!stat;
			if(stat)
				RGB_Ctl(255,253,85);
			else
				RGB_Ctl(0,0,0);
		}
		else if(wifi_stat==2 && time>=500)//電機工作(綠燈閃爍)
		{
			time=0;
			stat=!stat;
			if(stat)
				RGB_Ctl(0,255,0);
			else
				RGB_Ctl(0,0,0);
		}
		if(time3>=100)
		{
			time3=0;
			data=Get_WeatherVal();
			temp=data/3900.00*100;
			//printf("data=%.2f.%drn",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=%srn",buff);
			Esp8266_SendData(0,(u8*)buff);//發松數據到客戶端
		}
  }
  /* USER CODE END 3 */
}

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2528

    文章

    48296

    瀏覽量

    741142
  • 控制器
    +關注

    關注

    112

    文章

    15274

    瀏覽量

    171782
  • 物聯網
    +關注

    關注

    2873

    文章

    41822

    瀏覽量

    359334
收藏 人收藏

    評論

    相關推薦

    智能農業之智能灌溉

    功能與RS 和GPS 技術結合的灌區動態管理信息采集分析技術、作物需水信息采集與精量控制灌溉技術、專家系統技術等構建高效、低能耗、低投入、多功能的農業節水灌溉平臺??稍跍厥?、庭院花園綠地、高速公路中央
    發表于 08-05 12:45

    基于機井灌溉控制器的農田灌溉系統

    結構  農田機井智能灌溉控制系統支持設立村、縣(區)、市等多級管理平臺的管理模式,各級管理平臺的基本功能如下:  1、村級管理平臺  管理人員通過手機既可實現用戶開卡、充值、查詢、銷卡
    發表于 12-16 14:07

    智慧農業是否會成為未來的主流方式

    `從前我國是農業大國,目前農業在我國也發揮著重要作用。關注農業行業的朋友都知道,近幾年有個非?;鸨拿~,叫智慧農業物聯網平臺,那么,這個平臺都是啥呢?今天給大家系統地講解一下,看完你就明白了。
    發表于 07-15 21:22

    光學紅外雨量IFR202型傳感器常見用在智慧灌溉,在汽車上安裝怎么使用?

    紅外雨量傳感器是通過紅外掃描原理非接觸式檢測降雨量的傳感器,廣泛應用于智慧灌溉,自動門窗,地質災害等行業。最近看到有不少公司安裝在新能源汽車上,這樣怎么用呢?
    發表于 05-17 10:10

    什么是智慧農業灌溉系統,它的組成都有哪些

    智慧農業灌溉系統是托普物聯網為了保證農業作物需水量的前提下,實現節約用水而提出的一整套解決方案。簡單來說,智慧農業灌溉系統就是農業灌溉不需要
    的頭像 發表于 10-15 11:25 ?8973次閱讀

    智慧農業灌溉系統真推薦合肥鴻升信賴

    應用在花卉灌溉、綠化工程等場景下,實現了手機一鍵遠程控制灌溉。 智慧農業灌溉控制系統,由管理云平臺軟件,配合智能閥門、土壤類傳感器等設備,自
    發表于 11-08 15:08 ?1021次閱讀

    智慧農業灌溉控制系統

    應用在花卉灌溉、綠化工程等場景下,實現了手機一鍵遠程控制灌溉。 智慧農業灌溉控制系統,由管理云平臺軟件,配合智能閥門、土壤類傳感器等設備,自
    的頭像 發表于 11-09 16:08 ?1855次閱讀

    智慧園林灌溉系統

    ,不斷得到應用,智慧園林灌溉控制系統在這種背景下應運而生。 方案解析: 智慧園林灌溉控制系統,借助土壤墑情監測設備,24小時在線監測園林的土壤詳情,通過云
    的頭像 發表于 11-17 16:04 ?852次閱讀

    智慧園林灌溉系統方案

    現代化的城市是不能少了綠化的,灌溉作為綠化的日常維護,需要得到重視。為了高效率地進行園林綠化灌溉作業,出現了基于物聯網的智慧園林灌溉解決方案,改變傳統
    的頭像 發表于 12-13 15:59 ?739次閱讀

    智慧無線灌溉在園林中的應用

    到的要素進行詳細分析和判斷,以確定該區域是否需要進行灌溉。 智慧無線灌溉系統 智慧無線灌溉系統是由各類LORA采集器、LORA無線
    的頭像 發表于 06-20 16:58 ?334次閱讀
    <b class='flag-5'>智慧</b>無線<b class='flag-5'>灌溉</b>在園林中的應用

    智慧農業系統應用灌溉作業

    、計算機、傳感、無線通信等技術,由智慧農業云平臺、智能控制柜/智能網關、閥門控制器、傳感器等設備組成。自動監測土壤水分情況,無線傳輸,根據灌溉需求信息,自動執行灌溉操作,實現智能化監測
    的頭像 發表于 07-06 16:57 ?371次閱讀

    紅外雨量計在智慧灌溉中的應用

    紅外雨量計在智慧灌溉中的應用 紅外雨量計是一種測量降雨量的儀器,通過紅外線傳感器來檢測雨滴的數量和大小,進而計算出降雨量。在智慧灌溉中,紅外雨量計可以用來實時監測降雨情況,根據降雨量的
    的頭像 發表于 07-07 10:56 ?257次閱讀
    紅外雨量計在<b class='flag-5'>智慧</b><b class='flag-5'>灌溉</b>中的應用

    【蜂窩物聯】智慧灌溉解決方案

    方案需求現有的節水灌溉系統雖然在降低作物灌溉成本,提高作物產量上有明顯的作用,但由于常規滴灌系統存在許多問題尚待解決,致使灌溉的合理性無法得到有效執行。主要問題:人工操作的隨意性過大,不能夠嚴格執行
    的頭像 發表于 07-08 10:27 ?763次閱讀
    【蜂窩物聯】<b class='flag-5'>智慧</b><b class='flag-5'>灌溉</b>解決方案

    智慧灌溉解決方案(基于物聯網的智能灌溉系統)

    ? 詳情:智慧水務數字孿生安全監測解決方案提供商-星創? 隨著農業IOT的快速發展,智慧灌溉正成為提高農業水資源利用效率,實現精準灌溉的重要技術手段。完整的
    的頭像 發表于 01-09 17:15 ?987次閱讀
    <b class='flag-5'>智慧</b><b class='flag-5'>灌溉</b>解決方案(基于物聯網的智能<b class='flag-5'>灌溉</b>系統)

    智慧灌溉系統的組成與功能

    隨著科學技術與節水意識的不斷發展與進步,智慧灌溉正逐漸改變傳統的農業灌溉方式,成為現代農業的重要組成部分。智慧灌溉系統主要涵蓋了一系列先進的
    的頭像 發表于 04-17 17:25 ?138次閱讀
    <b class='flag-5'>智慧</b><b class='flag-5'>灌溉</b>系統的組成與功能
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>