工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

自作 Arduino PM10・温度・湿度センサーキット(COVID-19 対策にも)

必要な部品と材料

部品名 数量 備考
Arduino Nano R3 1
SDS018 PMセンサー(PM2.5/PM10) 1 レーザー散乱式、UART出力、内蔵ファン
DHT22 温湿度センサーモジュール 1 プルアップ抵抗・コンデンサ実装済み推奨
OLED ディスプレイ I2C SSD1306(128×32) 1
LED 3mm(緑、黄、赤) 各1 ステータス表示用
抵抗 390Ω 3 LED 直列用
抵抗 4.7kΩ、コンデンサ 100nF 各1 DHT22 用(モジュールに未実装の場合)
モバイルバッテリー(5V USB出力) 1 電源用
M3×16mm ネジ、M3×6mm ネジ 4, 1 ケース組立用、SDS018 固定用
3D プリントケース(PLA、橙色) 1式 上部・下部パーツ、STL 提供

必要な工具と機器

アプリとオンラインサービス

プロジェクト背景

PM10 と COVID-19 の関連性

イタリアの調査報道番組「Report」で、集約畜産(工場式畜産)から排出される大量のアンモニア・粒子状物質(PM10、PM2.5)が大気汚染を引き起こし、それがウイルスの「キャリア」となって感染拡大を助長する可能性が指摘されました。イタリア北部ロンバルディア州ではロックダウン中も工場・交通量減少にもかかわらず PM10 濃度が高止まりし、同州で感染者が集中した事実と合致します。

複数の研究で、PM がウイルスを吸着し、微小粒子が気流で長距離移動・長時間(数時間〜数週間)浮遊し続けること、湿度 40% 未満や 60% 超でウイルス生存率が上昇することが判明しています。

本デバイスの目的

PM10 濃度、温度、相対湿度をリアルタイム測定し、以下の 6 段階でリスクレベルを LED とディスプレイで通知。外出判断やマスク着用の目安にします。

レベル PM10 (µg/m³) 湿度 LED
正常 0〜25 40〜60% 全消灯
低リスク 0〜25 <40% または >60% 緑点灯
低リスク 26〜50 40〜60% 緑点灯
警告 26〜50 <40% または >60% 緑+黄点灯
警告 >51 40〜60% 緑+黄点灯
危険 >51 <40% または >60% 緑+黄+赤点灯

ハードウェア詳細

SDS018 PMセンサー

レーザー散乱原理で 0.3〜10µm の粒子濃度を測定。UART 出力、内蔵ファン、応答時間 <10秒、分解能 0.3µg/m³、CE/FCC/RoHS 認証取得。

ピン配置: 1:NC、2:1µm PWM、3:5V、4:2.5µm PWM、5:GND、6:RX、7:TX

Arduino Nano 接続: SDS018 の 5V→5V、GND→GND、TX(7)→ Nano RX(D0)

DHT22 温湿度センサー

3〜5V 動作、0〜100% 湿度(±2-5%)、-40〜80℃(±0.5℃)、0.5Hz サンプリング。

接続: VDD→5V、GND→GND、VDD-GND 間に 100nF、DATA-VDD 間に 4.7kΩ プルアップ、DATA→D2

OLED ディスプレイ(SSD1306、I2C)

128×32 ピクセル、白文字/黒背景、3.3〜5V 動作。

接続: VCC→5V、GND→GND、SCL→A5、SDA→A4

LED 接続

緑→D4、黄→D5、赤→D6(アノード)。カソード側に 390Ω 抵抗を直列接続し GND へ。

Arduino Nano ハードウェア改造(重要)

SDS018 の UART 出力を Nano のハードウェア RX(D0)で受信するため、USB-シリアル変換チップ(CH340/FTDI)との競合を避ける必要があります。基板上の RX 信号線に実装されている SMD 抵抗(写真赤矢印)を取り外し、垂直に立てて 2 線をハンダ付け、ピンヘッダー化。ジャンパーを挿すとプログラミングモード、抜くとセンサー通信モードになります。※抵抗を完全除去すると再プログラミング不可になるため注意。

電源

USB 経由でモバイルバッテリーから給電(5V)。Vin(7-12V)でも可。

ケースと組み立て

3D プリント製オレンジ PLA ケース(上部・下部 2 パーツ)。下部に Arduino Nano と SDS018、上部に DHT22、OLED、3 LED を配置。ホットグルーで固定。Mini-B USB 用開口部、LED 用 3 穴(φ3mm、マウントハードウェア使用時は φ5mm に拡張可)を設けています。組み立て手順写真 13 枚で詳細解説。

