聚豐項(xiàng)目 > 自動(dòng)無(wú)土栽培控制器
隨著社會(huì)的發(fā)展土地變得越來(lái)越稀缺,能吃上一點(diǎn)綠色食品將成為一種奢侈。 社會(huì)在不斷的進(jìn)步,工業(yè)生產(chǎn)在走精細(xì)化、數(shù)字化道路。未來(lái)農(nóng)業(yè)發(fā)展應(yīng)該也離不開(kāi)這條道路。本控制系統(tǒng)就是提供一種無(wú)土栽培過(guò)程中能實(shí)時(shí)測(cè)量環(huán)境溫濕度、水溫、光照強(qiáng)度等參數(shù)并開(kāi)啟各種執(zhí)行元件對(duì)蔬菜生長(zhǎng)過(guò)程的精準(zhǔn)監(jiān)測(cè)與控制,并通過(guò)互聯(lián)網(wǎng)云端大數(shù)據(jù)讓種植變得簡(jiǎn)單。
黃_e9c
分享黃_e9c
團(tuán)隊(duì)成員
黃明峰 工程師
一種無(wú)土栽培控制系統(tǒng)包括: 栽培機(jī)構(gòu)與控制系統(tǒng)兩部分組成,其中栽培機(jī)構(gòu)部分只是為了說(shuō)明控制系統(tǒng)的工作流程。
一、栽培機(jī)構(gòu)部分:
機(jī)構(gòu)連接部分:
二、控制系統(tǒng)控制部分:
采用意法半導(dǎo)體提供的NUCLEO-F401RE開(kāi)發(fā)板。
2.2 ? 無(wú)線通信模塊
采用慶科提供的EMW3080無(wú)線模塊, EMW3080是單3.3V供電的、集成Wi-Fi和Cortex-M4F MCU的嵌入式Wi-Fi模塊,最高支持133M主頻和256K RAM
2.3 ?溫度水位傳感器
溫度水位傳感采用常用的太陽(yáng)能溫度水位傳感器.NTC R25為10K 歐,水位傳感器空為60K歐。
2.4 ?光線強(qiáng)度傳感器
5528光敏電阻光敏電阻。
2.5 ?溫度濕度傳感器
采用DHT11溫濕度傳感器。
1.傳感器采用DHT11
2.濕度測(cè)量范圍:20%-95%(0 度-50 度范圍)濕度測(cè)量誤差:+-5%
3.溫度測(cè)量范圍:0 度-50 度溫度測(cè)量誤差:+-2 度
4.工作電壓3.3V-5V
5.輸出形式:數(shù)字輸出
2.6 ?溫水位傳感器
水溫傳感器 R25=10K
水位傳感器 30K+10K+10K+10K=60K
2.7 ?控制輸出端
4路5V繼電器模塊X2
1. 繼電器輸出觸點(diǎn)最大250V 10A
2. 輸入IN1 IN2 IN3 IN4信號(hào)線低電平有效VCC
5. 連接器板
6.連接總成
說(shuō)明
一、首先在慶科云端建立產(chǎn)品、屬性點(diǎn)。
二、軟件采用Mbed在線開(kāi)發(fā)平臺(tái)進(jìn)行開(kāi)發(fā)。
2.2 //讀取傳感器數(shù)據(jù)
void ReadInputData(void)
{
wait(1.0); // 1 second
Air_sensor.DHT11_Read_Data(&dht11_temp_data, &dht11_hum_data); //數(shù)據(jù)要與FOG3上對(duì)應(yīng)
InputData[0]=NTC_sensor.getTemperature(); //讀取水溫
InputData[1]=LightRes_sensor.getLightRes(); //讀取光強(qiáng)度
InputData[2]=WaterLevel_sensor.getWaterLevel(); //讀取水位
InputData[3]=(float)dht11_temp_data; //讀取環(huán)境溫度
InputData[4]=(float)dht11_hum_data; //讀取濕度
}
2.3 //FramePackage類(lèi)對(duì)數(shù)據(jù)進(jìn)行組包并檢驗(yàn)
void FramePackage::FrameData(float *FD,bool *bsd,unsigned char *SendData)
{
unsigned char DataHex[48];
SendData[0]=0xAA;
SendData[1]=0xBB;
/**/
DataHex[0]=0x0A;
DataHex[1]=0x00;
DataHex[2]=0x2D;
for(int i=0; i<5; i++) {
LongToHex(FD[i],FloatHext);
DataHex[3+i*6]=i+1;
DataHex[4+i*6]=0x03;
DataHex[5+i*6]=FloatHext[0];
DataHex[6+i*6]=FloatHext[1];
DataHex[7+i*6]=FloatHext[2];
DataHex[8+i*6]=FloatHext[3];
}
for(int i=0; i<5; i++) {
DataHex[33+i*3]=i+6;
DataHex[34+i*3]=0x00;
DataHex[35+i*3]=bsd[i];
}
for (int i=0; i<48; i++) {
SendData[2+i]=DataHex[i];
}
unsigned char RC=dp_hex_frame_checksum(DataHex,sizeof(DataHex));
SendData[50]=RC;
}
//浮點(diǎn)數(shù)轉(zhuǎn)成無(wú)符號(hào)字符
void FramePackage::LongToHex(float FloatData,u8 *m)
{
long L= *( long *)&FloatData;
m[0]=L>>24;
m[1]=(L&0xFFFFFF)>>16;
m[2]=(L&0xFFFF)>>8;
m[3]=(L&0xFF);
}
//RCR校驗(yàn)
unsigned char FramePackage::dp_hex_frame_checksum( unsigned char * buf, unsigned short length )
{
unsigned short checksum = 0;
unsigned char * buf_ptr = buf;
while ( length > 0 ) {
checksum += *buf_ptr;
buf_ptr++;
length--;
}
checksum = (checksum >> 8) + (checksum & 0x00FF);
if ( (checksum & 0xFF00) != 0 ) {
checksum = (checksum >> 8) + (checksum & 0x00FF);
}
return (unsigned char) (~checksum);
}
2.4//將組包好的數(shù)據(jù)通過(guò)串口發(fā)送給 3080無(wú)線模塊。在由3080無(wú)線模塊將HEX數(shù)據(jù)轉(zhuǎn)化成Json字串發(fā)送給云端。云端在將數(shù)據(jù)發(fā)送的手機(jī)APP。手機(jī)端就能看到實(shí)時(shí)采集的數(shù)據(jù)了并控制設(shè)備。
void SendDataFog3()
{
FramePackage FP; //定義組包
wait(5);
pc.printf("AT+FOGSEND=1,51\r"); //準(zhǔn)備發(fā)送數(shù)據(jù)包1=HEX,0=透?jìng)髂J? 數(shù)據(jù)大小51
wait(5);
ReadInputData(); //讀取傳感器數(shù)據(jù)
FP.FrameData(InputData,OutDataSW,SendHexData); //組包數(shù)據(jù)幀
for(int i=0; i<51 ; i++) { //將組包好的數(shù)據(jù)從串口發(fā)送出去
pc.printf("%c",SendHexData[i]); //以符形式
}
wait(5);
}
無(wú)線模塊與云端進(jìn)行綁定
設(shè)備向云端發(fā)送數(shù)據(jù)
手機(jī)APP接到MCU數(shù)據(jù)
手機(jī)APP向設(shè)備發(fā)Json指令
設(shè)備接收到手機(jī)APP指令
肇慶天人電腦: 成本是多少嗎
回復(fù)
肇慶天人電腦: 能教下我嗎 380258819
回復(fù)