สร้างตู้ Terrarium อัจฉริยะด้วย ESP32: คุมแสง น้ำ และความชื้นผ่านเว็บแบบอัตโนมัติ!

IoT Based ESP32 Smart Terrarium

ในยุคที่คนไทยหันมาเลี้ยงต้นไม้หายาก (อย่างพวกมอนสเตอร่า เฟิร์น) หรือสัตว์แปลกๆ (Exotic pets) กันมากขึ้น ปัญหาคลาสสิกที่หลายคนเจอคือ "สภาพอากาศบ้านเราที่เอาแน่เอานอนไม่ได้" บางวันร้อนจัด บางวันเปิดแอร์จนอากาศแห้งเกินไป ตอนแรกผมก็คิดว่าแค่รดน้ำ เปิดไฟก็จบแล้ว แต่จริงๆ ต้นไม้และสัตว์เลื้อยคลานต้องการการคุมสภาพแวดล้อมที่เป๊ะกว่านั้นครับ ทั้งอุณหภูมิ ความชื้นในอากาศ วงจรกลางวัน/กลางคืน และความชื้นในดิน

แทนที่จะต้องมานั่งวัดค่าและคอยรดน้ำเองทุกวัน ผมเลยตัดสินใจสร้าง ตู้ Terrarium อัจฉริยะ (Smart Terrarium System) โดยใช้บอร์ด ESP32 เป็นสมองกลหลัก มันสามารถจัดการเรื่องรดน้ำ สร้างหมอก ระบายอากาศ และเปิดปิดไฟให้เราแบบอัตโนมัติ 100% แถมยังมี Web Dashboard เท่ๆ ให้เราดูสถานะผ่านมือถือได้ด้วย!

อุปกรณ์ที่ต้องใช้ (Supplies)

โปรเจกต์นี้พยายามใช้อุปกรณ์พื้นฐานที่หาได้ง่ายครับ (ถ้าใครกำลังหาบอร์ด ESP32, เซนเซอร์, โมดูลรีเลย์ หรือเส้นพลาสติก 3D Print ทนความชื้นอย่าง PETG เพื่อเอามาทำตู้ Terrarium แวะไปช้อปอุปกรณ์สาย IoT ได้ที่ Globalbyte เลยครับ ของครบจบในที่เดียว!)

  • ESP32 Development Board (รุ่นที่มีหน้าจอ OLED ในตัว หรือจะใช้จอแยกก็ได้)
  • โมดูลแปลงไฟ Hi-Link AC to DC
  • เซนเซอร์วัดอุณหภูมิและความชื้น DHT11
  • เซนเซอร์วัดความชื้นในดิน (Soil Moisture Sensor)
  • เครื่องทำหมอก (Mist maker module) และ พัดลม 5V
  • ปั๊มน้ำขนาดเล็ก (Water Pump)
  • ไฟ Adafruit NeoPixel Ring: WS2812 5050 RGB LED
  • โมดูลรีเลย์ 3 ช่อง (Seeed Studio Grove - Relay)
  • Breadboard หรือแผ่น PCB เปล่า, ปุ่มกด (Push Button), สายจัมเปอร์
  • ตู้ปลาเก่าๆ (ขนาดไหนก็ได้) และชิ้นส่วน 3D Print สำหรับยึดเครื่องทำหมอก
Supplies Image 1
Supplies Image 2 Supplies Image 3 Supplies Image 4 Supplies Image 5 Supplies Image 6 Supplies Image 7 Supplies Image 8 Supplies Image 9 Supplies Image 10

แนะนำบริการ 3D Printing จาก Justway
สำหรับชิ้นส่วนเคสและกลไกในโปรเจกต์นี้ ผมได้รับความร่วมมือจาก Justway ผู้ให้บริการ 3D Print และผลิตชิ้นส่วนระดับโลกที่ Maker หลายคนไว้วางใจ เขามีบริการปริ้นท์หลายแบบ (FDM, SLA, SLS) วัสดุให้เลือกเป็นร้อยแบบ และผลิตไวใน 3 วันทำการ ใครอยากทำเคสโปรเจกต์เนี๊ยบๆ ลองไปใช้บริการได้ที่ Justway.com ครับ

Justway 3D Printing

Step 1: หลักการทำงานของระบบ (How It Works)

Terrarium App Interface Terrarium System Logic

ระบบควบคุม (Control logic) ถูกออกแบบมาให้คิดแทนเราแบบนี้ครับ:

  • ความชื้นในดินต่ำกว่า 30% → ปั๊มน้ำ เปิด (ON)
  • ความชื้นในดินสูงกว่า 50% → ปั๊มน้ำ ปิด (OFF)
  • ความชื้นในอากาศต่ำกว่าเกณฑ์ → เครื่องพ่นหมอก เปิด (ON)
  • อุณหภูมิสูงกว่าเกณฑ์ → พัดลม เปิด (ON)
  • เซนเซอร์พังหรืออ่านค่าไม่ได้ → ปิดทุกอย่างทันที (Fail-safe)

