I recently took up 10m air pistol shooting and wanted a means of practicing at home. Local regulations make it really hard to own an air pistol, so dry-fire practice at home is out of the question. In the image below you can see that I can use all the training I can get.
As long as I was designing something from scratch, I decided on the following wishlist:
- Similar weight & balance
- Good sights
- Analog trigger that simulates trigger take-up, wall and creep
- The ability to actually practice shooting and see where I hit the target
- Haptic feedback for the shot
- Pre-shot aim tracking, to see if my aim is steady on the target just before the shot
The current implementation is in the picture below. The target is fixed on a holder that has 4 IR LEDs that the 920g (2 pound) gun uses to track where it's pointing.
The system consists of a Raspberry Pi and an HD camera (IR filter removed) that tracks the target position. An Arduino inside the grip reads the trigger and controls the vibration motor. A USB power bank is attached to both supply power and increase the weight to something more realistic.
Trigger control is very important for precision shooting and I wanted to make something that would emulate a real trigger as closely as possible. I've had some success with the following design. The Take-up spring is very light, and gives ~1mm of travel. Then the heavier wall&creep spring is engaged. The trigger block is printed in black PLA and it moves in between an LED and an LDR. The Arduino reads the voltage on the LDR and thus knows the position of the trigger. This allows software control of the trigger break point. Feedback for each shot is provided by the small vibration motor.
I plan on buying some real sights eventually, but for now the 3D printed ones have to do.
The target is fixed on a holder that has 4 IR LEDs in the corners. The camera uses OpenCV to track the positions of these LEDs and determines the position of the target center based on these points.