Sensor de fumaça ou gás com Raspberry Pi
Si queremos analisar algum tipo de gás com uma Raspberry Pi, podremos fazer muito fácil com os sensores MQ, só precisamos saber em todo o caso que sensor obter, dependiendo de los gases a analizar y listo, veremos neste post como conectarlo e obter os valores. Como de costume, al final guardaremos os dados obtidos numa base de dados de MySQL para visualizarlo desde Grafana!
O que eu disse, primero será saber qué sensor MQ usaremos, en este post nos basaremos en un MQ2 que analisa Metano, LPG y Humo, mas que sepáis que também temos entre outros el MQ3 para obter Alcoho, Etanol y Humo, com o MQ4 podremos obter Metano y gas natural comprimido o CNG, MQ5 para gás natural y LPG, com o MQ6 obtemos LPG y gás butano, com o MQ7 monóxido de carbono, com o MQ8 Hidrogeno, el MQ9 para monoxido de carbono y gases inflamáveis, MA131 para Ozono, MQ135 para Benceno, Alcoho y Humo, MQ136 Ácido sulfhídrico, MQ137 para Amonia, MQ138 nos daría los valores de Benceno, Tolueno, Acetona, Propano, Alcohol y gas formaldehido… e assim até decidir que sensor barato vamos a adquirir para detectar os gases que nos interessam. O que eu disse, neste post nos basamos em um MQ-2.
A parte del sensor, necesitaremos también un conversor Analógico-Digital, yo uso un MCP3008 y además un conversor de niveles lógicos 3.3 a 5V. Vemos na imagem como fazer el conexionado de los GPIO de la Raspberry hacia el sensor. Por certo sensor pode ser regulado si o necessitamos com um destornillador, Mas uau, normalmente viene bien, es probar…
Y en el lado del software, supongamos que tenemos una Raspbian funcionando, nos descargamos un maravilloso script de tutRPi de GitHub y probamos a ejecutarlo, Simples assim:
[Código-fonte]clone do git https://github.com/tutRPi/Raspberry-Pi-Gas-Sensor-MQ
cd Raspberry-Pi-Gas-Sensor-MQ\
python example.py[/Código-fonte]
Y si lo modificamos un poco… cada uno como necesite y guste… en mi caso ya sabéis este script lo ejecutaré cuando inicie la Raspberry Pi mediante cron, cada 60 segundos meterá en una tabla de una base de datos los valores que obtenga del sensor. Luego vamos a ver cómo lo visualizamos con Grafana… Así me quedaría el script:
[Código-fonte]
from mq import *
import sys, Hora
mq = MQ();
while True:
perc = mq.MQPercentage()
print perc["GAS_LPG"]
print perc["CO"]
print perc["SMOKE"]
importar MySQLdb
db = MySQLdb.connect("DIRECCION_IP_SERVIDOR_MYSQL","USUARIO","CONTRASEÑA","BASE_DE_DATOS")
cursor = db.cursor()
cursor.execute("""INSERT INTO gases (LPG, CO, fumo) VALORES (%s, %s, %s) """,( perc["GAS_LPG"], perc["CO"], perc["SMOKE"]))
db.commit()
time.sleep(60)
[/Código-fonte]
Lo said este script almacena en una tabla llamada gases que tiene 4 columnas, 3 de ellas son gases (LPG, CO y humo) y otra es la fecha, os dejo el código por si alguém lo necesita y ter una tabla idéntica para el script anterior:
[Código-fonte]CREATE TABLE 'gases' (
'LPG' FLOAT NULL DEFAULT NULL,
'CO' FLOAT NULL DEFAULT NULL,
'humo' FLOAT NULL DEFAULT NULL,
'date' TIMESTAMP NOT NULL PADRÃO CURRENT_TIMESTAMP NA ATUALIZAÇÃO CURRENT_TIMESTAMP
)
COLLATE='latin1_swedish_ci’
ENGINE=InnoDB
ROW_FORMAT=COMPACTO
;[/Código-fonte]
Y ya en nuestro Grafana, podremos en un Dashboard añadir un Panel de tipo Graph por exemplo y fazer consultas a la BD de MySQL para dibujar las métricas de los gases que estamos analisando. Queda chulisimo, Não?? Os dejo por si necesitáis las Querys que estoy haciendo:
[Código-fonte]SELECT humo as value, "Humo" como métrica, UNIX_TIMESTAMP(data) como time_sec DE gases ONDE $__timeFilter(data) Encomendar por time_sec ASC
SELECIONE LPG como valor, "LPG" como métrica, UNIX_TIMESTAMP(data) como time_sec DE gases ONDE $__timeFilter(data) Encomendar por time_sec ASC
selecione CO como valor, "CO" como métrica, UNIX_TIMESTAMP(data) como time_sec DE gases ONDE $__timeFilter(data) Encomendar por time_sec ASC[/Código-fonte]
Pronto! Espero que os haya sido interessante, ya habéis visto en el blog otros tipos de sensores para conectar a una Raspberry Pi y conhecer el estado de nuestro entorno! a disfrutar!!!











































