Sistema de Monitoramento da Qualidade do Ar utilizando a Franzininho WiFi Lab01

Este post faz parte da série Franzininho WiFi com MicroPython

Introdução

Neste artigo, desenvolvido em MicroPython, utilizaremos a Franzininho WiFi Lab01, para monitorar a qualidade do ar por meio do sensor MQ135. Este dispositivo é reconhecido por sua capacidade de detectar diversos gases, sendo ideal para aplicações de monitoramento ambiental. 

Sensor MQ135

O sensor MQ-135 é um sensor de qualidade do ar utilizado para medir concentrações de diferentes gases presentes no ambiente. Esse sensor é projetado para detectar a presença de gases nocivos à saúde humana, como: amônia, óxido nítrico, álcool, benzeno, fumaça, dióxido de carbono, entre outros.

O funcionamento do MQ-135 é baseado na mudança na resistência elétrica do seu elemento sensível quando entra em contato com diferentes gases. Cada gás tem uma resposta característica que influencia a resistência do sensor. 

O MQ-135 possui duas saídas:

  • Saída Analógica: O sensor MQ-135 possui um pino de saída analógica que fornece uma tensão que varia de acordo com a concentração dos gases detectados. Quanto maior a concentração de gases nocivos, maior será a tensão de saída. Essa saída analógica é útil para medir a concentração relativa de diferentes gases presentes no ambiente. 
  • Saída Digital: O sensor MQ-135 também possui um pino de saída digital que é usado para indicar se a concentração de gases ultrapassou um certo limite ajustável. Esse limite é definido por um potenciômetro no sensor. A saída digital é normalmente em forma de um sinal TTL (0 ou 5V), que muda de estado quando a concentração de gases atinge o limite definido. Essa saída é útil para criar sistemas de alarme ou acionar ações específicas quando a qualidade do ar atinge um nível perigoso.

Abaixo temos a imagem do sensor.

Figura 1 – Sensor MQ135

Recursos necessários

Para iniciar o trabalho com os GPIOs, é essencial possuir o diagrama de pinos da placa à disposição, pois isso permitirá que você identifique tanto os nomes quanto as funções associadas a cada um deles.

Tabela 1 – Franzininho WiFi Lab01 pinout

PinoRecurso
IO1LDR
IO2BT6
IO3BT5
IO4BT4
IO5BT3
IO6BT2
IO7BT1
IO8OLED_SDA
IO9OLED_SCL
IO10TFT_DC
IO11TFT_RES
IO12LED AZUL
IO13LED VERDE
IO14LED VERMELHO
IO15DHT11
IO17BUZZER
IO35TFT_SDA
IO36TFT_SCL

Usando os GPIOS para Conexão Externa

Para esse projeto precisaremos utilizar uma protoboard, pois o MQ135 não está integrado a Franzininho WiFi Lab01. Portanto, será necessário realizar a conexão por meio dos pinos GPIOs disponíveis na placa.

O MQ135 possui 4 pinos: VCC, GND, A0 (saída analógica) e D0 (saída digital).  A identificação de cada um deles está impressa na parte inferior do sensor. Assim:

  • Os pinos VCC e GND devem ser conectados ao 3,3 V e GND da Franzininho WiFi Lab01, respectivamente;
  • O pino A0 do sensor MQ135 não será utilizado nesta aplicação;
  • O pino D0 do sensor MQ135 deve ser conectado a uma das entradas digitais da Franzininho WiFi Lab01.

Código

Com a Franzininho WiFi Lab01 conectada ao seu computador, abra o Thonny e crie um novo arquivo contendo o código a seguir:

import time, ssd1306
from machine import I2C, Pin

# setando a cor vermelha e verde do RGB
ledR=Pin(14,Pin.OUT)
ledG=Pin(13,Pin.OUT)

# configurando pino do sensor
mq135= Pin(2,Pin.IN)

# atribuição de pinos da Franzininho
i2c = I2C(scl=Pin(9), sda=Pin(8), freq=100000)

