สมาร์ทฟาร์ม โดย ESP8266 และใช้ Relay ปั้มน้ำ 5V, Power Supply 5V 1A
!! นี้คือโค้ดที่ผมใช้และปั๊มน้ำไม่ทำงาน (ปั๊มน้ำของผมจะทำงานขณะที่ความชื้นในดินแห้งครับ) !!
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include “DHT.h”
#define BLYNK_PRINT Serial
#define WateringPin 2
int analogInPin = A0;
int relay = 2;
int sensorValue = 0; // ตัวแปรค่า Analog
int outputValue = 0; // ตัวแปรสำหรับ Map เพื่อคิด %
char auth[] = “mc8ARAWp_ZkKqm-sm0_jXmEJ9_jMFJgM”;
// Your WiFi credentials.
// Set password to “” for open networks.
char ssid[] = “Sermphan_2.4GHz”;
char pass[] = “0987297146”;
#define DHTPIN 0
#define DHTTYPE DHT22
//#define DHTTYPE DHT22 // DHT 22, AM2302, AM2321
//#define DHTTYPE DHT21 // DHT 21, AM2301
DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;
#define SENSOR_PIN 1
#define LED_PIN 2
#define LED 4 // LED on chip ESP8266
void sendSensor()
{
float h = dht.readHumidity();
float t = dht.readTemperature(); // or dht.readTemperature(true) for Fahrenheit
if (isnan(h) || isnan(t)) {
Serial.println(“Failed to read from DHT sensor!”);
return;
}
// You can send any value at any time.
// Please don’t send more that 10 values per second.
Blynk.virtualWrite(V0,analogRead(A0));
Blynk.virtualWrite(V5, t);
Blynk.virtualWrite(V6, h);
}
void setup()
{
// Debug console
pinMode(relay, OUTPUT);
pinMode(SENSOR_PIN, INPUT);
pinMode(WateringPin, OUTPUT);
pinMode(LED_PIN, OUTPUT);
pinMode(LED, OUTPUT);
Serial.begin(9600);
pinMode(relay, OUTPUT);
Blynk.begin(auth, ssid, pass);
// You can also specify server:
//Blynk.begin(auth, ssid, pass, “blynk-cloud.com”, 8442);
//Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8442);
dht.begin();
// Setup a function to be called every second
timer.setInterval(1000L, sendSensor);
}
void loop()
{
sensorValue = analogRead(analogInPin);
Serial.print(“Soil Moisture = “);
Serial.print(outputValue);
Serial.println(”%”);
if (outputValue <= 40 ) { //ตั้งค่า % ที่ต้องการจะรดน้ำต้นไม้
digitalWrite(relay, HIGH);
}
else {
digitalWrite(relay, LOW);
}
delay(1000);
Blynk.run();
timer.run();
}
void Sensor()
{
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println(“Failed to read from DHT sensor!”);
digitalWrite(LED, LOW);
delay(1500);
return;
}
Serial.print("Humidity is: "); Serial.println(h, 1);
Serial.print("Temperature is: "); Serial.println(t, 1);
digitalWrite(LED, HIGH);
Blynk.virtualWrite(V0,analogRead(A0));
Blynk.virtualWrite(V5, h);
Blynk.virtualWrite(V6, t);
}