Automate Safe Cracking with an ESP8266 and a Stepper Motor
See how YouTuber Zach Hipps was able to design and build a fully automated safe cracking robot for a forgotten combination.
Why build a safe cracking robot?
YouTuber Zach Hipps, creator of the Byte Sized Engineering channel, has a brother-in-law who placed his safe's combination code into the safe shortly before going on vacation. However, upon returning back home, he realized he had forgotten the code and had no way of retrieving it, even after contacting the manufacturer. To attempt to solve the problem, Hipps had the idea of creating an automatic safe cracking device from scratch that could run through all million possible combinations to get the correct one, eventually.
After doing some research about various kinds of safe cracking robots, Hipps stumbled upon a video from the Lock Picking Lawyer, which features the ITL-2000 — a robot that can automatically enter the code by twisting the dial until the three inner rings align to unlock the safe. In order to improve on the design and make it more compatible with other dials, Hipps replicated the vertical stepper motor placement but replaced the chuck with a variably-sized clamping mechanism. By doing this, damage to the safe is minimized while simultaneously making it a very portable device.
Moving the dial with repeatable and fine precision necessitated the use of a stepper motor. Furthermore, because the dial stops when the correct combination has been entered, the microcontroller needs to know when the motor can no longer move. Due to these considerations, Hipps went with a PD57-2-1076 stepper motor since it has high torque and contains an integrated motor driver that can also sense stalls. Controlling everything is an Adafruit ESP8266 Feather along with a stackable OLED screen for viewing motor debugging data.
Handling motor stalls
The stepper motor's built-in Trinamic driver has an accompanying software package for setting certain parameters on a PC and sending them to the driver over UART. After tuning the configuration, the load value could be viewed in real-time by Hipps within the software, with a lower value corresponding to a higher load being placed on the motor's shaft, and a zero indicating a complete stall. He then set up the ESP8266 to monitor this value, display it on the screen, and stop sending movement commands at the exact moment a zero appears.
Wiring and assembling the device
The 3D-printed adjustable chuck acts in a similar fashion to a screw clamp, wherein turning the threaded rod will move each jaw either inwards or outwards depending on the direction. Once attached to the stepper motor via a coupler, Hipps connected the ESP8266 to the stepper motor driver via the two UART pins for sending commands and receiving the load value. Finally, he also included a digital logic analyzer for more advanced debugging if needed.
To see if his creation would work as intended, Hipps found a safe similar to the one in the Lock Picking Lawyer's video and clamped the auto-dialer's chuck around the dial. From here, he held the stepper motor while the dial turned repeatedly according to a preprogrammed combination to ensure everything would align correctly. In part two, he plans on building a frame for greater stability and modifying the code for better performance. You can watch his build log video here on YouTube for more information.