ESP32 Cảm Biến Lửa (Flame Sensor)

Cảm biến lửa có thể phát hiện và đo lường ánh sáng hồng ngoại phát ra từ ngọn lửa. Nó rất hữu ích để phát hiện hỏa hoạn và còn được gọi là cảm biến lửa hồng ngoại hoặc cảm biến hỏa hoạn. Cảm biến này cung cấp hai loại thông tin: một là tín hiệu digital đơn giản (bật hoặc tắt), và một là tín hiệu analog hiển thị cường độ của ngọn lửa.

Trong hướng dẫn này, chúng ta sẽ học cách sử dụng ESP32 với cảm biến lửa để phát hiện ngọn lửa. Cụ thể, chúng ta sẽ đề cập đến các bước sau:

ESP32 cảm biến lửa

Sau đó, bạn có thể chỉnh sửa code để kích hoạt còi báo động khi phát hiện lửa.

Linh Kiện Cần Thiết

1×mô-đun phát triển ESP-WROOM-32
1×Alternatively, ESP32 Uno-form board
1×Alternatively, ESP32 S3 Uno-form board
1×Cáp USB Type-C
1×Cảm Biến Lửa
1×Cảm Biến Lửa 5-trong-1 5-way
1×breadboard
1×Dây Jumper
1×(Khuyến nghị) Screw Terminal Expansion Board for ESP32
1×(Khuyến nghị) Breakout Expansion Board for ESP32
1×(Khuyến nghị) Power Splitter for ESP32

Or you can buy the following kits:

