- Componentes necessários
- Sensor Sharp GP2Y1014AU0F
- Módulo de exibição OLED
- Diagrama de circuito
- Construindo o Circuito na Placa Perf
- Explicação do código para analisador de qualidade do ar
- Testando a interface do sensor Sharp GP2Y1014AU0F com Arduino
A poluição do ar é um grande problema em muitas cidades e o índice de qualidade do ar está piorando a cada dia. De acordo com o relatório da Organização Mundial de Saúde, mais pessoas morrem prematuramente pelos efeitos de partículas perigosas apresentadas no ar do que em acidentes de carro. De acordo com a Agência de Proteção Ambiental (EPA), o ar interno pode ser 2 a 5 vezes mais tóxico do que o ar externo. Portanto, aqui construímos um projeto para monitorar a qualidade do ar medindo a densidade das partículas de poeira no ar.
Portanto, na continuação de nossos projetos anteriores, como detector de GLP, detector de fumaça e Monitor de qualidade do ar, faremos a interface do sensor Sharp GP2Y1014AU0F com o Arduino Nano para medir a densidade de poeira no ar. Além do sensor de poeira e do Arduino Nano, um display OLED também é usado para exibir os valores medidos. O sensor de poeira GP2Y1014AU0F da Sharp é muito eficaz na detecção de partículas muito finas, como fumaça de cigarro. Ele é projetado para uso em purificadores de ar e condicionadores de ar.
Componentes necessários
- Arduino Nano
- Sensor Sharp GP2Y1014AU0F
- Módulo de exibição OLED de 0,96 'SPI
- Jumper Wires
- Capacitor 220 µf
- Resistor 150 Ω
Sensor Sharp GP2Y1014AU0F
O GP2Y1014AU0F da Sharp é um minúsculo sensor óptico de qualidade do ar / pó óptico de saída analógica de seis pinos projetado para detectar partículas de poeira no ar. Ele funciona com base no princípio de espalhamento de laser. Dentro do módulo do sensor, um diodo emissor de infravermelho e um fotossensor são dispostos diagonalmente perto do orifício de entrada de ar, conforme mostrado na imagem abaixo:
Quando o ar contendo partículas de poeira entra na câmara do sensor, as partículas de poeira espalham a luz do LED IV em direção ao fotodetector. A intensidade da luz espalhada depende das partículas de poeira. Quanto mais partículas de poeira houver no ar, maior será a intensidade da luz. A tensão de saída no pino V OUT do sensor muda de acordo com a intensidade da luz espalhada.
Pinagem do sensor GP2Y1014AU0F:
Conforme mencionado anteriormente, o sensor GP2Y1014AU0F vem com um conector de 6 pinos. A figura e a tabela abaixo mostram as atribuições de pinos para GP2Y1014AU0F:
S. NO. |
Nome do Pin |
Descrição do pino |
1 |
V-LED |
LED Vcc Pin. Conecte a 5V por meio de resistor 150Ω |
2 |
LED-GND |
Pino de aterramento do LED. Conecte-se ao GND |
3 |
CONDUZIU |
Usado para ligar / desligar o LED. Conecte-se a qualquer pino digital do Arduino |
4 |
S-GND |
Pino de aterramento do sensor. Conecte-se ao GND do Arduino |
5 |
V OUT |
Pino de saída analógica do sensor. Conecte a qualquer pino analógico |
6 |
V CC |
Pino de alimentação positivo. Conecte a 5V do Arduino |
Especificações do sensor GP2Y1014AU0F:
- Baixo consumo de corrente: 20mA máx.
- Tensão de operação típica: 4,5 V a 5,5 V
- Tamanho mínimo de poeira detectável: 0,5 µm
- Faixa de detecção de densidade de poeira: até 580 ug / m 3
- Tempo de detecção: menos de 1 segundo
- Dimensões: 1,81 x 1,18 x 0,69 '' (46,0 x 30,0 x 17,6 mm)
Módulo de exibição OLED
OLED (Organic Light-Emitting Diodes) é uma tecnologia de emissão de luz própria, construída colocando uma série de filmes finos orgânicos entre dois condutores. Uma luz brilhante é produzida quando uma corrente elétrica é aplicada a esses filmes. Os OLEDs usam a mesma tecnologia dos televisores, mas têm menos pixels do que a maioria de nossas TVs.
Para este projeto, estamos usando uma tela OLED SSD1306 monocromática de 7 pinos de 0,96 ”. Ele pode funcionar em três protocolos de comunicação diferentes: modo SPI 3 fios, modo SPI quatro fios e modo I2C. Os pinos e suas funções são explicados na tabela abaixo:
Já cobrimos o OLED e seus tipos em detalhes no artigo anterior.
Nome do Pin |
Outros nomes |
Descrição |
Gnd |
Terra |
Pino de aterramento do módulo |
Vdd |
Vcc, 5V |
Pino de alimentação (3-5 V tolerável) |
SCK |
D0, SCL, CLK |
Atua como o pino do relógio. Usado para I2C e SPI |
SDA |
D1, MOSI |
Pino de dados do módulo. Usado para IIC e SPI |
RES |
RST, RESET |
Reinicia o módulo (útil durante o SPI) |
DC |
A0 |
Pino de comando de dados. Usado para protocolo SPI |
CS |
Chip Select |
Útil quando mais de um módulo é usado sob o protocolo SPI |
Especificações de OLED:
- CI do driver OLED: SSD1306
- Resolução: 128 x 64
- Ângulo visual:> 160 °
- Tensão de entrada: 3,3V ~ 6V
- Cor do pixel: azul
- Temperatura de trabalho: -30 ° C ~ 70 ° C
Saiba mais sobre OLED e sua interface com diferentes microcontroladores seguindo o link.
Diagrama de circuito
O diagrama de circuito para interface do sensor Sharp GP2Y1014AU0F com o Arduino é fornecido abaixo:
O circuito é muito simples, pois estamos conectando apenas o sensor GP2Y10 e o módulo de display OLED com o Arduino Nano. O sensor GP2Y10 e o módulo de exibição OLED são alimentados com + 5V e GND. O pino V0 é conectado ao pino A5 do Arduino Nano. O pino LED do sensor é conectado ao pino 12 digital do Arduino. Como o módulo OLED Display usa comunicação SPI, estabelecemos uma comunicação SPI entre o módulo OLED e o Arduino Nano. As conexões são mostradas na tabela abaixo:
S.Não |
Pin do módulo OLED |
Pin Arduino |
1 |
GND |
Terra |
2 |
VCC |
5V |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
RES |
13 |
6 |
DC |
11 |
7 |
CS |
12 |
S.Não |
Pino do sensor |
Pin Arduino |
1 |
Vcc |
5V |
2 |
V O |
A5 |
3 |
S-GND |
GND |
4 |
CONDUZIU |
7 |
5 |
LED-GND |
GND |
6 |
V-LED |
5V a 150Ω Resistor |
Construindo o Circuito na Placa Perf
Depois de soldar todos os componentes na placa de desempenho, ela ficará com a aparência abaixo. Mas também pode ser construído em uma placa de ensaio. Eu soldei o sensor GP2Y1014 na mesma placa que usei para fazer a interface do sensor SDS011. Durante a soldagem, certifique-se de que os fios de solda estejam a uma distância suficiente um do outro.
Explicação do código para analisador de qualidade do ar
O código completo para este projeto é fornecido no final do documento. Aqui estamos explicando algumas partes importantes do código.
O código usa a Adafruit_GFX , e Adafruit_SSD1306 bibliotecas. Essas bibliotecas podem ser baixadas do Library Manager no Arduino IDE e instalá-lo a partir daí. Para isso, abra o IDE Arduino e vá para Sketch <Incluir Biblioteca <Gerenciar Bibliotecas . Agora procure Adafruit GFX e instale a biblioteca Adafruit GFX da Adafruit.
Da mesma forma, instale as bibliotecas Adafruit SSD1306 da Adafruit.
Depois de instalar as bibliotecas no Arduino IDE, inicie o código incluindo os arquivos de bibliotecas necessários. O sensor de poeira não requer nenhuma biblioteca, pois estamos lendo os valores de tensão diretamente do pino analógico do Arduino.
#incluir
Em seguida, defina a largura e a altura do OLED. Neste projeto, estamos usando um display OLED SPI 128 × 64. Você pode alterar o SCREEN_WIDTH e SCREEN_HEIGHT variáveis de acordo com a sua exibição.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
Em seguida, defina os pinos de comunicação SPI onde o display OLED está conectado.
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
Em seguida, crie uma instância de exibição Adafruit com a largura e a altura definidas anteriormente com o protocolo de comunicação SPI.
Tela Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Depois disso, defina os sensores de poeira e os pinos de led. O pino de detecção é o pino de saída do sensor de poeira que é usado para ler os valores de tensão enquanto o pino led é usado para ligar / desligar o LED IV.
int sensePin = A5; int ledPin = 7;
Agora, dentro da função setup () , inicialize o Monitor Serial a uma taxa de transmissão de 9600 para fins de depuração. Além disso, inicialize o display OLED com a função begin () .
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
Dentro da função loop () , leia os valores de tensão do pino 5 analógico do Arduino Nano. Primeiro, ligue o LED IV e aguarde 0,28 ms antes de fazer uma leitura da tensão de saída. Depois disso, leia os valores de tensão do pino analógico. Esta operação leva cerca de 40 a 50 microssegundos, então introduza um atraso de 40 microssegundos antes de desligar o sensor de poeira. De acordo com as especificações, o LED deve ser pulsado uma vez a cada 10 ms, portanto, aguarde o restante do ciclo de 10 ms = 10000 - 280 - 40 = 9680 microssegundos .
digitalWrite (ledPin, LOW); delayMicroseconds (280); outVo = analogRead (sensePin); atraso Microssegundos (40); digitalWrite (ledPin, HIGH); delayMicroseconds (9680);
Então, nas próximas linhas, calcule a densidade de poeira usando a tensão de saída e o valor do sinal.
sigVolt = outVo * (5/1024); dustLevel = 0,17 * sigVolt - 0,1;
Depois disso, defina o tamanho e a cor do texto usando setTextSize () e setTextColor () .
display.setTextSize (1); display.setTextColor (WHITE);
Então, na próxima linha, defina a posição onde o texto começa usando o método setCursor (x, y) . E imprima os valores de densidade de poeira no display OLED usando a função display.println () .
display.println ("Poeira"); display.println ("Densidade"); display.setTextSize (3); display.println (dustLevel);
E, por último, chame o método display () para exibir o texto no visor OLED.
display.display (); display.clearDisplay ();
Testando a interface do sensor Sharp GP2Y1014AU0F com Arduino
Assim que o hardware e o código estiverem prontos, é hora de testar o sensor. Para isso, conecte o Arduino ao laptop, selecione a Placa e a Porta e aperte o botão de upload. Como você pode ver na imagem abaixo, ele exibirá Dust Density no display OLED.
O vídeo de trabalho completo e o código são fornecidos abaixo. Espero que você tenha gostado do tutorial e aprendido algo útil. Se você tiver alguma dúvida, deixe-a na seção de comentários ou use nossos fóruns para outras questões técnicas.