เพื่อให้ระบบเสถียร เราจะใช้หลักการ Hysteresis คือไม่ให้สวิตช์เปิด/ปิดรัวๆ ตามค่าที่แกว่งไปมา แต่จะรอให้ข้ามเส้นค่าที่ตั้งไว้แบบชัดเจนก่อนถึงจะสั่งงาน ช่วยถนอมรีเลย์ไม่ให้พังไวครับ

หน้าจอ OLED จะบอกสถานะทั้งหมด และไฟวงแหวน LED จะแสดงสีให้รู้ทันที เช่น สีเขียว (ปกติ), สีฟ้า (กำลังรดน้ำ), สีม่วง (พ่นหมอก), สีแดง (เซนเซอร์พัง) ระบบ Dashboard ทำงานตรงจาก ESP32 เลย ไม่ต้องผ่าน Cloud แค่เข้าพิมพ์ IP Address (เช่น http://10.112.43.248/) ในเบราว์เซอร์ก็ควบคุมได้แล้ว ทั้งโหมด AUTO และ MANUAL

Step 2: ผังการต่อวงจร (Wiring Diagram)

Wiring Diagram

การต่อวงจรเป็นแบบตรงไปตรงมาครับ โดยอิงตามพินของ ESP32 (Wemos Lolin32) ดังนี้:

  • OLED Display: SDA → GPIO 5, SCL → GPIO 4 (ถ้าใช้จอแยกให้ใช้ GPIO 21, 22)
  • DHT11 Sensor: DATA → GPIO 12
  • Soil Moisture Sensor: AO (Analog) → GPIO 13
  • Push Button: ขาหนึ่งต่อ GPIO 14, อีกขาต่อ GND
  • WS2812 LED: DIN → GPIO 15
  • Relay Module: Relay 1 (พัดลม) → GPIO 25, Relay 2 (ปั๊มน้ำ) → GPIO 26, Relay 3 (พ่นหมอก) → GPIO 16

ข้อควรระวัง: อย่าลืมต่อสาย GND (Ground) ของทุกอุปกรณ์เข้าด้วยกัน (Common Ground) นะครับ ไม่งั้นระบบจะรวนได้

Step 3: เตรียมบอร์ดหลัก (Preparing the Main Board)

ก่อนจะลงตะกั่วบัดกรี ให้จัดวาง Layout บน Perfboard ก่อนครับ วางโมดูลแปลงไฟ Hi-Link ไว้ก่อน เพราะตัวใหญ่และต้องเว้นระยะห่างจากฝั่งไฟ AC ให้ปลอดภัย วาง Header สำหรับเสียบ ESP32 และ Relay ให้เรียบร้อย

เมื่อบัดกรีเสร็จ ให้ใช้มัลติมิเตอร์เช็ค Continuity ดูว่าขา 5V กับ GND ช็อตกันหรือเปล่า ก่อนที่จะเสียบไฟจริงครับ!

Main Board Prep 1
Main Board Prep 2 Main Board Prep 3 Main Board Prep 4 Main Board Prep 5 Main Board Prep 6 Main Board Prep 7

Step 4: ติดตั้งเซนเซอร์และเครื่องพ่นหมอก (Sensors & Mist System)

เครื่องพ่นหมอกและเซนเซอร์ DHT11 จะถูกยึดไว้ในชิ้นส่วน 3D Print ทรงหยดน้ำที่อยู่ก้นตู้ การวางมันไว้ด้วยกันจะทำให้เซนเซอร์จับความชื้นของหมอกได้แม่นยำที่สุดครับ (เครดิตไฟล์ 3D จาก jkr115) แนะนำให้ใช้พลาสติก PETG ในการปริ้นท์เพราะทนความชื้นได้ดีกว่า PLA ครับ ไม่ต้องใช้ Support ตอนปริ้นท์

Mist Maker 1
Mist Maker 2 Mist Maker 3 Mist Maker 4 Mist Maker 5

Step 5: การต่อพัดลม ไฟ และรีเลย์ (Connecting Relays)

ในการต่ออุปกรณ์กินไฟเยอะอย่าง พัดลม, ปั๊มน้ำ, และพ่นหมอก เราจะนำสายไปต่อผ่านขั้ว NO (Normally Open) และ COM ของรีเลย์ครับ เพื่อให้ค่าเริ่มต้นของอุปกรณ์ทุกตัวคือ "ปิด" (ปลอดภัยไว้ก่อน) และจะทำงานก็ต่อเมื่อ ESP32 สั่งทริกเกอร์เท่านั้น ส่วนไฟ LED WS2812B ต่อตรงเข้าบอร์ด ESP32 ได้เลยไม่ต้องผ่านรีเลย์ครับ

Relay Connection 1
Relay Connection 2 Relay Connection 3 Relay Connection 4 Relay Connection 5 Relay Connection 6 Relay Connection 7

Step 6: ประกอบทุกอย่างลงตู้ปลา (Installing Everything in Aquarium)

เจาะรูด้านข้างตู้ปลาเพื่อติดพัดลมเป่าอากาศ ติดตั้งไฟ LED วงแหวนไว้ด้านบน (จะห้อยหรือแปะฝาก็ได้) ส่วนเซนเซอร์วัดดินก็ปักลงดินไปเลยครับ ข้อควรระวัง: เอาวงจรและบอร์ดควบคุมหลักไว้ "นอกตู้" นะครับ อุปกรณ์อิเล็กทรอนิกส์กับความชื้นไม่ถูกกันอย่างแรง ลอง Test รันระบบแห้งดูก่อนจะยิงซิลิโคนปิดผนึกนะครับ

Aquarium Assembly 1
Aquarium Assembly 2 Aquarium Assembly 3 Aquarium Assembly 4 Aquarium Assembly 5 Aquarium Assembly 6

Step 7: อัปโหลดโค้ดลง ESP32 (Programming)

Programming ESP32

โหลดโค้ดโปรเจกต์ทั้งหมดได้จาก Github Repository แตกไฟล์ .zip แล้วเปิดไฟล์ .ino ด้วย Arduino IDE ครับ

การตั้งค่า Arduino IDE:
ไปที่ File → Preferences ใส่ลิงก์ https://dl.espressif.com/dl/package_esp32_index.json แล้วไปโหลดบอร์ด ESP32 มาลง จากนั้นลง Library ที่จำเป็น (Adafruit GFX, SSD1306, NeoPixel, DHT)

C/C++ (WiFi & Time Setup)
// ก่อนกด Upload ให้แก้ชื่อ WiFi และรหัสผ่านในโค้ดก่อนนะครับ
const char* WIFI_SSID = "YourWiFiName";
const char* WIFI_PASS = "YourWiFiPassword";
const char* NTP_SERVER = "pool.ntp.org";
const long GMT_OFFSET = 19800; // ตั้งค่า Timezone ของไทยคือ UTC+7 (25200) นะครับ
const int DST_OFFSET = 0;

Step 8: เจาะลึก Web Dashboard

เมื่อ ESP32 ต่อเน็ตติด มันจะโชว์ IP Address ขึ้นมาบนจอ OLED (เช่น http://10.112.43.248) เอาเลขนี้ไปพิมพ์ในเบราว์เซอร์มือถือหรือคอมพิวเตอร์ที่ต่อ Wi-Fi วงเดียวกันได้เลยครับ ในหน้าเว็บจะมีเมนู:

  • Overview: ดูค่าเรียลไทม์ และมี Banner แจ้งเตือนฉุกเฉิน
  • Controls: ปุ่มสลับโหมด AUTO/MANUAL และปุ่มเปิด/ปิด อุปกรณ์รายตัว
  • Thresholds: ไว้ตั้งค่าตัวเลขจุดทริกเกอร์ต่างๆ (ตั้งอุณหภูมิ, ความชื้น, ดิน)
  • Schedule: ตั้งเวลาพ่นหมอกแบบ Fix เวลา (เหมาะกับพืชที่ชอบหมอกเป็นช่วงเวลา)
  • Graphs: กราฟย้อนหลัง ช่วยให้เราวิเคราะห์เทรนด์และตั้งค่า Threshold ได้แม่นยำขึ้น
Dashboard Overview
Dashboard Temp Dashboard Soil Dashboard Humidity Dashboard Menu Dashboard Thresholds Dashboard Schedule

Step 9: ทดสอบระบบ (Testing) & ดาวน์โหลดไฟล์

หลังจากประกอบเสร็จและรันระบบมาสักพัก บอกเลยว่าเวิร์กมากครับ! ผมแทบไม่ต้องคอยมาเช็คหรือพ่นน้ำให้ต้นไม้เลย ระบบมันจัดการตัวเองได้หมด แค่เปิดดู Dashboard เป็นครั้งคราวเพื่อความชัวร์ก็พอ

Dashboard Graphs Testing 1
Testing 2 Testing 3 Testing 4

ดาวน์โหลดไฟล์โปรเจกต์ทั้งหมด:

  • ไฟล์ 3D โมเดลเครื่องพ่นหมอก: aromizer.stl
  • ผังวงจร Schematic ฉบับเต็ม: Schematics Image
  • Source Code สำหรับอัปโหลด ESP32: Download Code (ZIP)

อ้างอิงข้อมูลจาก: Globalbyteshop Blog

ต้นฉบับโปรเจกต์โดย: rau7han | Original Link

*คำเตือน: เนื้อหานี้เป็นการสรุปและเรียบเรียงจากโปรเจกต์ต้นฉบับภาษาอังกฤษ ข้อมูลและโค้ดฉบับภาษาไทยอาจมีการปรับคำอธิบายเพื่อให้เข้าใจง่าย สามารถตรวจสอบข้อมูลเชิงเทคนิคและไฟล์ต้นฉบับอย่างละเอียดได้ที่ ต้นฉบับภาษาอังกฤษ

 

แท็ก


Blog posts

เข้าสู่ระบบ

ลืมรหัสผ่านใช่ไหม?

ยังไม่มีบัญชีใช่ไหม?
สร้างบัญชี