Rural Hack Kit 是一套完美的电子设备,可让您开始对您的农场、花园或阳台上的植物进行黑客攻击。
该套件包括监测我们的绿色沉默朋友环境的必需品:精确的土壤湿度传感器、精确的数字光传感器模块和温度和湿度传感器。
此外,为了使您的温室自动化,该套件具有一个继电器模块,您可以使用它来控制水阀、风扇或灯。
套件内容
这是一系列教程中的第一篇,该教程将教授如何使用套件中的模块。在本教程中,我们将学习如何将传感器和执行器连接到 Arduino,读取它们的数据并与之交互。
在接下来的教程中,您将学习如何将传感器连接到云服务并远程照顾您的花园。
传感器规格
DHT22 是一款能够读取环境温度和湿度的数字传感器。
连接
连接到传感器非常容易。如图所示连接
设置和测试
在您尝试使用传感器之前,您需要安装其库。在库管理器上搜索 dht 并安装库。
现在您只需上传将从传感器获取数据并将其打印到串行端口的测试草图。
#include
// for DHT22,
// VCC: 5V or 3V
// GND: GND
// DATA: 6
int pinDHT22 = 6;
SimpleDHT22 dht22;
void setup() {
Serial.begin(115200);
}
void loop() {
// start working...
Serial.println("=================================");
Serial.println("Sample DHT22...");
// read without samples.
// @remark We use read2 to get a float data, such as 10.1*C
// if user doesn't care about the accurate data, use read to get a byte data, such as 10*C.
float temperature = 0;
float humidity = 0;
int err = SimpleDHTErrSuccess;
if ((err = dht22.read2(pinDHT22, &temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
Serial.print("Read DHT22 failed, err="); Serial.println(err);delay(2000);
return;
}
Serial.print("Sample OK: ");
Serial.print((float)temperature); Serial.print(" *C, ");
Serial.print((float)humidity); Serial.println(" RH%");
// DHT22 sampling rate is 0.5HZ.
delay(2500);
}
您现在可以打开串行监视器,您应该能够看到那里打印的温度和湿度值。
套件随附的土壤湿度传感器可能是市场上用于 DIY 土壤湿度测量的最可靠且价格最低的传感器之一。
经典的土壤湿度传感器(看起来像带有两个电极的叉子)测量种植在土壤中的两个电极之间的电阻;电极之间的高电阻意味着土壤不导电,因此它可能是干燥的;低电阻意味着电流在两个电极之间很容易流动,这就是传感器在水中或潮湿土壤中时发生的情况。
所描述技术的缺点是电极上的铜很快就会生锈,因此过了一段时间,这些传感器的读数就不再准确了。
套件中提供的传感器使用电容感应来测量其周围介质的电容:例如,湿土壤的电容比干土壤或空气的电容高。它没有电极,而是采用电容式天线,无需与土壤直接接触,这可以保护传感器,使其读数可靠且及时。
传感器可以通过 I2C 协议读取并提供以下功能:
传感器规格
连接
与传感器的连接是通过 i2c 完成的,根据您使用的电路板,您可能有不同的引脚分配给 I2C;
如果您使用 MKR1000 连接:
设置和测试
首先安装I2CSoilMoistureSensor 库:打开库管理器,搜索 I2CSoilMoistureSensor 并安装库。
现在上传示例草图,您应该能够看到测量数据。
#include <I2CSoilMoistureSensor.h>
#include <Wire.h>
I2CSoilMoistureSensor sensor(0x60);
void setup() {
Wire.begin();
Serial.begin(9600);
sensor.begin(); // reset sensor
delay(1000); // give some time to boot up
Serial.print("I2C Soil Moisture Sensor Address: ");
Serial.println(sensor.getAddress(),HEX);
Serial.print("Sensor Firmware version: ");
Serial.println(sensor.getVersion(),HEX);
Serial.println();
}
void loop() {
while (sensor.isBusy()) delay(50); // available since FW 2.3
Serial.print("Soil Moisture Capacitance: ");
Serial.print(sensor.getCapacitance()); //read capacitance register
Serial.print(", Temperature: ");
Serial.print(sensor.getTemperature()/(float)10); //temperature register
Serial.print(", Light: ");
Serial.println(sensor.getLight(true)); //request light measurement, wait and read light register
sensor.sleep(); // available since FW 2.3
}
这种由 Adafruit 生产的非常便宜的传感器模块比您可能在其他项目中使用的老式光敏电阻要准确得多。
大多数光传感器与光照水平呈线性关系,这意味着它们对黑暗区域的变化不是很敏感,并且当有很多光时很容易“最大化”。
该传感器在 3 到 55,000 Lux 的大动态范围内是对数的,因此它在低光照水平下具有很高的灵敏度,但也几乎不可能“最大化”,因此您可以在室内或室外使用它而无需更改代码或校准。
传感器规格
您可以在此处获取完整的数据表
连接
使用此传感器读取光强度就像从模拟传感器读取模拟一样容易。
只需通过 VCC 和 GND 连接电源,然后将 OUT 引脚连接到板上的模拟输入。
设置和测试
您不需要任何库来使用它,只需使用 analogRead() 函数从 A0 引脚读取值。
该传感器的最大输出值为 3.3V,如果您使用的是 mkr1000 之类的 3.3V 板,则开箱即可获得准确的读数。
!!!如果您的电路板工作电压为 5v,请查看此 adafruit 教程,您会发现有关如何使用外部模拟参考值的便捷技巧。
在下面提供的示例草图中完成了从模拟读数到勒克斯的简单转换。
将其上传到您的电路板,您应该能够准确测量房间内的光线。
/*
Test sketch for the Adafruit Analog Light Sensor
by Bill Earl
for Adafruit Industries
Connect sensor output to Analog Pin 0
Connect VCC to VCC and GND to GND
*/
int sensorPin = A0; // select the input pin for the potentiometer
float rawRange = 1024; // 3.3v
float logRange = 5.0; // 3.3v = 10^5 lux
void setup()
{
analogReference(EXTERNAL); //
Serial.begin(9600);
Serial.println("Adafruit Analog Light Sensor Test");
}
void loop()
{
// read the raw value from the sensor:
int rawValue = analogRead(sensorPin);
Serial.print("Raw = ");
Serial.print(rawValue);
Serial.print(" - Lux = ");
Serial.println(RawToLux(rawValue));
delay(1000);
}
float RawToLux(int raw)
{
float logLux = raw * logRange / rawRange;
return pow(10, logLux);
}
套件的最后一个重要部分是继电器。继电器是一个机电组件,可用于控制 Arduino 的大负载。您可以连接水泵、风扇以及基本上可以打开或关闭的任何东西。
!!!小心 !!!连接像220V灯这样的大负载很危险!!!如果您使用超过 120V 的电压,请采取所有必要的预防措施。
套件中提供的继电器也可以由 3.3v 设备控制,因此很容易将其连接到 MKR1000。
连接
将继电器连接到 Arduino 非常简单,只需将随附的 3 根电线连接到 Arduino 即可。
模块上的两个螺丝端子是您应该连接负载的地方:风扇、泵、灯条或其他任何东西。
设置和测试
为了测试一切是否正常,我们将在我们的板上上传一个眨眼草图。
每次打开或关闭 LED 时,您都会听到继电器外壳内的机械噪音。
int RELAY_PIN=9;
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
// initialize digital pin RELAY_BUILTIN as an output.
pinMode(RELAY_PIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
pinMode(RELAY_PIN, HIGH); // open the circuit
delay(1000);
digitalWrite(LED_BUILTIN, LOW); // close the circuit
pinMode(RELAY_PIN, LOW);
delay(1000); // wait for a second
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !