久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7744|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

MicroPython智慧農(nóng)業(yè)大棚監(jiān)測控制系統(tǒng)程序設(shè)計

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:596378 發(fā)表于 2019-8-12 20:42 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
分享給大家

             智慧農(nóng)業(yè)就是將物聯(lián)網(wǎng)技術(shù)運用到傳統(tǒng)農(nóng)業(yè)中去,運用傳感器和軟件通過移動平臺或者電腦平臺對農(nóng)業(yè)生產(chǎn)進(jìn)行控制,使傳統(tǒng)農(nóng)業(yè)更具有“智慧”。除了精準(zhǔn)感知、控制與決策管理外,從廣泛意義上講,智慧農(nóng)業(yè)還包括農(nóng)業(yè)電子商務(wù)、食品溯源防偽、農(nóng)業(yè)休閑旅游、農(nóng)業(yè)信息服務(wù)等方面的內(nèi)容。
              智慧農(nóng)業(yè)是農(nóng)業(yè)生產(chǎn)的高級階段,是集新興的互聯(lián)網(wǎng)、移動互聯(lián)網(wǎng)、云計算和物聯(lián)網(wǎng)技術(shù)為一體,依托部署在農(nóng)業(yè)生產(chǎn)現(xiàn)場的各種傳感節(jié)點(環(huán)境溫濕度、土壤水分、二氧化碳、圖像等)和無線通信網(wǎng)絡(luò)實現(xiàn)農(nóng)業(yè)生產(chǎn)環(huán)境的智能感知、智能預(yù)警、智能決策、智能分析、專家在線指導(dǎo),為農(nóng)業(yè)生產(chǎn)提供精準(zhǔn)化種植、可視化管理、智能化決策。
              本次實驗以大棚監(jiān)測控制系統(tǒng)為目標(biāo),使用TPYBoardv102開發(fā)板、各種傳感器、電機(jī)等,實現(xiàn)一個智能大棚監(jiān)測控制系統(tǒng)的基礎(chǔ)模型。
系統(tǒng)主要的技術(shù)特點
  • 監(jiān)控功能系統(tǒng):根據(jù)各類傳感器來獲取植物生長環(huán)境信息,如監(jiān)測土壤水分、空氣溫度、空氣濕度、光照強等參數(shù)(大家可根據(jù)自己的需求,增加其他參數(shù),如二氧化塘、土壤溫度等
  • 自動控制系統(tǒng):TPYBoardv102開發(fā)板作為主控模塊,負(fù)責(zé)各個環(huán)境信息收集與匯總,并根據(jù)以上各類信息的反饋對農(nóng)業(yè)大棚內(nèi)進(jìn)行自動灌溉、自動降溫、自動卷遮光罩等自動控制。
所需器件
名稱
數(shù)量
TPYBoard v102開發(fā)板
1個
miniUSB數(shù)據(jù)線
1條
DHT11溫濕度模塊
1個
土壤濕度檢測模塊
1個
光敏模塊
1個
繼電器
2個
降壓模塊(AMS117-5V
1個
按鍵開關(guān)
1個
18650電池
2節(jié)
18650電池
1個
步進(jìn)電機(jī)+驅(qū)動板
1套
迷你抽水泵(5V
1個
USB小風(fēng)扇5V
1個
USB,杜邦線、排針、排母
若干
洞洞板(9*15cm
2個
PVC
1個

實物圖:(部分主要器件)

程序設(shè)計
(1)獲取溫濕度數(shù)據(jù),當(dāng)溫度高于閾值時,觸發(fā)繼電器,打開排風(fēng)扇,反之關(guān)閉;
(2)獲取土壤濕度數(shù)據(jù),當(dāng)濕度低于土壤濕度檢測模塊的閾值時,土壤濕度檢測模塊的OUT引腳會輸出高電平,這時觸發(fā)繼電器,啟動水泵進(jìn)行灌溉;
(3)獲取光照強度數(shù)據(jù),當(dāng)光照強度高于閾值時,觸發(fā)步進(jìn)電機(jī),卷起遮光罩,反之蓋上。
實物連接
              先連接電源部分。電源部分主要涉及到降壓模塊和按鍵開關(guān)。先用萬用表,找出按鍵開關(guān)中哪兩個引腳是按下導(dǎo)通,彈起不導(dǎo)通的。這里,我們假設(shè)為引腳A和引腳B。



各類器件沒有固定,看起來有點亂。接下來,用熱熔膠把器件整齊的固定在洞洞板上。

本次我用步進(jìn)電機(jī)來模塊遮光罩的卷起和放開。為了能明顯的看到步進(jìn)電機(jī)的轉(zhuǎn)動效果,我在步進(jìn)電機(jī)上粘了一個塑料小風(fēng)扇。
還有一處地方,就是降壓模塊的OUT輸出電源要接到開發(fā)板上,用于給其供電。整體效果如下圖:
程序調(diào)試
              接線完畢后,就要將最重要的程序放到開發(fā)板上。首先,通過USB數(shù)據(jù)線將開發(fā)板接入電腦,電腦上會出現(xiàn)一個類似U盤的可移動設(shè)備,名稱為【TPYBFLASH】,把程序拷貝到里面即可。
              注意:操作開發(fā)板磁盤時,板載紅色LED亮,說明開發(fā)板正在保存操作,需等待紅燈熄滅進(jìn)行其他操作。

演示效果
              程序調(diào)試完,拔掉USB數(shù)據(jù)線。放入18650電池,按下按鍵開關(guān)即可。不同的環(huán)境下,土壤濕度和光照模塊需要調(diào)節(jié)靈敏度(轉(zhuǎn)換模塊上的藍(lán)色按鈕)。

源程序如下:
  1. Dht11.py:
  2. import pyb
  3. from pyb import UART
  4. from pyb import Pin,delay,udelay
  5. import time
  6. class DHT11:
  7.     def __init__(self,pin_name):
  8.         time.sleep(1)
  9.         self.N1 = Pin(pin_name, Pin.OUT_PP)
  10.         self.PinName=pin_name
  11.         pyb.delay(10)
  12.     def read_data(self):
  13.         self.__init__(self.PinName)
  14.         data=[]
  15.         j=0
  16.         N1=self.N1
  17.         N1.low()
  18.         delay(20)
  19.         N1.high()
  20.         N1 = Pin(self.PinName, Pin.IN)
  21.         udelay(30)
  22.         if N1.value() != 0:
  23.             return [0,0]
  24.         while N1.value()==0:
  25.             continue
  26.         while N1.value()==1:
  27.             continue
  28.         while j<40:
  29.             k=0
  30.             while N1.value()==0:
  31.                 continue
  32.             while N1.value()==1:
  33.                 k+=1
  34.                 if k>100:break
  35.             if k<3:
  36.                 data.append(0)
  37.             else:
  38.                 data.append(1)
  39.             j=j+1
  40.         print('Sensor is working')
  41.         j=0
  42.         humidity_bit=data[0:8]
  43.         humidity_point_bit=data[8:16]
  44.         temperature_bit=data[16:24]
  45.         temperature_point_bit=data[24:32]
  46.         check_bit=data[32:40]
  47.         humidity=0
  48.         humidity_point=0
  49.         temperature=0
  50.         temperature_point=0
  51.         check=0
  52.         for i in range(8):
  53.             humidity+=humidity_bit[i]*2**(7-i)
  54.             humidity_point+=humidity_point_bit[i]*2**(7-i)
  55.             temperature+=temperature_bit[i]*2**(7-i)
  56.             temperature_point+=temperature_point_bit[i]*2**(7-i)
  57.             check+=check_bit[i]*2**(7-i)
  58.         tmp=humidity+humidity_point+temperature+temperature_point
  59.         if check==tmp:
  60.             print('temperature is',temperature,'-wet is',humidity,'%')
  61.         else:
  62.             print('Error:',humidity,humidity_point,temperature,temperature_point,check)
  63.         return [str(temperature),str(humidity)]


  64. # main.py
  65. import pyb
  66. from pyb import Pin

  67. Pin_All=[Pin(p,Pin.OUT_PP) for p in ['X1','X2','X3','X4']]
  68. STEPER_ROUND=512 #轉(zhuǎn)動一圈(360度)的周期
  69. ANGLE_PER_ROUND=STEPER_ROUND/360 #轉(zhuǎn)動1度的周期

  70. class SteperMotor():

  71.     def __init__(self,pin = None,speed=2):
  72.         if pin != None:
  73.             self.Pins = pin
  74.         else:
  75.             self.Pins = Pin_All
  76.         self.Speed =  speed
  77.     #私有方法
  78.     def __SteperWriteData(self,data):
  79.         count=0
  80.         for i in data:
  81.             self.Pins[count].value(i)
  82.             count+=1
  83.     def __SteperFrontTurn(self):
  84.         speed = self.Speed
  85.         
  86.         self.__SteperWriteData([1,1,0,0])
  87.         pyb.delay(speed)

  88.         self.__SteperWriteData([0,1,1,0])
  89.         pyb.delay(speed)

  90.         self.__SteperWriteData([0,0,1,1])
  91.         pyb.delay(speed)

  92.         self.__SteperWriteData([1,0,0,1])   
  93.         pyb.delay(speed)
  94.         
  95.     def __SteperBackTurn(self):
  96.         speed = self.Speed
  97.         
  98.         self.__SteperWriteData([1,1,0,0])
  99.         pyb.delay(speed)
  100.         
  101.         self.__SteperWriteData([1,0,0,1])   
  102.         pyb.delay(speed)

  103.         self.__SteperWriteData([0,0,1,1])
  104.         pyb.delay(speed)

  105.         self.__SteperWriteData([0,1,1,0])
  106.         pyb.delay(speed)


  107.     def __SteperStop(self):
  108.         self.__SteperWriteData([0,0,0,0])
  109.         
  110.     def steperRun(self,angle):
  111.         val=ANGLE_PER_ROUND*abs(angle)
  112.         if(angle>0):
  113.             for i in range(0,val):
  114.                 self.__SteperFrontTurn()
  115.         else:
  116.             for i in range(0,val):
  117.                 self.__SteperBackTurn()
  118.         angle = 0
  119.         self.__SteperStop()

  120. 溫濕度main:
  121. from pyb import Pin
  122. from pyb import ADC
  123. from stepermotor import SteperMotor
  124. from dht11 import DHT11

  125. #0:亮 1:暗
  126. light = Pin('X22',Pin.IN)
  127. #0:濕 1:干
  128. hum = Pin('Y11',Pin.IN)
  129. dht = DHT11('Y12')
  130. #繼電器低電平觸發(fā)
  131. water = Pin('X12',Pin.OUT_PP)
  132. fan = Pin('X11',Pin.OUT_PP)
  133. water.value(1)
  134. fan.value(1)
  135. #步進(jìn)電機(jī)
  136. Pin_All=[Pin(p,Pin.OUT_PP) for p in ['X21','X20','X19','X18']]
  137. #轉(zhuǎn)速(ms) 數(shù)值越大轉(zhuǎn)速越慢 最小值2ms
  138. sm = SteperMotor(pin = Pin_All,speed=2)
  139. hood = False #記錄遮光罩的狀態(tài),默認(rèn)是關(guān)閉
  140. def readTaHData():
  141.     DATA = dht.read_data()#讀取溫濕度的值
  142.     print(DATA[0],'℃')
  143.     print(DATA[1],'%')
  144.     #溫度大于25度,打開風(fēng)扇,進(jìn)行通風(fēng)
  145.     if int(DATA[0]) > 21:
  146.         fan.value(0)
  147.     else:
  148.         fan.value(1)
  149. if __name__ == '__main__':
  150.     while True:
  151.         readTaHData()
  152.         h_d = hum.value()
  153.         print('hum:',h_d)
  154.         if h_d:
  155.             #土壤較干,打開抽水泵進(jìn)行澆水
  156.             water.value(0)
  157.         else:
  158.             #土壤較濕,關(guān)閉抽水泵停止?jié)菜?br />
  159.             water.value(1)
  160.         l_d = light.value()
  161.         print('light:',l_d)
  162.         if l_d:
  163.             #光線較暗,啟動步進(jìn)電機(jī),關(guān)閉大棚的遮光罩
  164.             if hood:
  165.                 sm.steperRun(-360)
  166.                 sm.steperRun(-360)
  167.                 hood = False
  168.         else:
  169.             #光線較亮,啟動步進(jìn)電機(jī),打開大棚的遮光罩
  170.             if not hood:
  171.                 sm.steperRun(360)
  172.                 sm.steperRun(360)
  173.                 hood = True
復(fù)制代碼
全部資料51hei下載地址:
大棚.zip (8.66 MB, 下載次數(shù): 74)

評分

參與人數(shù) 2黑幣 +80 收起 理由
1526810086 + 30 很給力!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:754188 發(fā)表于 2020-5-17 18:10 | 只看該作者
不錯!小型控制器,也算是智慧農(nóng)業(yè)起步
回復(fù)

使用道具 舉報

板凳
ID:402344 發(fā)表于 2020-5-30 15:51 | 只看該作者
國家就是需要你這樣的人才666
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品成人在线 | 欧美日韩中 | 男女午夜激情视频 | 偷拍自拍网 | 日韩精品久久久 | 国产精品久久性 | 国产成视频在线观看 | 色婷婷综合成人av | 久久精品国产免费 | aaa精品| 国产福利一区二区 | 一区二区三区福利视频 | 国产午夜在线 | 五月天激情电影 | 精品国产欧美一区二区三区成人 | 欧洲精品在线观看 | 成在线人视频免费视频 | 久久久久久久久久爱 | 欧美在线看片 | 午夜视频一区二区 | 午夜视频在线免费观看 | 99精品免费 | 亚洲精品电影 | 午夜丰满寂寞少妇精品 | 日韩成人免费 | 中文字幕一区二区三区四区五区 | 欧美片网站免费 | 日韩a在线| 日韩成人在线免费视频 | 国产精品一区二区在线 | 日日噜噜噜夜夜爽爽狠狠视频97 | 欧美色专区 | aaaaaa大片免费看最大的 | 日本一区二区不卡 | 久久人| 久久精品一区二区三区四区 | 久久精品久久久久久 | 久久精品a级毛片 | 天堂av资源| 日本三级网站在线 | 久夜精品 |