ในโปรเจกต์นี้ พี่ได้ทำกระถางต้นไม้อัจฉริยะที่สามารถแสดงอารมณ์ของต้นไม้ได้ด้วยนะ 😜 มันใช้เซ็นเซอร์วัดความชื้นในดิน (Soil Moisture Sensor) เพื่อตรวจสอบความชื้น จากนั้นก็แสดงสีหน้าอารมณ์ตามระดับความชื้นนั้นๆ อย่างที่เรารู้กันว่าต้นไม้ต้องการน้ำเพื่อมีชีวิต น้ำก็เหมือนอาหารของมัน ดังนั้นไอเดียนี้ก็ดูเข้าท่าดีอยู่ 😋 เป็นโปรเจกต์เล็กๆ น่ารักๆ ที่ทั้งสนุกและช่วยให้เราตรวจสอบระดับความชื้นในกระถางได้ด้วยตาเปล่าเลย
กระถางนี้จะแสดงสีหน้าอารมณ์ที่แตกต่างกันไปตามระดับน้ำในดิน
หลังจากทำโปรเจกต์นี้เสร็จ น้องจะได้เรียนรู้-
- วิธีใช้เซ็นเซอร์วัดความชื้นในดินและอ่านข้อมูลอนาล็อกผ่าน Arduino ADC
- วิธีแสดงรูปภาพบนจอ OLED
- วิธีทำอนิเมชันและแสดงผลบนจอ OLED โดยใช้ Arduino
ส่วนฮาร์ดแวร์ (Hardware)
ในการทำโปรเจกต์นี้ อันดับแรกเราต้องมีกระถางต้นไม้ก่อน พี่ออกแบบกระถางที่มีช่องสำหรับใส่อุปกรณ์อิเล็กทรอนิกส์โดยใช้ Fusion 360 ถ้าน้องมีเครื่องพิมพ์ 3D ก็สามารถพิมพ์เองได้เลย แต่ถ้าไม่มีก็ไม่ต้องกังวล! น้องสามารถใช้กระถางต้นไม้ทั่วไป แล้วทำกล่องแยกสำหรับใส่อุปกรณ์อิเล็กทรอนิกส์ก็ได้







สำหรับส่วนอิเล็กทรอนิกส์ ให้ต่อสายดังนี้-
- Arduino A5 ไปที่ OLED SCL
- Arduino A4 ไปที่ OLED SDA
- Arduino A0 ไปที่ Soil moisture sensor Ao
ฮาร์ดแวร์แห่งอารมณ์: The EmoPot Dash
EmoPot นี่คือการทดลองที่เจ๋งมากในเรื่องปฏิสัมพันธ์ระหว่างมนุษย์กับคอมพิวเตอร์ (HCI) แทนที่จะรายงานข้อมูลดิบแบบแห้งๆ ("ความชื้นดิน = 340") มันแปลงข้อมูลสภาพแวดล้อมให้เป็นอารมณ์ของมนุษย์แทน มันเอาแนวคิด "ระบบรดน้ำอัตโนมัติ" มาทำให้กลายเป็นเพื่อนเล่นตั้งโต๊ะไปเลย
การสร้างใบหน้าแบบดิจิทัล
โปรเจกต์นี้ใช้จอแสดงผล เช่น MAX7219 8x8 Dot Matrix หรือจอ OLED สำหรับ Dot Matrix มันมี LED ขนาดเล็ก 64 ดวงอยู่ข้างใน เราบอกไลบรารี่ให้วาด "Happy" ตรงๆ ไม่ได้ ต้องใช้ byte array มาวาดทีละบล็อกแทน ตัวอย่างเช่น:
byte happyFace[8] = { 0x3C, 0x42, 0xA5, 0x81, 0xA5, 0x99, 0x42, 0x3C };
ตรรกะการทำงาน: โค้ดจะอ่านค่าจากเซ็นเซอร์แล้วแมปค่าไปยังสีหน้าที่เหมาะสม
if (moisture < 300): ดินแฉะเกินไป! ต้นไม้กำลังจะจมน้ำตายแล้ววว แสดงหน้าโกรธจัดไปเลยif (moisture > 400 && moisture < 600): ระดับความชื้นเพอร์เฟกต์ แสดงหน้ายิ้มแป้น สบายใจif (moisture > 800): ดินแห้งตับแตกเลย แสดงหน้าท้อแท้หรือตาเหม่อลอย
การเพิ่มอินเตอร์แอคทีฟด้วย Capacitive Touch (อัพเกรดเสริม)
ถ้าอยากให้มันเป็นสัตว์เลี้ยงดิจิทัลจริงๆ น้องสามารถเพิ่มความสามารถในการโต้ตอบได้
- ติดเทปทองแดงรอบขอบกระถาง แล้วต่อสายไปที่ขา Digital Pin หนึ่งขา
- ใช้ไลบรารี
<CapacitiveSensor.h>ทำให้ Arduino ตรวจจับได้ว่ามือคนเข้าใกล้หรือสัมผัสเทปทองแดง - ถ้าน้อง "ลูบ" ต้นไม้ Arduino จะสามารถข้ามลอจิกของเซนเซอร์ชั่วคราว บังคับให้หน้าจอแสดงไอคอน
Heartและส่งเสียงปี๊บๆ แฮปปี้จากเพียโซบัซเซอร์ได้! เอาใจสุดๆ
อุปกรณ์ที่ต้องจัด
- Arduino Nano (ตัวเล็ก ติดกระถางได้ง่าย)
- โมดูล MAX7219 8x8 Dot Matrix หรือจอ OLED ขนาดเล็กแบบ I2C
- เซนเซอร์วัดความชื้นในดินแบบ Capacitive
- เพียโซบัซเซอร์ สำหรับเสียงตอบรับ (ใส่ก็ได้ ไม่ใส่ก็อยู่)
- กระถางพลาสติกที่พิมพ์จากเครื่อง 3D พริ้นท์หรือดัดแปลงแล้ว โดยเจาะช่องสี่เหลี่ยมสำหรับจอภาพ ตามที่เห็นในรูปด้านบน
โค้ดดิ้ง (Coding)
โค้ดอาจดูรกๆ แต่มันง่ายมากเวอร์! ตอนเริ่มโค้ด พี่จะ include ไลบรารีบางตัวเข้าไป (น้องอาจต้องดาวน์โหลดไลบรารีพวกนี้มาก่อน)
- Adafruit_GFX.h
- Adafruit_SSD1306.h
หลังจากเพิ่มไลบรารีแล้ว พี่ก็สร้างฟังก์ชันสำหรับทุกเฟรมของอนิเมชัน สำหรับทุกอารมณ์ที่แสดงออกมา(เชื่อพี่ มันใช้เวลานานเป็นชาติ) ในส่วน setup พี่ก็เริ่มต้นการทำงานของจอภาพ ส่วนใน loop พี่อ่านค่าจากเซนเซอร์แบบ analog sensorValue = analogRead(A0); แล้วก็ตั้งเงื่อนไขสำหรับระดับความชื้นที่ต่างกัน และแสดงเฟรมอนิเมชันที่ตรงกับอารมณ์นั้นๆ