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

Terowongan Disinfeksi dan Sanitasi Cerdas

Komponen dan persediaan

Arduino UNO
× 1
Kabel jumper (generik)
× 1
Sensor Gerak PIR (generik)
× 2
Relai Daya 12V (4PDT)
× 1
SMP 12 Volt
× 1
Seed Grove - Relai SPDT 2 Saluran
× 1
SMP 5 Volt
× 1
Toggle Switch, (On)-Off-(On)
× 1
Raspberry Pi 3 Model B
× 1
Modul Kamera Raspberry Pi V2
× 1
Kartu Micro SD
× 1
Kabel Micro-USB ke USB (Generik)
× 1
Heat sink
× 1
1 Pompa Air HP
× 1
Pipa Kotak Baja
× 1
Tangki Air (200 L)
× 1
Pipa Plastik PVC
× 1
Fogger 4 Arah
× 1
Banner Flex
× 1
Tee Joint
× 1
Pipa Tabung Mikro
× 1
Lampu Perbaikan Dinding
× 1
Siku
× 1
Pengikat Kabel, Dua Sisi
× 1

Alat dan mesin yang diperlukan

Mesin Las
Mesin Pemotong
Besi solder (generik)
Kawat Solder, Bebas Timah
Pemotong laser (generik)

Aplikasi dan layanan online

Arduino IDE
Raspberry Pi Raspbian
OpenCV

Tentang proyek ini

Pendahuluan

Terowongan Disinfeksi dan Sanitasi Cerdas adalah demonstrasi bagaimana Terowongan ini dirancang untuk memberikan perlindungan maksimal kepada orang-orang yang melewati terowongan dalam waktu sekitar 15 detik. Yang dapat membantu masyarakat untuk melawan COVID-19.

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

Terowongan desinfeksi dan sanitasi ini disiapkan untuk membersihkan orang-orang dalam waktu 15 detik dari kemungkinan bakteri apa pun.

Larutan desinfektan yang digunakan terdiri dari kombinasi natrium hipoklorit (NaOCl) dan air (H2O). Disinfektan tidak mudah menguap, sehingga memungkinkan aktivitas veridik dan bakterisida yang berkepanjangan serta membersihkan permukaan.

Maka, saya berinisiatif membuat Terowongan Disinfeksi dan Sanitasi Cerdas ini. Terowongan ini dibuat dalam rentang waktu 12 jam. Dapat mendisinfeksi seseorang sepenuhnya dari ujung kepala hingga ujung kaki dalam rentang waktu hanya 15 detik dan larutan yang digunakan sama sekali tidak berbahaya*. Total biaya terowongan kira-kira 30.000 atau $400. (Biaya revisi)

Di mana digunakan?

  • Pasar makanan
  • Kantor
  • Mall perbelanjaan
  • Bandara
  • Halte bus
  • Stasiun kereta api
  • Kantor polisi
  • Perguruan Tinggi
  • Rumah Sakit
  • Koloni

Cara Kerjanya

Sebuah mesin Pompa Air 1HP ditempatkan di sisi setiap terowongan yang mengambil larutan 0,4% larutan Natrium hipoklorit dalam 100 Liter air dari tangki. Karena mesinnya otomatis, ia mendeteksi apakah ada orang yang masuk ke dalam terowongan. Saat siapa pun masuk ke dalam terowongan, Pompa Air akan menyala selama 15 detik. Sehingga pengguna dapat melewati terowongan tersebut dan jika tidak ada orang didalam terowongan tersebut maka pompa akan padam untuk menghemat air dan listrik. Semprotan disinfektan berkabut melindungi warga dari penangkapan bakteri selama setidaknya 60 menit (Perkiraan*). Karena mendisinfeksi udara, kulit yang terbuka, dan pakaian manusia.

Tangki plastik untuk 200 liter larutan dan pompa untuk sistem pipa bertekanan tinggi terletak di sisi terowongan. Sesuai perhitungan, solusinya harus cukup untuk 8-10 jam. Karena memiliki sensor gerak di atas pintu masuk untuk menyimpan antiseptik. (Dapat bervariasi sesuai dengan orang yang masuk ke terowongan**)

Diagram alir

Penyiapan Perangkat Keras

Saya meletakkan bingkai dari profil logam, dapat dilipat sehingga dapat diangkut dari satu tempat ke tempat lain, dan ketika semuanya selesai, simpan untuk berjaga-jaga jika terjadi kiamat berikutnya. Penutupnya adalah dengan spanduk (yang digunakan untukiklan outdoor ). Spanduk mudah dipasang dengan profil logam dengan ikatan plastik. Cepat dan tidak memerlukan keahlian khusus.

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

