Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Kit sensor PM10, temperatura y humedad con Arduino – Hazlo tú mismo

Componentes y materiales

Arduino Nano R3 1
Sensor PM SDS018 (Nova Fitness) 1
Sensor temperatura/humedad DHT22 (Adafruit) con resistencia pull-up y condensador en módulo 1
Pantalla OLED I2C 128x32 SSD1306 1
LED verde 3mm (Broadcom) 1
LED amarillo 3mm (Broadcom) 1
LED rojo 3mm (Broadcom) 1
Condensador 100 nF (opcional, para DHT22) 1
Resistencia 4.7 kΩ (opcional, pull-up DHT22) 1
Power bank (alimentación USB) 1
Resistencias 390 Ω (para LEDs) 3
Tornillos M3x16 (caja), M3x6 (SDS018) 4 / 1
Soportes LED 3mm, tubotermoretráctil, jumpers hembra, header 2 pines, jumper genérico varios

Herramientas necesarias

Aplicaciones y servicios online

Sobre el proyecto

Resumen

Estudios experimentales sugieren que la materia particulada (PM) puede actuar como "vector" para la propagación del virus COVID-19. Las partículas finas en suspensión podrían transportar el virus a distancias mayores y mantenerlo viable horas, días o semanas. La contaminación por PM10 y PM2.5, generada también por granjas industriales de ganado, podría explicar mayores tasas de infección en zonas como el norte de Italia (Lombardía), incluso durante el confinamiento.

Investigadores italianos hallaron correlación significativa entre excesos diarios de PM10 y propagación del COVID-19 (febrero 2020), con brotes concentrados en el Valle del Po. La humedad relativa y temperatura también influyen: virus sobreviven más con humedad <40% o >60%.

Mi solución

Dispositivo replicable, bajo coste y fácil de usar que mide PM10, temperatura y humedad relativa para alertar cuando los valores son potencialmente peligrosos. Permite decidir quedarse en casa, usar mascarilla, etc.

Hardware: Arduino Nano, sensor SDS018 (PM10/PM2.5), DHT22 (T/RH), pantalla OLED I2C, 3 LEDs (verde, amarillo, rojo). La pantalla alterna PM10+HR% y PM2.5+Temp. LEDs indican nivel de alarma:

Sensor SDS018 – PM10/PM2.5

Detección por dispersión láser, rango 0.3-10 µm, salida UART (TTL), ventilador integrado, resolución 0.3 µg/m³, certificación CE/FCC/RoHS. Pinout: 1-NC, 2-PWM 1µm, 3-5V, 4-PWM 2.5µm, 5-GND, 6-RX, 7-TX. Conexión: TX (pin 7) → RX Arduino Nano; 5V y GND compartidos.

Sensor DHT22 – Temperatura y humedad

Digital, 3-5V, 0-100% HR (precisión 2-5%), -40 a 80°C (±0.5°C), muestreo 0.5 Hz. Pinout: VDD, DATA, NC, GND. Conexión: DATA → D2 Arduino; pull-up 4.7kΩ entre DATA y VDD; condensador 100nF entre VDD y GND. Librería Adafruit DHT v1.3.10.

Pantalla OLED I2C SSD1306

128x32 píxeles, blanco sobre negro, 3.3-5V, I2C. Pines: SDA→A4, SCL→A5, VCC→5V, GND→GND. Librería Adafruit SSD1306 v2.2.1.

LEDs y conexiones

Modificación hardware Arduino Nano

Para leer UART del SDS018 sin conflictos con USB, se elimina el resistor SMD del puente RX (flecha roja en foto) y se suelda verticalmente con dos hilos a un header. El jumper se coloca solo al programar; quitado en operación normal. Alternativamente, eliminar el resistor permanentemente (pierde programabilidad).

Alimentación

Arduino Nano vía USB desde power bank (5V).

Caja y montaje (impresión 3D)

Caja naranja PLA en dos partes: inferior (Arduino + SDS018, apertura mini-USB), superior (DHT22, OLED, 3 LEDs con orificios). Archivos 3D en Sketchfab: parte superior, parte inferior. Ensamblado con silicona caliente y tornillos M3.

Firmware (sketch Arduino)

Diagrama de flujo: setup periféricos + test LEDs. Loop principal:

  1. Primer loop: delay 2s (estabilización DHT22).
  2. Lee DHT22 → envía T y HR a monitor serie.
  3. Lee SDS018 (10 bytes, verifica cabecera 0xAA 0xC0, checksum) → calcula PM2.5 y PM10 → envía a monitor serie.
  4. Evalúa umbrales PM10 y HR → enciende LEDs según 4 estados.
  5. Alterna pantalla: PM10+HR% (o "Alarm!!!") ↔ PM2.5+Temp.
  6. Delay 2s total (500ms + 1500ms con LED builtin parpadeando).

Código completo

#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
#define OLED_RESET 4
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

int startdhr22 = 0;
int switchDisplay = 0;
const int ledRed = 3, ledGreen = 4, ledYellow = 5;

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(ledRed, OUTPUT); pinMode(ledGreen, OUTPUT); pinMode(ledYellow, OUTPUT);
  dht.begin();
  Serial.begin(9600); Serial.println("start");
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { for(;;); }
  display.clearDisplay(); display.setTextSize(2); display.setTextColor(SSD1306_WHITE);
  // Test LEDs
  digitalWrite(ledGreen, HIGH); delay(500);
  digitalWrite(ledYellow, HIGH); delay(500);
  digitalWrite(ledRed, HIGH); delay(500);
  digitalWrite(ledGreen, LOW); digitalWrite(ledYellow, LOW); digitalWrite(ledRed, LOW);
  delay(500);
}

