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

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

จอ LCD (LiquidCrystal_I2C)
- หน้าที่: เอาไว้แสดงค่าอุณหภูมิที่วัดได้
- การต่อขา: ตั้งค่า I2C address เป็น 0x27 สำหรับจอแบบ 16x2 ตัวอักษร
- การตั้งค่าเริ่มต้น: เริ่มทำงานในฟังก์ชัน setup() และตั้งค่าให้แสดงข้อความในตำแหน่งที่กำหนดบนจอ
เซนเซอร์วัดอุณหภูมิ (LM35)
- หน้าที่: วัดอุณหภูมิโดยรอบ
- การต่อขา: ต่อกับขาแอนะล็อก A3
- วิธีการอ่านค่า: แปลงค่าที่อ่านได้จากแอนะล็อกเป็นแรงดันไฟฟ้า แล้วจึงแปลงเป็นอุณหภูมิหน่วยเซลเซียส
เซนเซอร์ DHT11
- หน้าที่: วัดอุณหภูมิและความชื้น
- การต่อขา: ต่อกับขาดิจิตอลหมายเลข 2
- ไลบรารีที่ใช้: ใช้ไลบรารี DHT [sensor](https://s.shopee.co.th/7VBG2rX65j) เพื่อให้เชื่อมต่อและอ่านค่าง่ายขึ้น
- วิธีการอ่านค่า: ใช้ฟังก์ชันจากไลบรารีเพื่อดึงค่าอุณหภูมิ
- ตัวบัซเซอร์
- หน้าที่: เล่นเมโลดี้ (เพลงธีม Tetris) เมื่อถึงเงื่อนไขบางอย่าง
- การต่อขา: ต่อกับขาแอนะล็อก A1
- การทำงาน: บัซเซอร์จะเล่นเพลงธีม Tetris โดยใช้ความถี่และความยาวของโน้ตที่กำหนดไว้ล่วงหน้า
LED
- หน้าที่: แสดงเงื่อนไขด้วยแสง (เห็นชัดเจนดี)
- การต่อขา: ต่อกับขาดิจิตอลหมายเลข 13
- การทำงาน: จะติดเมื่อได้รับข้อความผ่าน Serial ถึงจำนวนที่กำหนด
การสื่อสารผ่าน Serial
- หน้าที่: รับข้อความที่มากระตุ้นให้ระบบทำงานบางอย่าง
- การตั้งค่า: เริ่มต้นที่อัตราบอด 9600

การทำงานของโค้ด
ฟังก์ชัน Setup
- เตรียมการเริ่มต้นสำหรับ LCD, ตั้งค่าขาสำหรับบัซเซอร์และ LED, และรอให้เซนเซอร์ทำงานเสถียร
- เริ่มต้นการสื่อสารผ่าน Serial
- ฟังก์ชัน Loop
- อ่านค่าอุณหภูมิจากเซนเซอร์ LM35 และ DHT11 อย่างต่อเนื่อง
- แสดงค่าอุณหภูมินั้นๆ บนจอ LCD
- ตรวจสอบว่าค่าอุณหภูมิเริ่มต้นจากเซนเซอร์ LM35 ลดลง 20% หรือไม่ ถ้าลดก็ให้เล่นเพลงธีม Tetris
- ตรวจสอบข้อความที่เข้ามาผ่าน Serial นับจำนวนข้อความ และกระตุ้นให้บัซเซอร์กับ LED ทำงานถ้าได้รับมากกว่า 20 ข้อความ
- ฟังก์ชันอ่านอุณหภูมิ
readTemperature(): อ่านและแปลงค่าจากเซนเซอร์ LM35 เป็นค่าอุณหภูมิ
readDHTTemperature(): อ่านค่าอุณหภูมิจากเซนเซอร์ DHT11 โดยใช้ฟังก์ชันจากไลบรารี
- การเล่นเสียงเพลง
- playTetrisTheme(): เก็บลำดับของโน้ตและความยาวของเสียงสำหรับเพลงธีม Tetris ใช้บัซเซอร์เล่นเมโลดี้
- การจัดการข้อความ Serial
- นับจำนวนข้อความที่ได้รับผ่านพอร์ต Serial
- ถ้าจำนวนเกิน 20 ระบบจะเล่นเพลงธีม Tetris และให้ LED กะพริบเพื่อบอกให้รู้
ระบบตรวจจับการเคลื่อนไหวจากแล็ปท็อป
สคริปต์ Python นี้ใช้ OpenCV ในการจับภาพจากเว็บแคมและตรวจจับการเคลื่อนไหวโดยเปรียบเทียบเฟรมภาพที่ต่อเนื่องกัน เมื่อตรวจพบการเคลื่อนไหว มันจะส่งสัญญาณ ('1') ไปยัง Arduino ผ่านการสื่อสาร Serial ที่อัตราบอด 9600 สคริปต์จะประมวลผลเฟรมวิดีโอในโหมด Grayscale, ใช้ Gaussian Blur เพื่อลด Noise, คำนวณความแตกต่างระหว่างเฟรม, และใช้ Contour Detection เพื่อระบุการเคลื่อนไหว วิธีนี้ทำให้ Arduino ตอบสนองเฉพาะเมื่อมีการเคลื่อนไหวจริงๆ ทำให้ระบบมีประสิทธิภาพและตอบสนองเร็ว
ซอฟต์แวร์ตรวจจับการเคลื่อนไหวสุดท้าย:

การทดสอบและการตรวจสอบความถูกต้อง
เราใช้โมเดล Linear Regression เพื่อให้มั่นใจในความแม่นยำและความน่าเชื่อถือของระบบตรวจจับ โมเดลนี้ถูกใช้เพื่อวิเคราะห์ข้อมูลที่เก็บรวบรวมจากการทดสอบหลายครั้งที่ทำในช่อง YouTube การทดสอบทำทั้งหมด 5 ครั้ง เพื่อตรวจสอบการตอบสนองของระบบต่อเงื่อนไขต่อไปนี้:
การลดลงของอุณหภูมิ (ใช้ในโค้ด Arduino เพื่อกระตุ้น)
- ระบบติดตามเปอร์เซ็นต์การเปลี่ยนแปลงของอุณหภูมิจากค่าที่อ่านได้เริ่มต้น
- การลดลงของอุณหภูมิ 20% จะกระตุ้นให้บัซเซอร์เล่นเพลงธีม Tetris
- การนับข้อความ Serial
- ระบบนับจำนวนข้อความ Serial ที่ได้รับ
- เมื่อได้รับข้อความมากกว่า 20 ข้อความ บัซเซอร์จะเล่นเพลงธีม Tetris และ LED จะกะพริบ
วาฟเฟิลเริ่มโค้งงอได้ดีแต่ยังคงรูปอยู่ ศูนย์กลางเริ่มนิ่มและเคลื่อนไหวได้ ความร้อนจากเครื่องดื่มซึมผ่านวาฟเฟิลทั้งชิ้น ในวิดีโอ พี่สร้างตารางจาก 6 ครั้ง

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

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