加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入

基于51單片機的溫室大棚環(huán)境檢測系統(tǒng)

08/15 09:18
1268
服務(wù)支持:
技術(shù)交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗、收獲成長和認(rèn)同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購買后不支持退換且無法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論
放大
實物圖
相關(guān)方案
  • 方案介紹
    • 部分實物圖,PCB展示
  • 相關(guān)文件
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

基于51單片機的溫室大棚環(huán)境監(jiān)測系統(tǒng)——空氣溫濕度監(jiān)測,土壤溫濕度監(jiān)測,光照監(jiān)測,無線傳輸數(shù)據(jù)

文末尾附帶源碼

1.1 研究背景

隨著人們生活水平的不斷提高,人們對自身的健康越來越關(guān)注,對各類食物的要求也越來越高,溫室大棚作為培育瓜果蔬菜的生長基地,因此對溫室大棚中植物的生長環(huán)境進(jìn)行實時監(jiān)測是尤為重要的,所以對溫室大棚環(huán)境監(jiān)測系統(tǒng)設(shè)計的研究是很有必要的。

1.2 設(shè)計要求

(1)選擇合適的傳感器,并設(shè)計傳感器信號調(diào)理電路;
(2)用液晶顯示器12864實時顯示大棚環(huán)境參數(shù);
(3)設(shè)計按鍵電路能夠設(shè)置環(huán)境參數(shù)的上下限;
(4)設(shè)聲光報警電路,通過按鍵設(shè)置閾值,在超限后報警;
(5)通過NRF24L01模塊實現(xiàn)無線傳輸;
(6)屏幕顯示實時時間,并可進(jìn)行調(diào)整;

2.1 系統(tǒng)方案框圖

在這里插入圖片描述

2.2 方案分析

以GY-30光照模塊,DS18B20土壤溫度模塊,YL-69土壤濕度模塊和DHT11溫濕度模塊和STC89C52單片機為控制核心組成環(huán)境監(jiān)測系統(tǒng)的發(fā)射板,實現(xiàn)對現(xiàn)場光照,土壤溫濕度以及空氣溫濕度數(shù)據(jù)的采集。

DS1302實時時鐘模塊,LCD12864顯示模塊以及蜂鳴器報警模塊和STC89C52單片機為控制核心組成環(huán)境監(jiān)測系統(tǒng)的接收板,實現(xiàn)對實時始終數(shù)據(jù)的采集和對發(fā)射板接收數(shù)據(jù)的顯示,以及實現(xiàn)在超限后聲光報警。

通過NRF24L01無線模塊進(jìn)而實現(xiàn)發(fā)射板和接收板之間的數(shù)據(jù)通信。

1. 單片機選擇

單片機采用宏晶科技的單片機STC89C52。STC89C52是一種低功耗、高性能CMOS8位微控制器。STC89C52使用經(jīng)典的MCS-51內(nèi)核,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash。

2. 光照模塊電路

采用GY-30構(gòu)成光照模塊電路。GY-30是一款內(nèi)置ROHM-BH1750FLV芯片的數(shù)字光照強度模塊。芯片內(nèi)置16bitAD轉(zhuǎn)換器,可直接數(shù)字輸出,測量光照強度范圍為0-65535lx(精度可選)。除此之外,模塊內(nèi)置電平轉(zhuǎn)換,支持3-5V供電,可與5V單片機IO直接連接;對外提供IIC接口,方便使用。

3. 土壤溫度模塊電路

采用DS18B20構(gòu)成土壤溫度模塊電路。DS18B20是常用的數(shù)字溫度傳感器,其輸出的是數(shù)字信號,具有體積小,硬件開銷低,抗干擾能力強,精度高的特點。它的接線方便,封裝成后可應(yīng)用于多種場合。

4. 土壤濕度模塊電路

土壤濕度模塊電路采用YL-69。YL-69 是一個簡單的土壤濕度傳感器,是一種電容式傳感器,主要使用的是濕敏電容。當(dāng)環(huán)境的濕度發(fā)生改變時,會使得濕敏電容存在的環(huán)境中的介質(zhì)發(fā)生改變,導(dǎo)致濕敏電容中的電容數(shù)值產(chǎn)生變化,電容的數(shù)值正比于濕度值 。

