Neste post veremos como utilizar o sensor de gás MQ-7 e o de chama e fogo para criar um alarme de incêndio com ESP8266 NodeMCU. Se você preferir, é possível seguir o passo a passo com os demais modelos do ESP8266.
Antes de iniciar, eu sugiro a leitura do post Como programar o módulo ESP8266 NodeMCU pois iremos utilizar o firmware versão 1.5 do NodeMCU.

As versões após a 1.0 devem ser criadas através do site NodeMCU custom builds, pois com a grande quantidade de módulos adicionados ao NodeMCU ficou complicado gerar uma versão pré-compilada. Para o projeto de hoje, os módulos GPIO, timer, WiFi e HTTP são necessários. É recomendado o uso dos módulos padrões file, net, node e UART.
No nosso exemplo iremos demonstrar como emitir um alarme caso detecte fogo ou gases, além de enviar uma notificação através do Pushbullet para o nosso Smartphone. Para quem ainda não conhece, o Pushbullet é um aplicativo gratuito que permite trocar notificações, links, arquivos e pequenos textos entre diversas plataformas.
Instale o Pushbullet em seu Smartphone ou computador. Após instalar acesse Sua conta e clique em Create Access Token para gerar uma chave de acesso a API do Pushbullet, que será utilizada mais abaixo.
Lista de componentes
Para montagem do alarme de incêndio com ESP8266, você vai precisar de:
- Buzzer
- Sensor de Gás MQ-7
- Sensor de chama fogo
- ESP8266 NodeMCU
- Protoboard
- Jumpers
- Fonte 3.3v (opcional)
Circuito alarme de incêndio com ESP8266
Ambos os sensores possuem pino analógico e digital, no nosso caso com a quantidade limitada de pinos analógicos iremos conecta-los através do pino digital, que irá retornar o valor 0 caso não detecte nenhum problema ou 1 se detectar gás ou fogo. Também utilizaremos um pino para ligar o buzzer, para emitir o alerta. Na imagem abaixo é possível observar o circuito montado. Lembre-se, o circuito é de 3.3 volts.

Ambos os sensores possuem ajuste de sensibilidade, o que permite regulá-los de acordo com a necessidade.
Programa de monitoramento
Nas linhas 2, 4, e 6 definimos os pinos onde foram conectados os sensores e o buzzer. Já nas linha 85, 86, e 87 definimos os modos dos pinos, saída para o buzzer e entrada para os sensores.
Na linha 42 você deve informar o seu token de acesso da API do Pushbullet. Já na linha 91 você deve inserir o SSID e a senha do seu roteador.
-- Buzzer
BUZ_PIN = 6 -- GPIO 12
-- Sensor de chama e fogo
FIRE_PIN = 7 -- GPIO 13
-- Sensor de Gás
GAS_PIN = 5 -- GPIO 14
BUZZ_TMR = 1
FIRE_GAS_TMR = 2
-- liga o alarme que irá fazer um beep a cada 1 segundo.
function buz_on()
is_buz_on = false
tmr.alarm(BUZZ_TMR, 1000, tmr.ALARM_AUTO, function()
if is_buz_on then
gpio.write(BUZ_PIN, gpio.LOW) -- on
else
gpio.write(BUZ_PIN, gpio.HIGH) -- off
end
is_buz_on = not is_buz_on
end)
end
-- desliga o alarme
function buz_off()
gpio.write(BUZ_PIN, gpio.HIGH)
tmr.unregister(BUZZ_TMR)
end
-- verifica se o alarme já está ligado
function is_buz_enable()
running, mode = tmr.state(BUZZ_TMR)
return running
end
-- envia notificação para o celular.
function notify_pushbullet()
http.post('https://api.pushbullet.com/v2/pushes',
'Content-Type: application/jsonrnAccess-Token: TOKEN_DO_PUSHBULLETrn',
'{"body":"O sensor detectou fogo ou gás, verifique.","title":"Fogo detectado!!!","type":"note"}',
function (code, data)
print(code)
end)
end
-- inicia o processo de verificação de gás ou fogo
function start()
buz_off()
tmr.alarm(FIRE_GAS_TMR, 500, tmr.ALARM_AUTO, function()
turn_buz_on = false
-- verifica se detectou chamas.
if gpio.read(FIRE_PIN) == 1 then
turn_buz_on = true
end
-- verifica se detectou gás.
if gpio.read(GAS_PIN) == 1 then
turn_buz_on = true
end
if turn_buz_on then
if not is_buz_enable() then
buz_on()
notify_pushbullet()
end
else
buz_off()
end
end)
end
-- termina o processo de verificação de gás ou fogo
function stop()
buz_off()
tmr.unregister(FIRE_GAS_TMR)
end
function configure()
-- configura os GPIO.
gpio.mode(BUZ_PIN, gpio.OUTPUT)
gpio.mode(FIRE_PIN, gpio.INPUT)
gpio.mode(GAS_PIN, gpio.INPUT)
-- configura o ESP para conectar no Wifi.
wifi.setmode(wifi.STATION)
wifi.sta.config("SSID_WIFI", "SENHA_WIFI")
wifi.sta.connect()
end
configure()
start()
A função buz_on tem por objetivo fazer com que o buzzer emita um beep a cada segundo caso detecte algum problema, como presença de gás ou fogo.
A função start é responsável por executar a cada meio segundo uma verificação nos sensores para detecção de gás ou fogo. Caso ela detecte a presença de um destes o alarme é iniciado. Caso tudo volte ao normal o alarme é desligado através da função buz_off.
A última linha com a chamada da função start é responsável por iniciar todo o processo de monitoramento.
E abaixo, temos a tela do smartphone com o aviso do nosso alarme de incêndio com ESP8266 NodeMCU:

Gostou? Deixe seu comentário logo abaixo. Em caso de dúvidas, caso queira trocar uma ideia, ou até mesmo dividir seu projeto, acesse nosso Fórum! Vejas também outros projetos de eletrônica aqui.







