Monitor de poluição portátil baseado em Arduino com display OLED

A maioria das pessoas de meia-idade sofre de problemas de saúde como asma e problemas respiratórios, especialmente nas cidades. A poluição do ar é a principal causa disso. Neste projeto, projetamos um dispositivo portátil que detecta diferentes métricas de poluição do ar e as exibe em uma pequena tela OLED. Pessoas com problemas respiratórios podem usar o dispositivo para monitorar métricas relacionadas à poluição e evitar locais perigosos. O conceito deste dispositivo pode ser integrado em dispositivos de consumo, como um smartwatch ou um relógio de fitness.

Neste projeto, o dispositivo é prototipado em Arduino. Existem três métricas de poluição do ar – nível de CO2, fumaça e poeira – que são medidas usando o dispositivo. O nível de CO2, partículas de fumaça e densidade de poeira são medidos usando sensores ópticos de poeira MQ-135, MQ-2 e GP2Y1010AU0F. Todas as métricas são exibidas em um display OLED SSD1306 de 128×64.

Componentes necessários

  1. Arduino UNO x1
  2. Sensor MQ-2 x1
  3. Sensor MQ-135 x1
  4. Sensor óptico de poeira GP2Y1010AU0F x1
  5. Resistência 150Ω x1
  6. Tela OLED SSD1306 x1
  7. Tábua de ensaio x1
  8. Fios de conexão/fios de jumper

Sensor MQ-135

MQ-135 é um sensor de qualidade do ar. Pode ser usado para detectar CO2, óxido de nitrogênio, benzeno, NH3, fumaça e álcool. A resistência de carga do sensor pode ser ajustada para detectar um determinado gás, fumaça ou álcool. Neste projeto, o sensor MQ-135 é utilizado para detectar o nível de CO2 do ar circundante. Para isso, a resistência de carga no circuito do sensor é ajustada para 22KΩ.

Sensor MQ135

Exemplo de Sensor MQ135

Para medição da qualidade do ar, o sensor MQ-135 precisa ser pré-aquecido em ar limpo. Após pré-aquecimento durante 24 horas, o valor de R0 pode ser determinado. O sensor de qualidade do ar MQ-135 possui quatro pinos – VCC, GND, Dout e Aout. Para pré-aquecer o sensor, conecte VCC à saída de 5V do Arduino, GND ao pino terra do Arduino e Aout a qualquer pino de entrada analógica do Arduino, como A4 neste projeto. Essas conexões de circuito são demonstradas abaixo.

Pré-aquecimento do MQ135 em ar limpo

Circuito para pré-aquecimento do sensor MQ135

Carregue o Arduino Sketch-1 na placa e deixe-o por 24 horas. Em seguida, verifique o valor de R0 do monitor serial e desmonte o circuito. Ao construir este projeto, o valor de R0 foi encontrado em 929,15Ω.

Arduino Sketch 1 (para pré-aquecimento MQ-135)

#incluir “MQ135.h”
configuração nula {
Serial.begin (9600);
}
loop vazio {
Sensor de gás MQ135 = MQ135(A4);
float rzero = gasSensor.getRZero ;
Serial.println(rzero);
atraso(1000);
}

Sensor MQ-2

MQ-2 também é um sensor de gás. Ele pode ser usado para detectar concentrações de GLP, álcool, hidrogênio, metano, propano e monóxido de carbono entre 200 PPM e 1000 PPM. É um sensor semicondutor de óxido metálico (MOS). Funciona alterando sua resistência quando o gás entra em contato com ele. Um circuito divisor de tensão detecta a mudança na resistência. O sensor opera em 5V DC e consome 800 mW de energia. O sensor possui quatro pinos – VCC, GND, D0 e A0. O VCC deve ser conectado à saída de 5V do Arduino e o GND ao pino de aterramento do Arduino. O pino D0 pode ser conectado a qualquer GPIO. Ele pode ser calibrado para fornecer uma saída BAIXA para um nível limite de concentração de gás definido por um potenciômetro no circuito do sensor MQ-2. O A0 pode ser conectado a qualquer pino de entrada analógica do Arduino e fornece o valor da concentração de gás em partes por milhão (PPM) como leitura de tensão. A leitura analógica de 10 bits do Arduino é diretamente proporcional à concentração de gás em PPM.

