内容简介:智慧农业就是将物联网技术运用到传统农业中去,运用传感器和软件通过移动平台或者电脑平台对农业生产进行控制,使传统农业更具有“智慧”。除了精准感知、控制与决策管理外,从广泛意义上讲,智慧农业还包括农业电子商务、食品溯源防伪、农业休闲旅游、农业信息服务等方面的内容。智慧农业是农业生产的高级阶段,是集新兴的互联网、移动互联网、云计算和物联网技术为一体,依托部署在农业生产现场的各种传感节点(环境温湿度、土壤水分、二氧化碳、图像等)和无线通信网络实现农业生产环境的智能感知、智能预警、智能决策、智能分析、专家在线指导,为
智慧农业就是将物联网技术运用到传统农业中去,运用传感器和软件通过移动平台或者电脑平台对农业生产进行控制,使传统农业更具有“智慧”。除了精准感知、控制与决策管理外,从广泛意义上讲,智慧农业还包括农业电子商务、食品溯源防伪、农业休闲旅游、农业信息服务等方面的内容。智慧农业是农业生产的高级阶段,是集新兴的互联网、移动互联网、云计算和物联网技术为一体,依托部署在农业生产现场的各种传感节点(环境温湿度、土壤水分、二氧化碳、图像等)和无线通信网络实现农业生产环境的智能感知、智能预警、智能决策、智能分析、专家在线指导,为农业生产提供精准化种植、可视化管理、智能化决策。
我们以大棚监测控制系统为目标,使用TPYBoard v102开发板、光照传感器、温湿度传感器、土壤湿度传感器、电机等,实现一个智能大棚监测控制系统的基础模型。
系统 主要的 技术 特点:
监控功能系统:根据各类传感器来获取植物生长的环境信息,如监测土壤水分、空气温度、空气湿度、光照强度等参数(大家可根据自己的需求,增加其他参数,如二氧化塘、土壤温度等)。
自动 控制系统: TPYBoard v102开发板作为主控板,负责各个环境信息的收集与汇总,并根据以上各类信息的反馈对农业大棚内进行自动灌溉、自动降温、自动卷遮光罩等自动控制。
一、实验器材
展示效果图
器件名称 | 数量 |
---|---|
TPYB oard v102 开发板 | 1个 |
USB 数据线 | 1条 |
DHT11温湿度 模块 | 1个 |
土壤湿度检测 模块 | 1个 |
光敏 模块 | 1个 |
继电器 | 2个 |
降压 模块( AMS117-5V ) | 1个 |
按键 开关 | 1个 |
18650电池 | 2节 |
18650电池 盒 | 1个 |
步进 电机 +驱动板 | 1套 |
迷你 抽水泵( 5V ) | 1个 |
USB小风扇 ( 5V ) | 1个 |
USB座,杜邦线 、排针、排母 | 若干 |
洞洞板(9*15 cm ) | 2个 |
PVC软水管 | 1个 |
实物图
二、程序设计原理
(1)获取温湿度数据,当温度高于阈值时,触发继电器,打开排风扇,反之关闭;
(2)获取土壤湿度数据,当湿度低于土壤湿度检测模块的阈值时,土壤湿度检测模块的OUT引脚会输出高电平,这时触发继电器,启动水泵进行灌溉;(3)获取光照强度数据,当光照强度高于阈值时,触发步进电机,卷起遮光罩,反之盖上。
三、硬件接线 连接
先连接电源部分。电源部分主要涉及到降压模块和按键开关。先用万用表,找出按键开关中哪两个引脚是按下导通,弹起不导通的。这里,我们假设为引脚A和引脚B。
18650电池盒 | 按键开关 |
---|---|
红线 | 引脚A |
18650电池盒 | 降压 模块( AMS1117-5 V) |
---|---|
黑线 | VIN(GND) |
按键开关 | 降压 模块( AMS1117-5 V) |
---|---|
引脚B | VIN(+) |
TPYB oardv102 | 降压 模块( AMS1117-5 V) |
VIN | VOUT(+) |
GND | VOUT(GND) |
接下来,我们做开发板与各个传感器、继电器等之间的连线。
TPYB oard v102 | DHT11温湿度 模块 |
---|---|
GND | GND |
Y12 | DATA |
VIN | VCC |
TPYB oard v102 | 土壤 湿度检测模块 |
---|---|
Y11 | DO |
GND | GND |
3V3 | VCC |
TPYB oard v102 | 光敏 模块 |
---|---|
X22 | DO |
GND | GND |
3V3 | VCC |
TPYB oard v102 | 继电器( 排风扇 ) |
---|---|
3V3 | VCC |
GND | GND |
X11 | IN |
VIN | COM |
USB风扇 | 继电器( 排风扇 ) |
---|---|
正极 | NO |
USB风扇 | TPYB oardv102 |
---|---|
负极 | GND |
TPYB oard v102 | 继电器(水泵) |
---|---|
3V3 | VCC |
GND | GND |
X12 | IN |
VIN | COM |
水泵 | 继电器(水泵) |
---|---|
正极 | NO |
水泵 | TPYB oardv102 |
---|---|
负极 | GND |
TPYB oard v102 | 步进 电机驱动板 |
---|---|
X21 | IN1 |
X20 | IN2 |
X19 | IN3 |
X18 | IN4 |
VIN | 5V(+) |
GND | 5V(-) |
我们用步进电机来控制遮光罩的卷起和放开。为了能明显的看到步进电机的转动效果,我们一个小风扇在上面。
降压模块的OUT输出电源要接到开发板上,用于给其供电。整体效果如下图:
四、源程序
接线完毕后,就要将最重要的程序放到开发板上。首先,通过USB数据线将开发板接入电脑,电脑上会出现一个类似U盘的可移动设备,名称为【TPYBFLASH】,把main.py、dht11.py、stepermotor.py拷贝到里面即可。
注意:操作开发板磁盘时,板载的红色LED会亮,说明开发板正在保存操作,需等待红灯熄灭再进行其他操作。
dht11.py源程序
import pyb from pyb import UART from pyb import Pin,delay,udelay import time class DHT11: def __init__(self,pin_name): time.sleep(1) self.N1 = Pin(pin_name, Pin.OUT_PP) self.PinName=pin_name pyb.delay(10) def read_data(self): self.__init__(self.PinName) data=[] j=0 N1=self.N1 N1.low() delay(20) N1.high() N1 = Pin(self.PinName, Pin.IN) udelay(30) if N1.value() != 0: return [0,0] while N1.value()==0: continue while N1.value()==1: continue while j<40: k=0 while N1.value()==0: continue while N1.value()==1: k+=1 if k>100:break if k<3: data.append(0) else: data.append(1) j=j+1 print('Sensor is working') j=0 humidity_bit=data[0:8] humidity_point_bit=data[8:16] temperature_bit=data[16:24] temperature_point_bit=data[24:32] check_bit=data[32:40] humidity=0 humidity_point=0 temperature=0 temperature_point=0 check=0 for i in range(8): humidity+=humidity_bit[i]*2**(7-i) humidity_point+=humidity_point_bit[i]*2**(7-i) temperature+=temperature_bit[i]*2**(7-i) temperature_point+=temperature_point_bit[i]*2**(7-i) check+=check_bit[i]*2**(7-i) tmp=humidity+humidity_point+temperature+temperature_point if check==tmp: print('temperature is',temperature,'-wet is',humidity,'%') else: print('Error:',humidity,humidity_point,temperature,temperature_point,check) return [str(temperature),str(humidity)]
main.py源程序
from pyb import Pin from pyb import ADC from stepermotor import SteperMotor from dht11 import DHT11 #0:亮 1:暗 light = Pin('X22',Pin.IN) #0:湿 1:干 hum = Pin('Y11',Pin.IN) dht = DHT11('Y12') #继电器低电平触发 water = Pin('X12',Pin.OUT_PP) fan = Pin('X11',Pin.OUT_PP) water.value(1) fan.value(1) #步进电机 Pin_All=[Pin(p,Pin.OUT_PP) for p in ['X21','X20','X19','X18']] #转速(ms) 数值越大转速越慢 最小值2ms sm = SteperMotor(pin = Pin_All,speed=2) hood = False #记录遮光罩的状态,默认是关闭 def readTaHData(): DATA = dht.read_data()#读取温湿度的值 print(DATA[0],'℃') print(DATA[1],'%') #温度大于25度,打开风扇,进行通风 if int(DATA[0]) > 21: fan.value(0) else: fan.value(1) if __name__ == '__main__': while True: readTaHData() h_d = hum.value() print('hum:',h_d) if h_d: #土壤较干,打开抽水泵进行浇水 water.value(0) else: #土壤较湿,关闭抽水泵停止浇水 water.value(1) l_d = light.value() print('light:',l_d) if l_d: #光线较暗,启动步进电机,关闭大棚的遮光罩 if hood: sm.steperRun(-360) sm.steperRun(-360) hood = False else: #光线较亮,启动步进电机,打开大棚的遮光罩 if not hood: sm.steperRun(360) sm.steperRun(360) hood = True
stepermotor.py源程序
# main.py -- put your code here! import pyb from pyb import Pin Pin_All=[Pin(p,Pin.OUT_PP) for p in ['X1','X2','X3','X4']] STEPER_ROUND=512 #转动一圈(360度)的周期 ANGLE_PER_ROUND=STEPER_ROUND/360 #转动1度的周期 class SteperMotor(): def __init__(self,pin = None,speed=2): if pin != None: self.Pins = pin else: self.Pins = Pin_All self.Speed = speed #私有方法 def __SteperWriteData(self,data): count=0 for i in data: self.Pins[count].value(i) count+=1 def __SteperFrontTurn(self): speed = self.Speed self.__SteperWriteData([1,1,0,0]) pyb.delay(speed) self.__SteperWriteData([0,1,1,0]) pyb.delay(speed) self.__SteperWriteData([0,0,1,1]) pyb.delay(speed) self.__SteperWriteData([1,0,0,1]) pyb.delay(speed) def __SteperBackTurn(self): speed = self.Speed self.__SteperWriteData([1,1,0,0]) pyb.delay(speed) self.__SteperWriteData([1,0,0,1]) pyb.delay(speed) self.__SteperWriteData([0,0,1,1]) pyb.delay(speed) self.__SteperWriteData([0,1,1,0]) pyb.delay(speed) def __SteperStop(self): self.__SteperWriteData([0,0,0,0]) def steperRun(self,angle): val=ANGLE_PER_ROUND*abs(angle) if(angle>0): for i in range(0,val): self.__SteperFrontTurn() else: for i in range(0,val): self.__SteperBackTurn() angle = 0 self.__SteperStop()
五、演示 效果
程序调试完,拔掉USB数据线。放入18650电池,按下按键开关即可。不同的环境下,土壤湿度和光照模块需要调节灵敏度(转换模块上的蓝色按钮)。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 版本控制系统Git笔记
- 给树莓派小车控制系统加上装甲
- 工业控制系统模糊测试研究与应用
- DAGOR:微信微服务过载控制系统
- 工业控制系统危机四伏,安全风险如何应对?
- Apache Subversion 1.10.0 发布,版本控制系统
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
UNIX网络编程
史蒂文斯、芬纳、鲁道夫 / 杨继张 / 清华大学出版社 / 2006-1 / 98.00元
《UNIX网络编程》(第1卷)(套接口API第3版)第1版和第2版由已故UNIX网络专家W. Richard Stevens博士独自编写。《UNIX网络编程》(第1卷)(套接口API第3版)是3版,由世界著名网络专家Bill Fenner和Andrew M. Rudoff执笔,根据近几年网络技术的发展,对上一版进行全面修订,增添了IPv6的更新过的信息、SCTP协议和密钥管理套接口的内容,删除了X......一起来看看 《UNIX网络编程》 这本书的介绍吧!
CSS 压缩/解压工具
在线压缩/解压 CSS 代码
HTML 编码/解码
HTML 编码/解码