Arduino UNO R4 - Sensor de Chama

Este tutorial ensina como usar um Arduino UNO R4 e um sensor de chama para detectar e medir chamas e fogo. Vamos focar nos seguintes tópicos:

Arduino UNO R4 sensor de chama

Depois, você pode mudar o código para ligar uma buzina de alerta (usando um relé) quando ele detectar fogo.

Sobre o Sensor de Chama

módulo sensor de chama e fogo infravermelho

O sensor de chama pode detectar e medir a luz infravermelha de uma chama, o que pode ser usado para detecção de fogo. Ele também é conhecido como sensor de chama infravermelho ou sensor de fogo. Este sensor oferece dois tipos de sinais: uma saída digital (LOW ou HIGH) e uma saída analógica.

Os sensores de chama infravermelhos são feitos para detectar tipos específicos de comprimentos de onda de radiação infravermelha que vêm das chamas. Eles são construídos para reduzir alarmes falsos causados por outras fontes de infravermelho, como o calor do corpo humano ou lâmpadas. No entanto, esses sensores não são perfeitos e às vezes podem dar alertas incorretos, seja detectando algo que não existe, seja deixando de detectar o que existe.

Pinagem

Existem dois tipos de módulos de sensor de chama disponíveis:

O sensor de chama simples tem quatro pinos:

  • Pino VCC: Conecte este pino ao VCC (3,3V a 5V).
  • Pino GND: Conecte este pino ao GND (0V).
  • Pino DO: Este é um pino de saída digital. Ele mostra HIGH quando nenhuma chama é detectada e LOW quando uma chama é detectada. Você pode mudar a sensibilidade de detecção de chama com um potenciômetro incluído na placa.
  • Pino AO: Este é um pino de saída analógica. O valor da saída diminui quando o nível de infravermelho diminui e aumenta quando o nível de infravermelho aumenta.
Pinagem do Sensor de Chama
image source: diyables.io

Ele também tem duas luzes LED:

  • Um indicador PWR-LED mostra se a energia está ligada.
  • Um indicador DO-LED mostra se há uma chama dectectada.

O sensor de chama 5 em 1 integra cinco sensores de chama individuais em uma única PCB. Esses sensores compartilham as conexões de um potenciômetro comum, VCC e GND, garantindo um gerenciamento de energia simplificado. No entanto, os pinos DO (Saída Digital) e AI (Entrada Analógica) de cada sensor funcionam de forma independente, permitindo detecções de chama simultâneas e distintas. Além disso, cada sensor é orientado em uma direção diferente, o que aumenta significativamente o alcance total de detecção.

Como Funciona

Para o pino DO:

  • O módulo inclui um potenciômetro para ajustar o limite de infravermelho (sensibilidade).
  • Se a intensidade do infravermelho ultrapassar o limite, a chama é detectada, o pino de saída do sensor fica em LOW e o DO-LED acende.
  • Se a intensidade do infravermelho estiver abaixo do limite, a chama não é detectada, o pino de saída do sensor fica em HIGH e o DO-LED fica apagado.

Para o pino AO:

  • Quando há mais luz infravermelha ao redor, a leitura do pino AO será maior.
  • Quando há menos luz infravermelha ao redor, a leitura do pino AO será menor.

O potenciômetro não altera o valor no pino AO.

Diagrama de Ligação

O módulo do sensor de chama tem duas saídas, então você pode usar uma ou as duas, dependendo da sua necessidade.

Arduino UNO R4 diagrama de ligação do Sensor de Chama

This image is created using Fritzing. Click to enlarge image

Veja A melhor forma de alimentar o Arduino Uno R4 e outros componentes.

Código Arduino UNO R4 - Ler o valor do pino DO

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-flame-sensor */ #define DO_PIN 2 // The Arduino UNO R4 pin connected to DO pin of the flame sensor void setup() { // initialize serial communication Serial.begin(9600); // initialize the Arduino's pin as an input pinMode(DO_PIN, INPUT); } void loop() { int flame_state = digitalRead(DO_PIN); if (flame_state == HIGH) Serial.println("The flame is NOT present => The fire is NOT detected"); else Serial.println("The flame is present => The fire is detected"); }

Passos Rápidos

Siga estas instruções passo a passo:

  • Se esta é a sua primeira vez usando o Arduino Uno R4 WiFi/Minima, consulte o tutorial sobre como configurar o ambiente para o Arduino Uno R4 WiFi/Minima na Arduino IDE.
  • Conecte o sensor de chama ao Arduino Uno R4 conforme o diagrama fornecido.
  • Conecte a placa Arduino Uno R4 ao seu computador usando um cabo USB.
  • Abra a Arduino IDE no seu computador.
  • Selecione a placa Arduino Uno R4 apropriada (por exemplo, Arduino Uno R4 WiFi) e a porta COM.
  • Copie o código acima e abra-o na Arduino IDE.
  • Clique no botão Upload na Arduino IDE para transferir o código ao Arduino UNO R4.
  • Aponte o sensor de chama para uma chama.
  • Confira os resultados no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno R4 WiFi
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno R4 WiFi' on 'COM15')
New Line
9600 baud
The flame is present => The fire is detected The flame is present => The fire is detected The flame is NOT present => The fire is NOT detected The flame is NOT present => The fire is NOT detected The flame is NOT present => The fire is NOT detected The flame is present => The fire is detected The flame is present => The fire is detected The flame is present => The fire is detected
Ln 11, Col 1
Arduino Uno R4 WiFi on COM15
2