Tangki plastik untuk 200 liter larutan dan pompa untuk sistem pipa bertekanan tinggi terletak di sisi terowongan yang terhubung dengan 4-Way Fogger Assembly.

Pipa tabung mikro telah digunakan di seluruh terowongan untuk memasok solusi ke fogger.

Di dalam, terdapat pipa bertekanan tinggi dengan 4 4-Way Fogger yang dapat dihubungkan. Kabut tidak meninggalkan bekas pada pakaian, sementara benar-benar menyelimuti orang yang masuk dan menghancurkan virus bahkan di lipatan pakaian yang sulit dijangkau dan melindungi beberapa saat setelah keluar.

Sebagai solusi, solusi bersertifikat digunakan dalam proyek ini. (Sertifikat Terlampir di bawah)

Kabut 4 Arah

  • Tingkat Debit :30 LPH/0,5 LPM (untuk 1 fogger)
  • Tekanan yang Direkomendasikan:45-60 psi
  • Ukuran Tetesan Rata-rata:65 mikron (pada 55-60 psi)
  • Filtrasi Diperlukan:130 Mikron (120 mesh)
  • Pompa yang dibutuhkan:Kepala 40 hingga 45 meter

Aksesoris Lainnya Digunakan

Siapkan Arduino

Pompa air sebenarnya bekerja dengan mendeteksi sinar infra merah. Setiap kali tubuh manusia mendekati sensor gerak sehingga tubuh manusia memantulkan sinar inframerah, sensor gerak mendeteksi sinar inframerah ini dan memberi kita sinyal TINGGI melalui pin keluaran. Sinyal HIGH ini kemudian dibaca oleh Arduino. Jadi jika Arduino membaca sinyal HIGH maka akan memberikan sinyal HIGH ke modul relay yang berarti relay akan menyala, dan akibatnya Power relay akan menyala dan akan menyalakan Pompa Air selama 15 detik (Bisa diubah). Begitu pula jika Arduino membaca sinyal LOW maka akan membuat pin relay LOW dan akibatnya Pompa Air akan tetap mati.

Dalam hal ini saya telah menggunakan 2 sensor PIR untuk membuatnya lebih tepat jika salah satu dari mereka merasakan gerakan maka relai akan menyala selama 15 detik (Dapat diubah).

Kami tidak dapat menggunakan Relay 5V langsung dengan Pompa Air karena Dalam kasus saya, pompa air yang saya gunakan dalam proyek ini memiliki peringkat Ampere(A) 16Ampere dan Relay 5V memiliki beban maksimal 10Ampere sehingga untuk mengontrol pompa air Saya menggunakan satu relay lagi dengan Modul Relay 5V. yaitu Relai Daya 12V.

Kode:

/*
* Terowongan Disinfeksi dan Sanitasi Cerdas
*/

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

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

int pirState =LOW; // di awal, dengan asumsi tidak ada gerakan yang terdeteksi
int val =0; // variabel untuk membaca status pin
int val2 =0; // variabel untuk membaca status pin


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

void loop(){
val =digitalRead(inputPin); // membaca nilai input
val2 =digitalRead(inputPin2); // baca nilai input
if (val ==HIGH || val2 ==HIGH) { // periksa apakah input HIGH
digitalWrite(relayPin, HIGH); // nyalakan Relay
if (pirState ==LOW) {
// nyalakan
Serial.println("Gerakan terdeteksi!");
// 15 detik delay
delay(15000);
pirState =HIGH;
}
} else {
digitalWrite(relayPin, 0); // matikan Relay
if (pirState ==HIGH){
// matikan
Serial.println("Gerakan berakhir!");
pirState =LOW;
}
}

}

Pengkabelan akhir untuk proyek ini terlihat agak berantakan tetapi berfungsi dengan baik.

Setelah semuanya terhubung, saya hanya mengujinya dengan penginderaan dasar dan kemudian melanjutkan untuk memeriksa apakah relai menyala.

Siapkan Raspberry Pi 3 (Opsional)

Ini opsional. Jika Anda perlu melakukan analisis data dan menghitung dengan tepat jumlah orang yang menggunakan terowongan ini. 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 tepat saat memikirkan semua Kemungkinan.

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

Hubungkan Kamera Pi

  • Matikan Raspberry Pi
  • Temukan Modul Kamera, di antara Modul USB dan modul HDMI.
  • Buka kunci klip plastik hitam dengan (dengan lembut) menarik ke atas
  • Masukkan kabel pita Modul Kamera (konektor logam menghadap jauh dari port Ethernet / USB pada Raspberry Pi 4)
  • Kunci klip plastik hitam

