ชื่อโปรเจกต์: โปรเจกต์ Arduino: เครื่องทดสอบอินพุตโซนกันขโมย
เครื่องทดสอบอินพุตโซนกันขโมยที่ใช้ Arduino เป็นหลัก ซึ่งเป็นการออกแบบเชิงทดลองสำหรับทดสอบเซ็นเซอร์ที่เชื่อมต่อแบบเดินสาย (hardwired).
การประนีประนอมการเชื่อมต่อแบบเดินสาย (hardwired connections):
เนื่องจากลูปโซนฮาร์ดแวร์ได้รับพลังงานจากระดับแรงดันไฟฟ้าคงที่ที่ส่งมาจากชุดควบคุมกันขโมย (burglary
control unit) หรือตัวขยายโซน (zone ex-pander) จึงง่ายมากที่จะสร้างและใช้งานอุปกรณ์ที่สามารถอ่านและจดจำระดับแรงดันไฟฟ้าในลูปโซนได้ และในภายหลัง เมื่อได้รับการร้องขอ ก็สามารถป้อนแรงดันไฟฟ้านั้นกลับไปยังลูปโซนได้
รูปที่ 1 แสดงแผนผังของอุปกรณ์ที่สามารถใช้ในการประนีประนอมระบบสัญญาณกันขโมยที่มีลูปโซนแบบเดินสายซึ่งได้รับพลังงานจากระดับแรงดันไฟฟ้าคงที่

