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
- Arduino UNO x1
- Sensor MQ-2 x1
- Sensor MQ-135 x1
- Sensor óptico de poeira GP2Y1010AU0F x1
- Resistência 150Ω x1
- Tela OLED SSD1306 x1
- Tábua de ensaio x1
- 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Ω.
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.
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.
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.
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.
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.
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.
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