arduino - 微型智慧农业项目
arduino - 微型智慧农业项目
一、项目介绍
通过各种传感器
,实时监测植物的生长环境,通过arduino网络拓展板
连接网线
,把传感器监测到的数据实时发送到乐维网
(物联网平台),在PC端或是手机端可以实时监测数据
。当温度过大时,会开启风扇模块
,给植物降温,当土壤湿度过低时,会开启继电器
开关,进而打开水泵
,自动抽水来灌溉植物
。
二、仪器介绍
序号 | 仪器 |
---|---|
1 | arduino Uno板 |
2 | arduino网络扩展板 |
3 | 温湿度传感器 |
4 | 土壤传感器 |
5 | 光敏传感器 |
6 | 继电器 |
7 | 微型水泵 |
8 | 电池盒 |
9 | 硅胶软管 |
10 | 杜邦线若干 |
11 | 面包板 |
三、仪器连接
光敏传感器:
-
VCC
接 arduino 的3.3或5V -
GND
接 arduino的GND -
DO
接 arduino的Digital 5 -
AO
接 arduino的Analog 0
风扇:
VCC
接 arduino 的3.3或5VGND
接 arduino的GNDINA
接 arduino的Digital 9INB
接 arduino的Digital 8
土壤湿度传感器:
VCC
接 arduino 的3.3或5VGND
接 arduino的GNDDO
接 arduino的Digital 4AO
接 arduino的Analog 2
继电器:
VCC
接 arduino 的3.3或5VGND
接 arduino的GNDIN
接 arduino的Digital 7
温湿度传感器:
+
接 arduino 的3.3或5V-
接 arduino的GNDS
接 arduino的Digital 6
注:各个模块用到的数字接口
或模拟接口
,并不是唯一固定,只要不重复
且和要上传到arduino板上的代码
中定义的引脚能一一对应
即可。
四、核心功能介绍——水泵+继电器模块
继电器工作原理:
-
信号输入端
有
信号时(继电器开
),公共端
与常开端
会导通,水泵正常工作
; -
信号输入端
无
信号时(继电器关
),公共端
与常开端
会断开,水泵不工作
;
五、数据上传到乐联网(物联网平台)
step1:在乐联网上注册一个账号,用来接收、统计 传感器数据
step2:获取有关乐联网相关的arduino 代码
-
乐联网的相关Arduino代码托管在Github上,地址 https://github.com/lewei50/leweiclient,
打开链接,点击Zip下载按钮,将名称为master.zip的文件下载到本地。 -
下载后解压,打开你电脑里的Arduino IDE
所在文件夹里的libraries
文件夹,在里面新建一个leweiclient的文件夹,将master压缩包解 压缩后LeweiClient-master文件夹里的文件全部拷贝到这个文件夹里。 -
打开示例代码
step3:修改userkeyUserkey
代表每个账号的的唯一标识,arduino联上网
之后可以通过Userkey
正确的找到你的账户,并上传数据。
step3: 添加新设备并修改设备标识号
- 添加新设备后,请记住你的设备号
标识
step4: 添加传感器,并修改传感器标识
step5: 实时监测传感器数据
六、代码及注释
//需要自己手动导入LeweiClient库和DHT库
#include <LeweiClient.h>
#include <SPI.h>
#include <Ethernet.h>
#include "DHT.h"
//温湿度传感器引脚及类型
#define DHTPIN 6 //连接温湿度传感器的数字引脚接口
#define DHTTYPE DHT11 //定义温湿度传感器类型 DHT11
DHT dht(DHTPIN, DHTTYPE);//定义检测温湿度的对象,同时传入接口和类型的的参数
//光敏传感器引脚
#define LLU_PIN_A 0
#define LLU_PIN_D 5
//土壤湿度传感器引脚
#define SOIL_PIN_AO 2
#define SOIL_PIN_DO 4
//风扇引脚
int FAN_INA = 9;
int FAN_INB = 8;
//继电器引脚
int jidianqi = 7;
//乐维物联
#define LW_USERKEY "09b46be890ee4ffbbac6ff4f3cd70841" //乐维网账号的 userKey
#define LW_GATEWAY "02" //设备标识号(根据自己所定义的的设备标识号而改变)
LeWeiClient *lwc; //上传到乐维网所需到的LeWeiClient对象
//数据上传的的时间间隔1秒
#define POST_INTERVAL 1000
void setup() {
//初始化对象和引脚
pinMode(SOIL_PIN_AO, INPUT);
pinMode(SOIL_PIN_DO, INPUT);
pinMode(FAN_INA,OUTPUT);
pinMode(FAN_INB,OUTPUT);
pinMode(jidianqi, OUTPUT);
Serial.begin(9600);
Serial.println(F("DHT11 test!"));
dht.begin();//打开温湿度传感器
lwc = new LeWeiClient(LW_USERKEY, LW_GATEWAY);
}
void loop() {
if (lwc) {
Serial.println("read data ");
//读取空气中的湿度值
float h = dht.readHumidity();
//读取空气中的温度值
float t = dht.readTemperature();
//将空气中的温湿度值上传到到 乐维网上定义好的tem传感器和hum传感器上
lwc->append("tem", t);
lwc->append("hum", h);
//温度大于29度 则开启小风扇
if(t>29)
{
digitalWrite(FAN_INA,LOW);
digitalWrite(FAN_INB,HIGH);
}
else
{
digitalWrite(FAN_INA,LOW);
digitalWrite(FAN_INB,LOW);
}
//光敏传感器
int val;
val=analogRead(LLU_PIN_A);
Serial.print("a:");
Serial.print(val);
lwc->append("light", val);//上传光照强度数值到乐维网上
Serial.print(", d:");
val=digitalRead(LLU_PIN_D);
Serial.println(val);
//土壤湿度传感器
Serial.print("AO=");
Serial.print(analogRead(SOIL_PIN_AO));
Serial.print(", DO=");
Serial.println(digitalRead(SOIL_PIN_DO));
lwc->append("soilHum", analogRead(SOIL_PIN_AO));
//当测量的湿度值大于500单位时,开启继电器,否则关掉。
if(analogRead(SOIL_PIN_AO)>500)
{
digitalWrite(jidianqi, LOW); //继电器开
}
else
{
digitalWrite(jidianqi, HIGH);//继电器关
// delay(2000);
}
lwc->send();//发送所有的传感器的数据到乐维网上
Serial.println("*** send completed ***");
// delay(POST_INTERVAL);
}
}
七、资源和文件
链接:https://pan.baidu.com/s/179Pp0LJ8bk7EdwnQxLOO_Q
提取码:gjkv