Arduino Mouse Wiggler





Introduction: Arduino Mouse Wiggler

Automation Contest 2017

Runner Up in the
Automation Contest 2017

It is kind of annoying every time when the computer goes into sleep, especially when you are in the middle of a PowerPoint presentation, or working from home but supposed to appear available online all the time. This simple device will wiggle (jiggle) your mouse for you every 30 seconds or so and keep your computer always awake. This device simply simulates the physical mouse movement, there's no App or driver to be installed, so it is 'stealth' and won't violate the company IT policy or expose yourself to dangerous software.

Step 1: Make the Device

The entire mouse wiggler is 3D printed. The files are attached. Print the parts with your favorite color.

Step 2: Hardware and Assembly

The mouse wiggler uses parts that are available from many retailers. Following hardware are needed:

  • Arduino Nano (or clone,don't solder the pins to the Nano)
  • SG90 Servo and hardware pack
  • Mini USB cable
  • Some wires

Following are the steps to wire the servo to the Arduino Nano and installation of the servo and wheel.

The servo has a connector with 3 female pins. The orange one is the PMW pin that needs to be connected to the D9 pin on the Arduino Nano. The center Red wire is Vcc that goes to the +5V on the Nano and the Brown is ground that is connected to the GND on the nano. I used 3 male pins and soldered it to the wires from the Nano to make the wiring easier.

Use one of the servo horn and the screws to secure the SG90 servo to the mouse wiggler body, and install the wheel on the servo output. Make sure the wheel is level and does not interfere with the mouse. Optionally you can print the pattern and place it on top of the wheel to improve aesthetics and make the mouse move more consistent. I used white address labels for this.

Step 3: Code

The Arduino sketch is attached. Make sure you have the Servo.h and SimpleTimer.h libraries installed before uploading the sketch to your nano. You may change the angle in which the servo will travel, and the time interval that the servo will move. The default setting is the servo will move the wheel 30 degrees to the left then 30 degrees to the right every 30 seconds. This will make your mouse move for about 10 mm which is enough for keeping the computer from sleep, yet not too much to lost track of the mouse cursor. You may adjust these values as you desire.

Step 4: Let the Mouse Move

Place your mouse on top of the Mouse Wiggler and make sure the optical sensor on top of the wheel. Power the device up use a USB power adapter and you're good to go.



    • Spotless Contest

      Spotless Contest
    • Microcontroller Contest

      Microcontroller Contest
    • Trash to Treasure

      Trash to Treasure

    We have a be nice policy.
    Please be positive and constructive.




    could you put out the code in the article because i cant open the file.

    I just tried the sketch can be downloaded without issue. It can be opened by Arduino IDE, or a text editor.

    Could you send me an email or something because the computer I use cannot open the file.

    *email text file of the code or a picture of the code

    You can write and compile it to the .com file with a few lines of C++.

    Both software and handware mouse emulator is available. This is more suitable to be used when you don't want to take the risk using none-authorized software or hardware which is not uncommon if you work with sensitive information.

    I have always wanted one of these, for instance, you don't want your character on minecraft and/or roblox to get disconnected for being idle.

    just get an Atmega32u4 and send mouse commands. no empty mouse batteries, no loud servo, 1-2 lines of code in the loop

    ATtiny85 can do the same. But that requires installation of mouse driver which in some cases are not permitted. In some places plug in such an USB device will trigger an red alarm.

    well the 32u4 has built-in usb and doesn't require special drivers (as far as i know), so attiny85 can't do the same. not to mention that those places must suck, when you aren't allowed to plug in another "default" input device :-P