Aktifkan Kamera Pi

  • Lari
sudo raspi-config 
  • Pilih Opsi Antarmuka (yaitu opsi ke-4) dari menu utama Alat Konfigurasi Perangkat Lunak Raspberry Pi. Tekan ENTER.
  • Pilih Aktifkan Kamera (yaitu opsi ke-5) opsi menu dan tekan ENTER.
  • Di menu berikutnya, gunakan tombol panah kanan untuk menyorot ENABLE dan tekan ENTER.

Uji Kamera Pi

Selanjutnya, verifikasi Pi Camera diinstal dengan benar dengan memulai overlay pratinjau kamera. Hamparan akan ditampilkan di layar.

  • Hubungkan ke Raspberry Pi menggunakan VNC Viewer.
  • Jalankan perintah berikut:
raspistill -v -o test.jpg 

Jika Anda memasang Pi Camera dengan benar, Anda akan melihat cuplikan dari kamera yang 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 tempel di file baru yang Anda buat.

impor cv2.cv sebagai cv
dari datetime import datetime
import time
import sys
import datetime
count=0
kelas MotionDetector():
def onChange(self, val):#callback saat pengguna mengubah ceil
self.ceil =val
def __init__(self,ceil=8, doRecord=True, showWindows=True):
self.writer =Tidak ada
self.font =Tidak ada
self.doRecord=doRecord #Rekam objek bergerak atau tidak
self.show =showWindows # Menampilkan 2 jendela atau tidak
self.frame =Tidak ada
self.capture=cv.CaptureFromCAM(0)
self.frame =cv.QueryFrame(self.capture) #Ambil bingkai ke init recorder
jika doRecord:
self.initRecorder()
self.frame1gray =cv.CreateMat(self.frame.height, self.frame.width, cv.CV_8U) #Gray frame di t-1
cv.CvtColor(self.frame, self.frame1gray, cv.CV_RGB2GRAY)
#Akan menyimpan hasil ambang batas
self.res =cv.CreateMat(self.frame. tinggi, self.frame.width, cv.CV_8U)
self.frame2gray =cv.CreateMat(self.fra me.height, self.frame.width, cv.CV_8U) #Bingkai abu-abu pada 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 #Tahan stempel waktu deteksi terakhir
jika showWindows :
cv.NamedWindow("Image")
#cv.CreateTrackbar("Mytrack", "Image", self.ceil, 100, self.onChange)
def initRecorder(self):#Buat perekam
codec =cv.CV_FOURCC('D', 'I', 'V', 'X')
#codec =cv.CV_FOURCC("D", "I", " B", " ")
self.writer=cv.CreateVideoWriter(datetime.now().strftime("%b-%d_%H:%M:%S")+".avi", codec, 15, cv.GetSize(self.frame), 1)
#FPS ditetapkan pada 15 karena tampaknya fps cam saya tetapi harus disesuaikan dengan kebutuhan Anda
self.font =cv.InitFont (cv.CV_FONT_HERSHEY_SIMPLEX, 1, 1, 0, 2, 8) #Membuat font
def run(self):
hitungan global
started =time.time()
sedangkan True:
curframe =cv.QueryFrame(self.capture)
instant =time.time() #Dapatkan stempel waktu frame
self.processImage(curframe) #Proses gambar
jika bukan self.isRecording:
if self.somethingHasMoved():
self.trigger_time =instan #Perbarui trigger_time
jika instan> dimulai +5:#Tunggu 5 detik setelah webcam mulai untuk mengatur luminositas dll.
cetak "Human Detected"
hitung +=1
cetak(hitung/2)
orig_stdout =sys.stdout
f =open('out.txt', 'a+')
sys.stdout =f
print(count/2)
sys.stdout =orig_stdout
f.close()
#log cap waktu
orig_stdout =sys.stdout
f =open('log.txt', 'a+')
sys.stdout =f
timestampc =('Stempel waktu:{:%Y-%b-%d %H:%M:%S }'.format(datetime.datetime.now()))
print(timestampc+' Entri Log :1')
sys.stdout =orig_stdout
f.close()
if self.doRecord:#set isRecording=True hanya jika kita merekam video
self.isRecording =True
else:
if instant>=self.trigger_time +10:#Record selama 10 detik
cetak "Berhenti recording"
self.isRecording =False
else:
cv.PutText(curframe,datetime.now().strftime("%b %d, %H:%M:%S" ), (25,30),self.font, 0) #Masukkan tanggal pada bingkai
cv.WriteFrame(self.writer, curframe) #Tulis bingkai
jika self.show:
cv.ShowImage("Image", curframe)
#cv.ShowImage("Res", self.res)
cv.Copy(self.frame2gray, self.frame1gray)
c=cv.WaitKey(1)
if c==27 atau c ==1048603:#Break jika pengguna memasukkan 'Esc'.
break
def processImage(self, frame):
cv.CvtColor(frame, self.frame2gray, cv.CV_RGB2GRAY)
#Absdiff untuk mendapatkan perbedaan antara frame
cv.AbsDiff(self.frame1gray, self.frame2gray, self.res)
#Hapus noise dan lakukan threshold
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, Tidak ada, Tidak ada, cv.CV_MOP_CLOSE)
cv.Thresho ld(self.res, self.res, 10, 255, cv.CV_THRESH_BINARY_INV)
def somethingHasMoved(self):
nb=0 #Akan menampung jumlah piksel hitam
untuk y di range(self.height):#Iterate gambar lubang
untuk x dalam range(self.width):
if self.res[y,x] ==0.0:#Jika pikselnya hitam tetap it
nb +=1
avg =(nb*100.0)/self.nb_pixels #Menghitung rata-rata piksel hitam pada gambar
#print "Rata-rata:",avg, "%\ r",
if avg> self.ceil:#If over the ceil memicu alarm
mengembalikan 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, lalu ENTER. Script dapat dijalankan dengan mengetikkan perintah berikut:

