Knuckle Taser Powered by Raspberry Pi Pico Mini

by hannu_hell in Circuits > Wearables

297 Views, 4 Favorites, 0 Comments

Knuckle Taser Powered by Raspberry Pi Pico Mini

cover.png
taser_test.gif
14.png

⚠️ DISCLAIMER ⚠️


This project was created solely for educational and entertainment purposes and the author does not condone any sort of violence or harm of any sort. If you want to replicate this project make sure to take necessary safety precautions as exposure to high voltages can result in shock and damages to the nervous system if in contact for a prolonged period of time.


PROJECT OVERVIEW


Recently I came across some super cool arc generators which were able to produce 400KV at the output just by supplying 3.7V at the input terminals. This got me thinking to make a Knuckle Taser equipped with three of these arc generators which would in total be equivalent to 1200KV. One of the main reasons for the disclaimer up top is because I had first hand experience as I frisked my fingers across one of the arc generators and it gave me a shock which left me stunned for a second. As you might have guessed, three of these arc generators would really pack a punch if it came in contact with a living body. Therefore I can't stress enough to be careful when dealing with high voltages. Having said that, this was a nice and cool project to build and also its always good to have one lying around if I needed one.

Right off the top of my head I wanted it to be portable and so I needed batteries to power it. In order to house everything without hindering the motion of my hand was a challenge but eventually I was able to make it work. Each arc generator comes with a high voltage step up transformer. The input terminals of the arc generators needed to be swiched on and off for me to control the intensity of the Knuckle Taser. What I mean by intensity is to power one of the arc generators for the lowest intensity and for the full intensity all three needed to be powered. To achieve this I used a Raspberry Pi Pico Mini which is compact in size and allows easy programming using Micropython. To electrically switch on and off the arc generators I initially planned on using three TIP31C transistors but they weren't upto the task possibly because of the high voltage at the output terminals and also owing to potential drops in transistors. Therefore i opted to use relays to control the switching of the arc generators which worked fine although it added a bit more weight.

The intensity of the Knuckle Taser can be observed from the Neopixel ring which acts as a gauge showing a color palette going from blue to red and the leds light up as intensity is increased. I have placed two push buttons right below the index and rind fingers so when the fingers are clenched in the punching position I am able to vary the intensity and activate the Knuckle Taser.

The 3D model was created using Autodesk Fusion and 3D printing on an FDM 3D printer. All necessary STL files will be available on this instructable, although its worth noting that I designed the parts according to the dimensions of my hand and wrist so yea it may not be fit for all. If you would like to modify the Fusion files, I have provided a link to my github page at a later step in this instructable where you can find all the resources.

Supplies

Supplies1.png
Supplies2.png
Supplies3.png
  1. Universal Joints x 4
  2. 16 mm LED Push Buttons (Blue and Red) x 2
  3. 18650 Li-Ion Battery (3.7V) x 3
  4. 18650 Battery Holder Case x 3
  5. Raspberry Pi Pico Mini x 1
  6. Arc Generator (400KV) x 3
  7. Round Magnet (25mm x 2mm) x 2
  8. SS pins (4mm x 10mm) x 8
  9. 2.5M x 10mm hex screws and nuts x 20
  10. 2.5M x 15mm hex screws and nuts x 4
  11. 2.5M x 20mm hex screws and nuts x 2
  12. 2M x 15mm hex screws and nuts x 6
  13. 2.5M threaded inserts x 4
  14. 8 LED WS2812B Neopixel Ring x 1
  15. 3 Channel Relay Module x 1
  16. 4 mm x 200mm aluminum rod x 1
  17. Perf Board x 1
  18. 5V Round Lipo Battery x 1
  19. 3D Printer x 1
  20. Resin Printer with translucent green resin (optional)
  21. Printing Filament (1Kg) x 1
  22. Electrical Wires
  23. Spiral Wire Wrap (Diameter-4mm)

3D Model

1.png
2.png
3.png

As mentioned earlier the 3D model was designed according to the dimensions of my hand and wrist although I have left some wiggle room so that on average most people will be able to fit it onto the wrist as the Cuffs are able to open up and lock in position with magnets. The finger holes may need adjusting in which case you can download the fusion files from my github page.

Most parts which needed to be assembled were designed with a clearance of 0.2 mm unless a press fit was necessary in which case they were designed exact to the dimesions of the parts that attach to the 3D prints.

Finger Assembly

6.png
fingers1.png
knuckle1.png
finger_assy2.png
finger_assy3.png
finger_assy4.png
finger_assy5.png

The structures that house the fingers have holes cut out at the top to fit in the 10 mm length SS pins. They need to super glued to the 3D prints and the protruding bits of the SS pins fit onto one end of the universal joints. The threaded lock in screws keeps them in position. The other end the universal joint fits onto Taser Front Plate which rests on the knuckles of the person wearing the Knuckle Taser. The Taser Front Plate also have holes to fit in the SS pins which then fits onto the universal joints.

Once all the fingers are attached to the Taser Front Plate the fingers should be able to move freely up and down and when raised have leeway to move sideways. This allows the wearer to clench the fist with ease without discomfort.

Arc Generator Assembly

taser_panel2.png
taser_panel1.png
taser_panel3.png

The Arc Generators are press fitted onto the allocated holes on the Taser Top Plate. Once the all three Arc Genrators are fitted in place the Taser Top Plate can then be bolted to the Taser Front Plate from the back on either side with 2.5M x 10mm Length hex screws and nuts. The input terminal wires for the Arc Generators are routed to the back through the cut out slots at the back of the allocated holes. Care should be taken when routing the wires as the Arc Genrators are a press fit and there is a chance that the wires may come lose in which case as most arc generators are very well sealed up you would have to replace with a new one.

Button Panel and Strut Assembly

buttons1.png
buttons2.png
taser_strut.png
button_back_cap.png
button_wire_guide.png
button_wire_guide_clip.png
button_wire_guide_clip2.png
taser_front2.png
8.png

The Button Plate houses the two buttons and are placed directly below the index and ring finger when the fist is in clenched position. Each Button has four terminals out of which two are designated for the switching and the other two are the positive and negetive terminals for the onboard leds of each button. Its best to wire them according to color so that you won't have doubts once the electronics are sealed up. I used red wires for positive terminal of the LEDs and black wires for the negetive terminal of the LEDs. Color codind the switching terminals is not necessary as it doesn't matter in which order we connect so I used yellow wires for both switching terminals. The wires from the left button need to be routed through the hole in the middle of the Button Cap and are then routed out with the wires from the right button through the hole on the right side of the Button Cap. The Button Cap closes the electrical wires and are sealed to the Button Plate using two 2M x 20mm hex screws and nuts.

You can now wrap the wires from the buttons in the spiral wire wrap and hot glue the end to the hole on the Button Cap. The Button Assembly is connected to the Taser Front Plate with the use of Struts using four 2.5M x 15mm hex screws. Once the Struts are in place the spiral wire wrap can be guided though the 3D printed small Wire Guide. The Wire Guide can be glued to the outer surface of the right Strut allowing the wires from the buttons to guide to the top of Taser Top Plate.

Taser Bolt Plate Assembly

taser_bolt_plate.png
taser_bolts.png
taser_bolts2.png

The Taser Bolt Plate is attached to the Taser Top Plate with three 2.5M x 10mm hex screws. The Bolt Plate has holes for threading in the 2M x 15mm hex screws which acts as the taser pins. These screws are connected to the output terminals of the Arc Generators. The end of the output wires are wrapped around the head of the hex screws and a bit of solder applied to keep it in place. Once done you can push the hex screws through the holes and tighten the nuts from the outer end.

Relay Module Assembly and Wiring

taser_back_plate.png
relay_wiring.png
relay_casing.png
relay_wiring2.png
9.png
neopixel.png
neopixel_wire_route.png

The Relay Module is bolted with 2.5M hex screws through the standoffs on the Taser Back Plate. After securing it in place, The COM and NO ports on each channel are connected to the negetive terminals of the Arc Generators and the negetive terminals of each 3.7V 18650 Battery holder Casings. For now you may leave the wire without connecting the battery holder casings as they will need to be glued to the Left and Right Cuffs that wrap around the wrist. I will leave an electrical schematic for wiring reference at a later step in this instructable. The Relay Module is covered by with the Relay Module Case and the threaded inserts need to pushed in with a hot iron though the holes on the corners of the Relay Module Case. Once all the wires are connected to the Relay Module, the Relay Module Case can be placed around the Relay Module and glued to the Taser Back Plate.