หลังจากเชื่อมต่อกับสายโซน (โดยการใช้ขั้วต่อเชื่อมเข้ากับสายลูปโซน) วงจรจะตรวจสอบขั้วของสายเชื่อมต่อก่อน ซึ่งทำโดยวงจรย่อยที่มีออปแอมป์ (operational amplifier) U2D พร้อมด้วยตัวต้านทาน R10, R5, R6, ไดโอด D1 และตัวเก็บประจุ C2 หากแรงดันไฟฟ้าที่วัดได้บน R10 เป็นค่าลบ วงจรจะกลับขั้วอินพุตโดยอัตโนมัติโดยการดึงทรานซิสเตอร์ Q2 และสลับรีเลย์ RL1 และ D4 ในขณะที่ LED สว่างขึ้น
หากมีคนต้องการข้ามวงจรย่อยเหล่านี้ จะต้องวัดขั้ว หรือแก้ไขวงจรเพื่อวัดขั้วบวกและขั้วลบ รวมถึงการจ่ายแรงดันไฟกลับของขั้วลบหรือขั้วบวก
วงจรย่อย R12 และ R11 จะวัดแรงดันไฟฟ้าอินพุตโซนจริงผ่านหน้าสัมผัสรีเลย์ของ RL1 และ RL2 รีเลย์ RL2 จะสลับเมื่อเราตัดสินใจที่จะเปลี่ยนสถานะจากการอ่านแรงดันไฟฟ้าลูปโซนไปสู่การโจมตีอินพุตลูปโซนของระบบสัญญาณกันขโมย
จอแสดงผล LCD1 จะแสดงระดับแรงดันไฟฟ้าที่วัดได้ของลูปโซน โดยจะรับข้อมูลการวัดผ่านการสื่อสาร I2C จากไมโครคอนโทรลเลอร์ Arduino Uno
ตัวแบ่งแรงดันไฟฟ้าอินพุต/เอาต์พุต (R11/R11 + R12) ถูกตั้งค่าอัตราส่วน 1:4 สำหรับข้อกำหนดระดับแรงดันไฟฟ้าอินพุตของ AD
เมื่อสวิตช์ SW2 เปิดอยู่ Arduino Uno จะจ่ายแรงดันไฟฟ้าในระดับที่วัดได้ไปยังสายลูปโซนผ่านอินเทอร์เฟซ D/A ที่ใช้ MCP4725 และตัวขยายสัญญาณ (amplifiers) ตัวขยายสัญญาณ U2A พร้อมตัวต้านทาน R19 และ R20 ขยายอินพุต 4 เท่า และส่งไปยังบัฟเฟอร์แอมป์ U2B และ U2C (เอาต์พุตเชื่อมต่อแบบขนาน) โดยมีระดับแรงดันเอาต์พุตเท่ากับที่วัดได้บนลูปโซน แรงดันไฟฟ้านี้จะถูกนำเสนอไปยังลูปโซน และการสลับ SW1 ไม่ควรเปลี่ยนอินพุตโซนของชุดกันขโมย ในกรณีส่วนใหญ่ การโจมตีควรประสบความสำเร็จกับระบบสัญญาณกันขโมยที่ทันสมัยถึง 90%
สวิตช์ SW1 จำลองสถานะเปิด/ปิดของหน้าสัมผัสประตู หากมีใครต้องการทดลองกับวงจรในโปรแกรมจำลองวงจร และอย่าลืมเพิ่มตัวต้านทานที่อ้างอิงกราวด์ เนื่องจากอุปกรณ์นี้ตั้งค่าแหล่งจ่ายแรงดันไฟฟ้าแบบลอยตัว (floating type voltage source) ไว้ล่วงหน้า
LCD1 และ IC1 เป็นวงจรย่อยของ Liquid Crystal_I2C lcd Arduino sketch (รุ่น - ywrobot arduino lcm1602 IIC V1)
โค้ดสำหรับ Arduino แสดงอยู่ด้านล่าง:
โค้ดสำหรับจอแสดงผล Liquid Crystal_I2C lcd และ DAC สามารถพบได้บน INTERNET
ใช้ค่า delay 200 สำหรับการทำให้รีเลย์เสถียร, 500 สำหรับจอแสดงผล LCD และ 20000 สำหรับการจำกัดเวลาในการประนีประนอม และสามารถเปลี่ยนแปลงได้ตามต้องการ
ไลบรารีที่โหลด:
NewLiquidCrystal
// or LiquidCrystal
Wire
/*
Configuration bytes:
//12-bit device values from 0-4095
//page 18-19 spec sheet
buffer[0] = 0b01000000; // control byte
//bits 7-5; 010 write DAC; 011 write DAC and EEPROM
//bits 4-3 unused
// bit0 unused
buffer[1] = 0b00000000; //HIGH data
//bits 7-0 D11-D4
buffer[2] = 0b00000000; // LOW data
//bits 7-4 D3-D0
//bits 3-0 unused
*/
#include
#defineMCP4725 0x60 // MCP4725 base address
bytebuffer[3];
unsignedint val;
#include
#include
#include
#include
#include
LiquidCrystal_I2Clcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Setup lcd
//LiquidCrystal_I2C lcd(0x27, 16, 2) lcd address may be diferent as toa lcd vendor specyfication
voidsetup() {
pinMode( 4, INPUT); //pin to starts measurement
pinMode(13, OUTPUT); //Relay swith ON to startcompromising
pinMode(A0, INPUT); // pin as Analog IN to measure zone loop voltage
} //end setup
voidloop() {
int u= 0;
intval = 0;
buffer[0] = 0b01000000; // control byte
delay(200);//Wait
u= analogRead(0);
val = u* 4; // read pot
buffer[1] = val >> 4; // MSB 11-4 shift right 4 places
buffer[2] = val << 4; // LSB 3-0 shift left 4 places
floatsensorValue = 0;
sensorValue = u*(5.0/1023.0)*4;
Wire.begin(); // begin I2C
lcd.begin(16, 2);
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Measured VoltS =");
lcd.setCursor(0, 1);
lcd.print(sensorValue);
lcd.print("__");
lcd.print(u);
delay(500);
while(digitalRead(4) == LOW) {
//digitalWrite(2, HIGH); //ready LED ON, option
delay(200);//delay for conats to sabilize
Wire.beginTransmission(MCP4725); // address device
Wire.write(buffer[0]); // pointer
Wire.write(buffer[1]); // 8 MSB
Wire.write(buffer[2]); // 4 LSB
Wire.endTransmission();
delay(200);//Wait
digitalWrite(13, HIGH); //Relay 2 ON to compromise burglary zoneloop
delay(20000);//Wait
}
} // end loop
รายละเอียดทางเทคนิคเพิ่มเติม
การวินิจฉัยระบบรักษาความปลอดภัย
เครื่องมือวินิจฉัยนี้ออกแบบมาเพื่อทดสอบความสมบูรณ์ของโซนวงจรความปลอดภัยในการติดตั้งสัญญาณเตือนภัยระดับมืออาชีพ
- การวิเคราะห์ตัวต้านทาน EOL (End-of-Line): ระบบสัญญาณเตือนภัยระดับมืออาชีพใช้ค่าความต้านทานเฉพาะ (เช่น 2.2kΩ, 4.7kΩ) เพื่อตรวจจับการงัดแงะ เครื่องมือทดสอบนี้ใช้ ADC ของ Arduino เพื่อวัดความต้านทานของโซน
- การระบุสถานะ: เฟิร์มแวร์ระบุสถานะที่แตกต่างกันสี่สถานะ ได้แก่ ปกติ (Healthy - Closed), สัญญาณเตือน (Alarm - Open), การงัดแงะ (Tamper - Short Circuit) และ การงัดแงะ (Tamper - Wire Cut)
เครื่องมือเปรียบเทียบประสิทธิภาพ
- การแสดงผลแบบเรียลไทม์: I2C 16x2 LCD จะแสดงค่า Ohm แบบเรียลไทม์และสถานะโซนปัจจุบัน
- การโต้ตอบ: มีสวิตช์โยกเพื่อจำลองเงื่อนไขความผิดปกติที่แตกต่างกัน ทำให้เป็นเครื่องมือฝึกอบรมและสอบเทียบที่จำเป็นสำหรับช่างเทคนิคความปลอดภัย