Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Интеллектуальный туннель дезинфекции: Автоматизированная санитизация для мест массового скопления

Компоненты и материалы

КомпонентКол-во
Arduino UNO1
PIR-датчик движения2
Реле 12 В (4PDT) — мощное для насоса1
Блок питания 12 В (SMPS)1
Grove 2-канальное реле (5 В) — управление мощным реле1
Блок питания 5 В (SMPS)1
Тумблер (On)-Off-(On)1
Raspberry Pi 3 Model B + камера V2 + MicroSD + радиатор1 комплект
Насос 1 л.с. (водяной)1
Бак 200 л, стальные/ПВХ трубы, 4-ходовый фоггер, тиги, колена, микротрубки1 комплект
Баннерная ткань (обшивка), крепёж1

Инструменты

Софт и сервисы

О проекте

Введение

Умный туннель дезинфекции — защита проходящих за ~15 секунд. Помощь в борьбе с COVID-19. Раствор: 0.4% гипохлорит натрия (NaOCl) в воде — нелетучий, длительная бактерицидная активность, безвреден для тканей и кожи*. Стоимость ~$400 (₹30,000), сборка 12 часов.

Интеллектуальный туннель дезинфекции: Автоматизированная санитизация для мест массового скопления

Где применять

Принцип работы

Насос 1 л.с. забирает раствор из бака 200 л, подаёт под давлением в 4 фоггера. PIR-датчики на входе детектируют человека → Arduino включает насос на 15 сек (настраивается). Никого — насос выкл (экономия). Туманная доза защищает минимум 60 мин: дезинфицирует воздух, открытую кожу, одежду.

Интеллектуальный туннель дезинфекции: Автоматизированная санитизация для мест массового скопления

Расхода хватает на 8–10 часов (зависит от трафика). Датчики движения экономят расход.

Железо: рама и обшивка

Рама — металлопрофиль, разборная (транспорт/хранение). Обшивка — баннерная ткань (уличная реклама), крепится пластиковыми стяжками — быстро, без навыков. 3D-модель: skfb.ly/6RGvZ.

Интеллектуальный туннель дезинфекции: Автоматизированная санитизация для мест массового скопления

Бак и насос сбоку, подключены к фоггерам микротрубками. Внутри — высоконапорная линия с 4 фоггерами. Туман не оставляет следов на одежде, проникает в складки.

Интеллектуальный туннель дезинфекции: Автоматизированная санитизация для мест массового скопления

Спецификации фоггера: 30 л/ч (0.5 л/мин), давление 45–60 psi, капли 65 мкм, фильтр 130 мкм, насос 40–45 м напора.

Электроника: Arduino

PIR ловит ИК-излучение тела → HIGH на выходе → Arduino → реле 5 В → мощное реле 12 В → насос 16 А (5 В реле держит только 10 А). Два PIR для надёжности.

Интеллектуальный туннель дезинфекции: Автоматизированная санитизация для мест массового скопления
/* Smart Disinfection and Sanitation Tunnel */
int relayPin = 12;
int inputPin = 2, inputPin2 = 3;
int pirState = LOW, 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); // 15 сек работы насоса
      pirState = HIGH;
    }
  } else {
    digitalWrite(relayPin, LOW);
    if (pirState == HIGH) {
      Serial.println("Motion ended!");
      pirState = LOW;
    }
  }
}
Интеллектуальный туннель дезинфекции: Автоматизированная санитизация для мест массового скопления

Raspberry Pi 3 (опционально) — подсчёт людей

Для аналитики и точного учёта прошедших. ML-модель на OpenCV (Python) детектирует людей, логирует в файл.

Подключение камеры Pi

  1. Выключите Pi
  2. Разъём между USB и HDMI — поднимите защёлку, вставьте шлейф (контакты от Ethernet/USB), зафиксируйте

Включение камеры

sudo raspi-config
# Interfacing Options → Enable Camera → Enable → Finish

Тест

raspistill -v -o test.jpg

Установка OpenCV 4

Гайд: learnopencv.com

