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.

Web page from Adafruit IO that displays the bathroom status. Here having the bathroom light off and the open door indicates that the bathroom is free, which the page shows with a green indicator and the text "Free!".

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


I've finally added instructions if you want to build you own miniature toilet!