กลับไปหน้ารวมไฟล์
the-door-bell-opens-an-electronic-door-ead0fc.md

เราอยู่คอนโด มีประตูอัตโนมัติหน้าบ้านที่เรากดเปิดจากในห้องได้ พวกลูกสาวเรามักจะไม่พกกุญแจตอนออกไปข้างนอก พอกลับมาก็จะกดออดให้เราลงไปเปิดให้ ไอเดียโปรเจคนี้คือให้ประตูเปิดอัตโนมัติได้ ถ้าเค้าใช้รหัสมอร์ส (Morse Code) ที่กำหนดไว้กดออดหน้าบ้าน แบบนี้ประตูก็จะไม่เปิดให้ใครก็ได้อัตโนมัติ

เราเลือกรหัสมอร์สเป็น จุด (DOT), ขีด (DASH), จุด (DOT) ในการเปิดประตู

คำถามพื้นฐานคือจะประเมินเสียงยังไง – เสียงออดดังนานแค่ไหน และกี่ครั้ง โชคร้ายที่เราเอาข้อมูลนี้ตรงจากวงจรออดไม่ได้ เลยตัดสินใจใช้ไมโครโฟนมาวัดเสียงออดแทน งานนี้เลยต้องมาทำวงจรขยายเสียงเล็กน้อย ตามภาพด้านล่างเลยจ้า

ด้านเทคนิค: รีเลย์และการสั่งงาน

โปรเจคนี้เผยให้เห็นเลเยอร์ซ้อนกันของการทำอัตโนมัติประตูแบบง่ายๆ ใจความหลักมีหลายชั้น:

  • เลเยอร์ตรวจจับ: ปุ่มออด ทำหน้าที่เป็นตัวจุดชนะ พอกดก็ส่งสัญญาณไปหา Arduino
  • เลเยอร์สั่งงาน: โมดูลรีเลย์ 5V ทำหน้าที่เป็นสวิตช์จ่ายไฟแรงสูง Arduino จ่ายไฟตรงไปให้ล็อค 12V ไม่ได้ รีเลย์เลยเป็นตัวกลางเชื่อมระหว่างโลกลอจิกแรงดันต่ำ (5V) กับโลกจ่ายไฟแรงดันสูง (12V)
  • เลเยอร์ลอจิกการทำงาน: โค้ด Arduino ใช้ลอจิกง่ายๆ แบบ "ถ้า...แล้ว..." คือ ถ้าตรวจพบรหัสมอร์สที่ถูกต้อง รีเลย์จะทำงานเป็นเวลาหลายวินาทีเพื่อปลดล็อคประตู
  • เลเยอร์จับเวลา: รีเลย์ถูกตั้งโปรแกรมให้ปล่อยหลังจากหน่วงเวลาสั้นๆ เพื่อป้องกันไม่ให้ล็อคประตูเปิดค้างไว้ตลอดกาลนะตัวนี้ ห้ามช็อต!

เกี่ยวกับโค้ด

ส่วน loop() จะคอยฟังเสียงจากไมโครโฟน ถ้ามีเสียงเริ่มขึ้นมา มันจะรอให้เสียงหยุด (pause) เสียงใดๆ ก็ตามมีความถี่ที่ประกอบด้วย pause ย่อยๆ มากมาย ดังนั้น pause ที่เราจับต้องยาวพอที่จะนับว่าเป็น pause จริงระหว่างเสียง ไม่ใช่ pause ที่เป็นส่วนหนึ่งของเสียง แม้แต่เสียงออดก็มี pause สั้นๆ แบบนี้เต็มไปหมดระหว่างที่มันดัง

ถ้าโค้ดจับ pause จริงได้หลังจากเสียงเริ่ม มันจะประเมินความยาวของเสียงที่เพิ่งจบ แล้วบันทึกลงในอาร์เรย์ว่าเป็นจุด (dot) หรือขีด (dash) พอครบ 3 เรกคอร์ด มันจะตัดสินใจว่าตรงกับตัวอย่าง "จุด, ขีด, จุด" ของเราหรือเปล่า ถ้าตรง Arduino จะสั่งให้รีเลย์ทำงาน ซึ่งจะไปต่อหน้าสัมผัสของปุ่มเปิดประตูอัตโนมัติในบ้าน เปิดประตูให้เลยจ้า!

โครงสร้างฮาร์ดแวร์

  • Arduino Uno: เป็น "สมอง" ของโปรเจค จัดการอินพุตจากไมค์ ถอดรหัสมอร์ส และประสานงานการทำงานของรีเลย์
  • โมดูลรีเลย์ 5V: จัดการไฟที่ต้องใช้ขับล็อคประตูอัตโนมัติได้อย่างมีประสิทธิภาพ พร้อมปกป้อง Arduino ไปในตัว
  • ล็อคประตูอัตโนมัติ: ให้การเคลื่อนไหวทางกายภาพและความปลอดภัยสำหรับการเข้าใช้งาน
  • แหล่งจ่ายไฟ: สำคัญมากสำหรับการจ่ายกระแสที่เพียงพอเพื่อดึงโซลินอยด์ในล็อค
  • ไมโครโฟนและวงจรขยายเสียง: สำหรับตรวจจับเสียงออด ตามที่เห็นในภาพวงจรด้านล่างเลย อย่าลืมดูนะน้อง สู้งาน!

เกี่ยวกับวงจร