void loop() {
  // DHT22
  if(0 == startdhr22) { delay(2000); startdhr22 = 1; }
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  if (isnan(h) || isnan(t)) { Serial.println("Failed to read from DHT sensor!"); return; }
  Serial.print("Humidity: "); Serial.print(h); Serial.print("% Temperature: "); Serial.print(t); Serial.println("°C");

  // SDS018
  uint8_t dataIN[10] = {0};
  float pm25 = 0, pm10 = 0;
  while(Serial.available() > 0) {
    for(int i=0; i<10; ++i) dataIN[i] = Serial.read();
    if((0xAA == dataIN[0]) && (0xC0 == dataIN[1]) && (0xAB == dataIN[9])) {
      uint8_t cksum = 0;
      for(int i=2; i<=7; ++i) cksum += dataIN[i];
      if(cksum == dataIN[8]) {
        digitalWrite(LED_BUILTIN, HIGH);
        uint8_t pm25Lo = dataIN[2], pm25Hi = dataIN[3];
        uint8_t pm10Lo = dataIN[4], pm10Hi = dataIN[5];
        pm25 = ((pm25Hi * 256.0) + pm25Lo) / 10.0;
        pm10 = ((pm10Hi * 256.0) + pm10Lo) / 10.0;
        Serial.print("PM2.5: "); Serial.print(pm25); Serial.println(" ug/m3");
        Serial.print("PM10: "); Serial.print(pm10); Serial.println(" ug/m3");
      }
      Serial.println("-----------------");
    }
    Serial.flush();
  }

  // LEDs según umbrales
  if((pm10 <= 25) && (h >= 40 && h <= 60)) { // Normal
    digitalWrite(ledGreen, LOW); digitalWrite(ledYellow, LOW); digitalWrite(ledRed, LOW);
  } else if((pm10 <= 25) && (h < 40 || h > 60)) { // Bajo
    digitalWrite(ledGreen, HIGH); digitalWrite(ledYellow, LOW); digitalWrite(ledRed, LOW);
  } else if((pm10 > 25 && pm10 <= 50) && (h >= 40 && h <= 60)) { // Bajo
    digitalWrite(ledGreen, HIGH); digitalWrite(ledYellow, LOW); digitalWrite(ledRed, LOW);
  } else if((pm10 > 25 && pm10 <= 50) && (h < 40 || h > 60)) { // Advertencia
    digitalWrite(ledGreen, HIGH); digitalWrite(ledYellow, HIGH); digitalWrite(ledRed, LOW);
  } else if((pm10 > 50) && (h >= 40 && h <= 60)) { // Advertencia
    digitalWrite(ledGreen, HIGH); digitalWrite(ledYellow, HIGH); digitalWrite(ledRed, LOW);
  } else { // Alarma
    digitalWrite(ledGreen, HIGH); digitalWrite(ledYellow, HIGH); digitalWrite(ledRed, HIGH);
  }

  // Pantalla OLED
  if(0 == switchDisplay) {
    display.clearDisplay(); display.setTextColor(SSD1306_WHITE); display.setCursor(0,0);
    if(pm10 > 50) display.print("Alarm!!!");
    else { display.print("PM10:"); display.println(pm10); }
    display.print(" HR%:"); display.println(h);
    display.display(); switchDisplay = 1;
  } else {
    display.clearDisplay(); display.setTextColor(SSD1306_BLACK, SSD1306_WHITE); display.setCursor(0,0);
    display.print("PM25:"); display.println(pm25);
    display.print("T[C]:"); display.println(t);
    display.display(); switchDisplay = 0;
  }
  delay(500);
  digitalWrite(LED_BUILTIN, LOW);
  delay(1500);
}

Partes personalizadas y cajas (CAD)

Esquemático eléctrico

Diagrama de conexiones: Arduino Nano → SDS018 (RX/TX), DHT22 (D2), OLED (A4/A5), LEDs (D3-D5), alimentación USB.

Proceso de manufactura

  1. Cómo el COVID‑19 aceleró la automatización en la industria del plástico
  2. Cómo el COVID-19 Está Remodelando el Futuro del Trabajo y la Automatización: Insights de un Nuevo Estudio
  3. Cómo la Automatización Aceleró la Resiliencia Manufacturera en Medio del COVID-19
  4. El COVID-19 y el fin del paradigma económico de la posguerra
  5. El efecto pandemia: COVID-19 acelerando la innovación en blockchain y criptomonedas
  6. La COVID-19 acelera el fin de los RFP anuales de cargadores
  7. Wayfair y COVID-19: Navegando los Desafíos de Vendedores Exentos de Impuestos en una Economía Post-Pandemia
  8. Cerrando la Brecha de Habilidades: Estrategias de Reciclaje y Reentrenamiento Post-COVID para Fabricantes
  9. Guía y recursos COVID-19 para líderes manufactureros
  10. Detección Rápida y Precisa de COVID-19 Usando Tecnología de Grafeno
  11. Enfoque circular de SABIC: envases plásticos, seguridad y sostenibilidad en tiempos de COVID-19