กลับไปหน้ารวมไฟล์
waffle-detection-system-the-perfect-time-to-leave-a-stroopwafel-ef9b4c.md

มาเริ่มกันเลย!

รายงานนี้จะเล่าให้ฟังว่าระบบตรวจจับ Stroopwafel ที่ใช้ [Arduino](https://s.shopee.co.th/7fUgFAWSki) ทำงานยังไงบ้าง ระบบนี้ใช้เซนเซอร์และอุปกรณ์หลายตัวเพื่อตรวจจับเงื่อนไขเฉพาะเจาะจง แล้วตอบสนองออกมาให้เห็นเลย ส่วนประกอบหลักก็มีเซนเซอร์วัดอุณหภูมิ (LM35), เซนเซอร์วัดอุณหภูมิและความชื้น DHT11, จอ [LCD](https://s.shopee.co.th/6AfsSPcAnb), ตัวบัซเซอร์ และ LED เอาไว้แจ้งเตือนนั่นเอง เราเอาเว็บแคมจากแล็ปท็อปมาวัดการเคลื่อนไหวของวาฟเฟิลด้วย เพื่อดูว่ามันนิ่มยวบยาบแค่ไหนแล้ว แล้วก็ยังใช้โมเดล Linear Regression มาช่วยยืนยันประสิทธิภาพของระบบผ่านการทดสอบหลายๆ รอบด้วย งานนี้พี่ทำวิดีโออธิบายเต็มๆ ไว้ใน YouTube เลย ไปดูกันได้ว่าทดสอบอะไรยังไงบ้าง

ตัวอย่างตอนพี่ทดสอบของจริงจ้า

อุปกรณ์และการตั้งค่า

จุดต่อเซนเซอร์สำหรับแต่ละชิ้นส่วน

จอ LCD (LiquidCrystal_I2C)

  1. หน้าที่: เอาไว้แสดงค่าอุณหภูมิที่วัดได้
  2. การต่อขา: ตั้งค่า I2C address เป็น 0x27 สำหรับจอแบบ 16x2 ตัวอักษร
  3. การตั้งค่าเริ่มต้น: เริ่มทำงานในฟังก์ชัน setup() และตั้งค่าให้แสดงข้อความในตำแหน่งที่กำหนดบนจอ

เซนเซอร์วัดอุณหภูมิ (LM35)

  1. หน้าที่: วัดอุณหภูมิโดยรอบ
  2. การต่อขา: ต่อกับขาแอนะล็อก A3
  3. วิธีการอ่านค่า: แปลงค่าที่อ่านได้จากแอนะล็อกเป็นแรงดันไฟฟ้า แล้วจึงแปลงเป็นอุณหภูมิหน่วยเซลเซียส

เซนเซอร์ DHT11

  1. หน้าที่: วัดอุณหภูมิและความชื้น
  2. การต่อขา: ต่อกับขาดิจิตอลหมายเลข 2
  3. ไลบรารีที่ใช้: ใช้ไลบรารี DHT [sensor](https://s.shopee.co.th/7VBG2rX65j) เพื่อให้เชื่อมต่อและอ่านค่าง่ายขึ้น
  4. วิธีการอ่านค่า: ใช้ฟังก์ชันจากไลบรารีเพื่อดึงค่าอุณหภูมิ
  1. ตัวบัซเซอร์
  2. หน้าที่: เล่นเมโลดี้ (เพลงธีม Tetris) เมื่อถึงเงื่อนไขบางอย่าง
  3. การต่อขา: ต่อกับขาแอนะล็อก A1
  4. การทำงาน: บัซเซอร์จะเล่นเพลงธีม Tetris โดยใช้ความถี่และความยาวของโน้ตที่กำหนดไว้ล่วงหน้า

LED

  1. หน้าที่: แสดงเงื่อนไขด้วยแสง (เห็นชัดเจนดี)
  2. การต่อขา: ต่อกับขาดิจิตอลหมายเลข 13
  3. การทำงาน: จะติดเมื่อได้รับข้อความผ่าน Serial ถึงจำนวนที่กำหนด

การสื่อสารผ่าน Serial

  1. หน้าที่: รับข้อความที่มากระตุ้นให้ระบบทำงานบางอย่าง
  2. การตั้งค่า: เริ่มต้นที่อัตราบอด 9600

การทำงานของโค้ด

ฟังก์ชัน Setup

  1. เตรียมการเริ่มต้นสำหรับ LCD, ตั้งค่าขาสำหรับบัซเซอร์และ LED, และรอให้เซนเซอร์ทำงานเสถียร
  2. เริ่มต้นการสื่อสารผ่าน Serial
  3. ฟังก์ชัน Loop
  4. อ่านค่าอุณหภูมิจากเซนเซอร์ LM35 และ DHT11 อย่างต่อเนื่อง
  5. แสดงค่าอุณหภูมินั้นๆ บนจอ LCD
  6. ตรวจสอบว่าค่าอุณหภูมิเริ่มต้นจากเซนเซอร์ LM35 ลดลง 20% หรือไม่ ถ้าลดก็ให้เล่นเพลงธีม Tetris
  7. ตรวจสอบข้อความที่เข้ามาผ่าน Serial นับจำนวนข้อความ และกระตุ้นให้บัซเซอร์กับ LED ทำงานถ้าได้รับมากกว่า 20 ข้อความ
  8. ฟังก์ชันอ่านอุณหภูมิ

readTemperature(): อ่านและแปลงค่าจากเซนเซอร์ LM35 เป็นค่าอุณหภูมิ

readDHTTemperature(): อ่านค่าอุณหภูมิจากเซนเซอร์ DHT11 โดยใช้ฟังก์ชันจากไลบรารี

  1. การเล่นเสียงเพลง
  2. playTetrisTheme(): เก็บลำดับของโน้ตและความยาวของเสียงสำหรับเพลงธีม Tetris ใช้บัซเซอร์เล่นเมโลดี้
  3. การจัดการข้อความ Serial
  4. นับจำนวนข้อความที่ได้รับผ่านพอร์ต Serial
  5. ถ้าจำนวนเกิน 20 ระบบจะเล่นเพลงธีม Tetris และให้ LED กะพริบเพื่อบอกให้รู้

ระบบตรวจจับการเคลื่อนไหวจากแล็ปท็อป

สคริปต์ Python นี้ใช้ OpenCV ในการจับภาพจากเว็บแคมและตรวจจับการเคลื่อนไหวโดยเปรียบเทียบเฟรมภาพที่ต่อเนื่องกัน เมื่อตรวจพบการเคลื่อนไหว มันจะส่งสัญญาณ ('1') ไปยัง Arduino ผ่านการสื่อสาร Serial ที่อัตราบอด 9600 สคริปต์จะประมวลผลเฟรมวิดีโอในโหมด Grayscale, ใช้ Gaussian Blur เพื่อลด Noise, คำนวณความแตกต่างระหว่างเฟรม, และใช้ Contour Detection เพื่อระบุการเคลื่อนไหว วิธีนี้ทำให้ Arduino ตอบสนองเฉพาะเมื่อมีการเคลื่อนไหวจริงๆ ทำให้ระบบมีประสิทธิภาพและตอบสนองเร็ว

ซอฟต์แวร์ตรวจจับการเคลื่อนไหวสุดท้าย:

โค้ด Python สำหรับตรวจจับการเคลื่อนไหว

การทดสอบและการตรวจสอบความถูกต้อง

เราใช้โมเดล Linear Regression เพื่อให้มั่นใจในความแม่นยำและความน่าเชื่อถือของระบบตรวจจับ โมเดลนี้ถูกใช้เพื่อวิเคราะห์ข้อมูลที่เก็บรวบรวมจากการทดสอบหลายครั้งที่ทำในช่อง YouTube การทดสอบทำทั้งหมด 5 ครั้ง เพื่อตรวจสอบการตอบสนองของระบบต่อเงื่อนไขต่อไปนี้:

การลดลงของอุณหภูมิ (ใช้ในโค้ด Arduino เพื่อกระตุ้น)

  1. ระบบติดตามเปอร์เซ็นต์การเปลี่ยนแปลงของอุณหภูมิจากค่าที่อ่านได้เริ่มต้น
  2. การลดลงของอุณหภูมิ 20% จะกระตุ้นให้บัซเซอร์เล่นเพลงธีม Tetris
  3. การนับข้อความ Serial
  4. ระบบนับจำนวนข้อความ Serial ที่ได้รับ
  5. เมื่อได้รับข้อความมากกว่า 20 ข้อความ บัซเซอร์จะเล่นเพลงธีม Tetris และ LED จะกะพริบ

วาฟเฟิลเริ่มโค้งงอได้ดีแต่ยังคงรูปอยู่ ศูนย์กลางเริ่มนิ่มและเคลื่อนไหวได้ ความร้อนจากเครื่องดื่มซึมผ่านวาฟเฟิลทั้งชิ้น ในวิดีโอ พี่สร้างตารางจาก 6 ครั้ง

คำตอบสำหรับเวลาที่ดีที่สุดจากการทดสอบควบคุมของพี่อยู่ด้านล่างนี้

สรุปงานนี้

ระบบตรวจจับ Stroopwafel นี้เป็นโปรเจกต์ที่รวมหลายอย่างเข้าด้วยกัน ทั้งการตรวจสอบอุณหภูมิ, การให้ข้อมูลย้อนกลับผ่าน LCD, และการแจ้งเตือนด้วยเสียง/แสง การผสานรวมเซนเซอร์และอุปกรณ์เอาต์พุตหลายตัวแสดงให้เห็นถึงความสามารถในการสร้างระบบที่มีปฏิสัมพันธ์และตอบสนองได้ การทำงานหลักอยู่บนพื้นฐานของการเฝ้าติดตามการเปลี่ยนแปลงของอุณหภูมิและการตอบสนองต่ออินพุตจากภายนอกผ่านการสื่อสาร Serial ซึ่งรับประกันกลไกการตรวจจับและการแจ้งเตือนที่แข็งแกร่ง

การนำโมเดล Linear Regression มาใช้เพื่อตรวจสอบความถูกต้องของระบบ เพิ่มชั้นความน่าเชื่อถือเข้าไป ประสิทธิภาพของระบบในการตรวจจับเงื่อนไขที่กำหนดได้รับการยืนยันโดยการทดสอบโค้ดห้าครั้งและวิเคราะห์ผลลัพธ์ วิธีการทดสอบที่เข้มงวดนี้ทำให้มั่นใจว่าระบบตรวจจับ Stroopwafel ทำงานได้อย่างแม่นยำและสม่ำเสมอในการใช้งานจริง ไปดูวิดีโอเต็มๆ กันได้!

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

title: "Waffle Detection System - The PERFECT time to leave a Stroopwafel"
description: "Finding the perfect time to leave a stroopwaffel or any dessert on a coffee to enjoy warm!"
author: "eamonmag"
category: "Home & Automation"
tags:
  - "Food And Drinks"
  - "Audio"
  - "Monitoring"
views: 687
likes: 0
price: 1499
difficulty: "Easy"
components:
  - "1x laptop"
  - "1x DHT11 sensor"
  - "1x 20x4 LCD"
  - "1x Passive Buzzer"
tools: []
apps:
  - "1x python"
downloadableFiles: []
documentationLinks: []
passwordHash: "d7eaf3b90f93dda63a904acf5c00c92aed5f0fac92e633eb8eb0003ec0ea739e"
encryptedPayload: "U2FsdGVkX18olnSuByuUqfa7Sc7EHADy42Btfl/o5FepwR/MaeKi61AcsI/8Wi3GHetYILQf3AyCdPcDKDrcHA=="
seoDescription: "Waffle Detection System: Find the perfect time to warm your Stroopwafel or dessert over coffee using Arduino and sensors."
videoLinks:
  - "https://youtu.be/FuxpXlFtaQE?si=OF5lVsZUYg-FGl0g"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/waffle-detection-system-the-perfect-time-to-leave-a-stroopwafel-ef9b4c_cover.gif"
lang: "th"