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.