ファームウェア(Arduino スケッチ)

フローチャート概要

  1. 起動時:周辺初期化、LED 点灯テスト
  2. メインループ:
    • 初回のみ 2 秒待機(DHT22 安定化)
    • DHT22 読み取り → 温湿度をシリアル出力
    • SDS018 読み取り(10 バイトフレーム、チェックサム検証) → PM2.5/PM10 算出 → シリアル出力
    • PM10 と湿度の組み合わせでリスクレベル判定 → LED 制御
    • ディスプレイ表示切替(switchDisplay フラグで交互表示):
      • PM10 + 湿度(危険時は "Alarm!!!" 表示)
      • PM2.5 + 温度
    • ループ末尾で 2 秒待機

コード

#include 
#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 startDht = 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);
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { for(;;); }
  display.clearDisplay(); display.setTextSize(2); display.setTextColor(SSD1306_WHITE);
  // LEDテスト
  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(!startDht) { delay(2000); startDht = 1; }
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  if (isnan(h) || isnan(t)) { Serial.println("DHT read failed"); return; }
  Serial.print("Humidity: "); Serial.print(h); Serial.print("% Temp: "); Serial.print(t); Serial.println("°C");

  // SDS018
  uint8_t buf[10] = {0}; float pm25, pm10;
  while(Serial.available() > 0) {
    for(int i=0;i<10;i++) buf[i] = Serial.read();
    if(buf[0]==0xAA && buf[1]==0xC0 && buf[9]==0xAB) {
      uint8_t sum=0; for(int i=2;i<=7;i++) sum+=buf[i];
      if(sum == buf[8]) {
        digitalWrite(LED_BUILTIN, HIGH);
        pm25 = ((buf[3]*256.0)+buf[2])/10.0;
        pm10 = ((buf[5]*256.0)+buf[4])/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();
  }

  // LED制御(リスクレベル判定)
  if(pm10 <= 25 && h >= 40 && h <= 60) { // 正常
    digitalWrite(ledGreen, LOW); digitalWrite(ledYellow, LOW); digitalWrite(ledRed, LOW);
  } else if(pm10 <= 25 && (h < 40 || h > 60)) { // 低リスク
    digitalWrite(ledGreen, HIGH); digitalWrite(ledYellow, LOW); digitalWrite(ledRed, LOW);
  } else if(pm10 > 25 && pm10 <= 50 && h >= 40 && h <= 60) { // 低リスク
    digitalWrite(ledGreen, HIGH); digitalWrite(ledYellow, LOW); digitalWrite(ledRed, LOW);
  } else if(pm10 > 25 && pm10 <= 50 && (h < 40 || h > 60)) { // 警告
    digitalWrite(ledGreen, HIGH); digitalWrite(ledYellow, HIGH); digitalWrite(ledRed, LOW);
  } else if(pm10 > 50 && h >= 40 && h <= 60) { // 警告
    digitalWrite(ledGreen, HIGH); digitalWrite(ledYellow, HIGH); digitalWrite(ledRed, LOW);
  } else { // 危険
    digitalWrite(ledGreen, HIGH); digitalWrite(ledYellow, HIGH); digitalWrite(ledRed, HIGH);
  }

  // ディスプレイ表示
  if(switchDisplay == 0) {
    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);
}

3D プリントファイル

回路図

Arduino Nano、SDS018、DHT22、OLED、3 LED、電源の配線図。

製造プロセス

  1. COVID-19がプラスチック業界の自動化を加速させた理由
  2. COVID-19が仕事の未来と自動化をどう再構築するか:新調査からの洞察
  3. COVID-19下で自動化が製造業のレジリエンスをどう加速したか
  4. COVID-19と戦後経済パラダイムの終焉
  5. パンデミック効果:COVID-19がブロックチェーンと暗号通貨イノベーションを加速する
  6. COVID-19が年間シッパーRFPを終わらせる:柔軟な契約フレート戦略へ
  7. Wayfair判決とCOVID-19:ポストパンデミック経済における免税販売業者の課題をナビゲート
  8. スキルギャップを埋める:ポストコロナ製造業のためのリスキリング・再教育戦略
  9. 製造業リーダー向けCOVID-19ガイダンスとリソース
  10. グラフェン技術でCOVID-19を5分以内に高精度検出
  11. SABICの循環型アプローチ:COVID-19下でのプラスチック包装、安全性、持続可能性