由于濕敏電容的靈敏度高、響應(yīng)速度快、滯后量小,此外微小的體積、極低的功耗,使得濕敏電容很容易小型化和集成化。

YL-69 采用 CMOS 工藝,可以確保其低功耗,同時還具有很高的可靠性和穩(wěn)定性。傳感器內(nèi)部含有一個電容性聚合體濕度敏感元件和一個用能隙材料做成的溫度傳感器,在同一芯片上,與 A/D 轉(zhuǎn)換器及串行接口電路實現(xiàn)連接。

5. 空氣溫濕度模塊電路

空氣溫濕度模塊電路采用DHT11模塊,DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號輸出的溫濕度復(fù)合傳感器,它應(yīng)用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有極高的可靠性和卓越的長期穩(wěn)定性。傳感器包括一個電阻式感濕元件和一個NTC測溫元件,并與一個高性能8位單片機相連接。因此該產(chǎn)品具有品質(zhì)卓越、超快響應(yīng)、抗干擾能力強、性價比極高等優(yōu)點。

6.無線模塊電路

無線模塊電路采用NRF24L01模塊,NRF24L01是一款新型單片射頻收發(fā)器件,工作于2.4 GHz~2.5 GHz ISM頻段。內(nèi)置頻率合成器、功率放大器、晶體振蕩器、調(diào)制器等功能模塊,并融合了增強型ShockBurst技術(shù),其中輸出功率和通信頻道可通過程序進(jìn)行配置。

7.LCD12864顯示模塊電路

帶中文字庫的128X64 是一種具有4 位/8 位并行、2 線或3 線串行多種接口方式,內(nèi)部含有國標(biāo)一級、二級簡體 中文字庫的點陣圖形液晶顯示模塊;其顯示分辨率為128×64, 內(nèi)置8192 個1616 點漢字,和128 個168 點ASCII 字符 集.利用該模塊靈活的接口方式和簡單、方便的操作指令,可構(gòu)成全中文人機交互圖形界面。

8.報警模塊電路

本設(shè)計的報警電路采用了一個電磁式有源蜂鳴器來實現(xiàn)。報警電路連接在單片機的某一特定管腳,隨時會根據(jù)輸出信號控制報警電路的工作與否。設(shè)定一個溫度界限,當(dāng)采集到的溫度超過界限的時候,蜂鳴器則會一直響;當(dāng)溫度在溫度界限內(nèi)時,蜂鳴器停止鳴叫。

9.實時時鐘模塊電路

DS1302是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周、時、分、秒進(jìn)行計時,具有閏年補償功能,工作電壓為2.0V~5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。

在這里插入圖片描述

4.1 主程序設(shè)計

整個軟件部分分為發(fā)射板空氣溫濕度,土壤溫濕度和光照數(shù)據(jù)的采集和數(shù)據(jù)的無線傳輸以及接收板數(shù)據(jù)的顯示。

首先DHT11進(jìn)行初始化,通過調(diào)用采集數(shù)據(jù)函數(shù),分別采集空氣的濕度信息,溫度信息,返回數(shù)據(jù),再通過內(nèi)部AD轉(zhuǎn)換將采集到的數(shù)據(jù)串行的存入發(fā)送緩沖器;

通過YL-69初始化函數(shù)初始化模塊,再調(diào)用采集數(shù)據(jù)函數(shù),讀取當(dāng)前傳感器的探頭濕度信息,為當(dāng)前的探頭電容值,對采集土壤濕度信息,因為模塊沒有AD轉(zhuǎn)換電路,所以外接ADC0832芯片,通過對ADC0832芯片初始化,進(jìn)行AD轉(zhuǎn)換,返回數(shù)據(jù),再將數(shù)據(jù)存入發(fā)送緩沖器中;

通過DS18B20初始化函數(shù)初始化模塊的工作方式,調(diào)用采集土壤溫度信息函數(shù),內(nèi)部采用減法計數(shù)器的原理,最終得到的當(dāng)前溫度數(shù)據(jù),返回數(shù)據(jù),將數(shù)據(jù)串行存入發(fā)送緩沖器中;

通過GY-30初始化初始化函數(shù)初始化工作方式,調(diào)用并采集光照信息的函數(shù),采集到的信息分為8位,將數(shù)據(jù)按位取出來,分別×對應(yīng)位置的倍數(shù)得到最終的數(shù)據(jù),返回數(shù)據(jù),將得到的數(shù)據(jù)存入發(fā)送緩沖器中;