Скрипт детекции (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):
        self.doRecord = doRecord
        self.show = showWindows
        self.capture = cv.CaptureFromCAM(0)
        self.frame = cv.QueryFrame(self.capture)
        if doRecord: self.initRecorder()
        self.frame1gray = cv.CreateMat(self.frame.height, self.frame.width, cv.CV_8U)
        cv.CvtColor(self.frame, self.frame1gray, cv.CV_RGB2GRAY)
        self.res = cv.CreateMat(self.frame.height, self.frame.width, cv.CV_8U)
        self.frame2gray = cv.CreateMat(self.frame.height, self.frame.width, cv.CV_8U)
        self.width = self.frame.width
        self.height = self.frame.height
        self.nb_pixels = self.width * self.height
        self.ceil = ceil
        self.isRecording = False
        self.trigger_time = 0
        if showWindows: cv.NamedWindow("Image")

    def initRecorder(self):
        codec = cv.CV_FOURCC('D','I','V','X')
        self.writer = cv.CreateVideoWriter(datetime.now().strftime("%b-%d_%H:%M:%S")+".avi", codec, 15, cv.GetSize(self.frame), 1)
        self.font = cv.InitFont(cv.CV_FONT_HERSHEY_SIMPLEX, 1, 1, 0, 2, 8)

    def run(self):
        global count
        started = time.time()
        while True:
            curframe = cv.QueryFrame(self.capture)
            instant = time.time()
            self.processImage(curframe)
            if not self.isRecording:
                if self.somethingHasMoved():
                    self.trigger_time = instant
                    if instant > started + 5:
                        print("Human Detected")
                        count += 1
                        print(count/2)
                        # лог в out.txt и log.txt с таймстампом
            else:
                if instant >= self.trigger_time + 10:
                    print("Stop recording")
                    self.isRecording = False
                else:
                    cv.PutText(curframe, datetime.now().strftime("%b %d, %H:%M:%S"), (25,30), self.font, 0)
                    cv.WriteFrame(self.writer, curframe)
            if self.show: cv.ShowImage("Image", curframe)
            cv.Copy(self.frame2gray, self.frame1gray)
            if cv.WaitKey(1) in (27, 1048603): break

    def processImage(self, frame):
        cv.CvtColor(frame, self.frame2gray, cv.CV_RGB2GRAY)
        cv.AbsDiff(self.frame1gray, self.frame2gray, self.res)
        cv.Smooth(self.res, self.res, cv.CV_BLUR, 5,5)
        element = cv.CreateStructuringElementEx(11,11,5,5, cv.CV_SHAPE_RECT)
        cv.MorphologyEx(self.res, self.res, None, None, cv.CV_MOP_OPEN)
        cv.MorphologyEx(self.res, self.res, None, None, cv.CV_MOP_CLOSE)
        cv.Threshold(self.res, self.res, 10, 255, cv.CV_THRESH_BINARY_INV)

    def somethingHasMoved(self):
        nb = sum(1 for y in range(self.height) for x in range(self.width) if self.res[y,x] == 0.0)
        avg = (nb * 100.0) / self.nb_pixels
        return avg > self.ceil

if __name__ == "__main__":
    detect = MotionDetector(doRecord=False)
    detect.run()

Запуск: python main.py. В терминале — счётчик, в out.txt и log.txt — логи.

Веб-дашборд (Apache + PHP на Pi)

  1. sudo apt install apache2 -y
  2. sudo apt install php libapache2-mod-php -y
  3. cd /var/www/html && wget "https://hacksterio.s3.amazonaws.com/uploads/attachments/1097966/Dashboard.zip" && sudo apt-get install unzip && unzip Dashboard.zip

Откройте IP Pi в браузере — дашборд готов.

Точка доступа Wi-Fi на Pi

Инструкция: raspberrypi.org. SSID: SanitizingTunnel, пароль: SecretPassword.

Мобильные приложения

Химический раствор

0.4% NaOCl в 100 л воды. Поставщик: Raman & Weil Pvt. Ltd. Есть декларация Bode Chemie Germany об эффективности против COVID-19.

Интеллектуальный туннель дезинфекции: Автоматизированная санитизация для мест массового скопления

Итоговая сборка и стоимость

Интеллектуальный туннель дезинфекции: Автоматизированная санитизация для мест массового скопления

Смета: Google Sheets.

Код и ресурсы

Производственный процесс

  1. Как IoT революционизирует сельское хозяйство: ключевые выгоды и инсайты умного фермерства
  2. Логгер температуры и влажности на Arduino с DHT11 и Ethernet Shield
  3. Умная банка на ESP8266 + Arduino: мониторинг наполненности в реальном времени
  4. Умный дом и система безопасности на базе 1Sheeld
  5. Умные самозавязывающиеся туфли с встроенной сборкой энергии
  6. Празднуем со светом и звуком: DIY-проект «С днём рождения» на Arduino
  7. Автономный робот-следопыт с распознаванием лиц на Arduino Nano и OpenCV
  8. DIY Guitar Speed Pick & Stomp Pedal — моторизированный медиатор на Arduino
  9. Умное производство: Определение, преимущества и внедрение
  10. Революция в гидравлике: как Индустрия 4.0 движет умное производство