Mã Arduino và Video: Mô-đun cảm biến ngọn lửa cho Arduino
Trong hướng dẫn này, chúng ta sẽ khám phá cách sử dụng mô-đun cảm biến lửa với Arduino. Cảm biến lửa phát hiện sự hiện diện của ngọn lửa và có thể kích hoạt chuông báo động hoặc đèn chỉ báo khi phát hiện. Đến cuối dự án này, bạn sẽ có một hệ thống hoạt động phản ứng với việc phát hiện lửa bằng cảnh báo âm thanh và phản hồi trực quan.


Mô-đun cảm biến lửa hoạt động bằng cách sử dụng đèn LED hồng ngoại để phát hiện ngọn lửa. Khi phát hiện ngọn lửa, mô-đun sẽ xuất ra tín hiệu có thể được sử dụng để kích hoạt các thành phần khác, chẳng hạn như còi báo động hoặc đèn LED. Dự án này sẽ bao gồm việc nối dây cảm biến lửa với Arduino và viết một chương trình đơn giản để xử lý đầu vào và đầu ra.
Để hiểu rõ hơn về mã và cách nối dây, tôi khuyến khích bạn xem video liên quan (trong video tại 00:00).
Phần cứng được giải thích
Các thành phần chính trong dự án này bao gồm mô-đun cảm biến lửa, bo mạch Arduino và còi báo động hoặc đèn LED để cảnh báo. Cảm biến lửa có bốn chân: chân đầu ra kỹ thuật số (DO), chân đầu ra tương tự (AO), chân nguồn (VCC) và chân nối đất (GND). Chân đầu ra kỹ thuật số gửi tín hiệu HIGH khi phát hiện ngọn lửa, trong khi đầu ra tương tự cung cấp các giá trị thay đổi dựa trên cường độ của ngọn lửa.
Arduino đọc đầu ra kỹ thuật số để xác định xem có ngọn lửa hay không. Khi cảm biến phát hiện ngọn lửa, Arduino có thể kích hoạt chuông báo động hoặc đèn bằng chân đầu ra. Độ nhạy của việc phát hiện lửa có thể được điều chỉnh bằng chiết áp tích hợp trên mô-đun.
Chi tiết bảng dữ liệu
| Nhà sản xuất | Generic |
|---|---|
| Số bộ phận | LM393 |
| Điện áp logic/IO | 5 V |
| Điện áp cung cấp | 2–36 V |
| Dòng điện đầu ra (mỗi kênh) | 20 mA |
| Dòng điện đỉnh (mỗi kênh) | 50 mA |
| Hướng dẫn tần số PWM | N/A |
| Ngưỡng logic đầu vào | 0,8 V (thấp), 2,0 V (cao) |
| Sụt áp / RDS(on) / bão hòa | 0,2 V |
| Giới hạn nhiệt | 125 °C |
| Kiểu đóng gói | TO-220 |
| Ghi chú / biến thể | Độ nhạy có thể điều chỉnh |
- Đảm bảo cung cấp điện áp phù hợp từ 2 đến 36 V cho mô-đun.
- Giữ đèn LED hồng ngoại của cảm biến thông thoáng để phát hiện lửa tối ưu.
- Sử dụng tản nhiệt nếu mô-đun hoạt động gần giới hạn dòng điện đỉnh.
- Thận trọng khi nối dây để tránh đoản mạch hoặc kết nối sai.
- Điều chỉnh độ nhạy bằng chiết áp trên bo mạch cho các ứng dụng khác nhau.
- Xác minh rằng đầu ra báo động có thể xử lý tải được kết nối (còi/đèn LED).
Hướng dẫn nối dây


