Shoe Sole Cleaner (S2C) is a handy cleaner consists of generic sensors and inexpensive materials available at a home center. S2C cleans your shoe sole with conveyor-belt-shaped brush driven by DC motor. All you need is simply putting your shoe on and let the brush clean it.
Underneath the brush there is a "hot plate" is located filled with heated water. Heated water is used for killing coronavirus to keep the brush in clean state.
S2C is open source project and 100% free for use in terms of software/hardware. I suppose S2C to be installed at entrance of home or public area to keep resident’s or visitor’s shoe sole clean and avoid carrying viruses inside.
Since there is no silver bullet against coronavirus yet, an accumulation of little precautions are significant to prevent us from infecting coronavirus: wearing a mask when going outside, washing hands and gargling when you back home. In addition to them, I’d like to add one more tip - shoe sole wash.
Yes, I know it sounds strange.
According to this article, however, coronavirus can travel on the soles of shoes. It means your shoes might catch and carry coronavirus anywhere in public area, and bring them back to your home. If you have a pet or small kids who love to walk (or crawl) on floor with barefoot, you seriously consider to keep soles of shoes clean before enter your home.
My Challenge: Developing Shoe Sole CleanerThe easiest way to avoid carrying coronavirus into your house is taking off your shoes. This approach requires no additional cost to keep your house clean (at least.) However you still have a chance to bring coronavirus as “a carrier” to neighborhood every time when you go shopping, visiting someone’s home. Somehow we need a solution to remove and kill coronavirus on your soles of shoes to stop spreading coronavirus.
In order to meet the requirement above, I decided developing a prototype that brushes and cleans your soles of shoes yet keep itself clean using hot water.
Functions of Shoe Sole CleanerShoe Sole Cleaner has two major functions: Cleaning Shoe Sole with brush component and sterilizing coronavirus using heater component. They are controlled by LPC11U35, a low-cost microcontroller unit running mbed OS. At program level, each logic for controlling components are independent and could be easily separated in future upgrade. You can find source code in my GitHub repository here.
Function #1: Cleaning Shoe SoleThe main functions of the brush component are simple: detect shoe, and start/stop brush rollers.
Shoe detection is handled by HC-SR04, a popular ultrasonic ranging module which can measure distance between 2cm – 400cm with no contact. The control logic checks distance every 100ms and calculate the average value based on the last 5 sampling data to prevent malfunction possibly caused by ambient noise.
When the microcontroller determines a shoe is placed, it drives geared motor connected to one of brush rollers. Brush rollers are made by hard vinyl chloride pipe and tied with rubber bands so that driving one roller results rotating all rollers in same direction.
For creating conveyor-belt-shaped brush I use artificial turf because it’s durable, cheap, and accessible. One drawback of using artificial turf as brush is workability: it’s easy to cut, but hard to form in belt shape. I use big stapler to make turf in belt-shape but it will not last long at heavy use so I have to find better solution in the future.
Like other microcontroller LPC11U35 cannot drive a motor directory. I use L298N motor driver board which can output up to 2A at DC operation. L298N can drive up to two motors, yet can control their direction and speed from microcontroller. Initially I was going to use L298N for controlling motor speed but realized 40rpm geared motor is sufficiently slow for driving brush rollers. At last L298N becomes overkill for this project. :-(
Sterilizing coronavirus and keeping device in clean state is another challenge. WHO recommends decontamination with 0.5% sodium hypochlorite solution for disposal of greywater, however for this project I must consider in case in some area where such solution is scarce or not available.
I found study article that notes heating protocol of 56°C-30min and 60°C-60min are commonly used before serology appears as sufficient for inactivating coronavirus. By using this methodology, I assume that coronavirus can be killed by soaking brush in hot water in appropriate time.
Please note I do NOT advocate using hot water makes sodium hypochlorite (or other solutions) unnecessary for sterilizing coronavirus. This is a bailout plan in some area where such effective solutions are not available.
My initial idea was very primitive: place a tank underneath the brush roller and pour boiled water periodically. However pouring boiled water cannot keep the temperature above 56°C for 30min, so I need to add a heating device that can keep water at even temperature, but not melt water tank.
After a few days brainstorming, I picked a “hot plate” for this solution. A “hot plate” is a cookware which consists of a fry pan with an electric burner connected on its backside. Even if hot plate is not available in your area, you can still make a alternative thing by placing a fry pan on a electric burner (just like a cooking!)
Because hot plate is a cookware designed for indoor barbecue, it would easily vaporize all water in the pan. therefore I have to control its power input based on the temperature of water filled in.
I use LM60 temperature sensor which can measure up to 125°C and convert the temperature into analog value (between 0v to power supply) meaning it only consumes single analog input pin of microcontroller for reading temperature. I also insert LM60 into an aluminum tube and sealed with silicone glue for waterproofing.
AC Power Output Control
Unlike DC power supply, hot plate uses commercial power supply, an alternating current source (AC). AC power output is wave-formed and its voltage changes frequently. The simplest way of controlling AC power output is counting number of wave output and cutout in a certain period of time. For instance, if you cut 50 power waves out of 100, you'll get half of its original power output.
I have created a half-wave rectifier using a transformer (removed from AAA battery charger) and a photocoupler. The Transformer transforms original AC power output into lower voltage waves, while photocoupler converts waves form into square pulses. LPC11u35 Microcontroller counts every single pulse generated by photocoupler and enables/disables AC power output based on the ratio computed by PID controller described in next section.
The easiest temperature controller is on/off controller: turn on/off a heater switch when water temperature is lower/higher than target temperature. This simple controller can be updated with more intelligent logic by software, and I chose PID control.
In short, PID control can provide a correction to your calculation based on proportional, integral, and derivative. For instance, if the current temperature gets closer to the target temperature, it lowers heating degree. If you pour additional water and temperature get lower quickly, it quickly increases heating degree as well. If current temperature is very close to target but lower for a certain amount of time, it increases heating degree. I am not going to deeper explanation of PID control, so please google other article for more detail if interesting. Wikipedia gives more detailed and comprehensive explanation about PID controller.
Water Level SensorFor safety reason, I need to monitor water level and turn off the heater in case if water is too low. The elapse time before water level becomes too low depends on the outside temperature and the usage of brush so that a simple timer solution is not suitable for alerting low level water.
I use a float level switch, which contains a lead switch inside a tube surrounded by a float. When water level changes, the floater (magnet embedded inside) moves up/down that turns a lead switch on/off.
In the real world, however, water level isn’t stable but can be easily changed by disturbances such as strong wind, moving brush roller, rough ground, etc.
Similar to shoe detection logic described earlier, I use sampling method to minimize the impact of irregular value caused by disturbances.
Next Steps / To DoCurrent device provides necessary functions but can be improved such as:
- Water should be added automatically when water level is too low.
- Works as standalone device but should be monitored remotely.
- Components are separated but can be integrated for lowering cost.
Since this device uses hot water for sterilizing, water vaporization is unavoidable and must be handled somehow. Adding a reserve tank or connecting water faucet could work but adding more mechanism is costly in terms of both system and money so that I can’t decide which way is good.
Rather than adding another hardware, connecting device with cloud-based system could be an alternative solution. For instance uploading the current status of each device onto AWS and publish as web service we can locate and share device for nearby area. If a device indicates low water alert, someone may go there and refill water voluntarily.
Thanks to Silicon Labs’ support I received Thunderboard Sense 2 board. Thunderboard Sense 2 is a IoT development board comes with various built-in peripherals. Currently I'm evaluating this powerful development board whether I can use it for connecting Internet and replace current sensors with its built-in sensors (e.g. hall effect sensor could be used as water level sensor)
I have created Shoe Sole Cleaner (S2C) which cleans soles of your shoes in order to stop carrying coronavirus inside of your home. It also sterilize coronavirus by using hot water keeping itself in clean state.
S2C consists of generic sensors (distance, temperature, and magnet) and inexpensive materials mostly available at a home center. This results lowering cost of development and provides easy to fix/upgrading options.
Current design of S2C requires frequent refill of water. Rather than adding more hardware for handling this task, I recommend upgrading microcontroller that can connect with cloud-based system for asking community support.
And lastly I am thanking hackster.io and partners who support this challenge. COVID-19 pandemic changes our daily life and is still ongoing. As an individual maker, creating things for someone is great motivator and I hope my project also motivates other passionate makers to replicate (or remix) another S2C for fighting against coronavirus. Although social distance is necessary this challenge proves we can still get together to make someone’s life a bit better. ;-)
Comments