กลับไปหน้ารวมไฟล์
door-sensor-with-arduino-nano-every-520189.md

title: "เซ็นเซอร์ประตูด้วย Arduino Nano Every" description: "สร้างสรรค์นวัตกรรมความปลอดภัยขนาดเล็กอารมณ์ดี โดยใช้ Arduino และ Magnetic Reed Switch เพื่อตรวจจับสถานะของประตู"

ในโปรเจกต์นี้ เราจะมาเปลี่ยนประตูธรรมดาให้มีชีวิตชีวา ด้วยการสร้าง "เครื่องส่งเสียงอัจฉริยะประจำประตู" เราจะตั้งโปรแกรมระบบให้คอยตรวจสอบสถานะของประตู และเมื่อประตู "ปิด" บอร์ด Arduino ของเราจะสั่งให้ลำโพงเล่นเพลงเม็กซิกันคลาสสิก "La Cucaracha" โดยใช้ฟังก์ชัน tone() อันทรงพลัง

ประสบการณ์การเรียนรู้ครั้งนี้ ไม่ใช่แค่การสร้างเสียงเพลงเท่านั้น แต่ยังเป็นการทำความเข้าใจพื้นฐานของ Digital Input, Logic States และการควบคุมความถี่เสียงในระบบ embedded systems อีกด้วย

ส่วนประกอบฮาร์ดแวร์

ในการทำโปรเจกต์นี้ให้สำเร็จ เราจะต้องใช้อุปกรณ์อิเล็กทรอนิกส์ดังต่อไปนี้:

  1. Arduino Board (Uno, Nano หรือรุ่นอื่น ๆ): ทำหน้าที่เป็นหน่วยประมวลผลหลัก
  2. Magnetic Reed Switch: สวิตช์ที่ทำงานเมื่อมีสนามแม่เหล็กเข้ามาใกล้ (ใช้สำหรับตรวจจับการปิดประตู)
  3. Piezo Buzzer หรือลำโพงขนาดเล็ก: สำหรับแปลงสัญญาณไฟฟ้าเป็นคลื่นเสียง
  4. Resistor (220Ω - 1kΩ): สำหรับจำกัดกระแสไฟฟ้าให้กับ Buzzer
  5. Jumper wires และ Breadboard: สำหรับการเชื่อมต่อวงจร

หลักการทางวิศวกรรม

1. การตรวจจับด้วย Magnetic Reed Switch

เซ็นเซอร์แม่เหล็กประกอบด้วยแผ่นโลหะขนาดเล็กสองแผ่นที่บรรจุอยู่ในหลอดแก้วสุญญากาศ เมื่อแม่เหล็ก (ที่ติดอยู่กับวงกบประตู) เคลื่อนที่เข้ามาใกล้ แรงแม่เหล็กจะดึงแผ่นโลหะทั้งสองเข้าหากัน ทำให้วงจรสมบูรณ์ ในแง่ของซอฟต์แวร์ เราจะอ่านค่านี้ผ่าน digitalRead() เพื่อตรวจสอบว่าสถานะเปลี่ยนจาก HIGH เป็น LOW หรือไม่ (เมื่อใช้ Internal Pull-up)

2. การสร้างเสียงด้วยฟังก์ชัน tone()

หัวใจหลักของการสร้างเสียงใน Arduino คือฟังก์ชัน tone(pin, frequency, duration) ซึ่งจะสร้าง Square Wave ที่มีความถี่ (Frequency) เฉพาะเจาะจงตามโน้ตดนตรี เช่น:

  • Note C4: 262 Hz
  • Note F4: 349 Hz
  • Note A4: 440 Hz

เมื่อความถี่เหล่านี้ถูกจัดเรียงอย่างถูกต้องพร้อมกับการจัดการ Timing ที่เหมาะสม เราก็จะได้เพลง "La Cucaracha" ที่สมบูรณ์


ตรรกะของโค้ด

