ต่อวงจร Arduino ระบบเตือนภัย ตรวจจับความเคลื่อนไหว
ต่อวงจร Arduino ระบบเตือนภัย ตรวจจับความเคลื่อนไหว
บทความนี้จะพาต่อวงจร Arduino ระบบเตือนภัยแบบครบในตัว ใช้เซ็นเซอร์ตรวจจับวัตถุ E18-D80NK จับคู่กับ Buzzer และโมดูลเสียง ISD1820 สองตัว ควบคุมเปิด-ปิดระบบด้วยรีโมทไร้สาย แสดงสถานะบนจอ LCD 1602
อุปกรณ์ที่ต้องเตรียม
| อุปกรณ์ | จำนวน |
|---|---|
| Arduino UNO R3 | 1 บอร์ด |
| เซ็นเซอร์ตรวจจับวัตถุ E18-D80NK | 1 ตัว |
| Buzzer เสียงเตือน | 1 ตัว |
| โมดูลบันทึกและเล่นเสียง ISD1820 | 2 ตัว |
| โมดูลรีโมทไร้สาย M4 ความถี่ 315MHz | 1 ชุด |
| จอ LCD 1602 พร้อม I2C Adapter | 1 จอ |
| สาย Jumper หลากสี | - |
การต่อวงจร
E18-D80NK เซ็นเซอร์ตรวจจับวัตถุ
- สายน้ำตาล (5V) → 5V ของ Arduino
- สายน้ำเงิน (GND) → GND
- สายดำ (Data) → ขา 2
Buzzer เสียงเตือน
- VCC → 5V
- GND → GND
- I/O → ขา 3
โมดูล ISD1820 ตัวที่ 1 (ปิดระบบ)
- VCC → 5V
- GND → GND
- PLAYE → ขา 4
โมดูล ISD1820 ตัวที่ 2 (เปิดระบบ)
- VCC → 5V
- GND → GND
- PLAYE → ขา 5
โมดูลรีโมท M4 315MHz
- VCC → 5V
- GND → GND
- D0 → ขา 8
- D2 → ขา 9
จอ LCD 1602 (I2C)
- VCC → 5V
- GND → GND
- SDA → A4
- SCL → A5
ขั้นตอนเตรียมก่อนใช้งาน
1. ตั้ง Address รีโมทด้วยการบัดกรี
บัดกรีขาที่ตำแหน่ง H-8-4 บนโมดูลรีโมทเพื่อสร้างรหัสเฉพาะ ป้องกันสัญญาณทับซ้อนกับรีโมทอื่นในบริเวณเดียวกัน
2. บันทึกเสียงลง ISD1820
- กดปุ่ม REC ค้างไว้ (สูงสุด 10 วินาที)
- บันทึกเสียง “ปิดระบบ” ลงโมดูลตัวที่ 1
- บันทึกเสียง “เปิดระบบ” ลงโมดูลตัวที่ 2
- กดปุ่ม PLAY เพื่อตรวจสอบว่าเสียงบันทึกได้ถูกต้อง
หมายเหตุ ปุ่ม PLAYE กดครั้งเดียวเล่นเสียงจบ แต่ปุ่ม PLAYL ต้องกดค้างไว้ ปล่อยมือแล้วเสียงหยุดทันที
3. ติดตั้ง Library สำหรับจอ LCD I2C
ดาวน์โหลด LiquidCrystal_I2C library แล้ววางไว้ในโฟลเดอร์ libraries ของ Arduino IDE (Documents/Arduino/libraries)
โค้ด Arduino ระบบเตือนภัย
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// กำหนดขา
#define SENSOR_PIN 2
#define BUZZER_PIN 3
#define PLAYE1_PIN 4
#define PLAYE2_PIN 5
#define REMOTE_D0 8
#define REMOTE_D2 9
// สถานะระบบ
bool systemActive = false;
// ตั้งค่าจอ LCD I2C (Address 0x27 สำหรับ Module ทั่วไป)
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
// ตั้งค่าขา
pinMode(SENSOR_PIN, INPUT);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(PLAYE1_PIN, OUTPUT);
pinMode(PLAYE2_PIN, OUTPUT);
pinMode(REMOTE_D0, INPUT);
pinMode(REMOTE_D2, INPUT);
// ปิดเอาต์พุตเริ่มต้น
digitalWrite(PLAYE1_PIN, LOW);
digitalWrite(PLAYE2_PIN, LOW);
digitalWrite(BUZZER_PIN, LOW);
// เริ่มต้นจอ LCD
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("System Ready ");
lcd.setCursor(0, 1);
lcd.print("Press B to ON ");
Serial.println("Alarm System Ready");
}
void loop() {
int remoteA = digitalRead(REMOTE_D0); // ปุ่ม A - ปิดระบบ
int remoteB = digitalRead(REMOTE_D2); // ปุ่ม B - เปิดระบบ
int sensorStatus = digitalRead(SENSOR_PIN);
// ตรวจจับการกดปุ่มรีโมท
static bool lastRemoteA = LOW;
static bool lastRemoteB = LOW;
if (remoteA == HIGH && lastRemoteA == LOW) {
// ปิดระบบ
systemActive = false;
digitalWrite(BUZZER_PIN, LOW);
digitalWrite(PLAYE1_PIN, HIGH);
delay(500);
digitalWrite(PLAYE1_PIN, LOW);
updateDisplay("SYSTEM OFF", "Press B to ON ");
Serial.println("System OFF - Alarm deactivated");
}
if (remoteB == HIGH && lastRemoteB == LOW) {
// เปิดระบบ
systemActive = true;
digitalWrite(PLAYE2_PIN, HIGH);
delay(500);
digitalWrite(PLAYE2_PIN, LOW);
updateDisplay("SYSTEM ON ", "Monitoring...");
Serial.println("System ON - Alarm activated");
}
lastRemoteA = remoteA;
lastRemoteB = remoteB;
// ตรวจจับวัตถุเมื่อระบบเปิดอยู่
if (systemActive) {
if (sensorStatus == 1) {
digitalWrite(BUZZER_PIN, HIGH);
lcd.setCursor(0, 1);
lcd.print("ALERT!Motion!");
Serial.print("Sensor: ");
Serial.println(sensorStatus);
} else {
digitalWrite(BUZZER_PIN, LOW);
lcd.setCursor(0, 1);
lcd.print("Monitoring... ");
}
}
delay(50);
}
void updateDisplay(String line1, String line2) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(line1);
lcd.setCursor(0, 1);
lcd.print(line2);
}
จุดที่ต้องปรับ: Address ของจอ LCD I2C อาจเป็น 0x3F แทน 0x27 ขึ้นอยู่กับ Module ที่ใช้ ลองเช็คด้วย I2C Scanner sketch ก่อน
ขั้นตอนอัพโหลดและทดสอบ
- เปิด Arduino IDE วางโค้ดข้างบน
- เลือก Board: Arduino UNO / Port ที่เชื่อมต่อ
- กด Upload รอจนขึ้น Done uploading
- เปิด Serial Monitor ตั้งค่า 9600
ทดสอบเปิดระบบ
กดปุ่ม B บนรีโมท → จอ LCD แสดง “SYSTEM ON” → โมดูล ISD1820 ตัวที่ 2 เล่นเสียง “เปิดระบบ”
ทดสอบตรวจจับ
เดินเข้าใกล้ E18-D80NK → Buzzer ส่งเสียงเตือน → Serial Monitor แสดงค่าเปลี่ยนจาก 0 เป็น 1
ทดสอบปิดระบบ
กดปุ่ม A บนรีโมท → จอ LCD แสดง “SYSTEM OFF” → โมดูล ISD1820 ตัวที่ 1 เล่นเสียง “ปิดระบบ” → เซ็นเซอร์จะไม่ส่งสัญญาณไปยังบอร์ดอีก
การปรับแต่งระยะตรวจจับ
หมุนตัวปรับค่าบน E18-D80NK เพื่อเปลี่ยนระยะตรวจจับ (3-80 ซม.) และปรับตัวปรับบนโมดูลรีโมทเพื่อเปลี่ยนระยะรับสัญญาณไร้สาย
สรุป
ระบบเตือนภัยนี้ประกอบด้วยอุปกรณ์หลัก 4 กลุ่ม เซ็นเซอร์ตรวจจับวัตถุ → ส่วนเตือนภัย (Buzzer) → ส่วนแจ้งสถานะ (LCD + เสียง) → ส่วนควบคุม (รีโมท) ข้อดีคือสามารถเช็คสถานะได้ทั้งทางจอและ Serial Monitor ปรับแต่งระยะได้ตามต้องการ
อยากทำโปรเจคแบบนี้?
รับทำโปรเจค Arduino / IoT จบงานไว ส่งงานครบ พร้อมสอน
หากต้องการ รับทำโปรเจคอาดูโน่ หรือระบบ IoT แบบเร่งด่วน สามารถดูรายละเอียดบริการได้ที่หน้าแรก
จ้างทำโปรเจคเลย