python main.py 

Anda seharusnya dapat melihat gambar di layar dan silakan lihat video untuk memverifikasi, jika diperlukan dan ada hitungan manusia oleh program di terminal.

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

Membuat dasbor untuk Desktop/Aplikasi

Langkah 1:Instal Apache

Instal apache2 paket dengan perintah ini:

sudo apt install apache2 -y 

Langkah 2:Instal PHP

Agar server Apache Anda dapat memproses file PHP, Anda harus 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 akan melihat

Menyiapkan Raspberry Pi sebagai Titik Akses Nirkabel

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

Catatan:Beri nama 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=Kata Sandi Rahasia
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise =CCMP

Sekarang mari kita mulai membuat aplikasi.

Aplikasi Android:

Prasyarat:Android Studio

Anda cukup mengunduh kodenya langsung dari sini.

Dan ubah kredensial Anda seperti Alamat IP raspberry pi Anda sesuai dengan kebutuhan Anda.

Aplikasi iOS:

Prasyarat:XCode

Anda cukup mengunduh kodenya langsung dari sini.

Dan ubah kredensial Anda seperti Alamat IP raspberry pi Anda sesuai dengan kebutuhan Anda.

Larutan Kimia Digunakan

Terowongan desinfeksi memiliki 0,4% larutan Sodium hipoklorit dalam 100 liter air.

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

Jadi, saya hanya mengumpulkan informasi dari vendor yang memasok saya dengan bahan kimia ini. Jadi dia memberi tahu saya bahwa bahan kimia yang saya gunakan di terowongan ini berasal dari Raman &Weil Pvt. Ltd dan mereka memiliki "Deklarasi " dari Bode Chemie Jerman , tentang kemanjuran melawan COVID-19 .

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

Menyatukan Semuanya

Akhirnya, saatnya untuk menyalakan Tunnel dan memeriksa semua rutinitas dan aplikasi berfungsi sesuai rencana.

Biaya

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

Kode

  • Terowongan Kode Arduino
  • main.py
  • File Dasbor
  • Kode Sumber Android Sanitation-Tunnel
  • Aplikasi Android Terowongan Sanitasi
  • Kode Sumber iOS Terowongan Sanitasi
Terowongan Kode ArduinoC/C++
/* * Terowongan Disinfeksi dan Sanitasi Cerdas */ int relayPin =12; // pilih pin untuk Relay Pinint inputPin =2; // pilih pin input (untuk sensor PIR)int inputPin2 =3; // pilih pin input (untuk sensor PIR 02)int pirState =LOW; // kita mulai, dengan asumsi tidak ada gerakan yang terdeteksiint val =0; // variabel untuk membaca pin statusint val2 =0; // variabel untuk membaca status pin void setup() { pinMode(relayPin, OUTPUT); // mendeklarasikan Relay sebagai output pinMode(inputPin, INPUT); // mendeklarasikan sensor PIR 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 inputnya HIGH digitalWrite(relayPin, HIGH); // hidupkan Relay ON if (pirState ==LOW) { // kita baru saja mengaktifkan Serial.println("Gerakan terdeteksi!"); // penundaan penundaan 15 detik (15000); // Kami hanya ingin mencetak pada perubahan output, bukan menyatakan pirState =HIGH; } } else { digitalWrite(relayPin, 0); // matikan Relay jika (pirState ==HIGH){ // kita baru saja mematikan Serial.println("Gerakan berakhir!"); // Kami hanya ingin mencetak pada perubahan output, bukan menyatakan pirState =LOW; } } }
main.pyPython
import cv2.cv sebagai cvfrom datetime import datetimeimport timeimport sysimport datetimecount=0class MotionDetector():def onChange(self, val):#callback saat pengguna mengubah ceil self.ceil =val def __init__(self,ceil=8 , doRecord=True, showWindows=True):self.writer =Tidak ada self.font =Tidak ada self.doRecord=doRecord #Rekam objek bergerak atau tidak self.show =showWindows #Tampilkan 2 jendela 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_p ixels =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") #cv.CreateTrackbar("Mytrack", "Image", self.ceil, 100, self.onChange) def initRecorder(self):#Create the recorder codec =cv.CV_FOURCC('D', 'I', 'V', 'X') #codec =cv.CV_FOURCC("D", "I", "B", " ") self.writer=cv.CreateVideoWriter(datetime.now().strftime("%b-%d_%H:%M:%S")+".avi", codec, 15, cv.GetSize(self.frame), 1) #FPS set at 15 because it seems to be the fps of my cam but should be ajusted to your needs self.font =cv.InitFont(cv.CV_FONT_HERSHEY_SIMPLEX, 1, 1, 0, 2, 8) #Creates a font def run(self):global count started =time.time() while True:curframe =cv.QueryFrame(self.capture) instant =time.time() #Get timestamp o the frame self.processImage(curframe) #Process the image if not self.isRecording:if self.somethingHasMoved():self.trigger_time =instant #Update the trigger_time if instant> started +5:#Wa it 5 second after the webcam start for luminosity adjusting etc.. 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() #timestamp log 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:#set isRecording=True only if we record a video self.isRecording =True else:if instant>=self.trigger_time +10:#Record during 10 seconds print "Stop recording" self.isRecording =False else:cv.PutText(curframe,datetime.now().strftime("%b %d, %H:%M:%S"), (25,30),self.font, 0) #Put date on the frame cv.WriteFrame(self.writer, curframe) #Write the frame if self.show:cv.ShowImage("Image", curframe) #cv.ShowImage("Res", self.res) cv.Copy(self.frame2gray, self.frame1gray) c=cv.WaitKey(1) if c==27 or c ==10 48603:#Break if user enters 'Esc'. break def processImage(self, frame):cv.CvtColor(frame, self.frame2gray, cv.CV_RGB2GRAY) #Absdiff to get the difference between to the frames cv.AbsDiff(self.frame1gray, self.frame2gray, self.res) #Remove the noise and do the threshold 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 #Will hold the number of black pixels for y in range(self.height):#Iterate the hole image for x in range(self.width):if self.res[y,x] ==0.0:#If the pixel is black keep it nb +=1 avg =(nb*100.0)/self.nb_pixels #Calculate the average of black pixel in the image #print "Average:",avg, "%\r", if avg> self.ceil:#If over the ceil trigger the alarm return True else:return Falseif __name__=="__main__":de tect =MotionDetector(doRecord=False) detect.run()
Dashboard FilesPHP
No preview (download only).
Sanitation-Tunnel Android Source CodeJava
No preview (download only).
Sanitation-Tunnel Android AppJava
Demo App
No preview (download only).
Sanitation-Tunnel iOS Source CodeSwift
No preview (download only).
Smart Disinfection and Sanitation Tunnel
https://github.com/yugn27/Smart-Disinfection-and-Sanitation-Tunnel

Suku cadang dan penutup khusus

smart_disinfection_and_sanitation_tunnel_prlFu8ZRXO.3mf

Skema

Circuit Diagram - fritzing file smart_disinfection_and_sanitation_tunnel_Zkb20Q5S2B.fzz

Proses manufaktur

  1. Manfaat IoT di bidang pertanian dan pertanian pintar
  2. Pencatat Data Suhu dan Kelembaban
  3. IOT - Smart Jar Menggunakan ESP8266, Arduino dan Sensor Ultrasonik
  4. Otomasi Rumah Pintar Dan Sistem Keamanan Menggunakan 1Sheeld
  5. Smart Shoes (Tali Otomatis dan Pembangkit Listrik)
  6. Selamat Ulang Tahun:Lampu dan Suara
  7. Mobil Robot Pelacak Wajah Cerdas
  8. Pick Kecepatan Gitar dan Pedal Injak!
  9. Manufaktur Cerdas:apa itu dan dan manfaatnya
  10. Industri 4.0 dan Hidraulik