通過最后通過設(shè)置NRF24L01初始化,將發(fā)送緩沖器的數(shù)組給到NRF24L01的數(shù)據(jù)發(fā)送函數(shù),NRF24L01根據(jù)對應(yīng)緩沖器中的數(shù)據(jù)長度,將發(fā)送緩沖器中的數(shù)據(jù)串行按位發(fā)送給接收板,發(fā)送給接收單片機。

將上述模塊化的程序放入while大循環(huán)里,從而實現(xiàn)了對數(shù)據(jù)的實時采集,實時發(fā)送。實現(xiàn)了本次課設(shè)的基本要求,下圖為發(fā)送板的主程序框圖:

在這里插入圖片描述

數(shù)據(jù)接受板,通過無線模塊對數(shù)據(jù)進(jìn)行接收,將發(fā)送緩沖器的數(shù)據(jù)存入接收緩沖器,再通過對接收緩沖器中的對應(yīng)位置數(shù)據(jù)進(jìn)行顯示,分別讀取對應(yīng)索引的數(shù)值。

調(diào)用12864顯示函數(shù)對數(shù)值數(shù)字化顯示,在通過接收DS1302實時時鐘芯片對應(yīng)時、分、秒的引腳的數(shù)據(jù),通過程序控制進(jìn)位,調(diào)用對應(yīng)日期和相應(yīng)實時傳輸?shù)臄?shù)據(jù)的顯示函數(shù)進(jìn)行顯示;

在程序中定義對應(yīng)位置的按鍵,sbit定義按鍵對應(yīng)單片機的引腳,設(shè)置按鍵的功能從S1-S5對應(yīng)功能分別為:時間設(shè)置,閾值設(shè)置,加計數(shù),減計數(shù),確認(rèn)。

按下時間設(shè)置可以對時間的秒進(jìn)行設(shè)置,再次按下時可以對應(yīng)光標(biāo)為分位置,再按下可以進(jìn)入時的位置,以此類推;

按下閾值設(shè)置按鍵可以分別進(jìn)入空氣溫度,濕度設(shè)置,光照設(shè)置,土壤溫度,土壤濕度閾值設(shè)置,從而實現(xiàn)對相應(yīng)數(shù)據(jù)進(jìn)行設(shè)置。

按下S5即最后一個按鍵,可以對設(shè)置的當(dāng)前時間、閾值進(jìn)行確認(rèn);之后程序進(jìn)入對通過標(biāo)志位flag判斷為1超過閾值,對于溫度,空氣濕度,土壤溫度,土壤濕度超過閾值的當(dāng)前實時數(shù)據(jù)進(jìn)行監(jiān)測,超過閾值則蜂鳴器報警,否則flag判斷為0,繼續(xù)執(zhí)行。

將上述程序放入大的循環(huán)中,從而實現(xiàn)了對發(fā)送板發(fā)送的數(shù)據(jù)進(jìn)行實時采集的功能,下圖分別為接收板程序設(shè)計圖:

在這里插入圖片描述

部分實物圖,PCB展示

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
需要實物pcb板的朋友請私信

部分程序源碼

部分源碼 采用keil4編寫.

// 發(fā)射板源代碼:
#include <stc89c52.h>
#include <intrins.h>
typedef unsigned char uchar;
typedef unsigned int uint;
#define FOSC 11059200L      //System frequency
#define BAUD 2400           //UART baudrate
unsigned char flagcom=0;
//2401IO端口定義sbit 	MISO	=P0^2;
sbit 	MOSI	=P0^4;
sbit	SCK	    =P0^1;
sbit	CE	    =P0^0;
sbit	CSN		=P0^5;
sbit	IRQ		=P0^3;
unsigned char xdata TxBuf[32]=0;		//2401 發(fā)送寄存器
sbit     DQ=P2^7;        //DHT11
//bh1750
sbit	  SCL=P2^1;      //IIC時鐘引腳定義
sbit  	  SDA=P2^2;      //IIC數(shù)據(jù)引腳定義
#define	  SlaveAddress   0x46 //定義器件在IIC總線中的從地址,根據(jù)ALT  ADDRESS地址引腳不同修改
                              //ALT  ADDRESS引腳接地時地址為0x46,接電源時地址為0x3A