Take red, black and yellow wires and solder them to the positive, negetive and DIN pads on the Neopixel Ring respectively and then guide the wires through the bottom slot on the rounded cylinder at the back of the Taser Back Plate.These wires need to then go through the slot on the back of the Relay Module Case.

Assembling the Micro Controller

pico_wiring1.png
pico_wiring2.png
pico_wiring3.png
pico_wiring4.png
taser_wiring.png
taser_wiring2.png
taser_wiring3.png

The perf board can be cut out with holes aligning to the standoffs on the Relay Module Top and then the Raspberry Pi Pico mini can be soldered onto the perf board. You will need to connect wires to the 5V, 3.3V, GND, 0, 1, 2, 3, 4, 5 pins of the Pico and then route them through the hole to go below to the Relay Module Case. All the connections will be made there and sealed up.

The Pico Cover can be screwed in place though the holes. I used a resin printer to print the Pi (Pico) Top and the Neopixel Top as it would diffuse the LED lights. You can use any LED diffusing material of your choice for the top of the Neopixel.

Once all the wiring is done you can attach the Taser Back Plate to the end of the Taser Top Plate with three 2.5M x 10mm hex screws and nuts. After doing so you can then proceed to connect the input terminals of the Arc Generator to the Relay Module.

Battery Assembly and Wrist Cuffs

cuff1.png
cuff_magnets.png
lipo_pack.png
cuff_with_lipo.png
cuffs.png
cuffs_batt_packs.png
taser_hand_fit.png
taser_hand_fit2.png
resin_top_cover.png
resin_top.png

The left and right Wrist Cuffs have cut outs for teh magnets and they need to be glued in place so when the fold they stay in place. You can glue the 18650 Battery Holder Casings to the respective Cuffs. The Left Cuff has the Lipo Battery on top and one 18650 Battery Holder Casing at the bottom. On the right Cuff the other two 18650 Battery Holder Casings are glued.

The 4mm diameter aluminum rod is cut into two equal 73mm length pieces and slotted in through the holes making a revolute joint between the Taser Back Plate and the Cuffs.

Once you have tested all the connections all the electronics can be sealed off with the Relay Module Top and the Raspberry Pi Pico Top.

Wiring Diagram

wiring_diagram.png

Raspberry Pi Pico Mini Pin Connections


Digital IO 0 - Button 1 (Engages Taser)

Digital IO 1 - Button 2 (Intensity Selection)

Digital IO 2 - Neopixel Data Line

Digital IO 3 - Relay Channel 1 (Switching Taser 1)

Digital IO 4 - Relay Channel 2 (Switching Taser 2)

Digital IO 5 - Relay Channel 3 (Switching Taser 3)


Make sure to download the firmware for Raspberry Pi Pico / Mini from the official Raspberry Pi website.

Here is a guide to help you if you are new to that sort of thing.

Micropython Program

''' !!! Disclaimer !!!
This project by no means encourage or promote violence and is solely made for education and entertainment purposes. If you intend to make it please handle it responsibly as it can produce high voltage and when in contact with the human body can cause severe shocks and possible damage to nervous system if used for a prolonged amount of time. When engaged I have allowed for a period of 1 second until next engage.
Hope you like it!
Thanks
'''

import neopixel
from machine import Pin
import time

# Pin definitions for 8-Neopixel
pixPin = 2
pixSize = 8
pix = neopixel.NeoPixel(Pin(pixPin),pixSize)

# Pinouts for the relay module
taser_1 = Pin(3, Pin.OUT)
taser_2 = Pin(4, Pin.OUT)
taser_3 = Pin(5, Pin.OUT)

engage_button = Pin(0, Pin.IN, Pin.PULL_UP) # red button
intensity_button = Pin(1, Pin.IN, Pin.PULL_UP) # blue button

# Initial Intensity of the Knuckle Taser
intensity_state = "low"

# Light Status
light_status = False


# Color definition for the intesity (mild to strong)
bright_blue = (3,2,252)
blue = (3,2,252)
light_blue = (42,0,213)
violet = (99, 0, 158)
jam = (161, 1, 93)
cadmium_red = (216, 0, 39)
red = (254, 0, 2)
bright_red = (255, 0, 0)

