วันเสาร์ที่ 14 กันยายน พ.ศ. 2562

มินิโปรเจค Arduino ตรวจจับเปลวไฟ หรือเหตุเพลิงไหม้ ด้วย Fire Extinguisher

มินิโปรเจค Arduino ตรวจจับเปลวไฟ หรือเหตุเพลิงไหม้ ด้วย Fire Extinguisher

เป้าหมายและหลักการทำงานของโปรเจค


ให้ (Input) เซ็นเซอร์ 
ตรวจจับเปลวไฟ (Fire Extinguisher) ตรวจจับว่ามีเปลวไฟเกิดขึ้นหรือไม่ โดยให้แสดงการตรวจจับแบบดิจิตอล ทั้ง 5 เซ็นเซอร์ แล้วให้แสดงผลที่จอ LCD บรรทัดที่ 1  คือ สถานะ 1 = "มีเปลวไฟ" และ สถานะ 0 = "ไม่มีเปลวไฟ" การตรวจสอบว่ามีเปลวไฟหรือไม่? คือ ถ้าเซ็นเซอร์ ตัวใดตัวหนึ่งใน 5 ตัว มีสถานะเป็น 1 ให้ถือว่ามีเปลวไฟ

จอ LCD บรรทัดที่ 2 ถ้า "ไม่มี
เปลวไฟ" แสดงคำว่า "NORMAL" แต่ถ้า "มีเปลวไฟ" ให้แสดงคำว่า "FIRE ALARM" แล้วไปสั่งงาน (Output) คือ ให้ออด Buzzer แสดงการแจ้งเตือน และเมื่อไม่มีเปลวไฟ ให้ ออด Buzzer หยุดการแจ้งเตือน


อุปกรณ์ที่ใช้ในโปรเจค
5. 5 Way Fire Extinguisher Sensor 

6. Keyestudio Passive Buzzer Alarm Module


*** การใช้งานแบบไม่ต้องการเชื่อมต่อสาย USB กับ คอมพิวเตอร์ ให้ใช้ Adapter DC 9V 1A Power Supply เป็นแหล่งจ่ายไฟ เสียบเข้ากับ DC Power Jack ของ  บอร์ด Arduino ***


ขั้นตอนการทำโปรเจค

1. ต่อใช้งาน จอ LCD กับ Arduino
1.1 ยึดบอร์ด Arduino UNO



1.2 ประกอบ Sensor Shield V 5.0


1.3 เชื่อมต่อสาย LCD




1.4 ดาวน์โหลด Arduino I2C Library สำหรับ LCD
1.5 ติดตั้ง I2C Library สำหรับ LCD


1.5.1 เชื่อมต่อสาย USB ระหว่าง คอมพิวเตอร์ กับ บอร์ด Arduino



1.5.2 เปิดโปรแกรม Arduino IDE

1.5.3 ไปที่ Skecth -> Include Library -> Add .ZIP Library...



1.5.4 ไปที่ ไลบรารี Arduino-LiquidCrystal-I2C-library-master.zip ที่เรา ดาวน์โหลด มา -> Open


1.5.5 ตรวจสอบที่ Skecth -> Include Library  จะพบ ไลบรารี Arduino-LiquidCrystal-I2C-library-master เพิ่มเข้ามาใน Arduino IDE ของเรา


1.6 อัพโหลดโค้ด


1.6.1 เขียนโค้ดดังนี้


#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup()
{

lcd.begin();

lcd.backlight();
lcd.print("Hello, world!");
}

void loop()
{

}

1.6.2 ไปที่ Tools > Board เลือกเป็น Arduino/Genuino UNO


1.6.3 ไปที่ Tools > Port แล้วเลือกพอร์ตที่ปรากฏ (กรณีใช้เครื่องคอมพิวเตอร์ที่มี COM Port มากกว่าหนึ่ง  ให้เลือกตัวอื่นที่ไม่ใช่ COM1)

ในตัวอย่างเลือกเป็น "COM6"

(ถ้ายังว่าง หรือ เป็น COM1 ให้ตรวจสอบการติดตั้งไดร์เวอร์ การต่อสาย USB ของ Arduino UNO)

1.6.4 กดปุ่ม  เพื่ออัพโหลด


1.6.5 หากสามารถอัพโหลดโปรแกรมลงบอร์ดได้สำเร็จ จะแสดงคำว่า Done uploading. ที่แถบด้านล่าง


1.7 ปรับความสว่างหน้าจอ LCD




2. เชื่อมต่อสาย Fire Extinguisher Sensor

(จะมีแถวเชื่อมต่อ 2 แถว ให้เลือกเชื่อมต่อแถวด้านล่าง)


3. เชื่อมต่อสาย Keyestudio Buzzer



4. ภาพรวมการต่อโปรเจค



5. อัพโหลดโค้ด


/*
    Fire Alarm System with Fire Extinguisher
    For more details visit:
    https://miniarduino.blogspot.com/2019/05/fire.html

*/

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);

int sensor[5] = {0, 0, 0, 0, 0};
String my_sensor ;
int buzzer = 8;

void setup ( ) {

  lcd.begin();
  lcd.backlight();
  pinMode(3, INPUT);
  pinMode(4, INPUT);
  pinMode(5, INPUT);
  pinMode(6, INPUT);
  pinMode(7, INPUT);
  pinMode(buzzer, OUTPUT);
}



void loop ( ) {

  sensor[0] = digitalRead(7);
  sensor[1] = digitalRead(6);
  sensor[2] = digitalRead(5);
  sensor[3] = digitalRead(4);
  sensor[4] = digitalRead(3);

  my_sensor =  "S = " + String(sensor[0]) + "," + String(sensor[1]) + "," + String(sensor[2]) + "," + String(sensor[3]) + "," + String(sensor[4]) + ",";

  if ((sensor[0] == 0) && (sensor[1] == 0) && (sensor[2] == 0) && (sensor[3] == 0) && (sensor[4] == 0)) {

    lcd.setCursor(0, 0);
    lcd.print(my_sensor);
    lcd.setCursor(0, 1);
    lcd.print("NORMAL       ");
  }
  else {

    lcd.setCursor(0, 0);
    lcd.print(my_sensor);
    lcd.setCursor(0, 1);
    lcd.print("FIRE ALARM");
    buzzer_on();
  }

  delay(10);

}

void buzzer_on()

{ unsigned char i, j;

  { for (i = 0; i < 80; i++)

    { digitalWrite(buzzer, HIGH);

      delay(1);//delay1ms
      digitalWrite(buzzer, LOW);
      delay(1);//ms delay

    }

    for (i = 0; i < 100; i++)

    {

      digitalWrite(buzzer, HIGH);
      digitalWrite(buzzer, LOW);
      delay(2);

    }

  }

}

ไม่มีความคิดเห็น:

แสดงความคิดเห็น