Jad Halabi
Published © GPL3+

Elevator Sanitization with Arduino

An Arduino project that disinfects elevators.

AdvancedShowcase (no instructions)3,689
Elevator Sanitization with Arduino

Things used in this project

Hardware components

Arduino Nano R3
Arduino Nano R3
×1
Photo resistor
Photo resistor
×1
Resistor 10k ohm
Resistor 10k ohm
×1
AA Batteries
AA Batteries
4 AA batteries
×1
Battery Holder, Snap Fit
Battery Holder, Snap Fit
4*AA battery square holder
×1
Capacitor 100 µF
Capacitor 100 µF
×1
Spacer, Round
Spacer, Round
3mm
×4
Rocker Switch, Non Illuminated
Rocker Switch, Non Illuminated
12*20mm
×1
Quick Disconnect Terminal, Female & Male Piggyback Disconnect
Quick Disconnect Terminal, Female & Male Piggyback Disconnect
×2
Wire-To-Board Terminal Block, 2.54 mm
Wire-To-Board Terminal Block, 2.54 mm
3 pin for servo
×1
SG90 Micro-servo motor
SG90 Micro-servo motor
×1
Fine mist spray bottle
×1
Sheet metal
stianless steel 1.2mm
×1
Custom PCB
Custom PCB
gerber linked
×1
Wire Marker, Heat Shrinkable Sleeve
Wire Marker, Heat Shrinkable Sleeve
×1

Software apps and online services

Arduino IDE
Arduino IDE

Hand tools and fabrication machines

Laser cutter (generic)
Laser cutter (generic)
Soldering iron (generic)
Soldering iron (generic)
Solder Wire, Lead Free
Solder Wire, Lead Free
Sheet metal bender

Story

Read more

Custom parts and enclosures

Solidworks design of elevator sanitization device

"elevpur-d3-assembly" is the latest design

Spring calculations

I have added the possibility to attach a tension spring in order to assist the small servo motor in pressing the fine spray tip to make the design more universal. This PDF contains the study of how to select an appropriate spring stiffness. Pardon my horrific handwriting.

MVP test

This video shows how the device operates. My finger covers the sensor to simulate lights off and lights on

Sheet metal DXF and PDF

DXF files are for laser cnc, and the pdf has the bending information

Schematics

PCB Gerber files

fritzing circuit file

feel free to tweek the pcb to your needs

Code

elevpur-d1-arduino_code.ino

Arduino
//elevator sanitization
//This program is designed to work with an arduino nano with the intended mechanism
//************************
///////////////declaration///////////////
//libraries
  #include <Servo.h>
//  #include <SoftwareSerial.h>//for debugging
//pins and objects
  const int lightsensor_pin = A0; //light sensor pin
  Servo press_servo;  //attach servo object
 //SoftwareSerial bluetooth(2, 3); // RX, TX
//user parameter variables
  const int light_setpoint = 900; //trigger light intensity
  const int pressing_angel = 50;  //angel in degree
  const int release_angel = 100; //angel where the arm just presses the sprayer tip
  const int presses_per_cycle = 2;  //number of presses in one cycle
  const int delay_press = 700;
  const int delay_release = 700;
  const int delay_system = 500;//sampling rate
//counter and control variables
  int i = 1; //toggle variable
  int light_intensity = 0;  //where sensor reading is stored
   
void setup() 
{
//Serial.begin(9600); //begin serial communication on hardware pins
//bluetooth.begin(38400);//begin serial communication with bluetooth device
  press_servo.attach(9);  //attaches digital pin 9 to the servo
  press_servo.write(release_angel);
  pinMode(lightsensor_pin, INPUT);
}

void loop() 
{
  light_intensity = analogRead(lightsensor_pin);//read sensor measurment and store it in variable
//Serial.print("intensity:");Serial.println(analogRead(lightsensor_pin));
//Serial.print("i=");Serial.println(i);
//bluetooth.print("intensity:");bluetooth.println(analogRead(lightsensor_pin));
//bluetooth.print("i=");bluetooth.println(i);
  if(light_intensity >= light_setpoint && i==0) //light has just turned on
  {
    i = 1; //indicates that last light state is on
    spray();// perform spraying cycle before anyone enters the elevator
  }
  if(light_intensity <light_setpoint && i == 1)//lights are off, we should spray
  {
    i = 0;//indicates that last light state is off
    spray();//perform spraying cycle
  }
delay(delay_system);
}
void spray()
{
  for (int i = 0; i < presses_per_cycle ; i++)
  {
    press_servo.write(pressing_angel); // sets the servo position according to the scaled value
    delay(delay_press);
    press_servo.write(release_angel);
    delay(delay_release);
  }
}

Credits

Jad Halabi

Jad Halabi

1 project • 3 followers
I am a mechanical engineer who has been developing for 4 years.

Comments