Se você notar que a luz LED fica sempre acesa ou apagada mesmo quando o sensor está apontado para uma chama, você pode girar o potenciômetro para ajustar a sensibilidade do sensor.

Código Arduino UNO R4 - Ler o valor do pino AO

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-flame-sensor */ #define AO_PIN A0 // The Arduino UNO R4 pin connected to AO pin of the flame sensor void setup() { // initialize serial communication Serial.begin(9600); } void loop() { int flame_value = analogRead(AO_PIN); Serial.println(flame_value); }

Passos Rápidos

  • Copie o código e abra-o na Arduino IDE.
  • Clique no botão Upload na Arduino IDE para fazer o upload do código para o Arduino UNO R4.
  • Aponte o sensor de chama para uma chama.
  • Confira o resultado no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno R4 WiFi
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno R4 WiFi' on 'COM15')
New Line
9600 baud
145 206 226 513 697 959 965 1005 1006 1016 1019 661 545 341 172
Ln 11, Col 1
Arduino Uno R4 WiFi on COM15
2

Vídeo

O vídeo de demonstração abaixo usa o código abaixo:

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-flame-sensor */ #include <Wire.h> #include <DIYables_LCD_I2C.h> //================================================== // PIN CONFIG //================================================== #define FLAME_PIN 2 #define BUZZER_PIN 3 #define LED_PIN 4 //================================================== // ACTIVE LEVEL //================================================== // LED active LOW #define LED_ON LOW #define LED_OFF HIGH // Buzzer active LOW #define BUZZER_ON LOW #define BUZZER_OFF HIGH // Flame sensor #define FIRE_DETECTED_LEVEL LOW #define FIRE_NORMAL_LEVEL HIGH //================================================== DIYables_LCD_I2C lcd(0x27, 20, 4); //================================================== enum SystemState { STATE_SAFE, STATE_FIRE }; SystemState currentState = STATE_SAFE; SystemState previousState = STATE_FIRE; //================================================== unsigned long blinkTimer = 0; unsigned long fireStartTime = 0; bool blinkState = false; //================================================== void setup() { Serial.begin(115200); pinMode(FLAME_PIN, INPUT); pinMode(LED_PIN, OUTPUT); pinMode(BUZZER_PIN, OUTPUT); digitalWrite(LED_PIN, LED_OFF); digitalWrite(BUZZER_PIN, BUZZER_OFF); lcd.init(); lcd.backlight(); // Splash Screen lcd.clear(); lcd.setCursor(6,0); lcd.print("DIYables"); lcd.setCursor(4,1); lcd.print("FIRE MONITOR"); lcd.setCursor(3,2); lcd.print("Arduino UNO R4"); delay(2000); lcd.clear(); } //================================================== void loop() { bool fireDetected = (digitalRead(FLAME_PIN) == FIRE_DETECTED_LEVEL); currentState = fireDetected ? STATE_FIRE : STATE_SAFE; //------------------------------------------------ // State Changed //------------------------------------------------ if(currentState != previousState) { lcd.clear(); if(currentState == STATE_SAFE) { drawSafeScreen(); digitalWrite(LED_PIN, LED_OFF); digitalWrite(BUZZER_PIN, BUZZER_OFF); } else { fireStartTime = millis(); drawFireScreen(); } previousState = currentState; } //------------------------------------------------ // State Handler //------------------------------------------------ switch(currentState) { case STATE_SAFE: updateSafeMode(); break; case STATE_FIRE: updateFireMode(); break; } } //================================================== // SAFE SCREEN //================================================== void drawSafeScreen() { lcd.setCursor(0,0); lcd.print("FIRE MONITOR"); lcd.setCursor(0,1); lcd.print("Status : SAFE "); lcd.setCursor(0,2); lcd.print("Flame : NONE "); lcd.setCursor(0,3); lcd.print("Alarm : OFF "); } //================================================== void updateSafeMode() { digitalWrite(LED_PIN, LED_OFF); digitalWrite(BUZZER_PIN, BUZZER_OFF); } //================================================== // FIRE SCREEN //================================================== void drawFireScreen() { lcd.setCursor(0,0); lcd.print("!!! FIRE ALERT !!!"); lcd.setCursor(0,1); lcd.print("Status : DANGER"); lcd.setCursor(0,2); lcd.print("Flame : DETECTED"); } //================================================== void updateFireMode() { unsigned long now = millis(); //---------------------------------------------- // LED + BUZZER FLASH //---------------------------------------------- if(now - blinkTimer >= 250) { blinkTimer = now; blinkState = !blinkState; if(blinkState) { digitalWrite(LED_PIN, LED_ON); digitalWrite(BUZZER_PIN, BUZZER_ON); } else { digitalWrite(LED_PIN, LED_OFF); digitalWrite(BUZZER_PIN, BUZZER_OFF); } } //---------------------------------------------- // FIRE TIMER //---------------------------------------------- unsigned long sec = (now - fireStartTime) / 1000; char buffer[21]; sprintf(buffer, "Alarm : %02lu:%02lu", sec / 60, sec % 60); lcd.setCursor(0,3); lcd.print(buffer); }

Referências de Funções

Tutoriais Relacionados

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!