内容简介:智慧农业就是将物联网技术运用到传统农业中去,运用传感器和软件通过移动平台或者电脑平台对农业生产进行控制,使传统农业更具有“智慧”。除了精准感知、控制与决策管理外,从广泛意义上讲,智慧农业还包括农业电子商务、食品溯源防伪、农业休闲旅游、农业信息服务等方面的内容。智慧农业是农业生产的高级阶段,是集新兴的互联网、移动互联网、云计算和物联网技术为一体,依托部署在农业生产现场的各种传感节点(环境温湿度、土壤水分、二氧化碳、图像等)和无线通信网络实现农业生产环境的智能感知、智能预警、智能决策、智能分析、专家在线指导,为
智慧农业就是将物联网技术运用到传统农业中去,运用传感器和软件通过移动平台或者电脑平台对农业生产进行控制,使传统农业更具有“智慧”。除了精准感知、控制与决策管理外,从广泛意义上讲,智慧农业还包括农业电子商务、食品溯源防伪、农业休闲旅游、农业信息服务等方面的内容。智慧农业是农业生产的高级阶段,是集新兴的互联网、移动互联网、云计算和物联网技术为一体,依托部署在农业生产现场的各种传感节点(环境温湿度、土壤水分、二氧化碳、图像等)和无线通信网络实现农业生产环境的智能感知、智能预警、智能决策、智能分析、专家在线指导,为农业生产提供精准化种植、可视化管理、智能化决策。
我们以大棚监测控制系统为目标,使用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 发布,版本控制系统
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Agile Web Application Development with Yii 1.1 and PHP5
Jeffrey Winesett / Packt Publishing / 2010-08-27
In order to understand the framework in the context of a real-world application, we need to build something that will more closely resemble the types of applications web developers actually have to bu......一起来看看 《Agile Web Application Development with Yii 1.1 and PHP5》 这本书的介绍吧!