A lovely stress relief device I designed while having a week off from work.
The FriendlyFinger is a machine which rotates a 3D model of a middle finger from one side to the other, while having two LEDs shining a little lightshow to it.
It's based on an ESP32 Development Board and is designed for remote control via WebServer or UDP.
You need a 3D printer for building this project as well as you need to be willing to put some effort into it.
For example you will need to solder a little curcuit.
I had a lot of fun developing and building the Friendly Finger.
I do hope you gain something from building it, too.
A Video can be found here:
Youtube Video
Thingiverse:
Printing Data
There is a "FF_Template_Fits" part, which has all fits in it, that are needed for the assembly.
The dimensions of the holes are the ones, that I use to get good fits.
I strongly recommend to print this part at least once to check if all fits are working properly before printing the actual parts.
The fits in the FF_Template_Fits
part are:
- Fit with Nema17 Stepper motor
- Nominal: 22mm
- My Value: 22.4mm
- Fit to screw in a M3 screw directly into the printing part
- Nominal: 3mm
- My Value: 2.93mm
- Fit for RGB LED with an 28° angle to the vertical axis
- Nominal: 5mm
- My Value: 5mm
- Countersunk hole for M3 screw (standard: ISO 4762)
Feel free to modify the corresponding STEP files to make this fits work properly.
Change the "Overhang Angle" in the Cura Support settings to 46 degrees.
There is a BOM for the printing parts in the Documentations directory where you can find the Cura settings I used, how long the print took and how much filament was needed.
As mentioned, that are my settings. I am very sure there are a lot of folks out there who can find better, more effective settings for their prints.
I don't own any degrees in electronics!
So I won't make any further advises on how to design the curcuit itself.
All I do is giving an example without any warranty for safety and functionality.
There is a wiring diagram in the "Documentation" directory, where the basics of the curcuit are shown in the way I planned them for my own work. It's missing headers for the RGB-LEDs as it's missing headers for the Step-Down voltage regulator.
As I like JST headers and Dupoint headers, I used them for my own version. Feel free to use whatever floats your boat to realize this connections.
The Nema 17 I used to design this device for, has a body length of 38mm. As there are a lot of alternative dimensions for Nema 17 stepper motors, you can definitly use smaller ones for your device. It's not much force needed to rotate the middle finger model. I can't recommend to use bigger ones, as I didn't test it... if you get a bigger one working, let me know.
The DRV8825 is the driver I designed the code and the curcuit for. You can, of course, choose the driver you want to, but maybe need to adjust the code and the curcuit.
BUT:
As far as I had the Friendly Finger run in my living room, I realised that dissipated heat is sure an issue of my design. To solve the problem I adjusted the current to 75% - 80% of the nominal value of the stepper motor.
Look for some help on the World Wide Web how to adjust the current with the stepper driver you use.
In case of the DRV8825 you need to regulate the value of voltage of the trimmer on the driver board to half of the value of current you want to have flow threw your motor. (And be careful with the trimmer, though)
There is a need to drill two holes into the breadboard to fit the LM2596 to it.
The FF_Washer_Distance
part is for spacing between the breadboard and the LM2596.
The FF_Washer_ScrewIn
part works as a nut for the M3x8 socket-head screws. It should be also possible to use standard M3 nuts (ISO 4032 | ISO 4033) for this.
There are screw holes in the FF_Base
part which have a distance of 71.12mm to each other. That's is the exact distance of 29 drillings in a breadboard with a 2.54mm spacing, which means, if you use this drillings and widen them to, maybe, 3.5mm, you can use them to connect the curcuit board to the FF_Base
part with 4 screws.
It's designed to work with M3x8 socket head screws (ISO 4762).
To fit a 100x100mm Breadboard into the base, there is the need of getting rid of the edges.
Therefor is the FF_Template_Edge
part, which can be hold to each edge of the curcuit board. Then draw a line along the radius and grind away all the material thats behind that line.
That should be sufficient to fit the curcuit board into the FF_Body
part.
For uploading the Code to the ESP32 Development Board I recommend the Arduino IDE. You need to have the ESP32 support installed. Look on the World Wide Web for instructions how to do that. It's fairly simple.
The Code has dependencies for some Standard Libraries of the Arduino IDE + ESP32 Standard Libraries.
There is one single additional dependcy. The analogWrite.h
lib, which is designed for ESP32 and published under MIT licence.
Library description on www.arduino.cc
You can install this library by using the Library Manager of the Arduino IDE.
There is a pretty big #define
section on top of the code, where you can do some settings.
Necessary is the IP address you want to use for the ESP32 as well as the password to your local network.
You can also define, if you want to control the FriendlyFinger by a webserver hosted on the ESP32. Or if you want the ESP32 as a UDP receiver for controlling. That's the setting I use, cause I control the Friendly Finger with a website in my local network which is hosted on a Raspberry Pi.
The other settings can be set as it's pleasing to you. Feel free to mess around a little.
"It's a little bit tricky here and there..."
I won't lie to you. It's really pain in the a** to fit them in. I used WD40 as lube and still had problems to to this. Also you need to lead the cables down to the curcuit board while the stepper motor and the middle finger are already in the assembly.
But it's possible, so I think you will get this done.
You need to glue the FF_Axis
part to the FF_MiddleFinger
part. I used fast drying epoxy glue which did the job quite well.
The original 3D model for the middle finger itself was desgined by Dmitrij Drandarov
alias DahakaMVI
.
The file can be found on Thingiverse.
I used a lot of 3D models from GrabCAD. I can absolutely recommend this website for 3D Models for standard parts, especially for electronic parts.
As I didn't had much experience with webservers hosted on an ESP32, I used a tutorial as a base for my version of the code.
The tutorial I used was the ESP32 Webserver Tutorial.
I want to dedicate this work to organizations which commit themselfs to helping people with mental illness.
Therefor I want to ask you to donate a little tip for one of the following organizations on www.betterplace.org, as long as you feel comfortable with that.
I do not gain anything from it, and the organizations don't even know, I am sharing their links.
Irrsinnig Menschlich e.V.
Translated Name: Insanely Humane (registered association)
Stiftung Deutsche Depressionshilfe
Translated Name: German Depression Help (foundation)
Thank you very much!