Note: This post is now outdated, but I left here so you could see the progression on project DominAI. The instructions still work, but there are far easier ways of doing things using off the shelf (albeit slightly more expensive products) now. 

The first element in Project DominAI – my Arduino powered self bondage dominatrix AI – involves controlling mains/AC powered sex toys; for punishment, teasing, and all round good fun. This can also be used with existing software such as the windows based Blowjob Trainer.

Controlling mains power is especially troublesome because of the high voltages involved. You certainly can’t plug the circuits directly to the Arduino, or it’ll be fried. The most common approach is to use a high power relay switch, but even this requires bare AC wires somewhere and really not suitable in the bedroom, when we might have certain liquids flying around. Therefore I decided to butcher a remote plug controller; these are fairly affordable (I got a pack of three plugs, plus the remote on sale for around $25) and enable us to completely isolate the mains power. They’re typically used to in the home to turn off devices that consume power even in a standby state. It also means we won’t need to break apart any of our precious toys – they will simply be plugged into the special RF plugs.


Unfortunately, after breaking apart the remote control unit, things weren’t as easy as I had hoped. Rather than each switch being a simple on off, the buttons in the remote use a mesh of conductive material to actually contact three contacts. After much messing around, I identified the following control structure:

  • common ON rail to which all the on buttons are connected
  • common OFF rail, for all the off buttons
  • common ground, to which all buttons are connected
  • control pin for each RF device, 4 in total. (C1-C4 in the following diagrams)

To activate a device, we need to connect the ground, common On, and the control pin for that channel. Similar for off.

For now, I’ve only hooked up the first two channels; we need a total of four relays to do this – one for each channel, one for on, and one for off. Conveniently, there’s a 4 relay shield for the Arduino; this elimates any additional components we would normally need when dealing with a relay and simply gives us 4 relays on 4 pins; pull the pin high to activate that relay.

Here’s a picture of the points I attached to on the actual remote. Of course, this is specific to the one I bought (available here in the UK), but I suspect it’s a generic brand sold everywhere.

Here’s the circuit diagram. In addition to the Arduino and the 4 relay shield, the only other thing we need is a bunch of jump wires and a breadboard.


You can download the Arduino code here; the only thing you need to adjust is the mode. Comment out either mode = “random” or mode = “serial”.

Random is pretty straightforward – it randomly activates and deactivates both device 1 and 2 for a random amount of time between 0 and 10 seconds. Each device is operated independently. If you want them to activate simultaneously, simply use the hardware switch on the plug to place them on the same channel.

Serial mode has been added for compatibility with existing software apps, such as the BlowJob Trainer here, but you can only use device 1. Use the modified pain.exe file in this forum thread. There’s also currently a 5 second lag from failure to trigger, which I’m not sure about. Here’s a demo of serial mode: