Phát hiện khí Ga

Phát hiện khí ga hiển thị lượng khí ga

Phát hiện khí ga

Phát hiện khí ga hiển thị lượng khí ga lên LED 7 đoạn và cảnh báo qua Buzzer

Hướng dẫn này sẽ dùng cảm biến khí ga để phát hiện khí ga, khi phát hiện khí ga sẽ hiển thị qua LED 7 đoạn và khi khí ga vượt quá ngưỡng cho phép thì LED 7 đoạn chớp nháy liên tục và buzzer sẽ kêu báo động.

Chuẩn bị

Đấu nối các linh kiện và hướng dẫn làm vỏ hộp

Đấu nối Cảm biến ga với UnoX

UnoXCảm biến khí ga
5VVCC
GNDGND
A0A0

Đấu nối LED 7 đoạn với UnoX

UnoXLED 7 đoạn
5VVCC
2a
3b
4c
5d
6e
7g
8f
9dp

Đấu nối Buzzer với UnoX

UnoXBuzzer
A4VCC
GNDGND

Chú ý: Sử dụng trở 330 ohm cho kết nối LED 7 đoạn với nguồn 5V, để giảm khả năng cháy LED.

Hướng dẫn thiết vỏ hộp và đế Pin

Thiết kế vỏ hộp

  • Đo và cắt bìa carton theo kích thước đã ghi ở hình bên dưới.

Thiết kế Pin

  • Bước 1: Cắt bỏ phần đế chuyển đổi với pin 9V
  • Bước 2: Sau khi cắt bỏ sẽ nối dây đỏ với dây đỏ, dây đen với dây đen và được thành phẩm

Chú ý:

  • Đảm bảo pin đã được sạc đầy, tránh tình trạng hết pin khi đã đặt trong hộp và dán kín.
  • Khi đã chắc chắn mô hình hoạt động thì nên dùng súng bắn keo cố định các chân cắm trước khi đưa vào vỏ hộp tránh lỏng chân khi có tác động.

Mô tả mã nguồn

  • Yêu cầu code:

    • Khi lượng khí ga < 400 thì 3 LED a, g, d sáng liên tiếp nhau.
    • Khi lượng khí ga từ 400 trở lên sẽ hiển thị số theo lượng khí tương ứng (vd: 500 hiển thị số 5).
    • Lượng khí ga > 700 thì sẽ kích hoạt Buzzer kêu và dấu chấm trên LED 7 đoạn chớp nháy liên tục.
  • Các chân sử dụng trong code:

    • Chân 2 -> 9 để hiển thị thông số lên LED 7 đoạn.
    • Chân A0 để đọc dữ liệu từ cảm biến
    • Chân A2 để kích Buzzer hoạt động.
#define Buzzer A2       // Chọn chân A2 là chân xuất tín hiệu kích hoạt Buzzer
#define sensorRead  A0  // Chọn chân A0 là chân đọc dữ liệu analog từ cảm biến

int sensorValue;        // Biến đọc giá trị analog từ cảm biến
int num;                // Biến giá trị lượng khí ga đo được từ cảm biến

// Gán các chân của UnoX với các chân LED 7 đoạn để có thể dễ dàng thiết lập số hiển thị và tiện cho việc muốn thay đổi chân trên UnoX
int a = 2;
int b = 3;
int c = 4;
int d = 5;
int e = 6;
int g = 7;
int f = 8;
int dp = 9;


void setup()
{
  pinMode(a, OUTPUT);
  pinMode(b, OUTPUT);
  pinMode(c, OUTPUT);
  pinMode(d, OUTPUT);
  pinMode(e, OUTPUT);
  pinMode(g, OUTPUT);
  pinMode(f, OUTPUT);
  pinMode(dp, OUTPUT);
  pinMode(A2, OUTPUT);
  Serial.begin(9600);
}


void loop()
{
  sensorValue = analogRead(sensorRead);     // Đọc giá trị analog
  Serial.println(sensorValue);              // In dữ liệu đọc được từ cảm biến ra màn hình serial monitor

  // Nếu lượng khí ga nhỏ hơn 400 thì hiển thị chớp nháy từ trên xuống trên LED 7 đoạn
  if (sensorValue < 400)
  {

    digitalWrite(a, HIGH);
    digitalWrite(b, HIGH);
    digitalWrite(c, HIGH);
    digitalWrite(d, HIGH);
    digitalWrite(e, HIGH);
    digitalWrite(g, HIGH);
    digitalWrite(f, HIGH);
    digitalWrite(dp, HIGH);


    digitalWrite(a, LOW);
    delay(500);
    digitalWrite(g, LOW);
    digitalWrite(a, HIGH);
    delay(500);
    digitalWrite(d, LOW);
    digitalWrite(g, HIGH);
    delay(500);


  } else {  // Nếu lượng khí ga lớn hơn hoặc bằng 400 thì hiển thị trên LED 7 đoạn lượng khí ga tương ứng (vd:700 hiển thị số 7)
    if (sensorValue >= 900) {
      num = 9;
    } else if (sensorValue >= 800) {
      num = 8;
    } else if (sensorValue >= 700) {
      num = 7;
    } else if (sensorValue >= 600) {
      num = 6;
    } else if (sensorValue >= 500) {
      num = 5;
    } else if (sensorValue >= 400) {
      num = 4;
    }
  }

  // Nếu khí ga vượt ngưỡng cho phép > 700 thì sẽ chớp kích hoạt Buzzer báo động và dấu chấm trên LED 7 đoạn chớp nháy liên tục
  if (sensorValue > 700) {
    digitalWrite(Buzzer, HIGH);
    digitalWrite(dp, HIGH);
    delay(100);
    digitalWrite(Buzzer, LOW);
    digitalWrite(dp, LOW);
    delay(100);
  }

  // Xét các trường cho 7 LED đơn trên LED 7 đoạn để LED 7 đoạn có thể hiển thị được các số 4 -> 9
  switch (num)
  {
    case 9:
      digitalWrite(a, LOW);
      digitalWrite(b, LOW);
      digitalWrite(c, LOW);
      digitalWrite(d, LOW);
      digitalWrite(e, HIGH);
      digitalWrite(g, LOW);
      digitalWrite(f, LOW);
      break;
    case 8:
      digitalWrite(a, LOW);
      digitalWrite(b, LOW);
      digitalWrite(c, LOW);
      digitalWrite(d, LOW);
      digitalWrite(e, LOW);
      digitalWrite(g, LOW);
      digitalWrite(f, LOW);
      break;
    case 7:
      digitalWrite(a, LOW);
      digitalWrite(b, LOW);
      digitalWrite(c, LOW);
      digitalWrite(d, HIGH);
      digitalWrite(e, HIGH);
      digitalWrite(g, HIGH);
      digitalWrite(f, HIGH);
      break;
    case 6:
      digitalWrite(a, LOW);
      digitalWrite(b, HIGH);
      digitalWrite(c, LOW);
      digitalWrite(d, LOW);
      digitalWrite(e, LOW);
      digitalWrite(g, LOW);
      digitalWrite(f, LOW);
      break;
    case 5:
      digitalWrite(a, LOW);
      digitalWrite(b, HIGH);
      digitalWrite(c, LOW);
      digitalWrite(d, LOW);
      digitalWrite(e, HIGH);
      digitalWrite(g, LOW);
      digitalWrite(f, LOW);
      break;
    case 4:
      digitalWrite(a, HIGH);
      digitalWrite(b, LOW);
      digitalWrite(c, LOW);
      digitalWrite(d, HIGH);
      digitalWrite(e, HIGH);
      digitalWrite(g, LOW);
      digitalWrite(f, LOW);
      break;
  }
}

Kết quả

Ứng dụng mở rộng

  • Cảnh báo đến điện thoại của chủ nhà khi phát hiện có khí gas