1×DIYables ESP32 Starter Kit (ESP32 included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về Cảm Biến Lửa

hồng ngoại flame fire-sensor module

Cảm biến lửa hồng ngoại có thể phát hiện ngọn lửa hoặc kiểm tra lượng ánh sáng hồng ngoại mà ngọn lửa phát ra. Do đó, nó giúp chúng ta phát hiện hỏa hoạn. Cảm biến này cung cấp hai lựa chọn sử dụng chân đầu ra digital và chân đầu ra analog.

Những cảm biến này được thiết kế để bắt một số loại ánh sáng hồng ngoại cụ thể được phát ra bởi ngọn lửa trong khi bỏ qua các loại khác, như nhiệt từ con người hoặc đèn trong nhà. Nhưng giống như bất kỳ cảm biến nào, chúng có giới hạn của mình, và đôi khi chúng có thể mắc lỗi, hoặc báo có lửa khi không có (dương tính giả) hoặc bỏ lỡ lửa khi có (âm tính giả).

Sơ Đồ Chân

Có hai loại module cảm biến lửa có sẵn:

Cảm biến lửa đơn bao gồm bốn chân:

  • Chân VCC: Cần được kết nối với VCC (3.3V đến 5V).
  • Chân GND: Cần được kết nối với GND (0V).
  • Chân DO: Đây là chân đầu ra digital. Nó ở mức HIGH nếu không phát hiện lửa và LOW nếu phát hiện. Giá trị ngưỡng để phát hiện lửa có thể được điều chỉnh bằng biến trở tích hợp.
  • Chân AO: Đây là chân đầu ra analog. Giá trị đầu ra giảm khi mức hồng ngoại giảm, và tăng khi mức hồng ngoại tăng.
cảm biến lửa sơ đồ chân
image source: diyables.io

Hơn nữa, nó có hai đèn LED báo hiệu:

  • Một đèn LED PWR báo nguồn.
  • Một đèn LED DO báo trạng thái lửa trên chân DO: nó sáng khi có lửa.

Module cảm biến lửa 5-trong-1 kết hợp năm cảm biến lửa riêng lẻ trên một PCB duy nhất. Các cảm biến chia sẻ chung biến trở, kết nối VCCGND, trong khi mỗi cảm biến có chân DO (Digital Output) và AI (Analog Input) độc lập riêng.

Cách Hoạt Động

Đối với chân DO:

  • Module có biến trở tích hợp để thiết lập ngưỡng hồng ngoại (độ nhạy).
  • Khi cường độ hồng ngoại trên ngưỡng, lửa được phát hiện, chân đầu ra của cảm biến ở mức LOW, và đèn LED DO sáng.
  • Khi cường độ hồng ngoại dưới ngưỡng, lửa KHÔNG được phát hiện, chân đầu ra của cảm biến ở mức HIGH, và đèn LED DO tắt.

Đối với chân AO:

  • Cường độ hồng ngoại trong môi trường xung quanh càng cao, giá trị đọc từ chân AO càng cao.
  • Cường độ hồng ngoại trong môi trường xung quanh càng thấp, giá trị đọc từ chân AO càng thấp.

Lưu ý rằng biến trở không ảnh hưởng đến giá trị trên chân AO.

Sơ Đồ Kết Nối

Vì module cảm biến lửa có hai đầu ra, bạn có thể chọn sử dụng một hoặc cả hai, tùy thuộc vào nhu cầu của bạn.

  • Cách kết nối ESP32 và cảm biến lửa sử dụng breadboard

Module cảm biến lửa cung cấp hai tùy chọn đầu ra. Bạn có thể sử dụng một hoặc cả hai dựa trên nhu cầu của mình.

ESP32 cảm biến lửa sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image

Nếu bạn chưa rõ cách cấp nguồn cho ESP32 và các linh kiện khác, xem: Cách Cung Cấp Nguồn Điện Cho ESP32.

how to connect ESP32 and cảm biến lửa

Code ESP32 - Đọc Giá Trị Từ Chân DO

/* * Mã ESP32 này được phát triển bởi newbiely.vn * Mã ESP32 này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp32/esp32-flame-sensor */ #define DO_PIN 13 // ESP32's pin GPIO13 connected to DO pin of the flame sensor void setup() { // initialize serial communication Serial.begin(9600); // initialize the ESP32's pin as an input pinMode(DO_PIN, INPUT); } void loop() { int flame_state = digitalRead(DO_PIN); if (flame_state == HIGH) Serial.println("No flame dected => The fire is NOT detected"); else Serial.println("Flame dected => The fire is detected"); }

Các Bước Nhanh

  • Nếu đây là lần đầu tiên bạn sử dụng ESP32, hãy xem ESP32 - Cài Đặt Phần Mềm.
  • Sao chép code trên và mở bằng Arduino IDE
  • Nhấn nút Upload trên Arduino IDE để upload code lên ESP32
  • Hướng cảm biến lửa về phía ngọn lửa.
  • Xem kết quả trên Serial Monitor.
COM6
Send
No flame dected => The fire is NOT detected No flame dected => The fire is NOT detected Flame dected => The fire is detected Flame dected => The fire is detected Flame dected => The fire is detected No flame dected => The fire is NOT detected No flame dected => The fire is NOT detected No flame dected => The fire is NOT detected
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Hãy lưu ý rằng nếu bạn nhận thấy trạng thái LED luôn sáng hoặc tắt ngay cả khi cảm biến hướng về phía ngọn lửa, bạn có thể điều chỉnh biến trở để tinh chỉnh độ nhạy của cảm biến.

Code ESP32 - Đọc Giá Trị Từ Chân AO

/* * Mã ESP32 này được phát triển bởi newbiely.vn * Mã ESP32 này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp32/esp32-flame-sensor */ #define AO_PIN 36 // ESP32's pin GPIO36 connected to AO pin of the flame sensor void setup() { // initialize serial communication Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); } void loop() { int infrared_value = analogRead(AO_PIN); Serial.print("The AO value: "); Serial.println(infrared_value); }

Các Bước Nhanh

  • Sao chép code trên và mở bằng Arduino IDE
  • Nhấn nút Upload trên Arduino IDE để upload code lên ESP32
  • Hướng cảm biến lửa về phía ngọn lửa.
  • Xem kết quả trên Serial Monitor.
COM6
Send
245 246 246 573 677 949 955 1004 1007 1013 1018 641 543 340 179
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Lưu ý:

Hướng dẫn này sử dụng hàm analogRead() để đọc giá trị từ ADC (Analog-to-Digital Converter) kết nối với cảm biến lửa. ADC của ESP32 phù hợp cho các dự án KHÔNG cần độ chính xác cao. Tuy nhiên, đối với các dự án cần đo lường chính xác, hãy lưu ý:

  • ADC của ESP32 không hoàn toàn chính xác và có thể cần hiệu chuẩn để có kết quả đúng. Mỗi bo mạch ESP32 có thể khác nhau một chút, vì vậy bạn cần hiệu chuẩn ADC cho từng bo mạch riêng lẻ.
  • Hiệu chuẩn có thể khó khăn, đặc biệt đối với người mới bắt đầu, và có thể không luôn cho kết quả chính xác như bạn mong muốn.

Đối với các dự án cần độ chính xác cao, hãy cân nhắc sử dụng ADC ngoài (ví dụ ADS1115) với ESP32 hoặc sử dụng Arduino, có ADC đáng tin cậy hơn. Nếu bạn vẫn muốn hiệu chuẩn ADC của ESP32, tham khảo ESP32 ADC Calibration Driver

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.

Bài hướng dẫn liên quan