The Problem
Locked down in a house with 5 adults and only 1 bathroom, the long walk across the house only to find that the bathroom was occupied was getting tiresome. We needed a way to see whether the bathroom was free without having to leave our suddenly very utilised home office.
The Project
Lou the Toilet is a 3D printed miniature toilet that uses a microcontroller (a spare Trinket Pro 5V I had laying around), a NeoPixel, and a miniature servo (an old one from RadioShack… remember RadioShack?). Lou indicates the status of the bathroom with a lifting and closing of its lid, a coloured glow, and a stop sign that hangs from the underside of the lid.
An ESP32 breakout board (Adafruit AirLift – ESP32 WiFi Co-Processor) does the hard work and connects Lou to the internet and the Adafruit IO service to get updates about the bathroom's availability.
Just provide Lou with 5v and it's good to go, merrily opening and closing its lid all day!
The Bathroom Occupancy Detector covers the bathroom side, and is made up of an ItsyBitsy M0 with an ESP32 add-on (Airlift Bitsy), a magnetic door switch I've had forever, and a light sensor that came out of an old project. Together they monitor the state of the door (open or closed) and the bathroom light (off or on) to determine whether the bathroom is free.
The bathroom status can be viewed anywhere from the house, using Lou or a private Adafruit IO dashboard.
The Code
The code for Lou and the Occupancy Detector are pretty straight forward. Both use Arduino IDE and the Arduino Adafruit IO library. Since Lou only monitors one feed from the IO service, it can get away with something like a 32u4 microcontroller and still have enough program storage space. The Occupancy Detector has a bigger job, updating multiple feeds and ideally needs something with more flash memory (in this case a ATSAMD21 Cortex M0 processor).
Code can be view over on the Lou the Toilet GitHub page.
3D Modelling & Printing
Lou is based on a GrabCad toilet model by Jari Ikonen. I edited the design to fit the electronics and house the stop sign when the lid is closed.
Other parts, including the stop sign and case for the Occupancy Detector were designed by me.
You'll find some STLs and .3mf files in the file section. The majority of the parts were printed with the following settings on a Prusa i3 Mk2.5S:
Material: | PLA |
Layer Height: | 0.2 mm |
Infill: | 15% Gyroid |
Supports: | Support enforcer only used in the main Lou body, and only for the area that holds the servo |
The majority of the parts were printed at the same time and should take just over 4 hours to print for ~ 50 g of filament.
The stop sign was printed in silver and red, with a colour change to really make the text pop.
[2020-07-23]:
Added a new version of Lou, with a gap in the back to help with wire routing.
I've also added two .3mf files with all the parts and settings pre-loaded.
Background & Decoration
I couldn't help but make a little bathroom diorama for Lou to sit in. It's made out of cardboard, paper, an old wash cloth, and some carefully rolled up tissue to make toilet roll.
At one point Lou had more toilet paper in the bathroom than I did.
Future Improvements
- The original Lou uses an old Adafruit Trinket Pro 5v as a microcontroller (mostly because I had a few collecting dust!). I've since updated the project to use an ItsyBitsy 32u4 - 5V, since it has USB serial and native USB.
- I also used an old RadioShack servo I've had forever. The new CAD and print files now fit a more commonly sourced servo.
- I 3D printed Lou using some grey-silver filament I had. Using white filament would eliminate the need to paint it.
I've finally... Read more »
Lou, lol