Sensor de gás MQ2

Exemplo de sensor de gás MQ2

Neste projeto, o MQ-2 é usado para detectar partículas de fumaça. O módulo sensor utilizado neste projeto possui resistência de carga de 20K e é calibrado para emitir diretamente uma tensão proporcional ao nível de fumaça. De acordo com o gráfico a seguir, um sensor MQ-2 simples pode ser calibrado para detectar diferentes gases usando uma relação de resistência de detecção para resistência zero.

Características de sensibilidade do sensor de gás MQ2

Características de sensibilidade do sensor de gás MQ2

Sensor óptico de poeira GP2Y1010AU0F

O sensor óptico de poeira GP2Y1010AU0F é usado para detectar a densidade da poeira no ar. Consiste em um diodo IR e um fotosensor montados diagonalmente em uma entrada de ar. Quando o ar contendo partículas de poeira entra na entrada, as partículas de poeira espalham as radiações infravermelhas do diodo em direção ao fotosensor. Quanto maior é a densidade da poeira, mais luz infravermelha é espalhada e maior é a tensão de saída do fotossensor. O sensor GP2Y1010AU0F pode detectar partículas de poeira tão pequenas quanto 0,5um e densidade de poeira de até 0,580 mg/m3.

Tela OLED SSD1306

Exemplo de display OLED SSD1306

O sensor óptico de poeira GP2Y1010AU0F possui um conector de seis pinos com a seguinte configuração de pinos.

Tela OLED SSD1306

SSD1306 é um display OLED popular. É um driver CMOS OLED/PLED de chip único. Ele pode gerenciar um display gráfico de matriz de pontos de 128×64. Ele foi projetado para controlar painéis OLED de cátodo comum. O chip possui vários recursos integrados, como controle de brilho de 256 etapas, RAM de exibição, oscilador e controle de contraste. Esses recursos integrados reduzem os componentes externos necessários e tornam o chip pronto para uso com qualquer tela OLED de resolução compatível.

Tela OLED SSD1306

Exemplo de display OLED SSD1306

Neste projeto, estamos usando um display OLED de 0,96 ″ com IC controlador SSD1306. O módulo possui tela Amarelo-Azul com resolução de tela 128×64. O módulo usado aqui possui uma interface de 7 pinos, permitindo a interface do módulo com o Arduino usando SPI de 3 fios, SPI de 4 fios e interface I2C. A interface SPI de 4 fios é a opção de interface padrão no módulo de 7 pinos. O display OLED de 7 pinos possui a seguinte configuração de pinos.

Conexões de circuito

Para projetar este monitor de poluição portátil, MQ-135, MQ-2, sensor óptico de poeira GP2Y1010AU0F e display OLED SSD1306 são interligados com o Arduino UNO.

Neste projeto, um módulo OLED SSD1306 de 7 pinos faz interface com o Arduino UNO. O módulo é conectado ao Arduino da seguinte maneira.

Para interface do sensor óptico de poeira GP2Y1010AU0F com Arduino UNO, faça as conexões resumidas na tabela abaixo.

Para fazer a interface do sensor MQ2, conecte VCC à saída de 5V do Arduino, GND ao pino terra do Arduino e Aout ao pino de entrada analógica A2 do Arduino. Para interface, o sensor MQ135 conecta VCC à saída de 5V do Arduino, GND ao pino terra do Arduino e Aout ao pino de entrada analógica A1 do Arduino.

Esboço do Arduino

Como funciona

O dispositivo projetado neste projeto detecta a qualidade do ar medindo o nível de CO2, fumaça e densidade de poeira. Ele exibe as métricas medidas no display OLED SSD1306 de 128*64. Para medir a qualidade do ar, é utilizado o sensor MQ-135. O sensor é pré-aquecido por 24 horas para obter o R0 valor. O arquivo de cabeçalho usa o valor R0 na biblioteca MQ-135. Uma vez que o R real0 for obtido, ele será substituído pelos valores padrão no arquivo MQ135.h. A biblioteca MQ135 pode ser baixada neste link. Com resistência de carga de 22KΩ, o sensor MQ-135 pode ser usado para medir a concentração de CO2 no ar. O sensor está conectado ao pino A1 do Arduino. A concentração de CO2 no ar é obtido usando a função getPPM da biblioteca MQ135.

