ผู้เขียนบทความ : 165404140039 นาย วสวัตติ์ รัตนรังษี COE #15
คณะวิศวกรมมศาสตร์ สาขาวิศวกรรมคอมพิวเตอร์
วิชา : 04-513-201 การโปรแกรมคอมพิวเตอรชั้นสูง 1/2566
1.ความเป็นมาและความสำคัญของปัญหา
หากนึงถึงผักสลัดเรามักจะนึงถึงคำว่าไฮโดรโปนิกส์เป็นการปลูกไร้ดิน ซึ่งในยุคปัจจุบันการปลูกด้วยระบบไฮโดรโปนิกส์เป็นที่นิยมอย่างมากในประเทศไทย แต่เกษตรกรมักประสบณ์พบเจอปัญหาด้านการผลิตเนื่องด้วยสภาพภูมิอากาศในช่วงหน้าร้อนของประเทศไทย
จากการได้เล็งเห็นถึงปัญหาของเกษตรกร จึงได้ทำการศึกษาระบบ Iot smart farm เพื่อช่วยแก้ปัญหาและเพิ่มประสิทธิภาพในด้านต่างๆ โดยจากการค้นคว้าหาข้อมูลพบว่าเกษตรกรมักปลูกไฮโดรโปนิกส์ไว้ภายนอกโดยใช้ระบบ DFT หรือ Deep Flow Technique คือ ระบบที่ปลูกพืชโดยที่รากจะแช่อยู่ในสารละลาย มีการปลูกพืชบนแผ่นโฟมหรือวัสดุต่างๆ ที่สามารถลอยน้ำเพื่อยึดลำต้น โดยระบบ DFT จะมีชื่อเรียกอีกชื่อหนึ่งคือ Floating Hydroponic Systems หรือ ระบบไฮโดรโปนิกส์ลอยน้ำ ระบบนี้จะนิยมนำมาใช้ในการ ปลูกผักไฮโดรโปนิกส์ โดยทั่วไป อีกทั้งยังสามารถประยุกต์รางปลูกได้จากหลากหลายวัสดุ ไม่ว่าจะเป็นกล่องโฟม ท่อน้ำ ขวดพลาสติก หรือถังน้ำก็ตาม
จากการใช้ระบบนี้ข้อดีคือให้ผักได้รับแสงอย่างเพียงพอ แต่ปัญหาที่ตามมาคือความร้อนจากแสงอาทิตย์ ซึ่งการปลูกด้วยระบบไฮโดรโปนิกส์เป็นการปลูกโดยการใช้น้ำการปลูกแบบเอ้าออร์ทำให้น้ำเกิดความจึงทำให้พืชดูดซึมน้ำและแร่ธาตุได้น้อยลง และยังจำเป็นต้องใช้ยาฆ่าแมลงเนื่องจากเป็นการปลูกระบบเปิด
จึงนำมาเป็นการปลูกไฮโดรโปนิกส์ด้วยระบบ NFT หรือ Nutrient Film Technique คือ ระบบที่ให้น้ำที่ผสมสารละลายไหลผ่านรากพืชเป็นแผ่นบางๆ บนรางปลูก โดยให้น้ำไหลผ่านอย่างต่อเนื่อง ทั้งนี้รางปลูกจึงต้องมีความลาดเอียง เพื่อที่จะให้แผ่นน้ำที่ไหลผ่านมีความบางคล้ายฟิล์มและยังทำให้เพิ่มช่องว่างเติมออกซิเจนทำให้ผักเจริญเติบโตได้ดียิ่งขึ้น ซึ่งเปรียบเสมือนเป็นแบบไฮบริด (Hybird) ระหว่างแอโรโปนิกส์ที่เป็นการปลูกในอากาศและระบบDFTที่เป็นระบบน้ำนิ่งนั่นเอง โดยจะเป็นการปลูกภายในอาคารเพื่อลดความร้อนส่วนนึงและยังลดปัญหาศัตรูพืชไปได้อีกด้วยจากนั้นนำปั้มน้ำดึงน้ำเข้าระบบทำความเย็นเพื่อเพิ่มความเย็นให้แก่น้ำก่อนส่งผ่านรางเพื่อให้ผักดูดซึมได้ดียิ่งขึ้น เมื่อผักได้รับสารอาหารได้มากขึ้นก็จำเป็นต้องทำกระบวนการสังเคราะห์แสงมากขึ้น เราจึงเพิ่มระบบแสงแก่ผักและยังสามารถเปิดได้ถึง10-18ชม.เลยทีเดียว
2.วัตถุประสงค์
2.1เพื่อศึกษาเรียนรู้และพัฒนาด้านการเกษตร
2.2เพื่อศึกษาเรียนรู้ด้าน Iot ( Internet of Things )
2.3เพื่อศึกษาและเข้าใจการเขียนโปรแกรมภาษา Python (OOP : Object Oriented Programming)
3.ขอบเขตของโครงงาน
3.1ปลูกผักสลัดภายในอาคารโดยมีระบบทำความเย็นสำหรับน้ำปุ๋ยแบบอัตโนมัติพร้อมด้วยระบบแสงแบบกำหนดเวลาการทำงานได้
3.2ใช้esp-32เป็นthingsสำหรับเชื่อมต่อเข้าสู่อินเทอร์เน็ตเพื่อควบคุมผ่านระยะไกล
3.3ควบคุมและดูการทำงานผ่านแอพพลิเคชั่น blynk
4.ประโยชน์ที่คาดว่าจะได้รับ
4.1แก้ปัญหาลดความเสียหายด้านผลผลิตได้จริง
4.2เพิ่มประสิทธิภาพด้านการผลิตได้จริง
4.3สามารถนำความรู้การเขียนโปรแกรมภาษา python ไปประยุกต์ใช้ได้จริง
4.4ยกระดับเกษตรกรในประเทศไทยโดยใช้ความรู้ด้าน Iot ( Internet of Things ) ได้จริง
5.ทฤษฎีและความรู้ที่เกี่ยวข้อง
5.1.ทฤษฎีเทคโนโลยี IoT
Internet of Things หรือ IoT หมายถึงระบบและโครงสร้างที่ใช้เทคโนโลยีเพื่อเชื่อมต่ออุปกรณ์ทางไฟฟ้าและวัตถุต่างๆเข้ากับเครือข่ายอินเทอร์เน็ตเพื่อให้สามารถรับส่งข้อมูลและประมวลผลข้อมูลร่วมกันได้ โดยที่อุปกรณ์เหล่านี้สามารถทำงานและสื่อสารกันได้โดยอิสระไม่จำเป็นต้องมีมนุษย์เข้ามาเกี่ยวข้องในกระบวนการนี้ ความหลากหลายของอุปกรณ์และแอปพลิเคชันในโลก IoT มีความกว้างขวาง มีลักษณะการทำงานและการใช้งานที่หลากหลาย เช่น:
เซนเซอร์และอุปกรณ์ตรวจวัด: เป็นอุปกรณ์ที่ใช้ในการตรวจวัดจับค่าต่างๆในสิ่งแวดล้อม เช่น เซนเซอร์อุณหภูมิ ความชื้น ความดันอากาศ เป็นต้น ข้อมูลที่ถูกเก็บรวบรวมจากเซนเซอร์เหล่านี้จะถูกส่งไปยังระบบเพื่อประมวลผลและการตัดสินใจ
ระบบควบคุมและการจัดการ: ระบบที่ใช้ในการควบคุมและจัดการอุปกรณ์ต่างๆ ในระบบ IoT เช่น ระบบควบคุมไฟฟ้าและเครื่องใช้ในบ้าน ระบบจัดการการจราจรในเมืองอัจฉริยะ เป็นต้น
การประยุกต์ใช้ในสาขาอุตสาหกรรม: IoT มีบทบาทสำคัญในการพัฒนาอุตสาหกรรมที่สามารถใช้เซนเซอร์และอุปกรณ์เชื่อมต่อเพื่อประมวลผลข้อมูลและการควบคุมกระบวนการต่างๆ ในอุตสาหกรรม เช่น การจัดการโรงงานอัจฉริยะ เครื่องจักรที่สามารถตรวจสอบสภาพและประสิทธิภาพได้
5.2ระบบไฮโดรโปนิกส์
ไฮโดรโปนิกส์ (Hydroponics) คือวิธีการปลูกพืชโดยไม่ใช้ดินโดบจะใช้น้ำที่มีสารอาหารละลายอยู่ในน้ำเป็นสื่อในการส่งสารอาหารไปยังรากของพืชแทนดิน ซึ่งเป็นวิธีที่ช่วยให้พืชได้รับสารอาหารที่ต้องการอย่างครบถ้วนและเป็นประโยชน์ในระยะยาว โดยปัจจุบันนี้ไฮโดรโปนิกส์กำลังเป็นที่นิยมในการปลูกพืชในพื้นที่จำกัดหรือในเมืองที่มีพื้นที่จำกัดและเป็นทางเลือกสำหรับการผลิตพืชอย่างยั่งยืนในอนาคต สำหรับระบบการ ปลูกผักไฮโดรโปนิกส์ จะมีอยู่ 5 ระบบ นั่นก็คือ
5.2.1 DFT หรือ Deep Flow Technique
5.2.2 DRFT หรือ Dynamic Root Floating Technique
5.2.3 FAD หรือ Food and Drain
5.2.4 NFT หรือ Nutrient Film Technique
5.2.5 NFLT หรือ Nutrient Flow Technique
แต่ระบบที่นิยมปลูกในประเทศไทยคือ DFT (Deep Flow Technique) และ NFT (Nutrient Film Technique) โดยทั้งสองระบบจะมีวิธีการปลูกดังนี้
1.DFT (Deep Flow Technique)
DFT หรือ Deep Flow Technique คือ ระบบที่ปลูกพืชโดยที่รากจะแช่อยู่ในสารละลาย มีการปลูกพืชบนแผ่นโฟมหรือวัสดุต่างๆ ที่สามารถลอยน้ำเพื่อยึดลำต้น โดยระบบ DFT จะมีชื่อเรียกอีกชื่อหนึ่งคือ Floating Hydroponic Systems หรือ ระบบไฮโดรโปนิกส์ลอยน้ำ ระบบนี้จะนิยมนำมาใช้ในการ ปลูกผักไฮโดรโปนิกส์ โดยทั่วไป อีกทั้งยังสามารถประยุกต์รางปลูกได้จากหลากหลายวัสดุ ไม่ว่าจะเป็นกล่องโฟม ท่อน้ำ ขวดพลาสติก หรือถังน้ำก็ตาม
2.NFT (Nutrient Film Technique)
NFT หรือ Nutrient Film Technique คือ ระบบที่ให้น้ำที่ผสมสารละลายไหลผ่านรากพืชเป็นแผ่นบางๆ บนรางปลูก โดยให้น้ำไหลผ่านอย่างต่อเนื่อง ทั้งนี้รางปลูกจึงต้องมีความลาดเอียง เพื่อที่จะให้แผ่นน้ำที่ไหลผ่านมีความบางคล้ายฟิล์มและยังทำให้เพิ่มช่องว่างเติมออกซิเจนทำให้พืชเจริญเติบโตได้ดียิ่งขึ้น ซึ่งเปรียบเสมือนเป็นแบบไฮบริด (Hybird) ระหว่างแอโรโปนิกส์ที่เป็นการปลูกในอากาศและระบบDFTที่เป็นระบบน้ำนิ่งนั่นเอง
5.3ทฤษฎีการควบคุมการปลูกพืชเกษตรแบบ Plant Factory
Plant factory” หรือ “โรงงานผลิตพืช” คือผลผลิตของความก้าวหน้าในการนำเทคโนโลยีหลากหลายสาขามาประยุกต์ใช้เพื่อพลิกโฉมการปลูกพืชจากดั้งเดิมที่ต้องพึ่งพาธรรมชาติ มาสู่การปลูกในระบบปิดที่ควบคุมสภาพแวดล้อม ทำให้ปลอดภัยสูง ไม่ต้องใช้ยาฆ่าแมลง มีปริมาณผลผลิตคงที่และยังสามารถปลูกได้ทั้งปีโดยไม่ขึ้นกับฤดูกาลโดยมีการควบคุม อุณหภูมิ ความชื้นสัมพัทธ์ ความเข้มแสง คุณภาพแสง ความยาวช่วงวัน ความเข้มข้น CO2 ค่า pH อุณหภูมิสารละลาย โดยระบบการปลูกแบบ Plant Factory นั้น จะมีการเพาะปลูกอยู่ 3 รูปแบบ คือ
รูปแบบที่ 1 โรงปลูกพืชระบบเปิด ชนิดใช้แสงธรรมชาติ (Plant Factory with Sunlight)
เหมาะกับเกษตรกรที่เพิ่งเริ่มต้น อยากเพิ่มผลผลิต ลดต้นทุนค่าแรงงาน แต่มีเงินทุนไม่มาก เพราะไม่จำเป็นจะต้องใช้หลอดไฟอย่างเดียว แต่ใช้แสงแดดธรรมชาติเข้ามาใช้กับกระบวนการเพาะปลูกได้
รูปแบบที่ 2 โรงปลูกพืชระบบเปิด ชนิดใช้แสงธรรมชาติร่วมกับแสงเทียม (Plant Factory with Sunlight and Supplemental Light) ระบบนี้จะมีต้นทุนเพิ่มเข้ามาในเรื่องของการติดหลอดไฟ แต่ผลผลิตที่ได้คุ้มค่ากับการลงทุน
รูปแบบที่ 3 โรงปลูกพืชระบบปิด ชนิดใช้แสงเทียมทั้งระบบ (Plant Factory with Fully Artificial Light) เป็นรูปแบบการเพาะปลูกที่ “โครงการ Plant Factory” ของเราใช้อยู่ เนื่องจากเหมาะสำหรับการปลูกเพื่อทำการวิจัย และสามารถนำสารจากพืชไปสกัดเป็นยาและเวชสำอางได้ เหมาะกับผู้ลงทุนที่มีจุดมุ่งหมายที่ชัดเจน ทำไปเพื่ออะไร และต้องการได้ผลผลิตที่มีคุณภาพอย่างสม่ำเสมอ
Plant Factory จากการวิจัยของ Thai Plant Wiki ได้ผลสรุปจากการทดลองพืชเกษตรทั้ง 4 กลุ่ม ได้แก่
พืชกลุ่มที่ 1 ได้แก่ ผักสลัด ซึ่งมี กรีนโอ๊ค, เรดโอ๊ค, บัตเตอร์เฮด, กรีนคอส และ กวางตุ้ง ใช้วิธีการปลูกแบบ Soilless culture โดยมีการแบ่งวิธีการปลูกตามการควบคุมสภาพแวดล้อมและประสิทธิภาพการควบคุมสภาพแวดล้อมของรากพืช โดยจะแบ่งเป็น
ช่วงอุณหภูมิที่เหมาะสม 20-25 °C
ความชื้นสัมพัทธ์ 60-70%
ความเข้มแสง 200-250 (µmol m-2 s-1)
ความยาวช่วงวัน 16 ชั่วโมง
คุณภาพแสง High Red + UV
ความเข้มข้น CO2 800 (µmol mol-1)
ค่า pH 5.8-6.0
อุณหภูมิสารละลาย 18-23 °C
ระบบปลูก NFT, DRFT, Substrate, Aeroponic
พืชกลุ่มที่ 2 ได้แก่ ไทม์ และชิโสะ ใช้วิธีการปลูกแบบ Soilless culture โดยมีการแบ่งวิธีการปลูกตามการควบคุมสภาพแวดล้อมและประสิทธิภาพการควบคุมสภาพแวดล้อมของรากพืชโดยจะแบ่งเป็น
ช่วงอุณหภูมิที่เหมาะสม 20-25 °C
ความชื้นสัมพัทธ์ 60-70%
ความเข้มแสง 200-300 (µmol m-2 s-1)
ความยาวช่วงวัน 14 ชั่วโมง
คุณภาพแสง High Red + High Blue
ความเข้มข้น CO2 800 µmol mol-1
ค่า pH 5.8-6.0
อุณหภูมิสารละลาย 18-23 °C
ระบบปลูก DRFT, Substrate
พืชกลุ่มที่ 3 ได้แก่ ผักชี, โหระพา, สะระแหน่, ขึ้นฉ่าย และต้นหอม ใช้วิธีการปลูกแบบ Soilless culture โดยมีการแบ่งวิธีการปลูกตามการควบคุมสภาพแวดล้อมและประสิทธิภาพการควบคุมสภาพแวดล้อมของรากพืช โดยจะแบ่งเป็น
ช่วงอุณหภูมิที่เหมาะสม 25-30 °C
ความชื้นสัมพัทธ์ 60-70%
ความเข้มแสง 250-300 (µmol m-2 s-1)
ความยาวช่วงวัน 16 ชั่วโมง
คุณภาพแสง High Blue + Far red
ความเข้มข้น CO2 1,000 (µmol mol-1)
ค่า pH 5.8-6.0
อุณหภูมิสารละลาย 22-25 °C
ระบบปลูก NFT, DRFT, Substrate
พืชกลุ่มที่ 4 ได้แก่ ใบบัวบก ใช้วิธีการปลูกแบบ Soilless culture โดยมีการแบ่งวิธีการปลูกตามการควบคุมสภาพแวดล้อมและประสิทธิภาพการควบคุมสภาพแวดล้อมของรากพืช โดยจะแบ่งเป็น
ช่วงอุณหภูมิที่เหมาะสม 25-30°C
ความชื้นสัมพัทธ์ 60-70%
ความเข้มแสง 250-400 (µmol m-2 s-1)
ความยาวช่วงวัน 14-16 ชั่วโมง
คุณภาพแสง High Blue + High Red + UV
ความเข้มข้น CO2 1,000 µmol mol-1
ค่า pH 5.8-6.0
อุณหภูมิสารละลาย 22-25 °C
ระบบปลูก DRFT, Substrate
แหล่งที่มา : https://thaiplantwiki.org/plant-factory-2/
: https://web.facebook.com/thaiplantwiki/
5.4ทฤษฎี Python (OOP : Object Oriented Programming)
การเขียนโปรแกรมใน Python สามารถนำหลักการของการเขียนโปรแกรมเชิงวัตถุ (Object-Oriented Programming, OOP) มาใช้ได้เช่นกัน โดย Python มีระบบ OOP ที่มีลักษณะเป็นไปในรูปแบบต่อไปนี้:
1.คลาส (Class): คลาสเป็นโครงสร้างหลักใน OOP ใน Python คลาสเป็นตัวกำหนดของอ็อบเจ็กต์ (Objects) ซึ่งเป็นการรวบรวมข้อมูล (แอตทริบิวต์) และฟังก์ชัน (เมธอด) ไว้ในรูปแบบหนึ่ง
เช่น:
class Car:
def __init__(self, brand, model):
self.brand = brand
self.model = model
def start_engine(self):
print(f”{self.brand} {self.model}’s engine started.”)
2.อ็อบเจ็กต์ (Object): อ็อบเจ็กต์คือการสร้างข้อมูลจากคลาส ซึ่งเป็นการนำคลาสมาใช้งานจริง ๆ และสร้างข้อมูลที่มีคุณสมบัติและพฤติกรรมตามที่ถูกกำหนดในคลาส
เช่น:
my_car = Car(“Toyota”, “Camry”)
my_car.start_engine()
3.การสืบทอด (Inheritance): OOP ใน Python รองรับการสืบทอด (Inheritance) ซึ่งอนุญาตให้คลาสลูก (Subclass) สืบทอดคุณสมบัติและเมธอดจากคลาสแม่ (Superclass) ซึ่งช่วยในการแบ่งประเภทและนำรหัสซ้ำซ้อน
เช่น:
class ElectricCar(Car):
def __init__(self, brand, model, battery_capacity):
super().__init__(brand, model)
self.battery_capacity = battery_capacity
def charge_battery(self):
print(f”Charging the battery of {self.brand} {self.model}.”)
4.การห่อหุ้ม (Encapsulation): Python สนับสนุนการกำหนดระดับการเข้าถึงของแอตทริบิวต์และเมธอดโดยใช้บุคคลและการอนุญาตให้เข้าถึงเฉพาะในบริบทที่กำหนด
เช่น:
class Person:
def __init__(self, name, age):
self._name = name # แอตทริบิวต์ที่มีเครื่องหมาย _ หน้าชื่อคือ protected
self.__age = age # แอตทริบิวต์ที่มีเครื่องหมาย __ หน้าชื่อคือ private
def get_age(self):
return self.__age
5.การหลีกเลี่ยง (Polymorphism): Python สนับสนุนการใช้คลาสแม่ในการสร้างโครงสร้างที่สามารถทำงานกับคลาสลูกได้ โดยไม่จำเป็นต้องรู้คลาสลูกเป็นอย่างไร ซึ่งเรียกว่าการใช้ Polymorphism
เช่น:
def start_car(car):
car.start_engine()
my_car = Car(“Toyota”, “Camry”)
electric_car = ElectricCar(“Tesla”, “Model S”, “100 kWh”)
start_car(my_car) # เรียกใช้งานโดยไม่รู้ว่าเป็นคลาส Car
start_car(electric_car) # เรียกใช้งานโดยไม่รู้ว่าเป็นคลาส ElectricCar
การเรียนรู้และใช้งาน OOP ใน Python จะช่วยให้คุณสร้างโปรแกรมที่มีโครงสร้างและการจัดระเบียบที่ดีและมีความยืดหยุ่นในการแก้ไขและขยายข้อมูลและฟังก์ชันในโปรแกรมของคุณได้อย่างมีประสิทธิภาพและสะดวกสบาย
Blynk
5.5 Blynk
blynk เป็นแพลตฟอร์ม IoT (Internet of Things) ที่ช่วยให้นักพัฒนาสร้างแอปพลิเคชันควบคุมและติดตามข้อมูลจากอุปกรณ์อิเล็กทรอนิกส์ผ่านทางอินเทอร์เน็ต โดยมีแอปพลิเคชันมือถือหรือแท็บเล็ตเป็นตัวควบคุมหลัก ผู้ใช้สามารถสร้างโปรเจค IoT และเชื่อมต่อกับอุปกรณ์ต่าง ๆ ได้โดยง่ายและรวดเร็วผ่านแอป blynk ที่ให้บริการคำสั่งและอินเตอร์เฟซที่ใช้งานง่าย.
โดยจะต้องประกาศ BLYNK_TEMPLATE_ID, BLYNK_TEMPLATE_NAME, BLYNK_AUTH_TOKEN เสร็จแล้วต้องลงไลบารี่ Wifi โดยสามารถโหลดได้ทั่วไป จากนั้น ประกาศชื่อ ID, Password ของ Wifi ที่จะใช้งาน
#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL6ly_ED_Zo"
#define BLYNK_TEMPLATE_NAME "Project" // ชื่อโปรเจค ใน Blynk
#define BLYNK_AUTH_TOKEN "L5JAlgIu8XSR-RIlF-1bApxErnvj4v-p" // TOKEN จาก Blynk
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char ssid[] = "lol"; // ชื่อ Wifi
char pass[] = "bb0950012"; // รหัส Wifi
ต่อไปคือขั้นตอนการเชื่อมต่อ Wifi และการเชื่อมต่อกับ Sever Blynk
void reconnectWiFi() {
int attempts = 0;
while (WiFi.status() != WL_CONNECTED ) {
Serial.print("Attempting to reconnect to WiFi ");
Serial.println(")...");
WiFi.begin(ssid, pass);
delay(5000); // รอ 5 วินาทีหรือปรับเป็นตามที่ต้องการ
}
if (WiFi.status() == WL_CONNECTED) {
Serial.println("WiFi reconnected!");
}
}
ส่งค่ากลับไปยัง cloud ของ blynk เพื่อสั่งค่าตอบกลับ Virtual Pin
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass, "blynk.cloud", 80);//ส่ง ชื่อและรหัสผ่านของเครือข่าย Wi-Fi ไปยัง blynkcloud
การเชื่อมต่อ Widget ของBlynkและโมดูลที่ต้องการควบคุม
BLYNK_WRITE(V1) {
int pinvalue2 = param.asInt();
if (pinvalue2 == 1) {
digitalWrite(Relay_PIN2, ON);
} else {
digitalWrite(Relay_PIN2, OFF);
}
}
ESP32 30 Pin
5.6 ESP32 30 Pin
ESP32 30 Pin เป็นโมดูลคอมพิวเตอร์เล็กขนาดเล็กที่ออกแบบมาเพื่อใช้ในการพัฒนาและสร้างโครงการที่เกี่ยวข้องกับอินเทอร์เน็ตของสร้างขึ้นโดยมีความหลากหลายในการใช้งาน โมดูล ESP32 พัฒนาโดย Espressif Systems ซึ่งเป็นบริษัทที่มีความเชี่ยวชาญในด้านเทคโนโลยีอินเทอร์เน็ตของสร้าง (IoT) และมีความนิยมในงานสร้างโปรเจ็กต์ที่ต้องการการเชื่อมต่อแบบไร้สาย ด้วยข้อดีในด้านประสิทธิภาพและความครอบคลุมในการรองรับการสื่อสารแบบไร้สายเช่น Wi-Fi และ Bluetooth Low Energy (BLE) รวมถึงความสามารถในการทำงานในโหมดพลังงาน (low power mode) เหมาะสำหรับการใช้ในอุปกรณ์ที่ใช้แบตเตอรี่
DS18B20
5.7 DS18B20
DS18B20 มีความแม่นยำในการวัดอุณหภูมิและมีความต้านทานที่เปลี่ยนแปลงเมื่ออุณหภูมิเปลี่ยนแปลง มันมีการส่งสัญญาณดิจิทัลผ่านโพรโทคอล 1-Wire ที่ทำให้ง่ายต่อการติดตั้งและการเชื่อมต่อกับไมโครคอนโทรลเลอร์ โดยทั่วไป DS18B20 สามารถทนต่อการใช้งานในระบบอุณหภูมิที่ต่ำถึง -55°C และสูงถึง 125°C ซึ่งเหมาะสำหรับการวัดอุณหภูมิในแวดวงแวดวงแวดวงในหลายแอปพลิเคชันต่าง ๆ เช่น ระบบควบคุมอุณหภูมิ, ตรวจวัดอุณหภูมิสภาพอากาศ, การควบคุมอุณหภูมิในอุตสาหกรรมอาหาร, การควบคุมอุณหภูมิในอุตสาหกรรมอิเล็กทรอนิกส์ และอื่น ๆ อีกมากมาย.
การประกาศ Library และการดึงค่าเพื่อนำไปควบคุมโมดูลผ่าน Widget ของBlynk ตาม Virtual Pin ที่กำหนดไว้
#include <OneWire.h> //
#include <WiFi.h> //Esp32
#include <BlynkSimpleEsp32.h>
#include <DallasTemperature.h> //sensor ds18b20
void loop() {
Serial.println("Requesting temperatures...");
sensors.requestTemperatures(); // อ่านข้อมูลจากเซ็นเซอร์
int tempC = sensors.getTempCByIndex(0); // อ่านอุณหภูมิในหน่วยเซลเซียส
int tempF = (tempC * 9.0 / 5.0) + 32.0; // แปลงเซลเซียสเป็นฟาเรนไฮต์
Serial.print("Temperature is: ");
Serial.print(tempC);
Serial.println(" *C");
Serial.print("Temperature in Fahrenheit: ");
Serial.print(tempF);
Serial.println(" *F");
Blynk.virtualWrite(V3, tempC); // ส่งค่าไปยัง Blynk V3
Blynk.virtualWrite(V4, tempF); // ส่งค่าไปยัง Blynk V4
if (tempC <= limitLow) {
digitalWrite(Relay_PIN1, OFF);
Blynk.virtualWrite(V0, Relay_PIN1);
} else if (tempC >= limitHigh) {
digitalWrite(Relay_PIN1, ON);
Blynk.virtualWrite(V0, Relay_PIN1); // แสดงผลลัพธ์ใน Blynk V0
}
delay(100);
Blynk.run(); //ส่งค่ากลับไปที่ blynk
}
thermoelectric-cooler
5.8ชุดเทอร์โมอิเล็กทริกคูลเลอร์ ระบบทําความเย็นเซมิคอนดักเตอร์
ประกอบด้วย แผ่นทำความเย็น เพลเทียร์ 12v และ พัดลมระบายความร้อน 12v และบล็อคน้ำ
ทฤษฎีและหลักการเทอร์โมอิเล็กทริกโมดูล
เทอร์โมอิเล็กทริกโมดูลคืออุปกรณ์อิเล็กทรอนิกที่สามารถเปลี่ยพลังงานความร้อนเป็นพลังงานฟ้าได้และ ในทางกลับกันก็ยังสามารถปลี่ยนพลังงานไฟฟ้าให้เป็นพลังงานความร้อนได้เช่นเดียวกันซึ่งการเปลี่ยนรูปบบของพลังงานความร้อนและพลังงานไฟฟ้านี้อาศัยวัสดุเทอร์โมอิเล็กทริก
(thermoelectric materials) โดยอาศัยหลักการสั่นสะเทือนของโครงสร้างภายในวัสดุเชิงฟิสิฟกส์
ควอนตัม เมื่อวัสดุเทอร์โมอิเล็กทรอนิกได้รับอุณหภูมิที่แตกต่างกันระหว่างปลายทั้งสองข้างพบว่าจะมีการถ่ายเทอุณหภูมิจากอุณหภูมิสูงไปยังอุณหภูมิต่ ากว่านั้นคือมีการสั่นของ อนุภาคโฟนอน (phonon)และการเคลื่อนที่ของพาหนะมีทั้งอิเล็กตรอน (electron)และโฮล (hole)จะได้พลังงานไฟฟ้า และในทางตรงกันข้ามเมื่อวัสดุเทอร์โมอิเล็กทริกมีตวามต่างศักย์ไฟฟ้าจะมีการถ่ายเทความต่างศักย์ไฟฟ้าจากศักย์ไฟฟ้าสูงไปยัศักย์ไฟฟ้าต่างพร้อมทั้งทำให้เกิดผลต่างของอุณหภูมิอีกด้วย
Water Pump
5.9Water Pump (365 DC 12v Miniature Diaphragm Pump )
Water Pumpโดยทั่วไปจะใช้ในการส่งน้ำหรือขับเคลื่อนน้ำไปยังที่ต่างๆหรือ ใช้สำหรับส่งน้ำในระบบท่อขึ้นไปสู่สถานที่ที่ตั้งสูงกว่าระดับน้ำในที่ตั้งของปั้มน้ำนั้น ๆ ซึ่งช่วยในการดูดน้ำจากที่ต่ำขึ้นไปที่สูง หรือในการส่งน้ำไปยังที่ที่ตั้งที่สูงขึ้น ทำให้น้ำสามารถไหลไปยังที่ที่ต้องการได้ โดยมักใช้ในการเพิ่มแรงดันของน้ำในระบบท่อน้ำหรือการดูดน้ำจากบ่อน้ำหรือแหล่งน้ำอื่น ๆ ที่ต่ำกว่าระดับน้ำในที่ตั้งของปั้มน้ำนั้น ๆ เพื่อให้น้ำไหลไปยังที่ตั้งที่สูงขึ้นได้.
หลักการทำงาน คือ
สร้างแรงดันในน้ำเพื่อส่งน้ำจากจุดหนึ่งไปยังจุดอื่น ๆ โดยใช้พลังงานที่ให้โดยแหล่งพลังงานขับเคลื่อน ซึ่งอาจมาจากไฟฟ้าหรือพลังงานอื่น ๆ ตามรุ่นและการใช้งาน
ข้อมูลจำเพาะ (specifications) ของเซนเซอร์ Water Pump:
1.แรงดันใช้งาน: DC 12 V
2.กระแสไฟไม่โหลด: 0.23 A
3.น้ำหนักบรรทุก: 450 ฮ่าวอัน
4.อัตราการไหลสูงสุด: 2-3 ลิตร/นาที
5.ระยะดูดสูงสุด : 2 เมตร
6.เส้นผ่านศูนย์กลางขาเข้าและทางออก: เส้นผ่านศูนย์กลางภายนอก 8 มม
7.ความยาวมอเตอร์: 32 มม
8.เส้นผ่านศูนย์กลางมอเตอร์: 28x36x69MM
9.เส้นผ่านศูนย์กลางปั๊ม: 40 มม.x 35 มม
LED 2835 Chip
5.10 LED: 2835 Chip Full SpectrumDc 5v (ใช้ในแบบจำลองขนาดเล็ก)
ไฟ LED ขั้นสูงเติบโตซึ่งใช้ไฟฟ้าน้อยลงและสร้างความร้อนน้อยลงไม่เพียง แต่ให้แสงสว่างที่เข้มข้นและมีประสิทธิภาพสำหรับระบบทำสวนในร่ม
คุณสมบัติของสินค้า:
ช่วงพลังงาน: {{0}}.2W, 0.5W, 1W, 1.5W, 2W Power Dissipation Available.
แรงดันไปข้างหน้า: 3V, 6V, 9V, 18V, 36V
กระแสไปข้างหน้า: 30mA, 60mA, 100mA, 150mA, 350mA
ดัชนีการแสดงผลสี: Ra80, Ra90, Ra95, Ra98, 99Ra
ประสิทธิภาพแสงสูง: ใช้ได้ 220LM/W
(เลือกใช้ให้เหมาะสมกับพื้นที่และชนิดของพืชที่ปลูก เช่น Grow Light Full Spectrum Samsung LM281B )
Step Down Module
5.11 LM2596 DC-DC Buck Converter Step Down Module
Step Down Module คืออุปกรณ์ที่ใช้ในการลดแรงดันไฟฟ้า หรือ Step Down Voltage Regulator การลดแรงดันนั้นเป็นกระบวนการที่ใช้ตัวตัดจ่าย (switching) และการควบคุมรอบเพื่อลดแรงดันเข้ามาที่ระดับที่ต้องการ.
หลักการทำงาน คือ
1.Input Voltage (Vin): รับแรงดันจากแหล่งจ่ายไฟฟ้า.
2.Switching Element (Transistor): ในกระบวนการลดแรงดันนี้, มีตัวสวิตช์หรือ Transistor ที่ทำหน้าที่เปิดและปิดตัวเองเพื่อสร้างกระบวนการตัดจ่าย (switching process).
3.Inductor (L): มีอินดัคเตอร์ที่เป็นส่วนหนึ่งของกระบวนการ. การปิดตัวสวิตช์ทำให้กระแสไหลผ่านอินดัคเตอร์ และเกิดการเก็บพลังงานในรูปแบบของกระแสแม่เหล็ก.
4.Diode (D): มีไดโอดที่ทำหน้าที่ในการทำให้กระแสไปกลับได้ (freewheeling) หลังจากที่ตัวสวิตช์ปิด.
5.Output Capacitor (Cout): มีคอนเดนเซอร์ที่ใช้ในการเก็บพลังงานและควบคุมแรงดัน DC ที่ได้.
6.Feedback Circuit: ประกอบด้วยตัวต้านทานและไอซีที่ใช้ในการวัดแรงดัน DC ที่ Output และควบคุมการทำงานของตัวสวิตช์เพื่อให้ได้แรงดัน DC ที่ต้องการ.
7.7Segment Display: แสดงผลข้อมูลหรือค่าต่าง ๆ ที่เกี่ยวข้องกับการทำงานของ LM2596.
ข้อมูลจำเพาะ (specifications) ของ LM2596 DC-DC Buck Converter Step Down Module :
1.แรงดันขาเข้า :3-34 V
2.แรงดันขาออก :1.5-32 V( ปรับตั้งได้)
3.กระแสไฟฟ้า(Current) : กระแสใช้งานที่ 1-2 A
Relay Ative Low
5.12 Relay 5v Ative Low
Relay Ative Low คืออุปกรณ์ทางไฟฟ้าที่ใช้เป็นสวิตช์ที่ถูกควบคุมด้วยสัญญาณไฟฟ้าขนาด 5 โวลต์ (5V) เพื่อทำให้กระแสไฟฟ้าได้มีการไหลผ่านหรือไม่ไหลผ่านไปยังอุปกรณ์หรือระบบอื่นๆ ภายใต้การควบคุมของสัญญาณไฟฟ้าลบ.
Relay มีหลายประการใช้งานแตกต่างกันตามวัตถุประสงค์และการออกแบบ ซึ่งสามารถแบ่งออกเป็นส่วนสำคัญดังนี้:
1.Coil (คอยล์): เป็นส่วนที่ได้รับสัญญาณไฟฟ้าเพื่อควบคุมการทำงานของ Relay. การกระทำของ Coil ทำให้มีการสร้างสนามแม่เหล็กภายใน Relay ซึ่งเปลี่ยนแปลงทิศทางของตัวสวิตช์ภายใน.
2.Contacts (ติดต่อ): เป็นส่วนที่เป็นสวิตช์และทำหน้าที่เปิดหรือปิดการไหลของกระแสไฟฟ้าในวงจร. มีหลายประเภทขึ้นอยู่กับการทำงาน เช่น Normally Open (NO), Normally Closed (NC), และ Common (COM).
การทำงาน คือ
การเปิด-ปิดทำให้กระแสไฟฟ้าได้มีการไหลผ่านหรือไม่ไหลผ่านไปยังอุปกรณ์หรือระบบอื่นๆ ภายใต้การควบคุมของสัญญาณไฟฟ้า. Relay ทำหน้าที่เป็นตัวกลางในการควบคุมอุปกรณ์ที่มีกำลังไฟฟ้ามากๆ โดยที่ไม่ต้องให้สัมผัสตรงๆกับอุปกรณ์ที่ต้องการควบคุม.
ข้อมูลจำเพาะ (specifications) ของ Relay 5v Ative Low:
1.สามารถควบคุมอุปกรณ์ที่ใช้ไฟได้ทั้ง AC และ DC ไม่เกิน DC30V / AC250V 10A
2.ทำงานเมื่อได้รับไฟทริก(สัญญาณเข้ามา)ที่ขา In ช่วง 3 – 5 V
6.ผลการดำเนินงาน
Diagram : การทำงานของระบบ
การทำงานของระบบ
Esp32 เชื่อมต่อwifiเพื่อทำกการเชื่อมต่อblynkและรับค่าเพื่อควบคุมส่วนต่างๆผ่านrelay
โดยทำการรับค่าจากโมดูลเซ็นเซอร์ DS18B20 ที่จะส่งค่าอุณหภูมิมาแสดงบนแอพ blynk ดังภาพ จากนั้นทำการรับข้อมูลอุณหภูมิสูงสุดและต่ำสุดจากblynk โดยการใช้วิดเจ็ต slider กำหนดค่า เพื่อควบคุมการทำงานของตัวcooler หรือ เพลเทียร์ทำงานตามที่ต้องการนั้นเอง
ต่อมาเป็นส่วนของLEDและPump ควมคุมการทำงานโดยระบบAutomations ของblynk
โดยสามารถสั่งกำหนดวันและเวลาเปิดปิดได้โดยไม่ต้องกดเอง เมื่อถึงเวลาที่ถูกตั้งค่าไว้ blynkจะทำการสั่ง on ไปที่Esp32ให้ทำการเปิดrelayที่กำหนดไว้ และทำการปิดเมื่อถึงเวลาที่กำหนด
ส่วนของค่าคงที่ที่ใช้กำหนดการพิมพ์ผลลัพธ์ของ Blynk ผ่าน Serial และข้อมูลของโปรเจ็คบน Blynk Cloud
#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL6ly_ED_Zo"
#define BLYNK_TEMPLATE_NAME "Project"
#define BLYNK_AUTH_TOKEN "L5JAlgIu8XSR-RIlF-1bApxErnvj4v-p"
ส่วนของไลบรารีที่ใช้ในโปรเจค
#include <OneWire.h> //
#include <WiFi.h> //Esp32
#include <BlynkSimpleEsp32.h>
#include <DallasTemperature.h> //sensor ds18b20
ส่วนของตัวแปรที่ใช้เก็บข้อมูลการเชื่อมต่อ Wi-Fi, คือ SSID และ password.
char ssid[] = "lol";
char pass[] = "bb0950012";
ส่วนของการกำหนดค่าสำหรับโมดูลที่ใช้
#define Relay_PIN1 4
#define Relay_PIN2 2
#define Relay_PIN3 19
#define Relay_PIN4 18
#define ON LOW // relay ON
#define OFF HIGH // relay OFF
#define ONE_WIRE_BUS 5 //sensor อุณหภูมิ
ส่วนของการสร้างอ็อบเจ็กต์สำหรับ OneWire (oneWire
) และ DallasTemperature (sensors
). ไลบรารี DallasTemperature ใช้สื่อสารกับเซ็นเซอร์ DS18B20.
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
ตัวแปรที่เป็นทศนิยมสำหรับเก็บค่าสูงสุดและต่ำสุดของอุณหภูมิ
float limitHigh;
float limitLow;
ส่วนของฟังก์ชัน setup
void setup() {
pinMode(Relay_PIN1, OUTPUT);//COOLER
pinMode(Relay_PIN2, OUTPUT);//LED
pinMode(Relay_PIN3, OUTPUT);//PUMP
digitalWrite(Relay_PIN1, OFF);
Serial.begin(115200);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass, "blynk.cloud", 80);//ส่ง ชื่อและรหัสผ่านของเครือข่าย Wi-Fi ไปยัง blynkcloud
}
ฟังก์ชัน loop()
:
- แสดงข้อความ “Requesting temperatures…” ทาง Serial.
- ขอข้อมูลจากเซ็นเซอร์ DS18B20.
- อ่านอุณหภูมิในหน่วยเซลเซียสและแปลงเป็นฟาเรนไฮต์.
- แสดงค่าอุณหภูมิทาง Serial และส่งค่าไปยัง Blynk.
- ควบคุม Relay_PIN1 ตามค่า limitLow และ limitHigh และแสดงผลลัพธ์ใน Blynk V0.
void loop() {
Serial.println("Requesting temperatures...");
sensors.requestTemperatures(); // อ่านข้อมูลจากเซ็นเซอร์
int tempC = sensors.getTempCByIndex(0); // อ่านอุณหภูมิในหน่วยเซลเซียส
int tempF = (tempC * 9.0 / 5.0) + 32.0; // แปลงเซลเซียสเป็นฟาเรนไฮต์
Serial.print("Temperature is: ");
Serial.print(tempC);
Serial.println(" *C");
Serial.print("Temperature in Fahrenheit: ");
Serial.print(tempF);
Serial.println(" *F");
Blynk.virtualWrite(V3, tempC); // ส่งค่าไปยัง Blynk V3
Blynk.virtualWrite(V4, tempF); // ส่งค่าไปยัง Blynk V4
if (tempC <= limitLow) {
digitalWrite(Relay_PIN1, OFF);
Blynk.virtualWrite(V0, Relay_PIN1);
} else if (tempC >= limitHigh) {
digitalWrite(Relay_PIN1, ON);
Blynk.virtualWrite(V0, Relay_PIN1); // แสดงผลลัพธ์ใน Blynk V0
}
delay(100);
Blynk.run();
}
ฟังก์ชัน Blynk เมื่อมีการเขียนค่าในปุ่มที่เชื่อมโยงกับ V5 (limitHigh) และ V6 (limitLow)
BLYNK_WRITE(V5) {
limitHigh = param.asInt();
}
BLYNK_WRITE(V6) {
limitLow = param.asInt();
}
ฟังก์ชัน Blynk เมื่อมีการเขียนค่าในปุ่มที่เชื่อมโยงกับ V1 (Relay_PIN2) และ V2 (Relay_PIN3).
BLYNK_WRITE(V1) {
int pinvalue2 = param.asInt();
if (pinvalue2 == 1) {
digitalWrite(Relay_PIN2, ON);
} else {
digitalWrite(Relay_PIN2, OFF);
}
}
BLYNK_WRITE(V2) {
int pinvalue3 = param.asInt();
if (pinvalue3 == 1) {
digitalWrite(Relay_PIN3, ON);
} else {
digitalWrite(Relay_PIN3, OFF);
}
}
ฟังก์ชันสำหรับการเชื่อมต่อ Wi-Fi ในกรณีที่สัญญาณหลุด มีการลองเชื่อมต่อซ้ำหลายครั้ง
void reconnectWiFi() {
int attempts = 0;
while (WiFi.status() != WL_CONNECTED ) {
Serial.print("Attempting to reconnect to WiFi ");
Serial.println(")...");
WiFi.begin(ssid, pass);
delay(5000); // รอ 5 วินาทีหรือปรับเป็นตามที่ต้องการ
}
if (WiFi.status() == WL_CONNECTED) {
Serial.println("WiFi reconnected!");
}
}
Code ในรูปแบบ OOP
<blynksimpleesp32.h>
#include <onewire.h>
#include <dallastemperature.h>
#include <wifi.h>
#define Relay_PIN1 4
#define Relay_PIN2 2
#define Relay_PIN3 19
#define ON LOW
#define OFF HIGH
#define ONE_WIRE_BUS 5
class TemperatureControl {
private:
OneWire oneWire;
DallasTemperature sensors;
int limitHigh;
int limitLow;
public:
TemperatureControl() : oneWire(ONE_WIRE_BUS), sensors(&oneWire), limitHigh(0), limitLow(0) {}
void setup() {
pinMode(Relay_PIN1, OUTPUT); // COOLER
pinMode(Relay_PIN2, OUTPUT); // LED
pinMode(Relay_PIN3, OUTPUT); // PUMP
digitalWrite(Relay_PIN1, OFF);
Serial.begin(115200);
Blynk.begin(BLYNK_AUTH_TOKEN, "blynk.cloud", 80);
}
void loop() {
Serial.println("Requesting temperatures...");
sensors.requestTemperatures();
int tempC = sensors.getTempCByIndex(0);
int tempF = (tempC * 9.0 / 5.0) + 32.0;
Serial.print("Temperature is: ");
Serial.print(tempC);
Serial.println(" *C");
Serial.print("Temperature in Fahrenheit: ");
Serial.print(tempF);
Serial.println(" *F");
Blynk.virtualWrite(V3, tempC);
Blynk.virtualWrite(V4, tempF);
if (tempC <= limitLow) {
digitalWrite(Relay_PIN1, OFF);
Blynk.virtualWrite(V0, Relay_PIN1);
} else if (tempC >= limitHigh) {
digitalWrite(Relay_PIN1, ON);
Blynk.virtualWrite(V0, Relay_PIN1);
}
delay(100);
Blynk.run();
}
void setLimitHigh(int value) {
limitHigh = value;
}
void setLimitLow(int value) {
limitLow = value;
}
};
TemperatureControl temperatureControl;
BLYNK_WRITE(V5) {
temperatureControl.setLimitHigh(param.asInt());
}
BLYNK_WRITE(V6) {
temperatureControl.setLimitLow(param.asInt());
}
BLYNK_WRITE(V1) {
int pinvalue2 = param.asInt();
if (pinvalue2 == 1) {
digitalWrite(Relay_PIN2, ON);
} else {
digitalWrite(Relay_PIN2, OFF);
}
}
BLYNK_WRITE(V2) {
int pinvalue3 = param.asInt();
if (pinvalue3 == 1) {
digitalWrite(Relay_PIN3, ON);
} else {
digitalWrite(Relay_PIN3, OFF);
}
}
void setup() {
temperatureControl.setup();
}
void loop() {
temperatureControl.loop();
}
</wifi.h></dallastemperature.h></onewire.h></blynksimpleesp32.h>
บันทึกผลการทดลอง
7.สรุปผลการทดลอง
การทดลองการทำงานของอุปกรณ์ในส่วนต่างๆ มีการทำงานที่ถูกต้องและมีความแม่นยำสูง แต่หากนำไปใช้งานในสเกลการทำงานที่ใหญ่ขึ้นควรทที่จะเปลี่ยนอุปกรณ์ต่างๆให้เหมาะสมกับการใช้งานเพื่อประสิทธิภาพการทำงานที่ดีเยี่ยม
ข้อเสนอแนะ / การนำไปต่อยอด
หากต้องการให้มีประสิทธิภาพมากยิ่งขึ้น ควรเพิ่มการความคุมปัจจัยอื่นๆที่มีผลต่อการเจริญเติบโตของพืชหรือผักชนิดนั้นๆเช่น การควมคุม co2 ความชื่น เป็นต้น
8.ข้อมูลอ้างอิง
MTIR PHOL ModrenFram [ออนไลน์] 2563. [สืบค้นวันที่ 15 กรกฎาคม 2566].
https://www.mitrpholmodernfarm.com/news/2020/06/plant-factory
ThaiPlantWiki [ออนไลน์] 2563. [สืบค้นวันที่ 22 กรกฎาคม 2566].
https://thaiplantwiki.org/plantfactory/detail/1
Ahmad Logs System using ESP32 and Blynk 2.0 | Blynk ESP32 Relay Control [ออนไลน์] 2563. [สืบค้นวันที่ 12 ตุลาคม 2566].
Impulse Tech -DS18B20 Temperature sensor [ออนไลน์] 2563. [สืบค้นวันที่ 12 ตุลาคม 2566].
Study on Characteristics of Thermoelectric Cooling [ออนไลน์] 2563. [สืบค้นวันที่ 15 ตุลาคม 2566].
https://www.tsme.org/me-nett/me-nett2019/fullpaper/TSF/TSF003.pdf
วิดิโอที่มาความสำคัญและหลักการทำงานของระบบสลัดภายในบ้าน Home salad
https://youtu.be/LJ0z656QyUE