typedef   unsigned char BYTE;
typedef   unsigned short WORD;
uchar   BUF[8];                         //接收數(shù)據(jù)緩存區(qū)  
unsigned char  xdata    ge,shi,bai,qian,wan;            //顯示變量
uchar tem;  //溫度
uchar  hum;  //濕度
uint guangzhao=0;		//光照
uint pm25=0;			//pm2.5
uint tw=0;  //土壤溫度 
uint ts=0;  //土壤濕度 
uint flag1=0;
sbit 	LED1=P1^1;
sbit 	LED2=P1^4;
//*************************************ADC0832定義*****************/
//ADC0832 
sbit CS = P1^5;
sbit CLK = P1^6;
sbit DIO = P1^7; 
//*********************************************NRF24L01*************************************
#define TX_ADR_WIDTH    5   	// 5 uints TX address width
#define RX_ADR_WIDTH    5   	// 5 uints RX address width
#define TX_PLOAD_WIDTH  32  	// 20 uints TX payload
#define RX_PLOAD_WIDTH  32  	// 20 uints TX payload
uchar const TX_ADDRESS[TX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01};	//本地地址
uchar const RX_ADDRESS[RX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01};	//接收地址
//***************************************NRF24L01寄存器指令*******************************************************
#define READ_REG        0x00  	// 讀寄存器指令
#define WRITE_REG       0x20 	// 寫寄存器指令
#define RD_RX_PLOAD     0x61  	// 讀取接收數(shù)據(jù)指令
#define WR_TX_PLOAD     0xA0  	// 寫待發(fā)數(shù)據(jù)指令
#延時函數(shù)
void inerDelay_us(unsigned char n)
{
	for(;n>0;n--)
		_nop_();
}
void Delay5ms()
{
    WORD n = 560;
    while (n--);
}
void delay_nms(unsigned int k)	
{						
unsigned int i,j;				
for(i=0;i<k;i++)
{			
for(j=0;j<121;j++)			
{;}}						
}
void Delay5us()
{
    _nop_();_nop_();_nop_();_nop_();
    _nop_();_nop_();_nop_();_nop_();
	_nop_();_nop_();_nop_();_nop_();
	_nop_();_nop_();_nop_();_nop_();
}
//******************************復(fù)位ds18b20************/ 
void Init_ds18b20(void) {
	DQ = 1; 
	delay(1); 
	DQ = 0; 
	delay(250); 
	DQ = 1; 
	delay(100);
}

#NRF24L01初始化
void init_NRF24L01(void)
{
    inerDelay_us(100);
 	CE=0;    // chip enable
 	CSN=1;   // Spi disable 
 	SCK=0;   // Spi clock line init high
	SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH);    // 寫本地地址	
	SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); // 寫接收端地址
	SPI_RW_Reg(WRITE_REG + EN_AA, 0x01);      //  頻道0自動	ACK應(yīng)答允許	
	SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01);  //  允許接收地址只有頻道0,如果需要多頻道可以參考Page21  
	SPI_RW_Reg(WRITE_REG + RF_CH, 0);        //   設(shè)置信道工作為2.4GHZ,收發(fā)必須一致
	SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); //設(shè)置接收數(shù)據(jù)長度,本次設(shè)置為32字節(jié)
	SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07);   		//設(shè)置發(fā)射速率為1MHZ,發(fā)射功率為最大值0dB	
	SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e);   		 // IRQ收發(fā)完成中斷響應(yīng),16位CRC,主發(fā)送

}

博客主頁:https://blog.csdn.net/weixin_51141489,需要源碼或相關(guān)資料實物的友友請關(guān)注、點贊,私信吧!

  • 聯(lián)系方式.txt

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
AD73311ARSZ 1 Analog Devices Inc Single-Channel, 3 V and 5 V Front-End Processor for General Purpose Applications Including Speech and Telephony

ECAD模型

下載ECAD模型
$10.72 查看
S25FL512SAGBHIA13 1 Spansion Flash, 128MX4, PBGA24, FBGA-24
$59.58 查看
ASEM1-24.000MHZ-LC-T 1 Abracon Corporation MEMS OSC XO 24.0000MHZ CMOS SMD
$2.01 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