Pukhraj Dhiman
Created August 16, 2020 © GPL3+

Covid-19 Virus Sanitizing Bi-copter using UV light

UV light is mounted on the Bi-copter to disinfect every part of the room

AdvancedWork in progress15 hours111

Things used in this project

Hardware components

Quadcopter kit
×1
NVIDIA Jetson Nano Developer Kit
NVIDIA Jetson Nano Developer Kit
For running the code developed on Google Colab
×1
Arduino Pro Mini 328 - 3.3V/8MHz
SparkFun Arduino Pro Mini 328 - 3.3V/8MHz
For Switching ON-OFF the UV Light using commands from Jetson Nano
×1
PCA9685 16 channel Servo Controller
For controlling the Servo
×1
UV LED Strip
For Disinfecting/Sanitizing the surface
×3
MG995 servo motor
For controlling the Pan of the UV light & also the forward backward movement of bicopter
×3
Ultrasonic Sensor
For avoiding obstacles like walls, in-room appliances, household things etc.
×6
BO Wheels
For linear movement of the robot
×2
Silver Aluminium foil
Because glass absorbs a lot of UV light we are using Aluminium foil for having greater surface area without being absorbed
×1

Software apps and online services

Fusion 360
Autodesk Fusion 360
For developing the 3d design of the bicopter
Google Colab
For developing and testing the python code in a Virtual Environment

Hand tools and fabrication machines

Multitool, Screwdriver
Multitool, Screwdriver
Soldering iron (generic)
Soldering iron (generic)
Solder Wire, Lead Free
Solder Wire, Lead Free

Story

Read more

Schematics

BI-COBOT Smart Person Detector for Automatic Switching of UV Light

A Raspberry-Pi Camera is connected to the Jetson Nano in which a Python Program is running for detecting the Human and whenever it detects a Human being it will command Microcontroller to turn OFF the UV Light

Code

Code For Automatic Switching of UV Lights

Python
Whenever a Person is detected by the Jetson Nano It will automatically tells the microcontroller to shut down the UV Lights
import numpy as np
import cv2

hog = cv2.HOGDescriptor()
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
cv2.startWindowThread()

cap = cv2.VideoCapture(0)

out = cv2.VideoWriter('output.avi',cv2.VideoWriter_fourcc(*'MP4'),1.5,(640,480))

while(True):
  
    ret, frame = cap.read()
    frame = cv2.resize(frame, (640, 480))
    
    gray = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY)
    boxes, weights = hog.detectMultiScale(frame, winStride=(8,8) )

    boxes = np.array([[x, y, x + w, y + h] for (x, y, w, h) in boxes])

    for (xA, yA, xB, yB) in boxes:
        cv2.rectangle(frame, (xA, yA), (xB, yB),(0, 255, 0), 2)
    
    out.write(frame.astype('uint8'))
    cv2.imshow('frame',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
out.release()

cv2.destroyAllWindows()
cv2.waitKey(1)

Credits

Pukhraj Dhiman

Pukhraj Dhiman

13 projects • 5 followers

Comments