ชื่อโปรเจกต์: NoRats 1.0
ก่อนอื่นเลย ขอบใจมากน้องที่แวะมาดูโปรเจกต์ของพวกพี่! เดี๋ยวจะเหลาให้ฟังว่ากว่าจะออกมาเป็นตัวนี้ได้ พวกพี่ผ่านอะไรกันมาบ้าง
ที่มาที่ไป (Background)
ในอินโดนีเซียบ้านพี่เนี่ย ปัญหาหนูบุกบ้านมันเรื่องปกติเลยน้อง โดยเฉพาะบ้านเก่าๆ หนึ่งในสมาชิกทีมพี่ปกติจะวางกรงดักหนูเหล็กแบบใช้เหยื่อล่อไว้ตามมุมบ้านที่หนูชอบวิ่งผ่าน ปัญหาก็คือ บางทีไอ้เจ้าหนูมันก็แค่เดินเข้าไปเดินเล่นในกรงแต่ไม่ยอมแตะอาหาร (สงสัยมันไม่หิว หรืออาหารไม่ถูกปากมั้ง) แล้วกรงแบบเดิมมันจะปิดก็ต่อเมื่อมีอะไรไปขยับตัวเหยื่อเท่านั้น ผลคือหนูเดินเข้าออกสบายใจเฉิบ ไม่โดนจับสักที
พี่ก็เลยตัดสินใจว่าไม่ได้การละ ต้องเอา [Sensor](https://s.shopee.co.th/7VBG2rX65j) มาใส่กรงซะหน่อย เพื่อให้มั่นใจว่าถ้าหนูโผล่หน้าเข้ามาเมื่อไหร่ ประตูต้องปิดปั้งทันที! มาดูวิธีทำกันเลยน้อง
อุปกรณ์ที่ต้องใช้ (Hardware Component)
จัดไปวัยรุ่น เตรียมของตามนี้:
- 1x [Arduino](https://s.shopee.co.th/7fUgFAWSki) UNO
- 1x Bread Board
- 1x ESP-01 Wi-Fi Module
- 1x 1k ohm Resistor
- 1x 2.2 ohm Resistor
- 1x [Servo](https://s.shopee.co.th/7fUgFAWSki) Motor
- 1x IR Obstacle Sensor
- 1x Power Bank (เอาไว้จ่ายไฟให้ระบบ)
Blynk
ตัวช่วยชีวิตในโปรเจกต์นี้คือ Blynk เลยน้อง เพราะมันทำให้เราทำ Prototype ได้เร็วมาก ไม่ต้องไปนั่งเขียนโค้ดทำ Server หรือปั้น Mobile App เองให้ปวดตับ แค่ใช้ API ของเขาเชื่อม Arduino เข้ากับแอปฯ ก็หล่อเท่แล้ว
การเลือก Sensor
ตอนแรกพี่กะจะใช้ [PIR](https://s.shopee.co.th/7VBG2YelxK) Motion Sensor ตรวจจับความเคลื่อนไหว แต่ไม่รู้ทำบุญมาไม่พอหรือไง ตัวที่สั่งมามันดันเจ๊ง! ตอนนั้นในมือเหลือแค่ IR Obstacle Sensor ตัวเดียว พี่เลยต้องใช้แก้ขัดไปก่อน แต่มันก็ใช้ได้ดีเหมือนกันนะน้อง
เจ้า IR Obstacle Sensor คืออะไร? หลักการมันง่ายมากน้อง มีตัวส่ง IR Emitter กับตัวรับ IR Receiver ถ้าไอ้ตัวรับมันตรวจเจอแสงสะท้อนจากวัตถุ มันจะส่งค่าเป็น 0 แต่ถ้าไม่มีอะไรบังก็เป็น 1 ทีนี้พอหนูวิ่งผ่าน ตัวมันก็จะสะท้อนแสง IR แล้วไปกระตุกให้ประตูปิดนั่นเอง
กลไกการดักจับ (Trapping Mechanism)
พอเลือก Sensor ได้แล้ว ก็มาออกแบบการทำงานกันหน่อย ส่วน Schematic กับ Code เดี๋ยวพี่แปะไว้ให้ข้างล่างนะ แต่อ่านหลักการก่อน
ตัว IR Sensor จะมี 3 Pins คือ 5V, Ground (GND) และ Data อย่างที่บอกไปน้อง ถ้ามันเจออะไรขวาง ค่าจะเป็น 0 แล้วเราจะเอาค่านี้นี่แหละไปสั่งงานตัวต่อไป
ตัวถัดมาคือ Servo Motor ที่เอาไว้ดึงเชือกดักประตู มี 3 Pins เหมือนกัน (5V, GND, Data) พี่จะเซ็ตให้ Servo อยู่ที่มุม 0 องศาก่อน แต่พอ Sensor ตรวจเจอหนูปุ๊บ พี่สั่งให้ Servo หมุนไปที่ 90 องศาทันที เพื่อดึงเชือกให้ประตูปิดล็อคตัวประกันไว้ข้างใน!
การสื่อสาร (Communication)
เรื่องการเชื่อมต่อ พี่เลือกใช้ ESP-01 จริงๆ มันคุม Sensor เองได้เลยนะ แต่ในโปรเจกต์นี้พี่เอามันมาทำหน้าที่เป็น Wi-Fi Module เพื่อคุยกับ Blynk Server เฉยๆ มันมี 8 Pins (3.3V, TX, RX, GND, Enable, Reset และ GPIO 2 ขา)
**คำเตือนสำคัญนะน้อง!** ขา Digital ของ Arduino มันปล่อยไฟออกมา 5V แต่ ESP-01 ของเรามันรับได้แค่ 3.3V ขืนเสียบตรงๆ ควันท่วมแน่ พี่เลยต้องใช้ Resistor มาทำ Voltage Divider เพื่อดรอปไฟลงมาเหลือ 3.3V ห้ามลืมเด็ดขาดนะน้อง ถ้าไม่อยากเห็น ESP บิน (ไหม้กลับดาวเห็บ)
อีกปัญหาคือ ESP-01 ตัวแรกที่พี่ได้มามันไม่มี AT Command มาให้ ทำให้มันคุยกับ Arduino ไม่รู้เรื่อง โชคดีที่สั่งมาสำรองอีกตัวที่มี AT Command พร้อมใช้พอดี ดังนั้นตอนสั่งเช็คให้ดีนะน้องว่ารองรับ AT Command ไหม
Software
อย่างที่บอกไป พี่ใช้ Blynk มาช่วยให้ชีวิตง่ายขึ้น ในแอปฯ Blynk เราแค่สร้างโปรเจกต์ใหม่ แล้วเอา API code ไปแปะในโค้ด Arduino ของเรา จากนั้นก็จัด Layout หน้าจอตามใจชอบเลย
หน้าตา Layout ที่พี่ทำเสร็จแล้วเป็นงี้:

ในนี้มี 4 ส่วนหลักๆ คือ ค่าจาก Sensor, มุมของ Servo, Virtual [LCD](https://s.shopee.co.th/6AfsSPcAnb) และปุ่ม Reset ตัว LCD จะคอยบอกสถานะว่า "Ready" หรือ "Not Ready" ถ้า Servo ไม่ได้อยู่ที่ 0 องศา มันจะขึ้นว่าไม่พร้อมทำงาน แต่ถ้าอยู่ 90 องศาเมื่อไหร่ ก็แสดงว่ากรงทำงานเสร็จแล้ว
ที่เด็ดคือระบบ Notification น้อง! พอ Sensor ตรวจเจออะไรบางอย่าง แล้ว Servo ขยับ มันจะเด้งแจ้งเตือนเข้ามือถือเราทันทีว่า "เฮ้ยน้อง มีหนูติดกับแล้ว!" เท่จัดเลยใช่ไหมล่ะ

สรุปผล (Conclusion)

รวมๆ แล้วโปรเจกต์นี้เวิร์กมากน้อง ตรวจจับได้แม่นยำดี แต่ต้องปรับจูนอีกนิด เพราะบางทีพวกแมลงบินผ่านหน้า Sensor มันก็แอบลั่นปิดประตูเองเหมือนกัน ขอบใจน้องๆ มากที่ตามอ่านจนจบ สู้งานนะน้อง!
รายละเอียดทางเทคนิคเพิ่มเติม (EXPANDED TECHNICAL DETAILS)
ตรรกะการไล่หนูด้วยคลื่นเสียง (Acoustic Pest Deterrent Logic)
NoRats 1.0 ไม่ได้มีแค่กรงดักนะน้อง แต่มันยังมีโหมดเครื่องไล่หนูพลัง Ultrasonic ที่เป็นมิตรกับสิ่งแวดล้อมด้วย โดยการใช้คลื่นความถี่ที่หนูเกลียดมาไล่มันออกไปจากสวนหรือโรงรถ
- Frequency-Sweeping Ultrasonic Burner: Arduino จะสร้างสัญญาณคลื่นสี่เหลี่ยม (Square Wave) ความถี่สูง (20kHz - 65kHz) ส่งไปที่ Piezo Transducer โดย Firmware จะทำการ "Sweep" หรือกวาดความถี่ไปเรื่อยๆ เพื่อไม่ให้หนูมันเกิดความเคยชินกับเสียงโทนเดียว
- Random Pulse Generator: เพื่อความเข้มข้น พี่ใส่ "Burst Mode" เข้าไปด้วย โดยจะสั่งให้ปล่อยเสียงเป็นจังหวะแบบสุ่ม (Irregular Intervals) ทำให้พวกหนูรู้สึกว่ามีอันตรายอยู่ตลอดเวลา
การเชื่อมต่อ (Connectivity)
- Blynk Remote Oversight: เราสามารถปรับช่วงการกวาดความถี่ (Sweep Range) และความเร็วของจังหวะเสียง (Pulse Speed) ผ่านแอปฯ ในมือถือได้เลย แถมยังเช็คสถานะแบตเตอรี่ผ่าน WiFi ได้อีกด้วย หล่อเท่เลยงานนี้!