# configurando display
oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)    

while True:
	#coletando data e hora atual
	current_time = time.localtime()
	formatted_time = "{:02d}/{:02d}/{} {:02d}:{:02d}".format(current_time[2], current_time[1], current_time[0], current_time[3], current_time[4])

	# limpa display
	oled.fill(0)
    
	# exibição no display
	oled.text(formatted_time, 0, 0)
	if mq135.value() == 1:
    	oled.text("Odor: Ausente", 0, 30)
    	ledR.off()
    	ledG.on()

	else:
    	oled.text("Odor: Detectado", 0, 30)
    	ledG.off()
    	ledR.on()
   	 
	oled.show()
	time.sleep(5)

Vamos começar o código com “from machine import I2C, Pin“. Para poder acessar os pinos da placa e utilizar a comunicação I2C. A biblioteca “time” foi utilizada para adicionar pausas no código. Para utilizar o display OLED, importe a biblioteca “ssd1306”, que foi previamente instalada na sua placa

Iniciamos nomeando o LED RGB e o associando aos pinos da placa como saída (Pin.OUT).  Consultando a tabela de pinos da Franzininho WiFi LAB01, identificamos que o pino 13 é responsável pela cor verde do LED RGB e o pino 14 pela cor vermelha. 

ledR=Pin(14,Pin.OUT)
ledG=Pin(13,Pin.OUT)

Em seguida, configuramos o pino do sensor que foi conectado ao GPIO 2 e ajustado como entrada. Logo:

mq135= Pin(2,Pin.IN)

De acordo com a tabela de pinagem, os pinos SCL e SDA da Franzininho WiFi Lab01 são os pinos 9 e 8, respectivamente. Assim, o I2C é configurado. Além disso, configuramos o display OLED, definindo a largura e altura do display, que são 128×64, e realizamos a associação ao I2C.

i2c = I2C(scl=Pin(9), sda=Pin(8), freq=100000)oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c) 

No loop principal definimos a condição em que, ao detectar um sinal pelo sensor, a mensagem “odor: detectado” será apresentada no display, e o LED vermelho será aceso.  Do contrário, se nenhum sinal for detectado, uma mensagem indicando a normalidade do ar, “odor: ausente”, será exibida, enquanto o LED vermelho se apaga, permitindo que o LED verde assuma o destaque.

A verificação será feita a cada 5 segundos. Vale ressaltar que a configuração padrão do sensor é de nível lógico alto. Em outras palavras, quando não há detecção, a saída do sensor é 1 e, ao detectar algo, sua saída é alterada para 0.

Também foi exibido no display data e hora, como nos exemplos que antecederam esse.

A seguir, apresentamos o resultado do teste realizado ao aproximar e afastar um recipiente contendo acetona do sensor.

Figura 2 – Testes realizados na placa

Conclusão

Neste artigo, apresentamos em MicroPython uma solução para o monitoramento da qualidade do ar com a Franzininho WiFi Lab01 e o sensor MQ135. A utilização do sensor MQ135, sensível a diversos gases, oferece uma abordagem versátil e precisa para a detecção de substâncias nocivas. 

Como sugestão, é possível implementar sinais de alerta adicionais, como ativar um efeito sonoro através do buzzer da Franzininho WiFi LAB01 ou a implementação do piscar do LED. Essas adições enriquecem a capacidade de alerta do sistema e oferecem múltiplos meios de notificação.

Franzininho WiFi com MicroPython

Sistema de Monitoramento da Pressão Atmosférica Com Sensor BMP180 na Franzininho WiFi Lab01 Monitoramento ambiental usando um Sensor de Detecção de Chuva com a Franzininho WiFi Lab01
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Comentários:
Notificações
Notificar
0 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Home » Software » Sistema de Monitoramento da Qualidade do Ar utilizando a Franzininho WiFi Lab01

EM DESTAQUE

WEBINARS

VEJA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: