Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Terowirus Disinfeksi Cerdas: Sanitasi Otomatis untuk Area Ramai

Komponen dan Perlengkapan

Alat dan Mesin yang Diperlukan

Aplikasi dan Layanan Online

Tentang Proyek Ini

Pendahuluan

Terowirus Disinfeksi dan Sanitasi Cerdas adalah demonstrasi bagaimana itu telah dirancang untuk memberikan perlindungan maksimal bagi orang yang melewati terowirus dalam sekitar 15 detik. Yang dapat membantu komunitas untuk melawan COVID-19.

Ide utama proyek ini adalah untuk membuat terowirus yang dapat mencoba dan mencegah penyebaran COVID-19.

Terowirus disinfeksi dan sanitasi ini disiapkan untuk membersihkan orang dalam 15 detik dari bakteri yang mungkin saja.

Larutan disinfektan yang digunakan terdiri dari kombinasi hipoklorit natrium (NaOCl) dan air (H2O). Disinfektan tidak mudah menguap, sehingga memungkinkan aktivitas veridikal dan bakterisidal yang berkelanjutan dan membersihkan permukaan.

Jadi, saya mengambil inisiatif ini untuk membuat Terowirus Disinfeksi dan Sanitasi Cerdas ini. Terowirus ini dibuat dalam waktu 12 jam. Itu dapat membersihkan seorang penuh dari kepala hingga kaki dalam waktu hanya 15 detik dan larutan yang digunakan sepenuhnya tidak berbahaya*. Biaya total terowirus sekitar ₹30.000 atau $400. (Biaya yang direvisi)

Di Mana Digunakan?

Bagaimana Cara Kerjanya

Sebuah mesin pompa air 1 HP ditempatkan di sisi setiap terowirus yang mengambil larutan 0,4% dari hipoklorit natrium dalam 100 Liter air dari tangki. Karena mesin otomatis ia merasakan apakah ada orang yang masuk ke terowirus. Saat seseorang masuk ke terowirus pompa air menyala selama 15 detik. Sehingga pengguna dapat melewati terowirus itu dan jika tidak ada orang di terowirus pompa akan mati untuk menghemat air dan listrik. Sprei disinfektan berkabut melindungi warga dari tertular bakteri selama periode paling tidak 60 menit (Perkiraan*). Karena itu membersihkan udara, kulit yang terbuka, dan pakaian manusia.

Sebuah tangki plastik untuk 200 liter larutan dan pompa untuk sistem pipa tekanan tinggi terletak di sisi terowirus. Menurut perhitungan larutan seharusnya cukup untuk 8-10 jam. Karena memiliki sensor gerakan di atas pintu masuk untuk menghemat antiseptik. (Bisa bervariasi sesuai orang yang masuk ke terowirus**)

Diagram Alur

Gambar diagram alur tersedia sebagai referensi.

Pengaturan Hardware

Saya menata bingkai dari profil logam, yang dapat dilipat sehingga dapat diangkut dari tempat ke tempat, dan setelah semuanya selesai, disimpan untuk kiamat berikutnya. Penutupannya menggunakan banner (yang digunakan untuk iklan papan pengumuman luar ruangan). Banner mudah dilekatkan dengan profil logam menggunakan ikat plastik. Ini cepat dan tidak memerlukan keterampilan khusus.

Lihat model - https://skfb.ly/6RGvZ

Sebuah tangki plastik untuk 200 liter larutan dan pompa untuk sistem pipa tekanan tinggi terletak di sisi terowirus yang terhubung dengan Assembly Fogger 4-Way.

Pipa mikro telah digunakan di seluruh terowirus untuk menyuplai larutan ke fogger.

Di dalam, ada pipa tekanan tinggi dengan 4 Fogger 4-Way yang dapat dihubungkan. Kabut tidak memberi noda pada pakaian, sambil sepenuhnya meliputi orang yang masuk dan menghancurkan virus bahkan dalam lipatan pakaian yang sulit dijangkau dan melindungi untuk beberapa waktu setelah keluar.

Sebagai larutan, larutan sertifikat digunakan dalam proyek ini. (Sertifikat Dilampirkan di bawah)

4 Way Fogger

Aksesoris Lain yang Digunakan

Siapkan Arduino

Pompa air sebenarnya bekerja dengan mendeteksi sinar inframerah. Setiap kali tubuh manusia mendekati sensor gerakan sehingga tubuh manusia memantulkan sinar inframerah, sensor gerakan mendeteksi sinar inframerah ini dan memberi kita sinyal HIGH melalui pin output. Sinyal HIGH ini kemudian dibaca oleh Arduino. Jadi jika Arduino membaca sinyal HIGH, itu akan memberi sinyal HIGH ke modul relais yang berarti relais akan menyala, dan sebagai hasilnya Power relay akan menyala dan akan menyala Pompa Air selama 15 detik (Dapat diubah). Sebaliknya jika Arduino membaca sinyal LOW, itu akan membuat pin relais LOW dan sebagai hasilnya Pompa Air akan tetap mati.

Dalam ini saya telah menggunakan 2 sensor PIR untuk membuatnya lebih presisi jika salah satunya merasakan gerakan maka relais akan menyala selama 15 detik (Dapat diubah).

Kami tidak dapat menggunakan Relais 5V secara langsung dengan Pompa Air karena Dalam kasus saya, pompa air yang saya gunakan dalam proyek ini memiliki rating Ampere(A) sebesar 16Ampere dan Relais 5V memiliki beban maksimal 10Ampere jadi untuk mengontrol pompa air saya menggunakan satu relais lagi dengan Modul Relais 5V. yang merupakan Relais Daya 12V.

Kode:

/*
* Smart Disinfection and Sanitation Tunnel
*/

int relayPin = 12; // pilih pin untuk Pin Relais

int inputPin = 2; // pilih pin input (untuk sensor PIR)
int inputPin2 = 3; // pilih pin input (untuk sensor PIR 02)

int pirState = LOW; // pada awalnya, asumsi tidak ada gerakan terdeteksi
int val = 0; // variabel untuk membaca status pin
int val2 = 0; // variabel untuk membaca status pin


void setup() {
pinMode(relayPin, OUTPUT); // deklarasi Relais sebagai output
pinMode(inputPin, INPUT); // deklarasi sensor sebagai input
pinMode(inputPin2, INPUT);
Serial.begin(9600);
}

void loop(){
val = digitalRead(inputPin); // baca nilai input
val2 = digitalRead(inputPin2); // baca nilai input
if (val == HIGH || val2 == HIGH) { // periksa apakah input HIGH
digitalWrite(relayPin, HIGH); // nyalakan Relais
if (pirState == LOW) {
// baru menyala
Serial.println("Motion detected!");
// penundaan 15 detik
delay(15000);
pirState = HIGH;
}
} else {
digitalWrite(relayPin, 0); // matikan Relais
if (pirState == HIGH){
// baru mati
Serial.println("Motion ended!");
pirState = LOW;
}
}

}

Pemasangan akhir untuk proyek ini terlihat sedikit acak tetapi bekerja dengan baik.

Siapkan Raspberry Pi 3 (Opsional)

Ini opsional. Jika Anda perlu melakukan analisis data dan untuk menghitung jumlah orang yang menggunakan terowirus ini dengan tepat. Anda dapat menerapkan bagian ini.

Meskipun, ada banyak cara untuk menghitungnya dengan beberapa sensor fisik seperti Sensor PIR dan Sensor Ultrasonik tetapi saya menemukan ini lebih presitif sambil memikirkan semua Risiko.

Ada model pembelajaran mesin yang mendeteksi tubuh manusia menggunakan OpenCV dalam Python dan menyimpan log dalam file yang dapat diproses untuk menampilkan data dalam aplikasi.

Konektifkan Kamera Pi

Aktifkan Kamera Pi

sudo raspi-config

Uji Kamera Pi

Selanjutnya, verifikasi bahwa Kamera Pi diinstal dengan benar dengan memulai pratinjau overlay kamera. Overlay akan dirender pada layar.

raspistill -v -o test.jpg

Jika Anda menginstal Kamera Pi dengan benar, Anda harus melihat gambar dari kamera dirender ke layar Anda.

Menginstal OpenCV

Silakan ikuti tautan ini untuk menginstal OpenCV

https://www.learnopencv.com/install-opencv-4-on-raspberry-pi/

Kode

Jalankan perintah berikut untuk membuat dan membuka file skrip baru:

cd Desktop
sudo nano main.py

Salin skrip lalu tempelkan di file baru yang Anda buat.

