インテリジェント消毒トンネル:高トラフィックエリア向け自動除菌システム
必要な部品と材料
| 部品 | 数量 |
|---|---|
| Arduino UNO | 1 |
| ジャンパーワイヤー(汎用) | 1セット |
| PIRモーションセンサー(汎用) | 2 |
| 12Vパワーリレー(4PDT) | 1 |
| 12V SMPS(スイッチング電源) | 1 |
| Seeed Grove 2チャネルSPDTリレー | 1 |
| 5V SMPS | 1 |
| トグルスイッチ(On)-Off-(On) | 1 |
| Raspberry Pi 3 Model B | 1 |
| Raspberry Pi Camera Module V2 | 1 |
| Micro SDカード | 1 |
| Micro-USB to USBケーブル | 1 |
| ヒートシンク | 1 |
| 1HPウォーターポンプ | 1 |
| スチールボックスパイプ | 1 |
| 水タンク(200L) | 1 |
| PVCプラスチックパイプ | 1 |
| 4ウェイフォッガー | 1 |
| バナーフレックス | 1 |
| チージョイント | 1 |
| マイクロチュービングパイプ | 1 |
| ウォールフィックスランプ | 1 |
| エルボ継手 | 1 |
| ケーブルタイ(両面) | 1 |
必要な工具と機器
- 溶接機
- 切断機
- はんだごて(汎用)
- 鉛フリーはんだ
- レーザーカッター(汎用)
使用アプリとオンラインサービス
- Arduino IDE
- Raspberry Pi Raspbian
- OpenCV
プロジェクト概要
はじめに
スマート消毒・衛生トンネルは、トンネル通過者を約15秒で最大限保護するよう設計されており、コミュニティがCOVID-19と闘う助けになります。
このプロジェクトの主旨は、COVID-19の拡散を防ぐトンネルを作ることです。この消毒・衛生トンネルは、通過者をわずか15秒であらゆる細菌から除菌するために作られました。
使用する消毒液は次亜塩素酸ナトリウム(NaOCl)と水(H2O)の組み合わせです。この消毒剤は揮発性がなく、持続的な抗ウイルス・殺菌活性を発揮し、表面を衛生的に保ちます。
このスマート消毒・衛生トンネルの制作に着手しました。製作期間はわずか12時間。頭からつま先まで15秒で完全除菌でき、使用液は無害*です。総コストは約₹30,000(約$400)。(改訂コスト)
設置場所
- 食品市場
- オフィス
- ショッピングモール
- 空港
- バス停
- 鉄道駅
- 警察署
- 大学
- 病院
- 住宅地
仕組み
1HPウォーターポンプをトンネル側面に設置し、タンクから0.4%次亜塩素酸ナトリウム水溶液(100リットル中)を汲み上げます。自動制御で、誰かがトンネルに入るとセンサーが検知し、ウォーターポンプが15秒間作動。通過者がいないときはポンプがオフになり、水と電力を節約。ミスト状の消毒スプレーが空気、露出皮膚、衣服を除菌し、約60分以上(概算*)の保護効果があります。
トンネル側面に200リットル溶液タンクと高圧配管用ポンプを設置。計算上、溶液は8〜10時間分(通過人数により変動**)。入口上部にモーションセンサーを設置し、消毒液を節約。
フロー図
ハードウェアセットアップ
金属プロファイルでフレームを組み、分解・移動・保管が可能に。覆いはバナー(屋外広告用)を使用。バナーはプラスチックタイで金属プロファイルに簡単・迅速に取り付け可能、特殊技術不要。
3Dモデル:https://skfb.ly/6RGvZ
200リットルタンクと高圧配管用ポンプをトンネル側面に設置、4ウェイフォッガーアセンブリに接続。
マイクロチュービングパイプでトンネル全体に溶液を供給。
トンネル内部に高圧パイプラインと4基の4ウェイフォッガーを設置。ミストは衣服に跡を残さず、人の全身を包み込み、衣服の届きにくい折り目までウイルスを除菌し、退出後も一定時間保護します。
溶液には認証済みのものを使用(証明書添付)。
4ウェイフォッガー仕様
- 吐出量:30 LPH / 0.5 LPM(1基あたり)
- 推奨圧力:45-60 psi
- 平均液滴径:65ミクロン(55-60 psi時)
- 必要ろ過:130ミクロン(120メッシュ)
- 必要ポンプ:40-45m揚程
Arduinoの準備
ウォーターポンプは赤外線検知で動作します。人体がモーションセンサー近くに来ると赤外線を反射し、センサーが検知してHIGH信号を出力。Arduinoがこれを読み取り、HIGHならリレーモジュールにHIGHを送り、パワーリレー経由でウォーターポンプを15秒間作動(変更可)。LOWならリレーピンをLOWにし、ポンプをオフにします。
より精密にするため2つのPIRセンサーを使用し、どちらかが動きを検知すればリレーが15秒間オンになります。
ウォーターポンプは16A定格ですが、5Vリレーの最大負荷は10Aのため、5Vリレーモジュールと12Vパワーリレーを2段階で使用して制御しています。
Arduinoコード
/* Smart Disinfection and Sanitation Tunnel */
int relayPin = 12;
int inputPin = 2;
int inputPin2 = 3;
int pirState = LOW;
int val = 0, val2 = 0;
void setup() {
pinMode(relayPin, OUTPUT);
pinMode(inputPin, INPUT);
pinMode(inputPin2, INPUT);
Serial.begin(9600);
}
void loop() {
val = digitalRead(inputPin);
val2 = digitalRead(inputPin2);
if (val == HIGH || val2 == HIGH) {
digitalWrite(relayPin, HIGH);
if (pirState == LOW) {
Serial.println("Motion detected!");
delay(15000);
pirState = HIGH;
}
} else {
digitalWrite(relayPin, 0);
if (pirState == HIGH) {
Serial.println("Motion ended!");
pirState = LOW;
}
}
}
Raspberry Pi 3の準備(オプション)
データ分析やトンネル利用者数の正確なカウントが必要な場合に実装。PIRや超音波センサーでも可能ですが、機械学習+OpenCVによる人体検出の方が精度が高いと判断。
Piカメラ接続
- Raspberry Piの電源を切る
- USBモジュールとHDMIモジュールの間にあるカメラモジュールコネクタを探す
- 黒いプラスチッククリップを優しく上に引いてロック解除
- リボンケーブルを挿入(金属接点をEthernet/USBポートから**離れる方向**に)
- クリップをロック
Piカメラ有効化
sudo raspi-config実行- 「Interfacing Options」(4番目)選択→Enter
- 「Enable Camera」(5番目)選択→Enter
- 右矢印で「ENABLE」を選択→Enter
Piカメラテスト
VNC ViewerでRaspberry Piに接続し、raspistill -v -o test.jpg実行。カメラ映像が画面に表示されればOK。
OpenCVインストール
こちらのガイドに従ってインストール。
Pythonコード(main.py)
import cv2.cv as cv
from datetime import datetime
import time, sys, datetime
count = 0
class MotionDetector:
def __init__(self, ceil=8, doRecord=True, showWindows=True):
# ... 初期化処理 ...
def run(self):
global count
# ... メインループ:フレーム取得→処理→動き検出→カウント・ログ記録 ...
def processImage(self, frame):
# ... グレースケール変換、フレーム差分、ノイズ除去、閾値処理 ...
def somethingHasMoved(self):
# ... 黒ピクセル割合から動き判定 ...
if __name__ == "__main__":
detect = MotionDetector(doRecord=False)
detect.run()
ダウンロード:main.py
保存後 python main.py で実行。画面に映像とターミナルに人数カウントが表示されます。
デスクトップ/アプリ用ダッシュボード作成
Step 1: Apacheインストール
sudo apt install apache2 -y
Step 2: PHPインストール
sudo apt install php libapache2-mod-php -y
cd /var/www/html
wget "https://hacksterio.s3.amazonaws.com/uploads/attachments/1097966/Dashboard.zip"
sudo apt-get install unzip
unzip Dashboard.zip
ブラウザをリフレッシュしてダッシュボード確認。
Raspberry Piをワイヤレスアクセスポイント化
公式ガイドに従って設定。SSIDを「SanitizingTunnel」に設定。
アプリ構築
Androidアプリ
前提:Android Studio。コードをダウンロードし、Raspberry PiのIPアドレス等を自分の環境に合わせて変更。
iOSアプリ
前提:XCode。同様にコードをダウンロードし、認証情報を変更。
使用薬液
消毒トンネルでは、水100リットルに対して0.4%の次亜塩素酸ナトリウム水溶液を使用。
更新 - 「有害な化学物質を使っている」とのコメントが多数寄せられたため、供給元(Raman & Weil Pvt. Ltd)に確認したところ、同社はBode Chemie GermanyからCOVID-19に対する有効性に関する「宣言書」を取得済みとのこと。
公式リンク:宣言書PDF
すべてを統合
最後にトンネルに電源を入れ、すべてのルーチンとアプリが計画通り動作するか確認。
コスト
コード
- Arduino Code Tunnel
- main.py
- Dashboard Files
- Sanitation-Tunnel Android Source Code
- Sanitation-Tunnel Android App
- Sanitation-Tunnel iOS Source Code
Arduino Code Tunnel C/C++
/* Smart Disinfection and Sanitation Tunnel */
int relayPin = 12;
int inputPin = 2;
int inputPin2 = 3;
int pirState = LOW;
int val = 0, val2 = 0;
void setup() {
pinMode(relayPin, OUTPUT);
pinMode(inputPin, INPUT);
pinMode(inputPin2, INPUT);
Serial.begin(9600);
}
void loop() {
val = digitalRead(inputPin);
val2 = digitalRead(inputPin2);
if (val == HIGH || val2 == HIGH) {
digitalWrite(relayPin, HIGH);
if (pirState == LOW) {
Serial.println("Motion detected!");
delay(15000);
pirState = HIGH;
}
} else {
digitalWrite(relayPin, 0);
if (pirState == HIGH) {
Serial.println("Motion ended!");
pirState = LOW;
}
}
}
main.py Python
import cv2.cv as cv
from datetime import datetime
import time, sys, datetime
count = 0
class MotionDetector():
def __init__(self, ceil=8, doRecord=True, showWindows=True):
# ... (上記と同内容) ...
def run(self):
global count
# ... (上記と同内容) ...
def processImage(self, frame):
# ... (上記と同内容) ...
def somethingHasMoved(self):
# ... (上記と同内容) ...
if __name__ == "__main__":
detect = MotionDetector(doRecord=False)
detect.run()
Dashboard Files PHP
プレビューなし(ダウンロードのみ)。
Sanitation-Tunnel Android Source Code Java
プレビューなし(ダウンロードのみ)。
Sanitation-Tunnel Android App Java
デモアプリ。プレビューなし(ダウンロードのみ)。
Sanitation-Tunnel iOS Source Code Swift
プレビューなし(ダウンロードのみ)。
Smart Disinfection and Sanitation Tunnel
カスタムパーツとエンクロージャ
smart_disinfection_and_sanitation_tunnel_prlFu8ZRXO.3mf
回路図
回路図 - Fritzingファイル
smart_disinfection_and_sanitation_tunnel_Zkb20Q5S2B.fzz
製造プロセス
- Arduinoで温湿度ロガーを作る – DHT11とEthernetシールドでSDカード記録
- ESP8266・Arduino・超音波センサーで作るスマートIoTジャー:リアルタイム中身監視
- 1Sheeldで作るスマートホーム自動化&セキュリティシステム
- スマート自動靴紐シューズ:発電機能内蔵で実用性抜群
- 光と音で祝おう:Arduinoで作るDIYバースデープロジェクト
- Arduino Nano と OpenCV で実現する自律顔追跡ロボットカー
- スマートなArduino制御ロボットアームの製作:簡単DIYチュートリアル
- DIYギター高速ピック&ストンプペダル - 3Dプリントモーター駆動ピックの自作
- スマートマニュファクチャリング:定義、メリット、実装
- 油圧システムの革新:インダストリー4.0がスマートマニュファクチャリングを推進する仕組み
- IoTが農業を変革:主なメリットとスマート農業の洞察