# Turn off the leds
black = (0, 0, 0)

col_list = [bright_red, bright_blue, blue, light_blue, violet, jam, cadmium_red, red]
pix.fill(black)
pix.write()
time.sleep(0.5)


# Functions
def initial_colors():
pix[1] = bright_blue
pix[2] = blue
pix[3] = light_blue
pix[4] = violet
pix[5] = jam
pix[6] = cadmium_red
pix[7] = red
pix[0] = bright_red
pix.write()
def set_low_power():
pix.fill(black)
time.sleep(0.2)
pix.write()
for _ in range(2):
for i in range(8):
pix[i] = col_list[i-1]
pix.write()
time.sleep(0.04)
pix.fill(black)
pix.write()
time.sleep(0.1)
pix.fill(black)
pix.write()
time.sleep(0.1)
pix[1] = bright_blue
pix[2] = blue
pix[3] = light_blue
pix[4] = violet
pix.write()
def set_mid_power():
pix.fill(black)
time.sleep(0.2)
pix.write()
for _ in range(2):
for i in range(8):
pix[i] = col_list[i-1]
pix.write()
time.sleep(0.04)
pix.fill(black)
pix.write()
time.sleep(0.1)
pix.fill(black)
pix.write()
time.sleep(0.1)
pix[1] = bright_blue
pix[2] = blue
pix[3] = light_blue
pix[4] = violet
pix[5] = jam
pix[6] = cadmium_red
pix.write()
def set_high_power():
pix.fill(black)
time.sleep(0.2)
pix.write()
for _ in range(2):
for i in range(8):
pix[i] = col_list[i-1]
pix.write()
time.sleep(0.04)
pix.fill(black)
pix.write()
time.sleep(0.1)
pix.fill(black)
pix.write()
time.sleep(0.1)
initial_colors()
time.sleep(0.1)
for i in range(2):
pix.fill(black)
pix.write()
time.sleep(0.1)
initial_colors()
time.sleep(0.1)

def initial_sequence():
for _ in range(2):
for i in range(8):
pix[i] = col_list[i-1]
pix.write()
time.sleep(0.05)
pix.fill(black)
pix.write()
time.sleep(0.1)
for _ in range(2):
for i in range(8):
pix[i] = col_list[i-1]
pix.write()
time.sleep(0.04)
pix.fill(black)
pix.write()
time.sleep(0.1)
for _ in range(8):
for i in range(8):
pix[i] = col_list[i-1]
pix.write()
time.sleep(0.02)
pix.fill(black)
pix.write()
time.sleep(0.1)
initial_colors()
set_low_power()
time.sleep(0.5)
taser_1.value(1)
time.sleep(0.3)
taser_1.value(0)
taser_2.value(1)
time.sleep(0.3)
taser_2.value(0)
taser_3.value(1)
time.sleep(0.3)
taser_3.value(0)
time.sleep(1)

# Program Commence

initial_sequence()
time.sleep(1)

# Variable to rotate intensity state of knuckle taser
selected_int = 0

# Loop sequence
while True:
if engage_button.value() == 0:
if intensity_state == "low":
taser_2.value(1)
time.sleep(1)
taser_2.value(0)
if intensity_state == "medium":
taser_1.value(1)
taser_3.value(1)
time.sleep(1)
taser_1.value(0)
taser_3.value(0)
if intensity_state == "high":
taser_1.value(1)
taser_2.value(1)
taser_3.value(1)
time.sleep(1)
taser_1.value(0)
taser_2.value(0)
taser_3.value(0)
if intensity_button.value() == 0:
time.sleep(0.3)
selected_int+=1
light_status = True
if selected_int == 1:
intensity_state = "medium"
if light_status:
set_mid_power()
light_status = False
if selected_int == 2:
intensity_state = "high"
if light_status:
set_high_power()
light_status = False
if selected_int == 3 or selected_int == 0:
intensity_state = "low"
selected_int = 0
if light_status:
set_low_power()
light_status = False
time.sleep(0.1)

STL Files

You can get the code files, STL files and the Fusion files for edit from my github page.

Tase On

Knuckle Taser powered by @raspberrypi pico mini @instructables@adskFusion @MAKE

It was a fun build and I hope you enjoyed reading this instructable.