import cv2.cv as cv
from datetime import datetime
import time
import sys
import datetime
count=0
class MotionDetector():
def onChange(self, val): #callback when the user change the ceil
self.ceil = val
def __init__(self,ceil=8, doRecord=True, showWindows=True):
self.writer = None
self.font = None
self.doRecord=doRecord #Either or not record the moving object
self.show = showWindows #Either or not show the 2 windows
self.frame = None
self.capture=cv.CaptureFromCAM(0)
self.frame = cv.QueryFrame(self.capture) #Take a frame to init recorder
if doRecord:
self.initRecorder()
self.frame1gray = cv.CreateMat(self.frame.height, self.frame.width, cv.CV_8U) #Gray frame at t-1
cv.CvtColor(self.frame, self.frame1gray, cv.CV_RGB2GRAY)
#Will hold the thresholded result
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) #Gray frame at t
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 #Hold timestamp of the last detection
if showWindows:
cv.NamedWindow("Image")
def initRecorder(self): #Create the recorder
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)
orig_stdout = sys.stdout
f = open('out.txt', 'a+')
sys.stdout = f
print(count/2)
sys.stdout = orig_stdout
f.close()
orig_stdout = sys.stdout
f = open('log.txt', 'a+')
sys.stdout = f
timestampc =('Timestamp: {:%Y-%b-%d %H:%M:%S}'.format(datetime.datetime.now()))
print(timestampc+' Log Entry : 1')
sys.stdout = orig_stdout
f.close()
if self.doRecord:
self.isRecording = True
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)
c=cv.WaitKey(1)
if c==27 or c == 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(5*2+1, 5*2+1, 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=0
for y in range(self.height):
for x in range(self.width):
if self.res[y,x] == 0.0:
nb += 1
avg = (nb*100.0)/self.nb_pixels
if avg > self.ceil:
return True
else:
return False
if __name__=="__main__":
detect = MotionDetector(doRecord=False)
detect.run()

Unduh - https://www.hackster.io/code_files/438321/download

Setelah selesai, cukup simpan file dengan mengetik "CTRL+X", lalu Y, dan lalu ENTER. Skrip dapat dijalankan dengan mengetik perintah berikut:

python main.py

Anda seharusnya dapat melihat gambar pada layar dan silakan tonton video untuk memverifikasi, jika diperlukan dan ada jumlah orang yang dihitung oleh program di terminal.

Saya baru saja membuat enclosure dengan lembar MDF untuk Arduino dan Raspberry Pi 3

Membuat Dasbor untuk Desktop/App

Langkah 1: Instal Apache

Instal paket apache2 dengan perintah ini:

sudo apt install apache2 -y

Langkah 2: Instal PHP

Untuk mengizinkan server Apache Anda memproses file PHP, Anda perlu menginstal versi terbaru PHP dan modul PHP untuk Apache. Ketik perintah berikut untuk menginstal ini:

sudo apt install php libapache2-mod-php -y

Sekarang unduh Dashboard.zip :

cd /var/www/html
wget "https://hacksterio.s3.amazonaws.com/uploads/attachments/1097966/Dashboard.zip"

dan Instal unzip:

sudo apt-get install unzip

ekstrak file dari file ZIP:

unzip Dashboard.zip

Sekarang simpan dan segarkan browser Anda. Anda seharusnya melihat

Mengatur Raspberry Pi sebagai Titik Akses Nirkabel

Silakan ikuti tautan ini https://www.raspberrypi.org/documentation/configuration/wireless/access-point.md

Catat: Namai Titik Akses Nirkabel sebagai SanitizingTunnel

interface=wlan0
driver=nl80211
ssid=SanitizingTunnel
hw_mode=g
channel=7
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=SecretPassword
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Sekarang mari kita mulai membangun aplikasi.

Aplikasi Android:

Prasyarat: Android Studio

Anda dapat dengan mudah mengunduh kode secara langsung dari sini.

Dan ubah kredensial Anda seperti Alamat IP Raspberry Pi Anda sesuai kebutuhan.

Aplikasi iOS:

Prasyarat: XCode

Anda dapat dengan mudah mengunduh kode secara langsung dari sini.

Dan ubah kredensial Anda seperti Alamat IP Raspberry Pi Anda sesuai kebutuhan.

Larutan Kimia yang Digunakan

Terowirus disinfeksi memiliki 0,4% larutan hipoklorit natrium dalam 100 liter air.

Update - Saya telah melihat banyak komentar yang mengatakan bahwa Anda menggunakan kimia berbahaya.

Jadi, saya hanya mengumpulkan informasi dari penjual yang menyuplai saya dengan kimia ini. Jadi dia memberitahu saya bahwa kimia yang saya gunakan dalam terowirus ini berasal dari Raman & Weil Pvt. Ltd dan mereka memiliki "Declaration" dari Bode Chemie Germany, tentang keberhasilan terhadap COVID-19.

Tautan Resmi - https://ramanweil.com/pdf/Declaration%20from%20Bode%20Chemie%20Germany%20on%20efficacy%20against%20COVID%2019.pdf

Menggabungkan Semua

Akhirnya, saatnya untuk menyalakan Terowirus dan memeriksa semua rutinitas dan aplikasi bekerja sesuai rencana.

Biaya

Tautan - https://docs.google.com/spreadsheets/d/1jt-hy8N8IwuQnaLYt-25BywdlREkEhp5zjAfYC6eGqw/edit?usp=sharing

Kode

Kode Arduino TerowirusC/C++
/* * Smart Disinfection and Sanitation Tunnel */ int relayPin = 12; // choose the pin for the Relay Pin int inputPin = 2; // choose the input pin (for PIR sensor) int inputPin2 = 3; // choose the input pin (for PIR sensor 02) int pirState = LOW; // we start, assuming no motion detected int val = 0; // variable for reading the pin status int val2 = 0; // variable for reading the pin status void setup() { pinMode(relayPin, OUTPUT); // declare Relay as output pinMode(inputPin, INPUT); // declare PIR sensor as input pinMode(inputPin2, INPUT); Serial.begin(9600); } void loop(){ val = digitalRead(inputPin); // read input value val2 = digitalRead(inputPin2); // read input value if (val == HIGH || val2 == HIGH) { // check if the input is HIGH digitalWrite(relayPin, HIGH); // turn Relay ON if (pirState == LOW) { // we have just turned on Serial.println("Motion detected!"); // 15 sec delay delay(15000); // We only want to print on the output change, not state pirState = HIGH; } } else { digitalWrite(relayPin, 0); // turn Relay OFF if (pirState == HIGH){ // we have just turned of Serial.println("Motion ended!"); // We only want to print on the output change, not state pirState = LOW; } } } 
main.pyPython
import cv2.cv as cv from datetime import datetime import time import sys import datetime count=0 class MotionDetector(): def onChange(self, val): #callback when the user change the ceil self.ceil = val def __init__(self,ceil=8, doRecord=True, showWindows=True): self.writer = None self.font = None self.doRecord=doRecord self.show = showWindows self.frame = None 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) orig_stdout = sys.stdout f = open('out.txt', 'a+') sys.stdout = f print(count/2) sys.stdout = orig_stdout f.close() orig_stdout = sys.stdout f = open('log.txt', 'a+') sys.stdout = f timestampc =('Timestamp: {:%Y-%b-%d %H:%M:%S}'.format(datetime.datetime.now())) print(timestampc+' Log Entry : 1') sys.stdout = orig_stdout f.close() if self.doRecord: self.isRecording = True 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) c=cv.WaitKey(1) if c==27 or c == 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(5*2+1, 5*2+1, 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=0 for y in range(self.height): for x in range(self.width): if self.res[y,x] == 0.0: nb += 1 avg = (nb*100.0)/self.nb_pixels if avg > self.ceil: return True else: return False if __name__=="__main__": detect = MotionDetector(doRecord=False) detect.run() 
Dashboard FilesPHP

Tidak ada pratinjau (hanya unduhan).

Sanitation-Tunnel Android Source CodeJava

Tidak ada pratinjau (hanya unduhan).

Sanitation-Tunnel Android AppJava

Demo App
Tidak ada pratinjau (hanya unduhan).

Sanitation-Tunnel iOS Source CodeSwift

Tidak ada pratinjau (hanya unduhan).

Smart Disinfection and Sanitation Tunnel

https://github.com/yugn27/Smart-Disinfection-and-Sanitation-Tunnel

Bagian dan Enclosure Kustom

smart_disinfection_and_sanitation_tunnel_prlFu8ZRXO.3mf

Skematik

Diagram Rangkaian - file fritzing smart_disinfection_and_sanitation_tunnel_Zkb20Q5S2B.fzz

Proses manufaktur

  1. Bagaimana IoT Mengubah Pertanian: Manfaat Utama & Wawasan Pertanian Cerdas
  2. Pencatat Suhu & Kelembaban Arduino dengan DHT11 dan Ethernet Shield
  3. Buat Kotak Pintar IoT dengan ESP8266, Arduino & Sensor Ultrasonik – Pemantauan Real-Time
  4. Membangun Sistem Otomasi & Keamanan Rumah Pintar dengan 1Sheeld
  5. Sepatu Smart Self-Lacing dengan Penambahan Energi Terpadu
  6. Rayakan dengan Cahaya dan Suara: Proyek Arduino Ulang Tahun DIY
  7. Mobil Robot Otonomi Pelacak Wajah dengan Arduino Nano & OpenCV
  8. DIY Guitar Speed Pick & Stomp Pedal – Pick Gitar Motoris Cetak 3D
  9. Smart Manufacturing: Definisi, Manfaat, dan Implementasi
  10. Merevolusi Hidrolik: Bagaimana Industri 4.0 Mendorong Smart Manufacturing