เพื่อให้ระบบทำงานได้อย่างแม่นยำ โค้ดของเราจะแบ่งการทำงานออกเป็นสามส่วนหลัก:

  1. การตรวจจับอินพุต (Input Sensing): ตรวจสอบสถานะของ Digital pin ที่เชื่อมต่อกับ Reed Switch อย่างต่อเนื่องภายใน loop()
  2. การตรวจจับขอบ (Edge Detection): ระบบจะไม่เล่นเพลงซ้ำ ๆ แต่จะเล่นเฉพาะ "เมื่อประตูกำลังปิด" เท่านั้น (การเปลี่ยนผ่านจากสถานะเปิดไปปิด)
  3. ลำดับเพลง (Melody Sequence): เมื่อตรงตามเงื่อนไข ฟังก์ชันจะเรียก Array ของโน้ตเพลง La Cucaracha มาเล่น
// Example code structure for La Cucaracha melody
#define BUZZER_PIN 8
#define REED_SWITCH_PIN 2

void setup() {
  pinMode(REED_SWITCH_PIN, INPUT_PULLUP); // Using internal Pull-up for convenience
  pinMode(BUZZER_PIN, OUTPUT);
}

void playLaCucaracha() {
  // La Cucaracha melody notes (C4, C4, C4, F4, A4...)
  int melody[] = {262, 262, 262, 349, 440}; 
  int durations[] = {200, 200, 200, 400, 400};
  
  for (int i = 0; i < 5; i++) {
    tone(BUZZER_PIN, melody[i], durations[i]);
    delay(durations[i] * 1.3); // Pause between notes
  }
}

void loop() {
  int doorState = digitalRead(REED_SWITCH_PIN);
  
  // If sensor detects magnet (door closed), value will be LOW
  if (doorState == LOW) {
    playLaCucaracha();
    while(digitalRead(REED_SWITCH_PIN) == LOW); // Wait until door opens again to prevent repeat playback
  }
}

ภาพรวมโปรเจกต์ (สื่อ)

ดังนั้น ในโปรเจกต์นี้ เราจะสร้างเซ็นเซอร์สำหรับประตูของคุณ เราจะตั้งโปรแกรมเพื่อให้เมื่อประตูปิด มันจะเล่นเพลง La Cucaracha. เราจะใช้ฟังก์ชันที่ชื่อว่า tone.


สรุปผลการทดลอง

จากการทดลองนี้ เราพบว่าการใช้ tone() ร่วมกับการจัดการ Timing (delay()) เป็นวิธีการที่ง่ายและมีประสิทธิภาพสำหรับการแจ้งเตือนสถานะต่าง ๆ ของ Hardware โปรเจกต์นี้สามารถนำไปประยุกต์ใช้ได้หลากหลาย เช่น ระบบแจ้งเตือนตู้เซฟ, ระบบกันขโมย, หรือแม้แต่ระบบเสียงต้อนรับในร้านค้า โดยการเปลี่ยนเพลงตามความต้องการของคุณ

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

title: "Door Sensor with Arduino Nano Every"
description: "Make it play \"La Cucaracha\" when your door closes"
author: "enriquekirkpatrickc"
category: "Audio & Sound"
tags:
  - "sensor"
  - "magnetism"
views: 14912
likes: 8
price: 870
difficulty: "Intermediate"
components:
  - "1x Buzzer, Piezo"
  - "1x Reed Switch, SPST-NO"
  - "1x Arduino Nano Every"
  - "1x SparkFun Solder-able Breadboard - Mini"
  - "1x 9V Battery Clip"
  - "1x Male/Female Jumper Wires"
  - "1x 9V battery (generic)"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles: []
documentationLinks: []
passwordHash: "8716556b6958a9d2b48b6bdb6fe6d557a73a3993452e191ee4dbf12e8a1b38a4"
encryptedPayload: "U2FsdGVkX18hNBUxiNLwi1pBgkfLfFLZJ9NVlUjaT+bj+1DUF1eGmzv552MdtL7JMukZht5LlaJgYGZqggPvsuXgnZ8kYrxW362P6FMlK9I="
seoDescription: "Build a Door Sensor with Arduino Nano Every that plays La Cucaracha when the door closes. A fun and easy DIY electronics project."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/door-sensor-with-arduino-nano-every-520189_cover.jpg"
lang: "th"