// あさがおIoT観察日記 Arduino側プログラム
// 2020.05.21 V0.0.1 DHT11による温度・湿度取得(DHT11サンプルスケッチより作成)
// V0.0.2 BME280気圧取得(BME280サンプルスケッチより作成)
// 2020.05.23 V0.0.3 TEMT6000による照度取得
// 2020.05.24 V0.0.4 KeyStudio製センサで土の水分量取得
// 2020.06.02 V0.0.5 RaspberryPi側通信制御開発のため、一度シリアル送信するのを照度データだけに変更
// 今後の準備としてLED照明、ポンプ、水切れセンサ、ボタンSWに関する制御パートを追加
#define LED_pin 13
#define pump_pin 12
#define SW_B_pin 11
#define SW_R_pin 10
#define sensor_tank 2
#define sensor_water 1
#define sensor_bright 0
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#define DHTPIN 2 // Digital pin connected to the DHT sensor
#define DHTTYPE DHT11 // DHT 11
DHT_Unified dht(DHTPIN, DHTTYPE);
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_BME280.h>
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BME280 bme; // I2C
uint32_t delayMS;
int Alt = 120;
void setup() {
Serial.begin(9600);
pinMode(LED_pin, OUTPUT);
pinMode(pump_pin,OUTPUT);
pinMode(SW_B_pin,INPUT_PULLUP);
pinMode(SW_R_pin,INPUT_PULLUP);
dht.begin();
delayMS = 1000;
bme.begin(0x76);
}
void loop() {
double temp;
double temp_0;
double humid;
double pres;
double pres_0;
int bright;
int water;
int tank;
delay(delayMS);
sensors_event_t event;
//温度取得
dht.temperature().getEvent(&event);
if (!isnan(event.temperature)) {
temp = event.temperature;
}
//湿度取得
dht.humidity().getEvent(&event);
if (!isnan(event.relative_humidity)) {
humid = event.relative_humidity;
}
//気圧取得
pres = bme.readPressure() / 100;
pres_0 = pres/(pow((1-((0.0065*Alt)/(bme.readTemperature()+0.0065*Alt+273.15))),5.257)); //海面更生
//照度取得
bright = analogRead(sensor_bright);
//水分量取得
water = analogRead(sensor_water);
//水やり判断
tank = analogRead(sensor_tank);
//シリアル送信
// Serial.println(temp);
// Serial.println(humid);
// Serial.println(pres);
// Serial.println(pres_0);
Serial.println(bright);
// Serial.println(water);
// Serial.println(tank);
}
コメント