ผู้เขียนบทความ : 088 นางสาว ม่ารีหยะ ติ้งโหยบ COE#15
คระวิศวกรรมศาสตร์ สาขาวิศวกรรมคอมพิวเตอร์
วิชา : 04/513/201 การเขียนโปรแกรมคอมพิวเตอร์ขั้นสูง 1/2566
1.ความเป็นมา
ปัจจุบันประเทศไทยมีการเจริญก้าวหน้าทางด้านเทคโนโลยีต่างๆอย่างแพร่หลายโดยเฉพาะทางด้านการเกษตรโดยปกติส่วนใหญ่ชาวเกษตรมักจะพบปัญหาการขาดแคลนน้ำเวลาที่ต้องการจะใช้งานและแรงดันน้ำไม่พอในการรดพืชผัก ผู้จัดทำมีวัตถุประสงค์เพื่อพัฒนาระบบควบคุมระดับน้ำและตรวจสอบค่าอัตราการไหลของน้ำสำหรับการเพิ่มปริมาณน้ำภายในถังกักเก็บน้ำเพื่อให้เพียงพอต่อการใช้งานและสามารถเพิ่มอัตราการไหลของน้ำให้มีความแรงของน้ำให้เหมาะสมต่อการใช้งาน โดยใช้ไมโครคอนโทรลเลอร์ (ESP32)จากนั้นให้มีการตรวจสอบสถานะของสวิตซ์และตรวจสอบค่าของเซนเซอร์วัดระดับน้ำและเซนเซอร์วัดอัตราการไหลจากนั้นนำค่าที่ได้จากการตรวจสอบมากำหนดเงื่อนไขในการควบคุมปั๊มน้ำผ่านรีเลย์เพื่อเพิ่มระดับน้ำและเพิ่มอัตราการไหลของน้ำ นอกจากนี้ยังมีการใช้จอ LCD เพื่อแสดงผลค่าของเซนเซอร์และสถานะการทำงานของอุปกรณ์แบบเรียลไทม์และยังมีการแสดงผลบนแอพพลิเคชั่น Blynk เพื่อแสดงค่าของเซนเซอร์และสถานะการทำงานของอุปกรณ์ผ่านระบบ IOTโครงงานชิ้นนี้ได้ออกแบบและสร้างโครงร่างแบบจำลองจากนั้นได้ทำการออกแบบระบบเพื่อนำไปใช้ในการทดสอบการตรวจสอบค่าของเซนเซอร์และตรวจสอบสถานะการทำงานของระบบในโหมดอัตโนมัติและแมนนวล
2.วัตถุประสงค์
2.1เพื่อให้สามารถควบคุมระดับน้ำภายในถังกักเก็บน้ำและควบคุมอัตราการไหลของน้ำ
2.2เพื่อเพิ่มแรงดันน้ำให้กับผู้ใช้งาน
2.3เพื่อให้ผู้ใช้งานสามารถตรวจระดับน้ำและอัตราการไหลของน้ำแบบเรียลไทม์ได้ผ่าน APP BLYNK
3.ขอบเขตการทํางาน
3.1 สามารถวัดปริมาณการไหลของน้ํา
3.2 สามารถควบคุมอัตราการไหลของน้ํา
3.3 สามารถควบคุมระดับน้ำภายในถังกักเก็บน้ำได้
3.4 สามารถควบคุมระบบอัตโนมัติด้วยเซนเซนเซอร์วัดอัตรการไหลของน้ําและระดับน้ําและแสดงผลบน app blynk
4.ประโยชน์ที่คิดว่าจะได้รับ
4.ประโยชน์ที่คิดว่าจะได้รับ
4.1 สามารถควบคุมการไหลของน้ำและระดับน้ำได้อย่างมีประสิทธิภาพและแม่นยำ ซึ่งช่วยให้สามารถจัดการการใช้น้ำในระบบของได้ดีขึ้น.
4.2 ระบบที่ควบคุมอัตโนมัติช่วยประหยัดน้ำและพลังงาน สามารถปรับแต่งการทำงานของระบบให้ทำงานตามความต้องการ.
4.3 เราสามารถควบคุมระบบน้ำของเราจากที่ไกลๆ ผ่านแอป Blynk ที่เชื่อมต่อกับอินเทอร์เน็ต ในกรณีที่เราต้องการเปิดหรือปิดระบบจากระยะไกล.
5. ความรู้ที่เกี่ยวข้อง
5.1 MCU – ESP32 เป็น Micro Controller ที่รองรับการเชื่อมต่อ WiFi , Bluetooth – BLE ในตัว ภาษาที่ใช้ในการพัฒนาโปรแกรมคือ ภาษา C หรือ Python ภาษา Python ต้องทำการอัพเกรดเฟิร์มแวร์ให้รองรับ Python การพัฒนาโปรแกรมขึ้นอยู่กับผู้ที่พัฒนา โปรแกรม IDE ที่ใช้พัฒนาคือ Arduino IDE หรือ Visual Studio สำหรับ Visual Studio จำเป็นต้องติดตั้ง Plugin Espressif IDF หรือ PlatformIO IDE และต้อง Enable (Arduino)ESP32 รองรับการเชื่อมต่อ WiFi และ BLE หรือ Bluetooth ได้โดยไม่ต้องซื้อโมดูลเพิ่มเติม บอร์ด ESP32 เองยังมีการทำงานที่แบ่งเป็น 2 Core และ Pin I/O เลือกฟั่งชั่นการทำงานได้ใน Pin เดียวกัน เช่น การแปลง Analog to Digital หรือ Digital to Analog การเชื่อมต่อ SD Card Camera PWD RTC และ Touch เป็นต้น
5.2 Water Flow Sensor เซ็นเซอร์วัดอัตราการไหลของน้ำ ใช้วัดปริมาณน้ำที่ใช้ไป หรือควบคุมปริมาณการจ่ายน้ำ ให้สัญญาณเป็นดิจิทัล (ลอจิก 0 และ 1) ภายในมีใบพัดกั้นน้ำ เมื่อน้ำไหลผ่านจะทำให้ใบพัดหมุนจากนั้นจึงส่งสัญญาณพัลส์ออกมา ความกว้างพัลส์ขึ้นอยู่กับแรงดันน้ำ จำนวนพัลส์ขึ้นอยู่กับปริมาณน้ำที่ไหลผ่านเมื่อพัดลมเคลื่อนที่ถูกหมุนเนื่องจากการไหลของน้ำพัดลมจะหมุนโรเตอร์ซึ่งทำให้เกิดแรงดันไฟฟ้า แรงดันไฟฟ้าที่เหนี่ยวนำนี้วัดโดยเซ็นเซอร์ผลกระทบของห้องโถงและแสดงบนจอ LCD
เซ็นเซอร์การไหลของน้ำสามารถใช้กับน้ำร้อนน้ำเย็นน้ำอุ่นน้ำสะอาดและน้ำสกปรกได้เช่นกัน เซ็นเซอร์เหล่านี้มีให้เลือกหลายขนาดโดยมีช่วงอัตราการไหลที่แตกต่างกัน แต่สำหรับโครงงานนี้จะเลือกใช้เซ็นเซอร์ Water Flow Sensor Flowmeter Hall Water control 1-30L/min 2.0MPa Flow flow meter water sensor
แรงดันไฟฟ้าทำงานต่ำสุด: DC4.5 5V-24V
กระแสไฟทำงานสูงสุด: 15 mA (DC 5V)
ช่วงแรงดันใช้งาน: DC 5-18 v
ความสามารถในการโหลด: 10 mA (DC 5V) หรือน้อยกว่า
อุณหภูมิการใช้งาน: 80 องศาหรือน้อยกว่า
ช่วงความชื้นในการทำงาน: 35%-90%RH (ไม่มีน้ำค้างแข็ง)
ให้แรงดัน: แรงดัน 1.75Mpa
5.3 Water Level Sensor เป็นอุปกรณ์ที่ใช้ในการวัดระดับน้ำในถัง, บ่อน้ำ, บริเวณที่มีน้ำอยู่ เพื่อวัดระดับน้ำของระดับน้ำหรือใช้ในการเฝ้าระดับน้ำในอุปกรณ์หลายอย่างเช่น ในระบบน้ำประปา, บ่อน้ำในสระว่ายน้ำ, หรือระบบน้ำในอุตสาหกรรม เป็นต้น
Water Level Sensor ใช้ทำโครงงานเกี่ยวกับเครื่องเตือนระดับน้ำใช้วัดระดับน้ำใช้งานง่ายและมีประโยชน์ใช้วัดระดับน้ำผ่านแถบหน้าสัมผัสเมื่อน้ำมาถึงจุดเซนเซอร์จะให้สัญญาณ 1 ออกมาเป็นอนาล็อกเอาท์พุท
ใช้ไฟ : 3.3 – 5 โวลต์
สเปคแรงดันทำงานที่ : DC 3 ~ 5V
กระแสไฟในการทำงาน : น้อยกว่า 20 mA
ช่วงอุณหภูมิในการทำงาน : 10’C ~ 30’C
ความชื้น : 10%-90% ไม่มีการควบเเน่น
ขนาดของเซ็นเซอร์ : 6.7 cm x 2.1 cm x 0.7 cm
5.4 Blynk Platform ถูกออกแบบมาเพื่อใช้ในการควบคุมอุปกรณ์ Internet of Things ซึ่งมีคุณสมบัติในการควบคุมจากระยะไกลผ่านเครือข่ายอินเตอร์เน็ต และยังสามารถแสดงผลค่าจากเซนเซอร์ต่างๆ ได้อีกด้วย การทำงานจะประกอบไปด้วยองค์ประกอบ 3 ส่วนดังนี้
Blynk App – แอพพลิเคชั่นที่สามารถติดตั้งในมือถือของเราเองเพื่อสร้าง Interface ในการควบคุมหรือแสดงผลค่าจากอุปกรณ์ Internet of Things
Blynk Server – ทำหน้าที่เป็นตัวกลางในการติดต่อสื่อสารระหว่างแอพพลิเคชั่นกับอุปกรณ์ Internet of Things (ในส่วนนี้ทางเราได้ให้บริการฟรี)
Blynk Libraries – ออกแบบมาสำหรับอุปกรณ์ Internet of Things ต่างๆ ให้สามารถสื่อสารกันได้อย่างมีประสิทธิภาพ
5.5 โปรแกรมเขียนโค้ด Python เป็นการสร้างและพัฒนาโปรแกรมคอมพิวเตอร์โดยใช้ภาษาโปรแกรม Python ซึ่งเป็นภาษาโปรแกรมที่นิยมและใช้กันอย่างแพร่หลายในวงการพัฒนาซอฟต์แวร์ ด้านล่างนี้คือบางคุณสมบัติและทัศนคติที่สำคัญของ Python:
5.5.1อ่านได้ง่ายและอ่านได้ดี (Readability): Python ถูกออกแบบให้มีโครงสร้างที่ทำให้โค้ดอ่านได้ง่าย มีลักษณะที่คล้ายกับภาษาธรรมชาติ เช่น ภาษาอังกฤษ ซึ่งทำให้โปรแกรมเมอร์สามารถทำความเข้าใจและแก้ไขโค้ดได้ง่ายขึ้น.
5.5.2 เป็นภาษาโปรแกรมระดับสูง (High-level programming language): Python เป็นภาษาที่ระดับสูงทำให้โปรแกรมเมอร์ไม่ต้องกังวลกับรายละเอียดของเครื่องจักร (low-level details) เช่นการจัดการหน่วยความจำหรือการจัดการทรัพยากรระดับต่ำ.
5.5.3 มีไลบรารีมากมาย: Python มีไลบรารีหรือโมดูลที่สามารถนำมาใช้เพื่อเร่งการพัฒนา และทำให้โปรแกรมเมอร์สามารถใช้งานได้ง่ายมากขึ้น ตัวอย่างเช่น NumPy สำหรับการทำงานกับข้อมูลตัวเลข, Pandas สำหรับการจัดการข้อมูลแบบตาราง, หรือ Flask สำหรับการพัฒนาเว็บแอปพลิเคชัน.
5.5.4 รองรับการพัฒนาที่หลากหลาย: Python ให้สนับสนุนการพัฒนาโปรแกรมที่หลากหลาย ไม่ว่าจะเป็นการพัฒนาเว็บแอปพลิเคชัน, การประมวลผลข้อมูล, การสร้างแอปพลิเคชันเดสก์ท็อป, หรือการพัฒนาซอฟต์แวร์เชิงวิทยาศาสตร์.
5.5.5 สามารถใช้กับหลายแพลตฟอร์ม: Python สามารถทำงานได้บนหลายแพลตฟอร์มเช่น Windows, macOS, Linux, และอื่น ๆ.
6.ผลการดำเนินงาน
6.1 บล็อคไดอะแกรมการทำงานของระบบ
6.2 ผังการดำเนินงานของระบบ
6.3 การเรียกใช้ไลบารี่
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <WiFi . h>: ใช้สำหรับการเชื่อมต่อกับเครือข่าย WiFi โดยใช้คำสั่งที่เกี่ยวข้องกับไลบรารี WiFi
#include <WiFiClient.h : ไลบรารีนี้จะให้ฟังก์ชันที่เกี่ยวข้องกับการจัดการการเชื่อมต่อผ่าน WiFi และการจัดการกับข้อมูลที่ส่งผ่าน WiFi
#include <BlynkSimpleEsp32 .h > : นี่คือไลบรารีที่เชื่อมต่อ ESP32 กับ Blynk โดยใช้คำสั่งที่เกี่ยวข้องกับ Blynk
#include <Wire . h>
#include <LiquidCrystal_I2C.h>
#include <Wire . > : ใช้สำหรับการเชื่อมต่อและสื่อสารผ่าน I2C ระหว่าง Arduino หรือไมโครคอนโทรลเลอร์กับอุปกรณ์ที่รองรับ I2C เช่น หน้าจอ LCD I2C, ตัวเซ็นเซอร์, หรืออุปกรณ์อื่น ๆ.
#include <LiquidCrystal_I2C . h>: ใช้สำหรับการควบคุมหน้าจอ LCD ที่เชื่อมต่อผ่าน I2C. หน้าจอ LCD I2C ทำให้การใช้งานหน้าจอ LCD กับ Arduino ง่ายขึ้น เนื่องจากลดจำนวนสายที่ต้องใช้ (สายสัญญาณ SDA, SCL).
6.4 ฟังก์ชันนี้เรียกใช้วิธี “begin”
void setup() {
waterSystem.begin();
}
ฟังก์ชันนี้เรียกใช้วิธี “begin” ของอ็อบเจ็กต์ “SmartWaterSystem” (waterSystem) ซึ่งในลำดับถัดไปจะทำการตั้งค่าระบบทั้งหมด วิธี “begin” จะทำการเริ่มต้นการสื่อสารทางซีเรียล, ตั้งค่าขาพิน, กำหนด interrupts, กำหนด LCD, กำหนด Blynk, และเตรียมการเซ็นเซอร์ทั้งหมดให้พร้อมทำงาน นั่นคือ วิธี “begin”
6.5การสร้างคลาสเพื่อการกำหนดค่าและตั้งค่าต่าง ๆ
LiquidCrystal_I2C lcd(0x27, 20, 4);
const int Relay1 = 27;
const int Relay2 = 26;
int sw1 = 18; //1
int sw2 = 19; //2
int WaterSensor = 36;
int FLOW_PIN = 34;
LiquiCrystal_I2C lcd(0x27, 20, 4); (สร้างอ็อบเจ็กต์ของคลาส LiquiCrystal_I2C โดยกำหนดที่อยู่ I2C ของหน้าจอ LCD (0x27) และขนาดของหน้าจอ (20 ตัวอักษรต่อแถว และ 4 แถว)
const int Relay1 = 27; : กำหนดค่าคงที่ Relay1 ใช้ในการควบคุมรีเลย์ที่เชื่อมต่อกับขาที่ 27 ของ ESP32
const int Relay2 = 26; : กำหนดค่าคงที่ Relay2 ใช้ในการควบคุมรีเลย์ที่เชื่อมต่อกับขาที่ 27 ของ ESP32
int sw1 = 18; : กำหนดตัวแปร sw1 เท่ากับ 18 ใช้เป็นขาที่เชื่อมต่อกับสวิตช์
int sw2 = 19; : กำหนดตัวแปร sw1 เท่ากับ 19 ใช้เป็นขาที่เชื่อมต่อกับสวิตช์
int WaterSensor = 36 ; : กำหนดตัวแปร WaterSensor เท่ากับ 36 ใช้ในการอ่านค่าจากเซ็นเซอร์ที่เชื่อมต่อกับขา 36 ของ ESP32
int FLOW_PIN = 34;: กำหนดตัวแปร FLOW_PIN เท่ากับ 34 ใช้ในการอ่านค่าจากเซ็นเซอร์ที่เชื่อมต่อกับขา 34 ของ ESP32
7.ผลการทดลอง
7.1 ผลการทดลองการรับค่าจากเซนเซอร์
7.2 การทำงานของอุปกรณ์บนแอปพลิเคชัน
ปัญหาที่พบ
วางปั๊มน้ำไว้สูงเกินไปทำให้ปั๊มน้ำไม่มีแรงที่จะดูดน้ำขึ้นมายังถังกักเก็บน้ำเลยต้องย้ายปั๊มน้ำมาไว้ด้านล่าง
7.สรุปผลการทดลอง
จากผลการทดลองระบบควบคุมระดับน้ำและตรวจสอบค่าอัตราการไหลของน้ำสรุปได้ว่าสวิตซ์เปลี่ยนโหมดสามารถควบคุมการเปลี่ยนโหมดระหว่างอัตโนมัติและโหมดแมนนวลได้ตามที่กำหนดไว้ และเซนเซอร์สามารถตรวจสอบระดับน้ำภายในถังกักเก็บน้ำและวัดค่าอัตราการไหลได้ จากนั้นค่าของเซนเซอร์และสถานะต่างๆไปแสดงผลบนจอ LCD แบบเรียลไทม์นอกจากนี้ยังแสดงบนแอพพลิเคชั่น Blynk ได้อีกด้วย จากการทดลองหลายๆครั้งพบว่าเมื่อเซนเซอร์วัดระดับน้ำตรวจสอบพบว่าภายในถังกักเก็บน้ำมีระดับน้ำต่ำจึงสั่งให้ปั๊มน้ำสูบน้ำเข้าถังกักเก็บน้ำและเมื่อเซนเซอร์วัดอัตราการไหลของน้ำภายในท่อต่ำลงจะไปสั่งการให้ปั๊มน้ำเพิ่มอัตราการไหล
8.ข้อมูลอ้างอิง
[1].MSYEFUDIN. Sensor Water level [ออนไลน์] 2561.
[สืบค้นเมื่อวันที่ 26 ตุลาคม 2566 ] จากhttps://symask.blogspot.com/2018/10/nodemcu-monitoring-ketinggian-air.html
[2].The Invention. Sensor Water level [ออนไลน์] 2565.
[สืบค้นเมื่อวันที่ 26 ตุลาคม 2566 ] จาก
https://www.ai-corporation.net/2022/02/03/sensor-water-level-display-to-blink/
[3].Cyber Tice. Water Flow Sensor [ออนไลน์] 2559. [สืบค้นเมื่อวันที่ 26 ตุลาคม 2566 ] จาก
https://www.cybertice.com/product/618B3-yf-s201-water-flow-sensor-flowmeter-hall-water-control-1-30l-min-2-0mp-2