กลับไปหน้ารวมไฟล์
emopot-a-plant-pot-that-can-show-a-plants-emotions-fae3c9.md

ในโปรเจกต์นี้ พี่ได้ทำกระถางต้นไม้อัจฉริยะที่สามารถแสดงอารมณ์ของต้นไม้ได้ด้วยนะ 😜 มันใช้เซ็นเซอร์วัดความชื้นในดิน (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); แล้วก็ตั้งเงื่อนไขสำหรับระดับความชื้นที่ต่างกัน และแสดงเฟรมอนิเมชันที่ตรงกับอารมณ์นั้นๆ

นี่คือวิดีโอตัวอย่างแสดงอารมณ์ต่างๆ ตามระดับความชื้น

ร้องไห้
เศร้า
เฉยๆ
สุขใจ
Happy



ข้อมูล Frontmatter ดั้งเดิม

apps:
  - "1x Arduino IDE"
author: "abid_hossain"
category: "Sensors & Environment"
components:
  - "1x Gravity: Analog Soil Moisture Sensor For Arduino"
  - "1x 3D Printer (generic)"
  - "1x 0.96\" I2C OLED Display"
  - "1x Soldering iron (generic)"
  - "1x Arduino Nano R3"
description: "Tamagotchi for your plants! Transform a boring clay pot into an interactive digital pet using a massive 8x8 LED matrix to display smiling or frowning faces based on soil moisture."
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles:
  - "https://projects.arduinocontent.cc/9ea8e679-c735-4858-b30a-88ba3a30e50e.ino"
  - "https://projects.arduinocontent.cc/9ea8e679-c735-4858-b30a-88ba3a30e50e.ino"
encryptedPayload: "U2FsdGVkX181O1oHHJzLUEIuMLt5Wf1syPbxMbHpJM6iwZcaORliLTCcxqiPmTlPVCApRdmlDO0Rnm6vgI7ih+cMht+kEAQZLEDYjKbcdgs="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/emopot-a-plant-pot-that-can-show-a-plants-emotions-fae3c9_cover.jpg"
lang: "en"
likes: 29
passwordHash: "360367818201ecb1cf437945fa28f309b54f21d05c7c270b7cc5dc338de0d76e"
price: 2450
seoDescription: "EmoPot is a Smart Plant Pot that shows plant emotions using sensors and animations. Monitor your plant condition with emotional expressions."
tags:
  - "sensor"
  - "plant emotion"
  - "animation on oled"
  - "plant pot"
title: "EmoPot - A Plant Pot That Can Show a Plant's Emotions"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/EQx_4L6r3dc"
  - "https://www.youtube.com/embed/mwVGqqVHtW0"
  - "https://www.youtube.com/embed/cVHB82FVvT0"
  - "https://www.youtube.com/embed/lqe9fuV9-HM"
  - "https://www.youtube.com/embed/AqdQTLdAHqM"
  - "https://www.youtube.com/embed/nHpWQJg-m48"
views: 32070