พี่อยากใช้อุปกรณ์พื้นฐานที่พี่มีอยู่เท่านั้นแหละ พี่ไม่ได้ต้องการเสียงจากไมโครโฟนที่แม่นยำมากหรอก แค่ต้องการให้มันทำให้ค่าที่ขา A1 ของ Arduino เปลี่ยนไปก็พอ เลยใช้ทรานซิสเตอร์ตัวที่พี่มี (KC 509) แต่น้องใช้ตัวไหนก็ได้ที่มีช่วงกว้างกว่านี้ก็ได้นะ

การตั้งค่าวงจรที่ติดตั้งแล้ว

หลังจากติดตั้งวงจรเสร็จ ก็เริ่มทดลองกันเลย อย่างแรกพี่ต้องตั้งค่าโพเทนชิออมิเตอร์ให้ค่าที่ขา A1 อยู่ที่ประมาณ 500 ตอนที่บอร์ดเริ่มทำงานและรอบๆ เงียบสนิท ส่วนที่คอมเมนต์ไว้ใน setup() จะแสดงค่าออกมาทาง Serial Monitor ให้ดูนะ พอไมโครโฟนจับเสียงได้ ค่าที่ขานี้จะกระเด้งขึ้นลง เราก็เอาไปประเมินเสียงได้แล้ว

ขั้นต่อไป เราต้องตั้งค่าความไวของไมโครโฟน เริ่มแรกให้ตั้งค่าคงที่ soundTrigger เป็น 20 ก่อน ส่วนที่คอมเมนต์ไว้ในฟังก์ชัน `isSound()` จะแสดงค่าการเปลี่ยนแปลงสูงสุดที่ขา A1 ขณะที่มีเสียง ดังนั้นเราต้องหาว่าเราได้ค่าเท่าไหร่ตอนที่กริ่งดัง แล้วค่อยตั้งค่า `soundTrigger` นี้ให้เป็นค่าเฉลี่ยลบออกไป (เช่น) 40 วิธีนี้จะทำให้ไมโครโฟนจับเสียงกริ่งได้แน่นอน และไม่ตื่นเต้นไปกับเสียงอื่นๆ รอบข้างที่เบากว่าจ้า

ไอเดียต่อยอดในอนาคต

  • เพิ่มจอ OLED แดชบอร์ดแสดงสถานะ: เอา OLED จอเล็กๆ มาติดในบ้านเพื่อแสดง "สถานะล็อค" (ล็อค/ปลดล็อค) และเวลาที่เข้า-ออกล่าสุด ดูเท่ดี
  • รองรับระบบความปลอดภัยหลายชั้น: เชื่อมต่อเซ็นเซอร์เพิ่มเติม เช่น เครื่องอ่าน RFID หรือคีย์แพด เพื่อสร้างระบบควบคุมการเข้าออกที่แข็งแกร่งขึ้น
  • ซิงค์กับคลาวด์: เพิ่มโมดูล WiFi (ESP8266/ESP32) แล้วเชื่อมต่อกับแดชบอร์ดบนคลาวด์ เพื่อควบคุมและติดตามการเปิดปิดประตูจากมือถือได้แบบเป๊ะๆ
  • ปรับแต่งโปรไฟล์การทำงาน: เพิ่มสไลด์หรือโพเทนชิออมิเตอร์เล็กๆ สำหรับปรับ "ระยะเวลาปลดล็อค" ของประตูอิเล็กทรอนิกส์ด้วยมือ

โปรเจค "กริ่งประตูเปิดประตูอิเล็กทรอนิกส์" นี่แหละตัวดี! เหมาะสุดๆ สำหรับวัยรุ่นสายวิทย์-คณิต หรือใครก็ตามที่อยากได้เครื่องมืออัตโนมัติที่โต้ตอบกับเราได้ สนุกแน่นอน จัดไปวัยรุ่น!

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

title: "เรียกแล้วเปิด! ระบบล็อคประตูอัจฉริยะตอบรับด้วยรหัสมอร์ส"
description: "ใช้สัญญาณกดกริ่งแบบมอร์สเป็นอินเตอร์รัพต์สั่งงาน Relay ให้ปลดล็อคประตูไฟฟ้า งานง่ายแต่หล่อ ปลอดภัยตึงๆ"
author: "viliamk"
category: "Home & Automation"
tags:
  - "Home Automation"
views: 1334
likes: 0
price: 699
difficulty: "Intermediate"
components:
  - "1x resistor 2k7"
  - "1x Relay Module (Generic)"
  - "1x Trimmer Potentiometer, 10 kohm"
  - "1x small microphone"
  - "1x General Purpose Transistor NPN"
  - "1x Arduino Nano R3"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles: []
documentationLinks: []
passwordHash: "29af2da5ea78df16c0f649826d706735d9a95b83a11467c804f9455130acbf49"
encryptedPayload: "U2FsdGVkX1/gShc/bCjOo3pYWiYKDaNC+TqclH7dBxCz2yhf/mZShTYeKZM39k/GE2tNBpKbL7O5zCCS9M+NA3GZzhqSHqJJRtVuT6fU0j0="
seoDescription: "Open an electronic door using a Morse signal from a door bell with Arduino. A unique DIY home security automation project."
videoLinks:
  - "https://www.youtube.com/embed/txsQX4gspDY"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/the-door-bell-opens-an-electronic-door-ead0fc_cover.jpg"
lang: "en"