Introduction: The Paper Preserver: Save Toilet Paper With Shock Therapy

We've all seen the empty shelves at the grocery store and it looks like there's going to be a toilet paper shortage for a while. If you didn't stock up early you're probably in the situation I'm in. I've got a house of 6 and only a few rolls to last us the rest of the month.

My solution is a little impractical but it gets the job done: If someone uses too much toilet paper, give them a little shock. Nothing harmful but enough to get the message across that they're taking too much.

This is done using an old electric arc lighter. If you separate the leads so they don't arc, they'll give a shock similar to a prank shock pen.


The best part is it can be done with stuff most hobbyists already have, so you don't have to wait for that super backed up Amazon shipping. Just in case though, here's some links: Use the affiliate links to support my content!

Buttons, Resistors, transistors, and diodes -

Arduino Nano -

Electric Lighter (Not the exact one I used) -

Motor - Relay -

Bread board -

WS2812b LEDs (Optional) -

Black PLA -

3D Printer -

Step 1: Build the Circuit

The circuit shown above can be built on a bread board or soldered to a proto board if you want this solution to be permanent. In the video linked above I left them on the breadboard and didn't run into any lose connections during testing.

Optionally, you can choose to include LEDs to let the user know when the device is armed and when it's safe to take more. This isn't shown in the schematic but you could easily add some ws2812b LEDs by connecting them to 5V, GND, and D5.

Step 2: Write the Code

Here's a link to my code on GitHub:

My code will dispense at the maximum motor speed for one second, shocking each press after the first, and resetting after two minutes so the next person to use the bathroom isn't immediately shocked.

If you want to modify my code you should be able to do it changing only the defined values at the top. The first three are the pins each component goes on. Next is the number of presses you can have before getting shocked. I like one free press, the user can always get more, just not for free. Then you have the reset time. I like two minutes but you can shorten or lengthen if desired. Finally you have the motor speed. For larger rolls, max speed is the best best you can experiment with different speeds depending on the motor you use.

If you want to write your own code from scratch I left plenty of comments in mine so you can still use it as an example template.

Step 3: Print the Enclosure

Here's a link to my enclosure on thingiverse:

If you print this enclosure I can't really give any advice on using it other than telling you to watch that part of the video.

Full disclosure, this enclosure was a pain to put everything in. If you're making this project you'll want to remove the wall with the TP holder and attach it with magnets or some other latching system. This will make it much easier to replace the roll when it runs out. Also separating the electronics from the roll would prevent jams and other issues.

I don't plan on redoing this project but if you redesign the enclosure feel free to message me and I can link it here and give you credit!

Step 4: Profit

This project was a lot of fun to build and took less than a day to throw together. My roommates and I have already had a lot of fun messing with it and shocking ourselves. The shock is bearable enough to push the button a few times if you need the extra TP but not worth it if you don't and over the past couple days I've noticed a slight decrease in use so it seems to be working!

If you have any suggestions or just want to say cheers don't be afraid to leave a comment, I read all of them!

Spring Cleaning Challenge

Participated in the
Spring Cleaning Challenge