สมาชิกในกลุ่ม
ชื่อ นายเทพพิทักษ์ ดิษฐ์สูงเนิน ชั้น ม.6/1 เลขที่ 1
ชื่อ นายพัฒนพงษ์ แพนพัด ชั้น ม.6/1 เลขที่ 5
ชื่อ นายวรัญทร วรรณพงษ์ ชั้น ม.6/1 เลขที่ 7
ชื่อ นางสาวจิตรสินี แสงเพ็ง ชั้น ม.6/1 เลขที่ 12
ชื่อ นางสาววรรณวลี สมโสก ชั้น ม.6/1 เลขที่ 27
ชื่อ นางสาวศศินารีรัตน์ ดวงพรม ชั้น ม.6/1 เลขที่ 28
วัตถุประสงค์โครงงาน
ประหยัดเวลาในการรดน้ำต้นไม้
เพื่อการใช้งานที่สะดวกสบายมากขึ้น
ป้องกันการขาดน้ำของต้นไม้
แนวคิดจากทางคณะผู้จัดทำโครงงานได้ทำระบบรดน้ำต้นไม้อัตโนมัติ ซึ่งวิธีที่เราทำมักจะทำการกันเป็นจำอาจจะไม่ค่อยมีเวลาและสะดวกมากนัก เราจึงคิดทำระบบรดน้ำแบบสั่งการทางไกลจาก BLYNKเพื่อที่จะได้รู้ว่าเหมาะสมในการใช้งานหรือไม่
อ้างอิงมาจาก
https://youtu.be/WLCR0r7rYi8?si=RE909iqYoosSWdK5
วัสดุอุปกรณ์
Breadboard
Soil moisture sensor
Relay module
LCD scr and I2C module
Male to female jumper wires x7
Male to male jumper wires x5
ถ่าน 9V 1 ก้อน
สายยางใส 1 เส้น
Node MCU ESP8266
ขั้นตอนการทำงาน
วัดค่าความชื้นภายในดิน
แสดงค่าความชื้นใน App blynk
ถ้าค่าความชื้นในดินต่ำกว่าที่เขียนโค้ดสั่งเปิดน้ำ
เมื่อค่าความชื่นในดินสูงที่เขียนโค้ดไว้สั่งปิดน้ำ
ดูค่าความชื้นได้แบบREAL TIME
สั่งเปิดปิดน้ำได้ตลอดเวลา
ภาพประกอบการทำงาน
แผนการต่อวงจร
เริ่มลงมือในการต่อ
ต่อสายแบบนี้ตามแผนวงจรที่วาง
ดูและตรวจสอบว่าทำตามแบบแผนวงจรถูกต้องหรือไม่
ปรึกษาปัญหาที่ตรวจสอบพบกับอาจารย์ที่ปรึกษาในการทำโครงงาน
นำฟังก์ชั่นที่กำหนดมาใส่
กำหนดข้อมูลลงในเว็บ Blynk ตามที่กำหนดไว้
ผลการดำเนินงาน
จากผลการดำเนินโครงงานระบบรดน้ำสั่งการทางไกลจาก BLYNK ทางผู้จัดทำได้นำบอร์ด ESP8266 มาทำระบบรดสั่งการทางไกลจาก BLYNK โดยการนำมาเขียนโค้ดในการทำงานและต่อวงจรให้สามารถใช้งานได้ พบว่าการทำงานของระบบรดน้ำสั่งการทางไกลจาก BLYNK เมื่อเรานำเซ็นเซอร์วัดความชื้นในดิน มาวัดความชื้นแล้วมีปริมาณ 80-100 % RH เราสามารถสั่งการจาก BLYNK เพื่อให้ระบบรดน้ำทำงานในบริเวณที่เราติดตั้งระบบวงจรเพื่ออำนวยความสะดวกสบายและประหยัดเวลาในการรดน้ำ
CODE โปรแกรม
/*************************************************************
This sketch shows how to read values from Virtual Pins
App dashboard setup:
Slider widget (0...100) on Virtual Pin V1
*************************************************************/
/* Fill-in information from Blynk Device Info here */
//ของนักเรียน
#define BLYNK_TEMPLATE_ID "TMPL6aXloiDhg"
#define BLYNK_TEMPLATE_NAME "Plant watering system"
#define BLYNK_AUTH_TOKEN "arzfWvP_FjpdmILgt_lwyfwJuxQYAxkX"
/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial
//Define component pins
#define sensor A0
#define waterPump D3
bool Relay = 0;
#include <Wire.h>
#include <LiquidCrystal.h>
#include <LiquidCrystal_I2C.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "Iamcool";//Enter your WIFI name
char pass[] = "085jit123";//Enter your WIFI password
BlynkTimer timer;
//Initialize the LCD display
LiquidCrystal_I2C lcd(0x27, 16, 2);
// This function will be called every time Slider Widget
// in Blynk app writes values to the Virtual Pin V1
BLYNK_WRITE(V1)
{
int Relay = param.asInt(); // assigning incoming value from pin V1 to a variable
// process received value
if (Relay == 1) {
digitalWrite(waterPump, HIGH);
lcd.setCursor(0, 1);
lcd.print("Motor is ON ");
Serial.print("Motor is ON");
} else {
digitalWrite(waterPump, LOW);
lcd.setCursor(0, 1);
lcd.print("Motor is OFF");
Serial.print("Motor is OFF");
}
}
void soilMoistureSensor()
{
// You can send any value at any time.
// Please don't send more that 10 values per second.
int value = analogRead(sensor);
Serial.println(value);
value = map(value, 0, 1024, 0, 100);
//value = (value - 100) * -1;
Blynk.virtualWrite(V0, value);
lcd.setCursor(0, 0);
lcd.print("Moisture :");
lcd.print(value);
lcd.print(" ");
}
void setup()
{
// Debug console
Serial.begin(115200);
pinMode(sensor, INPUT);
pinMode(waterPump, OUTPUT);
//lcd.init();
lcd.begin();
lcd.backlight();
lcd.setCursor(1, 0);
lcd.print("System Loading");
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
// You can also specify server:
//Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass, "blynk.cloud", 80);
//Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass, IPAddress(192,168,1,100), 8080);
for (int a = 0; a <= 15; a++) {
lcd.setCursor(a, 1);
lcd.print(".");
delay(500);
}
lcd.clear();
// Setup a function to be called every second
timer.setInterval(1000L, soilMoistureSensor);
}
void loop()
{
Blynk.run();
timer.run(); // Initiates BlynkTimer
}
}