O sensor óptico de poeira GP2Y1010AU0F da Sharp é útil na detecção de partículas finas, como fumaça de cigarro e partículas de poeira no ar. O sensor de poeira mede a densidade da poeira em mg/m3. Simultaneamente, a densidade da poeira também é medida pelo circuito.

Ao mesmo tempo, o sensor MQ2 é usado para medir partículas de fumaça. A densidade das partículas de fumaça é medida numa faixa de 200 PPM a 1000 PPM. A leitura analógica do sensor é diretamente proporcional à densidade da fumaça em PPM.

Quando o dispositivo é ligado, ele começa exibindo o logotipo EEWORLDONLINE no display OLED. Imediatamente depois disso, ele começa a ler os valores de todos os três sensores e exibe os valores no display OLED. Os valores são atualizados a cada segundo.

Guia de programação

O esboço do Arduino começa com a importação de bibliotecas para comunicação SPI e bibliotecas necessárias para SSD1306 OLED. A biblioteca para interface do SSD1306 com o Arduino está disponível na Adafruit. Para encontrá-lo, navegue até o gerenciador de biblioteca do Arduino IDE, Sketch -> Incluir Biblioteca -> Gerenciar Bibliotecas. Procure SSD1306 e selecione a versão mais recente da biblioteca Adafruit SSD1306. Ele também baixará a biblioteca GFX como uma dependência.

Biblioteca SSD1306

Captura de tela da biblioteca SSD1306

A declaração de variáveis ​​específicas do SSD1306 segue a inclusão de bibliotecas para SSD1306. Essas variáveis ​​armazenam os valores constantes específicos do SSD1306 e a atribuição de pinos. Um objeto bitmap é armazenado no PROGMEM do Arduino para armazenar o logotipo do EEWORLDONLINE.

Isto é seguido pela definição das constantes RLoad e RZero para o sensor MQ-135 e pela inclusão da biblioteca MQ-135. Esta biblioteca MQ-135 pode ser baixada como um arquivo Zip neste link e pode ser importada navegando até Sketch-> Incluir Biblioteca -> adicionar biblioteca .Zip. As variáveis ​​são declaradas para armazenar valores do sensor e atribuição de pinos para sensor de poeira, sensor MQ-135 e sensor MQ-2.

Uma função drawbm é definida para mostrar o logotipo EEWORLDONLINE no display OLED SSD1306. Na função setup , a taxa de transmissão para comunicação serial é definida como 9600, pois todas as métricas de poluição também são comunicadas à porta serial para observação. O display OLED SSD1306 é iniciado chamando display. Função Begin , e o logotipo EEWORLDONLINE é exibido na tela. O pino do sensor MQ135 é definido como entrada e o pino que conecta ao LED do sensor de poeira é definido como saída. O sensor MQ-2 conectado por pino analógico também é definido como entrada.

Na função loop , em primeiro lugar, o nível de poeira é calculado. O diodo IR é ligado por 280 microssegundos para medir o nível de poeira e a tensão de saída do fotossensor é lida. A tensão de saída de leitura do sensor de poeira leva cerca de 40 a 50 microssegundos, portanto é fornecido um atraso de 40 microssegundos. De acordo com a folha de dados do GP2Y1010AU0F, o diodo IR é pulsado a cada 10 milissegundos, então ainda restam 9,68 milissegundos. O nível de poeira é calculado usando as equações a seguir e impresso no Monitor Serial.

calcTensão = voMedido*(5,0/1024);
densidade de poeira = 0,17*calcVoltage-0,1;

Em seguida, é obtida a leitura analógica do sensor MQ-135 e o valor de CO2 a concentração em PPM é calculada. Da mesma forma, obtém-se a leitura analógica do sensor MQ-2 e obtém-se diretamente o valor da densidade da fumaça em PPM. Todas as métricas de poluição são comunicadas ao monitor serial e também exibidas na tela OLED.

Deve-se notar que para exibir valores de string em display OLED, a função display.write é usada, enquanto para exibir valores de sensor (valores numéricos), display.the print método é usado. Um atraso de 1.000 milissegundos é fornecido para repetir a atualização das métricas a cada segundo.

Resultado

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.