Splash back is a scourge of our archaic crapping technology. As alternative to perching several feet above the bowl comes the Arduino Toilet Foamer -- permitting a user to create a more splash-resistant, sanitary and refreshing bowl environment.

Bowels a-grumblin'? Activate the Arduino Toilet Foamer from your phone app -- triggering the Arduino relay(s) for the aerator and solenoid value which injects a specified dosage of glycerin and soap in to the bowl water where it becomes en-frothed by gyrating bubbling action. Exhume waste as necessary.


  1. Arduino Uno
  2. 1/8ID 1/4OD Vinyl Tube
  3. TIP120 (2)
  4. 2.2K R (2)
  5. 4001 D (2)
  6. 5V Relay (2)
  7. Aerator
  8. 1/8 Tee for Two
  9. 12V Solenoid Valve
  10. Container
  11. 1/8 Check Valve
  12. 12V Power Supply
  13. Glycerin
  14. Liquid Dish Soap (Not Concentrate)
  15. Aerator Bubbler (Optional)
  16. Bluetooth or WiFi Module (Optional)
  17. Adafruit Neopixel Strip (Optional)
  18. 1Knf C (Optional)
  19. 47 R (Optional)


1. Advice to straighten vinyl tubing is to boil water and quickly submerge. Dry in the desired angle. Cure shorter pieces by submerging in cold water.

2. Do not use concentrated liquid dish or hand soap -- aka "Ultra" brand.

3. Would-a could-a shd-a larger aerator, (2) more valves and a variant bubbler to increase foaming efficiency.

4. Hypothetically, water reduction could be obtained by foaming water in a toilet. Elon Musk, you can send a check or money order to...

Bubble Recipe

Soap 4:1 Glycerin

Foam Code (Bluetooth and Neopixel Version)

// Toilet Bubbler
// VijeMiller
// TVMiller.com

// Neopixel
#include <Adafruit_NeoPixel.h>
#define PINSTRIP 10
Adafruit_NeoPixel strip = Adafruit_NeoPixel(5, PINSTRIP, NEO_GRB + NEO_KHZ800);

// Aerator
int aerator = 7;
// Valve
int valve = 8;

void setup() {


  // Pin Values
  pinMode(aerator, OUTPUT);
  pinMode(valve, OUTPUT);

  // Load Neopixel

  digitalWrite(aerator, LOW);
  digitalWrite(valve, LOW);


void loop() {

  // Listen
  if (Serial.available() > 0)
    digitalWrite(aerator, HIGH);
    // Prime Soap Container
    digitalWrite(valve, HIGH);
    // FOR to Delay w/ LED
    for (int i = 0; i < 15; i++) {
      colorWipe(strip.Color(255, 0, 0), 70);
      colorWipe(strip.Color(0, 255, 0), 70);
      colorWipe(strip.Color(0, 0, 255), 70);
    digitalWrite(valve, LOW);
    // FOR to Delay w/ LED
    for (int i = 0; i < 500; i++) {
      colorWipe(strip.Color(255, 0, 0), 70);
      colorWipe(strip.Color(0, 255, 0), 70);
      colorWipe(strip.Color(0, 0, 255), 70);
    digitalWrite(aerator, LOW);


void colorWipe(uint32_t c, uint8_t wait) {
  for (uint16_t i = 0; i < strip.numPixels(); i++) {
    strip.setPixelColor(i, c);


<p>Brilliant idea. Suggestion: add some oil to the mix. The oil will encase the poo and minimize the stank. There's actually a product on the market that you spray on the surface of the water before you do your thing and it does just what I suggested. </p>
<p>Danke.</p><p>Despite the video portraying a scent for theatrical purposes, the foam actually masked any smells in several post burrito tests -- though we know gas direct from the source is unavoidably scenty. I and another have been using my project for days and genuinely more impressed with the results than had anticipated.</p>

About This Instructable




Bio: Privateer
More by TVMiller:Arduino Splash Resistant Toilet Foamer Arduino Motion Mute 1992 Isuzu Trooper Windshield Wiper Single Button Hack 
Add instructable to: