Introducción
La calidad del aire es un factor crucial para el bienestar de las personas, especialmente en áreas urbanas o industriales donde los niveles de polvo y partículas en el aire pueden representar un riesgo para la salud. Este proyecto tiene como objetivo medir la concentración de polvo en el aire usando un sensor de polvo y presentar estos datos en un display OLED SH1106. A través de este sistema, es posible monitorear en tiempo real los niveles de polvo en el ambiente y visualizar la información de forma sencilla.
Tal vez pueda interesarte proyectos en arduino, pic, robótica, telecomunicaciones, suscribete en http://www.youtube.com/user/carlosvolt?sub_confirmation=1 mucho videos con código fuentes completos y diagramas
¿Cómo Funciona?
El sensor de polvo funciona emitiendo luz infrarroja y midiendo su dispersión cuando entra en contacto con partículas en el aire. Dependiendo de la cantidad de partículas presentes, el sensor genera un voltaje de salida analógico que es proporcional a la concentración de polvo. El Arduino lee este voltaje y lo convierte a una concentración de polvo en miligramos por metro cúbico (mg/m³) a través de una fórmula de conversión. Estos valores se muestran tanto en el monitor serial como en el display OLED.
Componentes Necesarios
- Arduino (cualquier modelo compatible)
- Sensor de polvo (sensor de voltaje analógico de salida, compatible con 3.3V)
- Display OLED SH1106 (conectado por I2C)
- Cables de conexión
- Resistencias y otros accesorios (según sea necesario)
Objetivos del Proyecto
- Monitoreo de Concentración de Polvo: Obtener datos sobre la concentración de partículas en el aire en mg/m³.
- Visualización en OLED: Mostrar los datos de concentración en el display OLED SH1106 para una lectura rápida y fácil.
- Control del LED Infrarrojo: Gestionar el LED IR en el sensor de polvo para mejorar la precisión de las lecturas.
Este proyecto es ideal para quienes buscan explorar aplicaciones ambientales con sensores y displays. Al final, tendrás un dispositivo que te permitirá medir la calidad del aire de tu entorno en tiempo real.
Componentes electrónicos del proyecto
Arduino Nano
El Arduino Nano es una placa pequeña, completa y compatible con la placa de pruebas basada en el ATmega328 (Arduino Nano 3.x). Tiene más o menos la misma funcionalidad del Arduino Duemilanove, pero en un paquete diferente. Solo carece de un conector de alimentación de CC y funciona con un cable USB Mini-B en lugar de uno estándar.
Microcontrolador | ATmega328 |
Arquitectura | AVR |
Tensión de funcionamiento | 5 V |
Memoria flash | 32 KB de los cuales 2 KB utiliza el gestor de arranque |
SRAM | 2 KB |
Velocidad de reloj | 16 MHz |
Pines analógicos IN | 8 |
EEPROM | 1 KB |
Corriente CC por pines de E / S | 40 mA (pines de E / S) |
Voltaje de entrada | 7-12 V |
Pines de E / S digitales | 22 (6 de los cuales son PWM) |
Salida PWM | 6 |
El consumo de energía | 19 mA |
Tamaño de PCB | 18 x 45 mm |
Peso | 7 g |
Diagrama de pines
Un Zócalo para arduino
Sensor de polvo modelo GP2Y1010AU0F
Este es un sensor de partículas de polvo de SHARP que puede usar con Arduino para detectar el nivel de polvo de un entorno designado.
GP2Y1010AU0F es un sensor de polvo mediante sistema de detección óptica. En este dispositivo están dispuestos en diagonal un diodo emisor de infrarrojos (IRED) y un fototransistor. Detecta la luz reflejada del polvo en el aire. Especialmente, es eficaz para detectar partículas muy finas como el humo del cigarrillo. Además, puede distinguir el humo del polvo doméstico mediante el patrón de impulsos del voltaje de salida.
Características
Tensión de funcionamiento: 3 .3 V hay versiones de 5 volios
Corriente de funcionamiento: < 20 mA
Temperatura de funcionamiento: -10 a +65 °C
Corriente de bajo consumo (Icc: MAX. 20 mA)
La presencia de polvo se puede detectar mediante la fotometría de un solo pulso.
Permite distinguir el humo del polvo doméstico.
Cables dupont hembra macho
Display oled sh1106
Se trata de un módulo de pantalla OLED monocromática DE 128×64 puntos con interface I2C .Que presenta varias ventajas en comparación con pantallas LCD, y podemos destacar su alto brillo, un muy buen contraste, un ángulo de visión más amplio, y bajo consumo de energía. ES compatible con Arduino Rasberry Pi y microcontroladores PIC entre otros. Trabaja con niveles lógicos de 3.3V a 5V tiene un angulo de visión mayor a los 160 grados. el Tamaño de la pantalla es de 1,3 pulgadas. Se alimenta con un voltaje de 3.3V a 5V Se lo puede usar en aplicaciones como relojes inteligentes, MP3, termómetros, instrumentos, y proyectos varios, etc.
Características
- Interface: I2C(3.3V / 5V logic level)
- Resolution: 128 x 64
- Angle of view: >160 degree
- Display color: Blue
- Display size: 1.3 inch
- Driver IC: SH1106
- Power supply: DC 3.3V~5V
- Operating temperature: -20~70’C
- Application: smart watch, MP3, thermometer, instruments, DIY projects, etc.
Circuito con PCB
Código Fuente
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
#include <U8g2lib.h> #include <Wire.h> #define PIN_ANALOGICO A0 // Pin de salida analógica del sensor #define PIN_LED 4 // Pin para controlar el LED del sensor // Inicializar el display OLED SH1106 con la librería U8g2lib U8G2_SH1106_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); void setup() { Serial.begin(9600); pinMode(PIN_LED, OUTPUT); // Configura el LED como salida // Inicializar el display OLED u8g2.begin(); u8g2.setFont(u8g2_font_ncenB14_tr); // Configura la fuente de texto } void loop() { digitalWrite(PIN_LED, LOW); // Enciende el LED IR delayMicroseconds(280); // Espera un momento antes de leer int valorPolvo = analogRead(PIN_ANALOGICO); // Lee el valor analógico delayMicroseconds(40); // Tiempo de espera de medición digitalWrite(PIN_LED, HIGH); // Apaga el LED IR delayMicroseconds(9680); // Tiempo de inactividad // Convertir el valor analógico a voltaje (0-3.3V) float voltaje = valorPolvo * (3.3 / 1024.0); // Calcular concentración aproximada de polvo (mg/m3) float densidadPolvo = (voltaje - 0.6) * 0.5; // Factor de conversión if (densidadPolvo < 0) densidadPolvo = 0; // Mostrar en el monitor serial Serial.print("Concentracion de Polvo: "); Serial.print(densidadPolvo); Serial.println(" mg/m3"); // Mostrar en el display OLED u8g2.clearBuffer(); u8g2.setCursor(0, 24); // Posicionamiento del texto u8g2.print("Polvo:"); u8g2.setCursor(0, 48); u8g2.print(densidadPolvo); u8g2.print(" mg/m3"); u8g2.sendBuffer(); delay(1000); // Lee cada segundo } |
¿Porque digitalWrite(PIN_LED, LOW) enciende el led ir?
El comportamiento puede parecer confuso, pero se debe a cómo están configurados los LEDs infrarrojos en algunos sensores de polvo y otros dispositivos similares.
Explicación
En muchos sensores de polvo (y en algunos otros módulos), el LED infrarrojo (IR) está conectado de tal manera que:
- LOW (0 voltios) en el pin de control enciende el LED.
- HIGH (nivel alto, generalmente 3.3V o 5V) en el pin de control apaga el LED.
¿Por qué ocurre esto?
Esto se debe a que muchos de estos LEDs están conectados internamente en una configuración de “pull-up”, donde el pin de control se conecta a tierra (GND) para encender el LED. Al escribir digitalWrite(PIN_LED, LOW);
, se permite el flujo de corriente hacia el LED, completando el circuito, lo que hace que el LED se encienda.
En cambio, con digitalWrite(PIN_LED, HIGH);
, se desconecta el LED de tierra, interrumpiendo el circuito y apagándolo.
Entonces
digitalWrite(PIN_LED, LOW);
— Enciende el LED.digitalWrite(PIN_LED, HIGH);
— Apaga el LED.
Esta es una configuración común en sensores para reducir el consumo de energía o el ruido en el sistema.
No te pierdas ningún video más suscríbete a nuestro canal de telegram https://t.me/carlosvolt_electronica_robotica
PROYECTO RECOMENDADO
Un comentario en “Detector de partículas de polvo con sensor GP2Y1010AU0F”