ระบบไม้กั้นทางรถไฟ (Railway barrier system)

ผู้เขียนบทความ : นางสาวพนาวัน มุสิเกตุ CoE#15

คณะวิศวกรรมศาสตร์ : สาขาวิศวกรรมคอมพิวเตอร์

วิชา : 04-513-201 การโปรแกรมคอมพิวเตอร์ขั้นสูง1/2566

1.ความเป็นมา

ในการเกิดอุบัติเหตุบริเวณทางเสมอระดับทางรถไฟ-รถยนต์ทุกครั้งทําให้การรถไฟฯ และผู้ขับขี่ยานพาหนะได้รับความเสียหายทั้งชีวิตและทรัพย์สินเป็นอย่างมาก และการเกิดอุบัติเหตุ ในแต่ละครั้งจะต้องปิดการเดินรถ ซึ่งส่งผลให้ขบวนรถต้องเสียเวลาและเป็นเหตุให้ผู้โดยสารและประชาชนทั่วไปได้รับความเดือดร้อนในการเดินทางเป็นอย่างมาก สาเหตุเกิดจากผู้ขับขี่ ยานพาหนะเกิดความประมาทและไม่ปฏิบัติตาม พรบ.จราจรทางบก พ.ศ.2522 มาตรา 57, 62, 63 และกฏหมายที่เกี่ยวข้องกล่าวคือ การสร้างถนนตัดผ่านทางรถไฟเสมอระดับ ผู้ขับขี่ยานพาหนะจะ ต้องหยุดห่างจากทางรถไฟไม่น้อยกว่า 5 เมตร และหยุดรถให้สนิทมองซ้าย-ขวาก่อนจะข้ามทางรถไฟไม่ว่าจะมีเครื่องกั้นถนนหรือไม่ เมื่อเห็นว่าไม่มีรถไฟจึงขับรถผ่านไปได้เพื่อความปลอดภัยในชีวิตและทรัพย์สินของท่านและของการรถไฟฯ ดังนั้นทางคณะผู้จัดทําจึงได้ตระหนัก และเล็งเห็นความจําเป็นที่จะต้องหาหนทางในการแก้ไขโดยใช้อุปกรณ์ตรวจการเคลื่อนไหวในการตรวจจับความเคลื่อนไหวของรถไฟที่วิ่งเข้ามาใกล้บริเวณถนนข้ามทางรถไฟ ซึ่งอุปกรณ์ตรวจจับความเคลื่อนไหวจะส่งสัญญาณไปยังไมโครคอนโทรเลอร์เพื่อประมวลผลของ การเคลื่อนไหว ไมโครคอนโทรเลอร์ก็จะส่งสัญญาณไปที่ตัวรับสัญญาณ ซึ่งจะติดตั้งไว้ที่บริเวณ ถนนข้ามทางรถไฟ เพื่อเตือนให้ผู้ขับขี่ยานพาหนะได้ทราบ

2.วัตถุประสงค์

1. เพื่อศึกษาระบบการทํางานของไมโครคอนโทรลเลอร์

2. เพื่อศึกษาการทํางานของอุปกรณ์ตรวจจับความเคลื่อนไหว

3.เพื่อศึกษาการเขียนโปรแกรมควบคุมระบบการทํางานของเครื่องเตือนรถไฟในบริเวณทางข้ามรถไฟโดยใช้ไมโครคอนโทรลเลอร์

3.ขอบเขตการทำงาน

  1. เก็บรวมรวมข้อมูลการเกิดอุบัติเหตุบริเวณถนนข้ามทางรถไฟตั้งแต่พ.ศ. 2536-2548
  2. ออกแบบระบบการทํางานของชุดตรวจจับรถไฟและตําแหน่งการวางของตัว อุปกรณ์
    ตรวจจับความเคลื่อนไหว
  3. ออกแบบระบบแจ้งเตือนผู้ใช้ถนนโดยใช้สัญญาณเสียงแจ้งเตือนและระบบไม้กั้น
  4. เขียนโปรแกรมควบคุมการทํางานอุปกรณ์ตรวจจับความเคลื่อนไหว และอุปกรณ์แจ้ง
    เตือนผู้ใช้ถนน โดยให้การทํางานทั้งหมดเป็นแบบอัตโนมัติ
  5. ออกแบบวงจรเชื่อมต่อระหว่างตัวอุปกรณ์ตรวจจับความเคลื่อนไหว,ระบบ
    ไม้กั้นรถไฟและสัญญาณแจ้งเตือน
  6. สร้างอุปกรณ์ต้นแบบทั้งหมดและทดสอบเพื่อให้ได้ตามวัตถุประสงค์

4.ประโยชน์ที่คาดว่าจะได้รับ

  1. ทราบถึงหลักการทํางานของไมโครคอนโทลเลอร์
  2. ทราบถึงหลักการทํางานของการรับส่งข้อมูลแบบไร้สาย
  3. สามารถนําไปใช้เตือนบริเวณทางข้ามรถไฟ

5.ความรู้ที่เกี่ยวข้อง


1. ระบบรถไฟ : ความเข้าใจเกี่ยวกับโครงสร้างและการทำงานของระบบรถไฟ เช่น รางรถไฟ รถไฟ สถานี และสัญญาณแสง

2. ความปลอดภัยและความเสี่ยง : การทราบเรื่องความปลอดภัยในระบบรถไฟและความเสี่ยงที่อาจเกิดขึ้น เช่น อุบัติเหตุ ความรุนแรง และวิธีการป้องกัน

3. การควบคุมการจราจร : ความเข้าใจถึงระบบควบคุมการจราจรทางรถไฟ เช่น การใช้สัญญาณแสง การควบคุมทางรถไฟและระบบไม้กั้น

4. เทคโนโลยี : ความรู้เกี่ยวกับเทคโนโลยีที่ใช้ในระบบรถไฟ เช่น เทคโนโลยีการสื่อสาร ระบบควบคุมอัตโนมัติ และเซนเซอร์

5. การบำรุงรักษาและการดูแล : การเรียนรู้เกี่ยวกับการบำรุงรักษาและการดูแลรักษาระบบรถไฟ เพื่อให้ระบบทำงานอย่างมีประสิทธิภาพและปลอดภัย

6. กฎหมายและข้อกำหนด : การทราบกฎหมายและข้อกำหนดที่เกี่ยวข้องกับระบบรถไฟ เช่น ข้อกำหนดเกี่ยวกับความปลอดภัยและการรับรองมาตรฐาน

7. การพัฒนาระบบ : ความเข้าใจเกี่ยวกับกระบวนการการพัฒนาระบบรถไฟและการปรับปรุงระบบให้มีประสิทธิภาพและความปลอดภัย

8. การสื่อสาร : การสื่อสารระหว่างผู้ควบคุมระบบรถไฟและคนขับรถไฟผ่านระบบการสื่อสารเพื่อประสานงานและควบคุมการจราจร

9. การบริหารจัดการโครงการ : การบริหารจัดการโครงการระบบรถไฟ เช่น การวางแผน การจัดทำงบประมาณ และการควบคุมคุณภาพโครงการ

10. การอนุรักษ์สิ่งแวดล้อม : การพิจารณาและการดำเนินการเพื่อลดผลกระทบต่อสิ่งแวดล้อมจากการทำงานของระบบรถไฟ

6.หลักการทำงาน

6.1 Sensor IR

 เซ็นเซอร์แสงอินฟราเรดใช้ในการตรวจจับวัตถุโดยใช้การส่งและรับความเข้มของแสงอินฟราเรด แบ่งเป็น IR Reflective Sensor (เซ็นเซอร์ที่ต้องการสิ่งที่จะสะท้อนแสงกลับมา) และ IR Proximity Sensor (เซ็นเซอร์ที่ตรวจจับระยะห่างจากวัตถุตามการเปลี่ยนแปลงความเข้มของแสง)

6.2 ESP32

ESP32 คือบอร์ดพัฒนาที่มีความสามารถในการเชื่อมต่อ Wi-Fi และ Bluetooth ทำให้เหมาะสำหรับโปรเจกต์ IoT มีไมโครคอนโทรลเลอร์ 32 บิต, GPIO สามารถกำหนดให้ทำงานต่าง ๆ ได้, มี Analog-to-Digital Converter (ADC) สามารถแปลงสัญญาณแอนะล็อกเป็นดิจิทัลได้. รองรับโหมด Low Power สำหรับการประหยัดพลังงาน, สามารถทำงานกับ Arduino IDE, PlatformIO หรือ ESP-IDF ในการพัฒนาโปรแกรม, รองรับการอัปเดตผ่านทางอินเทอร์เน็ต (OTA), มี Real-Time Operating System (RTOS) สามารถจัดการงานพร้อมกัน, มีตัวควบคุมพลังงานในตัว, รองรับการเชื่อมต่อ USB, I2C, SPI, UART ทำให้เป็นเครื่องมือที่มีความหลากหลายสำหรับโปรเจกต์ IoT และอื่น ๆ ที่ต้องการความยืดหยุ่นและประสิทธิภาพสูง

6.3 Buzzer

บอร์ด Buzzer เป็นอุปกรณ์เสริมที่ใช้ในการสร้างเสียงหรือเสียงประทับในโปรเจกต์อิเล็กทรอนิกส์และการพัฒนา การทำงานของ Buzzer คือการส่งสัญญาณไฟฟ้าไปยังหน้าต่างของ Buzzer ซึ่งทำให้เกิดการสั่นของแผ่นที่ติดอยู่ภายใน Buzzer ผลให้เกิดเสียง

6.4 L298N

บอร์ด L298N เป็นตัวขับมอเตอร์ที่ใช้ควบคุมมอเตอร์ DC และมอเตอร์สเต็ปได้ มีความสามารถในการควบคุมทิศทางการหมุน สามารถใช้กับ Arduino หรือบอร์ดควบคุมอื่น ๆ ในโปรเจกต์อิเล็กทรอนิกส์

6.5 Motor gear DC

บอร์ด Motor Gear DC ทำหน้าที่ควบคุมการทำงานของมอเตอร์แบบ DC ในโปรเจกต์อิเล็กทรอนิกส์ โดยให้ความสามารถในการปรับแต่งประสิทธิภาพของมอเตอร์ เช่น ลดความเร็วหรือเพิ่มแรงบิด เพื่อให้เหมาะกับความต้องการของโปรเจกต์ บอร์ดนี้สามารถใช้กับมอเตอร์ที่มีการหมุนแบบต่าง ๆ และมักมีส่วนประกอบที่ช่วยในกระบวนการเพิ่มประสิทธิภาพ เช่น ล้อเฟืองหรือเกียร์. การใช้บอร์ด Motor Gear DC ช่วยให้การควบคุมมอเตอร์เป็นไปอย่างมีประสิทธิภาพและหลากหลายตามความต้องการของโปรเจกต์

7.Code

#include <Buzzer.h>

Buzzer buzzer(13); // Create a Buzzer instance on pin 13

const int irSensorPin = 21; // IR sensor pin
const int motorDirection1 = 14; // Replace with the appropriate GPIO pin
const int motorDirection2 = 12; // Replace with the appropriate GPIO pin
const int motorRunDuration = 200; // Motor run duration in milliseconds
const int buzzerDuration = 4000; // Buzzer duration in milliseconds
const int buzzerPin =13; // ให้เลือกหมายเลขขาที่ต่อกับบัซเซอร์


boolean gateOpen = false;
unsigned long gateOpenStartTime = 0;
unsigned long buzzerStartTime = 0;
boolean buzzerActive = false;

void setup() {
  pinMode(irSensorPin, INPUT);
  pinMode(motorDirection1, OUTPUT);
  pinMode(motorDirection2, OUTPUT);
  Serial.begin(115200); // Initialize serial communication
  buzzer.begin(0); // Initialize the buzzer
}

void loop() {
  static int irSensorState = LOW;  // เก็บสถานะปัจจุบันของเซนเซอร์ IR
  int currentIRState = digitalRead(irSensorPin);  // อ่านสถานะปัจจุบันของเซนเซอร์ IR

  if (currentIRState == LOW && irSensorState == HIGH) {
    // IR ไม่เห็นวัตถุเมื่อเปลี่ยนจาก HIGH เป็น LOW
    openGate();
    buzzerStartTime = millis();  // เริ่มติดตามเวลาของบัซเซอร์
    buzzerActive = true;
  }

  if (buzzerActive) {
    playBuzzerTone();
    if (currentIRState == HIGH) {
      // หยุดร้องเมื่อมีวัตถุ
      buzzerActive = false;
      analogWrite(buzzerPin, 0);  // ปิดบัซเซอร์
      delay(250);  // รอเพื่อความปลอดภัยเพื่อหยุดเสียงบัซเซอร์
      closeGate();  // ปิดประตูหลังจากที่บัซเซอร์เสร็จแล้ว
    }
  }

  irSensorState = currentIRState;  // อัปเดตสถานะของเซนเซอร์ IR
  Serial.println(gateOpen ? "Open" : "Closed");
}



void openGate() {
  digitalWrite(motorDirection1, HIGH);
  digitalWrite(motorDirection2, LOW);

  gateOpen = true;
  gateOpenStartTime = millis();
  while (millis() - gateOpenStartTime < motorRunDuration) {
    // Run the motor
  }

  digitalWrite(motorDirection1, LOW);
  digitalWrite(motorDirection2, LOW);
  Serial.println("Gate opened");
}

void closeGate() {
  digitalWrite(motorDirection1, LOW);
  digitalWrite(motorDirection2, HIGH);

  gateOpen = false;
  gateOpenStartTime = millis();
  while (millis() - gateOpenStartTime < motorRunDuration) {
    // Motor is active
  }

  digitalWrite(motorDirection1, LOW);
  digitalWrite(motorDirection2, LOW);
  Serial.println("Gate closed");
}




void playBuzzerTone() {
  if (millis() - buzzerStartTime < 5000) { // Play the buzzer for 5 seconds
    analogWrite(buzzerPin, 128); // ค่าความสว่าง 0-255
    delay(250); // ปิดเสียงนาฬิกา
    analogWrite(buzzerPin, 0); // ปิดบัซเซอร์
    delay(250); // สร้างระยะเวลาเสียง
  } else {
    analogWrite(buzzerPin, 0); // ค่าความสว่าง 0 (ปิดบัซเซอร์)
    buzzerActive = false;
  }
}

8.สรุปผลการทำงาน

การทดลองการตรวจจับรถไฟทำงานได้อย่างมีประสิทธิภาพและแม่นยำตรงตามเงื่อนไขที่กำหนด ตามที่ทดลองได้แก่ 1.Sensor IR ตรวจจับวัตถุได้อย่างแม่นยำ

2.L298N รับค่าจาก ESP32 ได้ตามที่กำหนดไว้

3.Motor gear DC หมุนเปิด-ปิดได้ตามที่ต้องการ

9.เอกสารอ้างอิง

[1] Railroad Stopper | Project Arduino ComED KKU58

-Youtube

[2]  เพ็ญพิชชา เขียวพอ.จุดตัดทางรถไฟ ระวังไว้ไม่เสี่ยงชีวิต

2565(8 กุมภาพันธ์ 2565).จากhttps://safedrivedlt.com/1008513-2/

[3] micro:bit Project กับครูราม  ตอน ไม้กั้นอัจฉริยะ- Youtube

You may also like...

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *