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.
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
| Pino | Recurso |
| IO1 | LDR |
| IO2 | BT6 |
| IO3 | BT5 |
| IO4 | BT4 |
| IO5 | BT3 |
| IO6 | BT2 |
| IO7 | BT1 |
| IO8 | OLED_SDA |
| IO9 | OLED_SCL |
| IO10 | TFT_DC |
| IO11 | TFT_RES |
| IO12 | LED AZUL |
| IO13 | LED VERDE |
| IO14 | LED VERMELHO |
| IO15 | DHT11 |
| IO17 | BUZZER |
| IO35 | TFT_SDA |
| IO36 | TFT_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.
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.





