With all the focus on the coronavirus associated with COVID-19, there has been an upsurge in demand for a variety of germ-related products — from masks, goggles, gloves, and hand sanitizer, to wipes and air purifiers. One item that suddenly popped up on my Amazon feed was ultra-violet (UV) light sterilizers/sanitizers. These units — some consisting of little more than a single, low-power UV LED or UV bulb in a plastic box — sell for up to hundreds of dollars. Moreover, the claims made by manufacturers — especially regarding anti-viral capabilities — are dubious at best. It seemed like a perfect opportunity to make an affordable UV sanitizer, actually measure its efficacy, and share the design with readers. Hence, this article.
THE SCIENCE
Bacteria (like the cells in your body) contain genetic information coded in DNA and RNA, which are essential for life. Recall the central dogma of biology: that DNA codes for RNA, which codes for proteins. Interrupt that process at any point and a cell dies. Viruses (which are not living entities) nonetheless contain either DNA or RNA. Viruses rely on hijacking the synthesis machinery in cells to replicate. We all know that radiation of sufficient intensity can kill. Intensity is a function of wavelength and quantity of radiation. For example, gamma radiation from the detonation of an atom bomb a few hundred feet away can vaporize an entire person. However, occasional photons of gamma radiation — such as what airline passengers are exposed to during a normal flight — generally have no lasting effects. That said, even the occasional gamma photon can damage the DNA and RNA in a cell or in a virus. When the damage to DNA/RNA is minimal, cells can often self-repair the genetic material. In other cases, cells may only partially recover. The persistent radiation-induced changes in DNA/RNA may express themselves as cancer. If the damage to DNA/RNA is too great, then the cell dies. The DNA/RNA in viruses are similarly susceptible to radiation of sufficient intensity and wavelength. They rely on the repair machinery within a cell to repair damaged DNA/RNA. Like gamma radiation, UV light of sufficient intensity and at the appropriate wavelength can destroy DNA and RNA in cells and viruses. While broad-range UV light (10 nm-400 nm) can kill, DNA and RNA are particularly sensitive to UV-C (100-280 nm) radiation, which is invisible to the naked eye. Commercial Ultraviolet Germicidal Irradiation (UVGI) devices, which are based on narrow-band UV-C radiation, are both expensive and difficult to find.
THE ROBOT
The robot should be used as part of the regular cleaning cycle,. and aims at preventing and reducing the spread of infectious diseases, vira, bacteria, and other types of harmful organic microorganisms in the environment by breaking down their DNA-structure. The robot is safe, reliable and eliminates human error. Furthermore, it is user friendly and is designed to be operated by every-day cleaning staff
THE BUILD
This build consists of 5(five) phrases that should be joined and mounted together in order to make a UV robot.
They are;
1.The UV light
2. The robot
3. The controller
4. The motion deactivation system
5. The code.
Building the UV light.
Things you need:
*An UV-C lamp (here we used an OSRAM HNS L 24 Watt 2G11 Puritec Germicidal Ultraviolet Lamp)
*An electronic ballast (here we used the OSRAM QT-ECO 1×18-24/220-240 L)
*Electrical connector (2G11) and some wires
You can do this in a (very) few simple steps:Make sure to size correctly the lamp(s) with the ballast. See tentative compatibility chart here. Figure out the wiring needed for the connections – this is the trickiest part – but if you’re like me and save some wires around the house from an old lamp you should be all set:The 2G11 connector accepts solid wires between 0.5 and 1 mm2. If you have solid wires of this gauge, you’re all set. I didn’t so I had to use some crimppins. Once you prep your wire you just need to push it through the little holes of the 2G11 connector as they will fit in snuggly. Be aware that even thoughthe 2G11 connector has 6 holes, you will only use 4 of them, as the two outermost pairs are connected together. I’ve used the two outermost holes and the two innermost holes. Pay attention which wires go where, as you will need to connect them in order to the ballastOn one side of the ballast you would connect the 4 wires coming from the 2G11 connector – in the order specified on the ballast. Connecting the wires to this model QT-ECO 1×18-24 was easy, as you just need to strip off 8-9mm of wire coating and insert it through the designated connector while pushingdown on the connector with a screwdriver. Both stranded and solid wires work here. Just make sure to twist the stranded wires if you use this type ofcable On the other end of the electronic ballast you just need to connect an electrical cable which will go right into the 220V wall socket. Like previously said, I’ve repurposed one from an old lamp that got broken.Once you accomplish these very simple steps your lamp is ready to go.
Put it aside for now.
BUILDING THE ROBOT
things you need:
- 2WD ROBOT chassis
- Arduino Uno
- motor driver
- 6-12v battery (for testing)
- Jumper Caples
CIRCUIT DIAGRAM AND EXPLANATION
First of all, we will make the connections for the L298N motor driver with the Arduino. Connect the motor driver pins to the Arduino as followsENA to pin 13 of ArduinoIN1 to pin 12 of ArduinoIN2 to pins 11 of ArduinoIN3 to pin 10 of ArduinoIN4 to pin 9 of ArduinoENB to pin 8 of ArduinoAfter that, connect the motors at the two sides of the L298N motor driver. To power the L298N motor driver, we will have to give it 7 to 12V. Connect the positive of your battery to the 12V pin and the negative of your battery to the GND of L298N. Then connect the 5V pin of L298N to the VIN of Arduino and also make the connection from the GND of L298N to the GND of Arduino.
In the end, connect the IR sensor 1838B to the digital pins of Arduino. Connect the GND of IR sensor to the pin 6 of Arduino, VCC of IR sensor to the pin 5 of Arduino and the signal pin of IR sensor to the pin 4 of Arduino.
In the Arduino program, we have saved the codes for the buttons that we will use to move the Arduino robot car. Whenever we will press the button from the remote, the remote will send a IR signal in the form of a code to the IR sensor. The IR sensor will receive this signal and will give it to the Arduino.The Arduino will then decode this signal and it will be compared with the codes that we have saved in our Arduino program. If any of the code will match, then the Arduino will executes the commands written inside it and the Arduino robot car will move according to that.How to run itTo upload the code to the Arduino, remove the battery wires from the circuit and then upload the code. After uploading the code, open the serial monitor and press the buttons from the remote. You will receive the code for the buttons like I received from my remote as below
Now put the codes you have received in the Arduino code in place of the already saved codes for the buttons.
Now remove the cable from the Arduino and connect the battery wires. Now press the buttons and the Arduino robot car will move according to that.CodeBefore uploading the code to the Arduino, download the IRremote library from here and add into your library folder.
#include <IRremote.h> // including the IR remote library
#define forward 58359 // code received from forward button
#define backward 5499 // code received from backward button
#define left 25979 // code received from left button
#define right 59295 // code received from right button
#define stop_button 15547 // code received from stop button
// Pins for first motor
int EN_A = 13;
int IN_1 = 12;
int IN_2 = 11;
// Pins for second motor
int EN_B = 8;
int IN_3 = 10;
int IN_4 = 9;
char command;
int receiver_pin = 4; //Connect the output pin of IR receiver at pin 4
int vcc = 5; //VCC for IR sensor
int gnd = 6; //GND for IR sensor
IRrecv receiver(receiver_pin); //Arduino will take output of IR receiver from pin 2
decode_results output;
void setup()
{
Serial.begin(9600);
receiver.enableIRIn(); // Start to take the output from IR receiver
//initializing all the pins as output pins
pinMode(vcc, OUTPUT);
pinMode(gnd, OUTPUT);
pinMode(EN_A, OUTPUT);
pinMode(EN_B, OUTPUT);
pinMode(IN_1, OUTPUT);
pinMode(IN_2, OUTPUT);
pinMode(IN_3, OUTPUT);
pinMode(IN_4, OUTPUT);
// Initializing ENA, ENB and vcc pin high
digitalWrite(vcc, HIGH);
digitalWrite(EN_A, HIGH);
digitalWrite(EN_B, HIGH);
}
void loop() {
if (receiver.decode(&output)) {
unsigned int value = output.value;
switch(value) {
case forward:
//Moving Forward
digitalWrite(IN_1, HIGH);
digitalWrite(IN_2, LOW);
digitalWrite(IN_3, LOW);
digitalWrite(IN_4, HIGH);
break;
case backward:
//Moving backward
digitalWrite(IN_1, LOW);
digitalWrite(IN_2, HIGH);
digitalWrite(IN_3, HIGH);
digitalWrite(IN_4, LOW);
break;
case left:
//Turning left
digitalWrite(IN_3, LOW);
digitalWrite(IN_4, HIGH);
break;
case right:
//Turning Right
digitalWrite(IN_1, HIGH);
digitalWrite(IN_2, LOW);
break;
case stop_button:
//Stop
digitalWrite(IN_1, LOW);
digitalWrite(IN_2, LOW);
digitalWrite(IN_3, LOW);
digitalWrite(IN_4, LOW);
break;
}
Serial.println(value);
receiver.resume();
}
BUILDING THE ROBOT CONTROLLER.
parts:
2×NRF2401
Arduino pro mini
2×joystick module
Small switch
a 3.7 volt battery (for testing)
CIRCUIT DIAGRAM AND EXPLANATION
Wiring instruction' NRF2401' >> 'ARDUINO'VCC >> VCCGND >> GNDMISO >> PIN 12MOSI >> PIN 11SCN >> PIN10SCK >> PIN 13CE >> PIN 9IRQ (not in use)Wiring instruction 'left Joystick module' >> 'ARDUINO'VCC >> VCCGND >> GNDVER (Y axis) >> A0HOR (X axis) >> A1Wiring instruction 'right Joystick module' >> 'ARDUINO'VCC >> VCCGND >> GNDVER (Y axis) >> A2HOR (X axis) >> A3Wiring instruction of switchMiddle leg to >> Battery +veUpper leg to >> Charging port +veDown leg to >> Arduino pro mini pin 'RAW'Battery -ve to >> Arduino pro mini pin 'GND
Programming
Software for this project consists two parts, one for the remote controller (which I call “Host” later on), and the other for the robot (“Client”).The programming on the remote controller has a flow chart shown on the first image. It is responsible for initializing connection, re-establishing broken connection, encoding commands and provide feedback from client to the user. There will also be a LCD menu system to provide current state information of the controller, allow real time parameter adjustment, calibration and so on.Second picture is the flow chart for the client. It is responsible for accepting connection, decoding commands and communicating back.CommunicationAs for sending data, because we are using the serial pins on the Arduino, I will be using Serial.write() for sending data. This function sends one byte of data which means the max value we can transmit is 255 each time we call this function.You might be wondering what we should do about the inputs from the potentiometers and joysticks, as they have a max value of 1023. We have two options, one is to downgrade resolution to map the value between 0 and 1023 to a new value between 0 and 255, which can be fit in one byte. Second option is to treat the number in term of bits (1024 can be represented with 10 bits), which can be send separately as two packets. When they arrived at the client side, we put them back together as one number. As you might know, for a single value, sending two bytes would take longer than one byte. Although it’s less accurate, we sometimes don’t need that level of accuracy and prefer smaller latency. So I am planning to adopt both methods into the remote controller communication, so user can select which way to go depends on the situation.
Code can be found here at(https://oscarliang.com/diy-wireless-rc-remote-controller-for-robots/)
BUILDING THE MOTION ALARM AND DEACTIVATION SYSTEM
This part is for alarming the controller and deactivating the UV light in order to avoid exposure to the radiation when human I detected.
Here, we are using a PIR motion sensor. This motion sensor consists of a fresnel lens, an infrared detector, and supporting detection circuitry. The lens on the sensor focuses any infrared radiation present around it toward the infrared detector. Our bodies generate infrared heat, and this heat is detected by the motion sensor. The sensor outputs a 5V signal for a period of one minute as soon as it detects the presence of a person. It offers a tentative range of detection of about 6–7m and is highly sensitive.
The connections required to interface the Arduino motion sensor and the piezo buzzer are very simple. Connect the motion sensor to your Arduino as per the following connection diagram. Connect the VCC and GND on the sensor to the Arduino's 5V and GND pins. Next, connect the output signal pin on the motion sensor to the Arduino's digital pin 2 (interrupt pin 0).
CODE:
Now we have to test the Arduino motion sensor along with the piezo buzzer to see if it works. To do this, download the code here
https://maker.pro/files/MotionSensorAlarm.ino.
Next, open this code in the Arduino IDE. Upload the code to your Arduino. Check if it works by opening the serial monitor (at a baud rate setting of 115200bps).
Whenever the PIR motion sensor detects a person, it outputs a digital HIGH signal to the Arduino's digital pin 2. This immediately triggers an interrupt function called intruder_detect(). You can program the Arduino to do something when it detects an intruder by editing the function intruder_detect(). Currently, it first prints the string "Intruder detected". Next, it runs a function called siren() three times. The function siren() consists of the code required to create the alarm sound on the piezo buzzer or speaker. It does this by writing PWM signals of varying periods and frequencies to the piezo buzzer.
FINALISATION
now all this parts makes up the UV robot.To build one copy my article and join them together;that way you made a UV ROBOT
Comments