Để nối dây mô-đun cảm biến lửa với Arduino, hãy bắt đầu bằng cách kết nối chân VCC của cảm biến lửa với chân 5V trên Arduino. Sau đó, kết nối chân GND của cảm biến với một trong các chân GND trên Arduino. Chân đầu ra kỹ thuật số (DO) từ cảm biến lửa nên được kết nối với chân kỹ thuật số 2 trên Arduino, mà chúng ta sẽ gọi là FLAME trong mã. Cuối cùng, kết nối một thiết bị báo động, chẳng hạn như còi, với chân kỹ thuật số 8 trên Arduino, được gọi là ALARM.
Đảm bảo rằng tất cả các kết nối đều chắc chắn, vì kết nối lỏng lẻo có thể dẫn đến hành vi không nhất quán. Nếu bạn muốn sử dụng đầu ra tương tự, hãy kết nối chân đầu ra tương tự (AO) với một chân tương tự trên Arduino, chẳng hạn như A0, nhưng điều này là tùy chọn cho chức năng cơ bản. Trong video, các phương pháp nối dây thay thế cũng được thảo luận (trong video tại 02:30).
Ví dụ mã và hướng dẫn chi tiết
Đoạn mã sau khởi tạo cảm biến lửa và thiết lập màn hình nối tiếp:
#define FLAME 2 // kết nối chân DO của cảm biến với chân này
#define ALARM 8 // chân 8 cho báo động
void setup() {
Serial.begin(9600);
Serial.println("Robojax.com Fire Module Test");
pinMode(FLAME, INPUT); // định nghĩa chân đầu vào FLAME
pinMode(ALARM, OUTPUT); // định nghĩa chân đầu ra ALARM
}
Ở đây, chúng ta định nghĩa các chân cho cảm biến lửa và báo động, và khởi tạo truyền thông nối tiếp ở tốc độ 9600 baud. Điều này cho phép chúng ta in thông báo ra màn hình nối tiếp để gỡ lỗi.
Tiếp theo, chúng ta đọc cảm biến lửa trong vòng lặp chính:
void loop() {
int fire = digitalRead(FLAME); // đọc cảm biến FLAME
if(fire == HIGH) {
digitalWrite(ALARM, HIGH); // bật còi
Serial.println("Fire! Fire!");
} else {
digitalWrite(ALARM, LOW); // tắt còi
Serial.println("Peace");
}
delay(200);
}
Phần này của mã kiểm tra trạng thái của cảm biến lửa. Nếu nó phát hiện ngọn lửa (HIGH), nó sẽ kích hoạt báo động và in "Fire! Fire!" ra màn hình nối tiếp. Nếu không có ngọn lửa (LOW), nó sẽ tắt báo động và in "Peace". Vòng lặp bao gồm độ trễ 200 mili giây, có thể được điều chỉnh để thay đổi độ nhạy của việc phát hiện.
Trình diễn / Điều gì sẽ xảy ra
Khi hệ thống được bật nguồn, màn hình nối tiếp sẽ hiển thị "Robojax.com Fire Module Test" theo sau là "Peace" cho đến khi phát hiện ngọn lửa. Khi phát hiện ngọn lửa, còi sẽ kêu và đèn LED sẽ sáng, chỉ ra tình trạng cháy. Bạn có thể kiểm tra độ nhạy của cảm biến bằng cách điều chỉnh chiết áp trên mô-đun. Hãy cẩn thận với các cảnh báo sai, chẳng hạn như những cảnh báo do tín hiệu hồng ngoại từ điều khiển từ xa gây ra (trong video tại 04:15).
Mốc thời gian video
- 00:00 - Giới thiệu về mô-đun cảm biến lửa
- 02:30 - Hướng dẫn nối dây
- 04:15 - Trình diễn phát hiện lửa
/*
* This is code for a Flame Sensor module for Arduino.
* Watch the video https://youtu.be/OZkZIP3KlHQ
* Other Arduino libraries and videos https://robojax.com
* *
Flame Sensor module for Arduino
Written by Ahmad Shamshiri for Robojax.com
on January 18, 2018 at 22:21 in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: This code is "AS IS" and for educational purposes only.
*
*
*/
/*
What does it do?
When the infrared diode sees the flame, it sends the digital output DO to
also, the level of flame is represented with the analog output.
*/
// 4 Infrared Obstacle code for Robojax.com
#define FLAME 2 // connect DO pin of sensor to this pin
#define ALARM 8 // pin 8 for Alarm
void setup() {
Serial.begin(9600);
Serial.println("Robojax.com Fire Module Test");
pinMode(FLAME, INPUT);//define FLAME input pin
pinMode(ALARM, OUTPUT);//define ALARM output pin
// Flame sensor code for Robojax.com
}
void loop() {
// Flame sensor code for Robojax.com
int fire = digitalRead(FLAME);// read FLAME sensor
if( fire == HIGH)
{
digitalWrite(ALARM,HIGH);// set the buzzer ON
Serial.println("Fire! Fire!");
}else{
digitalWrite(ALARM,LOW); // Set the buzzer OFF
Serial.println("Peace");
// Flame sensor code for Robojax.com
}
delay(200);
}
Tài nguyên & tài liệu tham khảo
-
Bên ngoàiLM393 datasheet (PDF)ti.com
Tập tin📁
Không có tệp nào khả dụng.