GoA Case and Button Design

Third party OS images and hardware mods
Post Reply
hominoid
Posts: 356
Joined: Tue Feb 28, 2017 3:55 am
languages_spoken: english
ODROIDs: C2, XU4, MC1, N1, N2
Location: Lake Superior Basin, USA
Has thanked: 19 times
Been thanked: 47 times
Contact:

GoA Case and Button Design

Unread post by hominoid » Mon Mar 09, 2020 7:05 am

This project is about replicating the Go Advance case and buttons in OpenSCAD. The goal is to stay as close to the HK OEM case design as possible while trying to maintain the same tolerances. This will not only allow mix and match replacement parts but also a base design for future enhancements. The back is complete and is compatible with the HK OEM front case shell.
.
Odroid_GoA_Case.png
Odroid_GoA_Case.png (40.06 KiB) Viewed 255 times
Replicating the HK case front shell has a number of design challenges that need to be addressed because of the use of FFM 3D printing technology. Several of the thin tabs and small posts I believe will not be strong enough when printed and will most likely need to be modified or completely redesigned.
.
GoA_with_Back.jpg
GoA_with_Back.jpg (363.08 KiB) Viewed 2063 times
Notes
The case back is not a particularly hard print but since the tolerances are so tight in the HK OEM case, its important that your printer is as accurately aligned as possible. Beside the cleanup you normally do, pay particular attention as you assemble the case for misalignment or obstructions of openings and switch brackets. The top wall is thin and is easy to break; super glue is my friend. Have a file on hand and be prepared to straighten edges and cutouts if necessary. I normally don’t like to print with support but the SDcard opening on this design most likely will require it so having an X-Acto knife around will come in handy to remove any support you may choose to use.

The console and mipi-csi case openings are off by default. If you need either of these openings please set the appropriate flag, located at the beginning of the source file, to 1. Since my GoA does not have these their alignments have not been verified yet.

ENABLE_CONSOLE = 0;
ENABLE_CSI = 0;

Reverse engineering a case is partly artistic because reality doesn’t always match the design/engineering/manufacturing specifications. In this case, one example is the length which is spec’ed to be 155mm but in reality is approximately 155.5mm. Unfortunately my calipers only go to 150mm so I can’t say exactly, but using a scale it clearly measures more than 155mm. I also had a slight overhang on the right side of the case when the back design was 155mm in length. At 155.5mm both side are flush. There are other subtle nuances as well so be aware if you plan on working with this design or are examining the source code. To assemble the case I find it easier inserting the top of the case back first and then the bottom. This allows all the openings to get aligned correctly and minimizes additional stress. At this point it’s likely one side is in place which only leaves the other side to snap into place.

Moving Forward
I’ll start on the front of the case after I get the buttons done. I also have an idea to improve and strengthen the shoulder buttons that I’m exploring. It involves replacing the plastic shaft of the button with a metal pin, maybe a piece of wire or paper clip. It would be compatible with the HK OEM case by use the existing case mounts while supporting other changes.
.
Shoulder_Buttons.jpg
Shoulder_Buttons.jpg (59.02 KiB) Viewed 2063 times
It may allow 4 shoulder buttons to coexist within the switch opening and case foot print. By adding a button top edge extension to the outside plane of the front and back respectfully, dual buttons of approximately 8.5mm each may be possible. There appears to be enough room to mount an additional switch supported by a u-bracket from either the front or back of the case, like the existing button and support.
.
Button_Opening.jpg
Button_Opening.jpg (29.12 KiB) Viewed 255 times
Looking at the schematics and Rockchip data sheet, there maybe unused GPIO lines that are accessible but it wasn’t clear with the limited information available. If there are, two switches, some wire and a completed case and button design might satisfy the mechanical and electrical necessities for a L1/L2-R1/R2 integrated shoulder button configuration. Reading other comments on the forum, the software changes appear doable. Some other improvements that I’m interested in exploring with this design are:

-SOC and memory cooling options
-Custom button shapes, tactile texture and replaceable button caps
-Hard buttons under display
-Case finger holds
-Other case aesthetics

Design Files
Odroid_GoA_Case_v1.1.zip
(5.03 MiB) Downloaded 3 times
Odroid_GoA_Case.scad
Odroid_GoA_Case.cfg
Odroid_GoA_Case.stl
Odroid_GoA_Case_Library.scad
fillets.scad
Last edited by hominoid on Wed Apr 01, 2020 12:00 pm, edited 1 time in total.
These users thanked the author hominoid for the post (total 5):
odroid (Mon Mar 09, 2020 9:58 am) • DrewfusTwofus (Mon Mar 09, 2020 10:07 am) • Luke.go (Mon Mar 09, 2020 10:34 am) • PatKilo (Fri Mar 13, 2020 12:44 pm) • rooted (Sun Mar 15, 2020 6:43 pm)

User avatar
adventureFAN
Posts: 43
Joined: Sun Feb 23, 2020 4:22 am
languages_spoken: english, german
ODROIDs: Odroid Go Advance
Has thanked: 3 times
Been thanked: 11 times
Contact:

Re: GoA Case and Button Design

Unread post by adventureFAN » Mon Mar 09, 2020 6:26 pm

A opening for a USB C port whould be fine.

hominoid
Posts: 356
Joined: Tue Feb 28, 2017 3:55 am
languages_spoken: english
ODROIDs: C2, XU4, MC1, N1, N2
Location: Lake Superior Basin, USA
Has thanked: 19 times
Been thanked: 47 times
Contact:

Re: GoA Case and Button Design

Unread post by hominoid » Tue Mar 10, 2020 1:12 am

I thought of adding one but with so many variations in USB-C boards and their size, there is no standard location and position that will work. Each one will have to be positioned according to their specifications. It's easy enough for many user to do and anyone having problems can always ask for help with the OpenSCAD code. If a component preference emerges an opening can be quickly added in the future.

hominoid
Posts: 356
Joined: Tue Feb 28, 2017 3:55 am
languages_spoken: english
ODROIDs: C2, XU4, MC1, N1, N2
Location: Lake Superior Basin, USA
Has thanked: 19 times
Been thanked: 47 times
Contact:

Re: GoA Case and Button Design

Unread post by hominoid » Wed Mar 11, 2020 1:22 pm

Finished with all the shoulder buttons. The only thing left really is an option for texture. The dual buttons would probably benefit from a 3mm bump in the middle to help differentiate them.
.
shoulder_buttons2.jpg
shoulder_buttons2.jpg (59.62 KiB) Viewed 1764 times
For the dual buttons, I decided to set it up with the second switch on the same side of the pcb board next to the existing switch. That way another bracket can come off the back to support it. This also allows me to create a prototype to test out the mechanical aspects of the design right away since the case back is done.
.
dual_close.jpg
dual_close.jpg (75.6 KiB) Viewed 1764 times
On the OEM button a 1.75mm long peg engages the switch. There is a friction fit peg that is inserted into each of the holes of these buttons. It will be possible to adjust the length for a different feel/response. Using a soft material that has a little give might make for a better feel as well.

The D-Pad is next on the list. The D-Pad and A,B,X,Y buttons will be parametric to allow different button heights, sizes, slopes and keys. This should allow for lots of flexibility and the ability to make buttons for other consoles that use a similar style of button. I'll post button design and stl files as soon as all the buttons are complete.
These users thanked the author hominoid for the post:
PatKilo (Fri Mar 13, 2020 12:45 pm)

hominoid
Posts: 356
Joined: Tue Feb 28, 2017 3:55 am
languages_spoken: english
ODROIDs: C2, XU4, MC1, N1, N2
Location: Lake Superior Basin, USA
Has thanked: 19 times
Been thanked: 47 times
Contact:

Re: GoA Case and Button Design

Unread post by hominoid » Sat Mar 14, 2020 8:52 am

Still working on the D-Pad and ABXY buttons but wanted to test the shoulder buttons. These are on a metal pin made from a paper clip.
.
shld_btn_sidebyside1s.jpg
shld_btn_sidebyside1s.jpg (299.07 KiB) Viewed 1529 times
Examples of a standard button and a ‘big’ button. I like the size and feel of the larger button. They are sliced at .25mm and the layering has a nice feel. The big buttons change the way the unit looks a little as well.
.
shld_btn_big3s.jpg
shld_btn_big3s.jpg (196.4 KiB) Viewed 1529 times
I’m going to keep this set on and play them for awhile. The fit and action seem nice so we will see how it goes. Can't wait to get the rest of the buttons done. All black, maybe with some translucent highlights, should look good imo.

space meta fighter x
Posts: 5
Joined: Mon Mar 09, 2020 2:39 pm
languages_spoken: english
Has thanked: 1 time
Been thanked: 0
Contact:

Re: GoA Case and Button Design

Unread post by space meta fighter x » Sun Mar 15, 2020 4:52 am

Are you going to make all the files for buttons public when you are done?

hominoid
Posts: 356
Joined: Tue Feb 28, 2017 3:55 am
languages_spoken: english
ODROIDs: C2, XU4, MC1, N1, N2
Location: Lake Superior Basin, USA
Has thanked: 19 times
Been thanked: 47 times
Contact:

Re: GoA Case and Button Design

Unread post by hominoid » Sun Mar 15, 2020 7:08 am

Yes, the OpenSCAD source and stl's will be released under GNU GPL.
These users thanked the author hominoid for the post:
space meta fighter x (Sun Mar 15, 2020 8:53 am)

space meta fighter x
Posts: 5
Joined: Mon Mar 09, 2020 2:39 pm
languages_spoken: english
Has thanked: 1 time
Been thanked: 0
Contact:

Re: GoA Case and Button Design

Unread post by space meta fighter x » Sun Mar 15, 2020 9:09 am

THIS MAN IS DOING GOD'S WORK.

User avatar
rooted
Posts: 7341
Joined: Fri Dec 19, 2014 9:12 am
languages_spoken: english
Location: Gulf of Mexico, US
Has thanked: 498 times
Been thanked: 138 times
Contact:

Re: GoA Case and Button Design

Unread post by rooted » Sun Mar 15, 2020 6:42 pm

I really like those large style shoulder buttons.

hominoid
Posts: 356
Joined: Tue Feb 28, 2017 3:55 am
languages_spoken: english
ODROIDs: C2, XU4, MC1, N1, N2
Location: Lake Superior Basin, USA
Has thanked: 19 times
Been thanked: 47 times
Contact:

Re: GoA Case and Button Design

Unread post by hominoid » Mon Mar 16, 2020 12:05 am

rooted wrote:
Sun Mar 15, 2020 6:42 pm
I really like those large style shoulder buttons.
I haven't been playing on them very long but I like them a lot too. They fit my fingers better and for the situations were I'm not using the shoulder buttons continuously, I'm not distracted and don't have to divert my attention at all when I need to use them. Looking forward to trying some other ideas for modifications of the other buttons as well.

hominoid
Posts: 356
Joined: Tue Feb 28, 2017 3:55 am
languages_spoken: english
ODROIDs: C2, XU4, MC1, N1, N2
Location: Lake Superior Basin, USA
Has thanked: 19 times
Been thanked: 47 times
Contact:

Re: GoA Case and Button Design

Unread post by hominoid » Tue Mar 17, 2020 1:55 am

I have setup a simple framework to configure and manage button sets by a given name. One set consists of shoulder, dpad, abxy and power buttons. An unlimited number of button sets can be defined in an ASCII configuration file. A HK OEM equivalent set and one or more custom sets will be included with the initial release. I also made some progress on the dpad this weekend. The north-south and east-west cross arms can be configured individually. The size, depression, dimple and fillets(horizontal and vertical) can be user defined for a wide variety of possible shapes and contours.
.
dpad.gif
dpad.gif (538.69 KiB) Viewed 1202 times
It only takes about 6-8 parameters to get the current variations. I’m trying to decide whether there are any other features I want to implement right now or do I move on to the abxy buttons. I don't want it to be overly complicated or burdensome to setup custom buttons. If there are any features anyone wants considered, now is a good time to let me know. I still have a little code cleanup and finalization to do before I start test prints. I want to spend a little time of the dpad bottom peg since it seems to be critical on this button for good action and feel. I'll implement the oem shape and size but others might work better for some users.
These users thanked the author hominoid for the post (total 2):
rooted (Tue Mar 17, 2020 2:04 am) • odroid (Tue Mar 17, 2020 9:19 am)

hominoid
Posts: 356
Joined: Tue Feb 28, 2017 3:55 am
languages_spoken: english
ODROIDs: C2, XU4, MC1, N1, N2
Location: Lake Superior Basin, USA
Has thanked: 19 times
Been thanked: 47 times
Contact:

Re: GoA Case and Button Design

Unread post by hominoid » Mon Mar 23, 2020 12:27 am

I made headway on the ABXY button design and have completed my first test print. The buttons are a little tighter then they need to be so I will make some adjustments. I also want to be able to put at least a slope on the face along with the option of PlayStation symbols.
.
abxy_buttons.png
abxy_buttons.png (9.7 KiB) Viewed 934 times
The most challenging part, the key, is done. I made each button’s key so they can be changed to hopefully accommodate other consoles. I’ll explain the details of the implementation later when released. I saved the ABXY buttons for last because they were the most challenging IMO. They look simple but there are some important details to get correct in order for them to work right. So more test prints, some coding, more test prints, testing and documentation is what’s ahead prior to release.
These users thanked the author hominoid for the post:
rooted (Tue Mar 24, 2020 3:38 am)

Pienoet
Posts: 404
Joined: Sun May 10, 2015 10:04 pm
languages_spoken: english Dutch
Has thanked: 1 time
Been thanked: 0
Contact:

Re: GoA Case and Button Design

Unread post by Pienoet » Mon Mar 23, 2020 12:50 am

That's great man!

If you release is there a way for customers to buy the whole kit? (case, buttons etc.)

hominoid
Posts: 356
Joined: Tue Feb 28, 2017 3:55 am
languages_spoken: english
ODROIDs: C2, XU4, MC1, N1, N2
Location: Lake Superior Basin, USA
Has thanked: 19 times
Been thanked: 47 times
Contact:

Re: GoA Case and Button Design

Unread post by hominoid » Mon Mar 23, 2020 4:40 am

I'm not selling anything, just sharing my designs. I'll update the design files in the first post of this thread as I complete them. Those without printing capability can usually find a means locally through a friend, club, library, school or one of the many commercial companies. One of the advantages of many commercial services is that they usually offer several different materials and printing technologies.

hominoid
Posts: 356
Joined: Tue Feb 28, 2017 3:55 am
languages_spoken: english
ODROIDs: C2, XU4, MC1, N1, N2
Location: Lake Superior Basin, USA
Has thanked: 19 times
Been thanked: 47 times
Contact:

Re: GoA Case and Button Design

Unread post by hominoid » Tue Mar 24, 2020 10:39 am

GoA_buttons2.jpg
GoA_buttons2.jpg (177.98 KiB) Viewed 771 times
First build and trial of the complete button set. The dpad needs some adjustment, the bottom peg is definitely to long and the shape needs to be flatter. The south position seems a little harder to engage but all of them require more movement because of the peg length. The power button is working OK but I’m going to make the button a little taller so it’s easier to engage. The shoulder buttons have been working well and I don't think they need any changes.
.
GoA_buttons4.jpg
GoA_buttons4.jpg (274.05 KiB) Viewed 771 times
All of the abxy buttons feel like the inner height needs some adjustment. They work, it’s just that the movement or stroke seems to be slightly truncated. The bottom inside chamfer might need to be a little larger as well. The Y button was sticking occasionally and I found a key that needed a touch up with a file and then it was good to go.

So a few more adjustments, a new set of test buttons and another trial run...
These users thanked the author hominoid for the post:
rooted (Tue Mar 24, 2020 3:58 pm)

User avatar
rooted
Posts: 7341
Joined: Fri Dec 19, 2014 9:12 am
languages_spoken: english
Location: Gulf of Mexico, US
Has thanked: 498 times
Been thanked: 138 times
Contact:

Re: GoA Case and Button Design

Unread post by rooted » Tue Mar 24, 2020 11:05 am

Yeah those shoulder buttons are excellent, I would add rounded edges to the D-pad and round the top of the buttons. I think you are creating the set with this ability?

dmckean44
Posts: 38
Joined: Tue Feb 04, 2020 2:01 pm
languages_spoken: english
ODROIDs: odroid-go advance
Has thanked: 28 times
Been thanked: 5 times
Contact:

Re: GoA Case and Button Design

Unread post by dmckean44 » Tue Mar 24, 2020 3:05 pm

hominoid wrote:
Mon Mar 23, 2020 12:27 am
I made headway on the ABXY button design and have completed my first test print. The buttons are a little tighter then they need to be so I will make some adjustments. I also want to be able to put at least a slope on the face along with the option of PlayStation symbols.
.
abxy_buttons.png
The most challenging part, the key, is done. I made each button’s key so they can be changed to hopefully accommodate other consoles. I’ll explain the details of the implementation later when released. I saved the ABXY buttons for last because they were the most challenging IMO. They look simple but there are some important details to get correct in order for them to work right. So more test prints, some coding, more test prints, testing and documentation is what’s ahead prior to release.
Do you think you could get ABXY and Playstation symbols on the same button and it still be legible?

hominoid
Posts: 356
Joined: Tue Feb 28, 2017 3:55 am
languages_spoken: english
ODROIDs: C2, XU4, MC1, N1, N2
Location: Lake Superior Basin, USA
Has thanked: 19 times
Been thanked: 47 times
Contact:

Re: GoA Case and Button Design

Unread post by hominoid » Tue Mar 24, 2020 11:41 pm

rooted wrote:
Tue Mar 24, 2020 11:05 am
Yeah those shoulder buttons are excellent, I would add rounded edges to the D-pad and round the top of the buttons. I think you are creating the set with this ability?
I was working on the abxy button fillets and ran into a bug with the library I'm using. The 2 cylinder fillet algorithms were giving an error. After some debugging I got one to work but not the one I needed. I'll spend some more time trying to debug the other algorithm in the near future. If I cannot get it to work I'll explore other approaches that won't be as eloquent. The dpad algorithm can set (cube)fillets currently. The dpad I used for the picture and test was just 1 of 2 test prints I did when I was working on it.
dmckean44 wrote:
Tue Mar 24, 2020 3:05 pm
Do you think you could get ABXY and Playstation symbols on the same button and it still be legible?
I was wondering the same thing and will give it a try when I start working on that feature. I was thinking one way would be to keep the same size currently for the abxy and try to make the PlayStation symbols larger so they use the whole button. I'm afraid the quality goes down if the abxy is made much smaller but it will require some experimenting. It may be possible to shrink the text a little. For prototyping I use my larger .5mm nozzle(big time saver) so If I can get it to work at that nozzle size it should work for almost everyone. Adding some color in the type recess would make a huge difference with legibility as well. I hope to try painting or embedding a different abs color positive into the text recess to enhance visibility. I also have been toying with the idea of a replaceable button caps which could help solve the problem.
These users thanked the author hominoid for the post (total 2):
rooted (Wed Mar 25, 2020 1:18 am) • dmckean44 (Wed Mar 25, 2020 5:30 am)

User avatar
rooted
Posts: 7341
Joined: Fri Dec 19, 2014 9:12 am
languages_spoken: english
Location: Gulf of Mexico, US
Has thanked: 498 times
Been thanked: 138 times
Contact:

Re: GoA Case and Button Design

Unread post by rooted » Wed Mar 25, 2020 1:21 am

Thanks for the updates and for sharing your work, as always it's great stuff @hominoid

I never got the fan case you did for the XU4 but I still want it, just haven't been able to convince the wife I need a 3D printer. They have gotten so reasonably priced I may just get one anyway

mameise
Posts: 170
Joined: Sat Jul 07, 2018 6:40 am
languages_spoken: english german
ODROIDs: ODROID-GO
Has thanked: 13 times
Been thanked: 26 times
Contact:

Re: GoA Case and Button Design

Unread post by mameise » Wed Mar 25, 2020 1:21 am

I use wax painter or a candle to rubb over the markings so they get colored. Is easier then painting.

hominoid
Posts: 356
Joined: Tue Feb 28, 2017 3:55 am
languages_spoken: english
ODROIDs: C2, XU4, MC1, N1, N2
Location: Lake Superior Basin, USA
Has thanked: 19 times
Been thanked: 47 times
Contact:

Re: GoA Case and Button Design

Unread post by hominoid » Wed Mar 25, 2020 3:48 am

rooted wrote:
Wed Mar 25, 2020 1:21 am
...They have gotten so reasonably priced I may just get one anyway Image
The prices have come down considerably. If you use it, it will actually pay for itself. I have been able to repair a lot of things and not create more waste by throwing broken things out. And, in some cases I can make things cheaper then I can buy them. At least that's my justification...:)

hominoid
Posts: 356
Joined: Tue Feb 28, 2017 3:55 am
languages_spoken: english
ODROIDs: C2, XU4, MC1, N1, N2
Location: Lake Superior Basin, USA
Has thanked: 19 times
Been thanked: 47 times
Contact:

Re: GoA Case and Button Design

Unread post by hominoid » Wed Mar 25, 2020 3:57 am

mameise wrote:
Wed Mar 25, 2020 1:21 am
I use wax painter or a candle to rubb over the markings so they get colored. Is easier then painting.
That's a good idea. I have something called Gilder's Paste that is basically wax with color pigment. I'll have to dig them out, see what colors I have and maybe give it a try. I was looking at your keyboard and just assumed you hand painted the letters. By the way, nice project.

hominoid
Posts: 356
Joined: Tue Feb 28, 2017 3:55 am
languages_spoken: english
ODROIDs: C2, XU4, MC1, N1, N2
Location: Lake Superior Basin, USA
Has thanked: 19 times
Been thanked: 47 times
Contact:

Re: GoA Case and Button Design

Unread post by hominoid » Wed Apr 01, 2020 12:52 pm

The fillet library has been fixed and the buttons completed. A simple framework has been created to store case sets by a given name. A case set includes all the buttons and case configuration in a defined schema. An unlimited number of sets can be stored in the configuration file and 8 are currently predefined: GoA_oem, Playstation1, Playstation2, Playstation3, Playstation4, remix, hominoids, plain.
.
button_sets.gif
button_sets.gif (216.31 KiB) Viewed 251 times
Most of the work is self explanatory but I do want to give a general overview and cover some specific areas that deserve more detail. The overall project now contains 3 files: Odroid_GoA_Case.scad, Odroid_GoA_Case.cfg and Odroid_GoA_Case_Library.scad. Odroid_GoA_Case.scad is the main design file and it's use is documented in the comments at the beginning of the file. Odroid_GoA_Case_Library.scad contains all the subroutines to create the case and buttons. These routines can also be called directly from other OpenSCAD designs by including the library.

Code: Select all

    goa_case(char name, char side)
        name - button set name
        side - "front" or "back"
    abxy_button(char name, int position)
        name - button set name
        position - 1=north, 2=south, 3=east, 4=west
    dpad_button(char name, int post)
        name - button set name
        post - 0=no post, 1=flat bottom, 2=round bottom
    dpadpeg(int pegtype, int pegdia, int pegz)
        pegtype - 1=flat bottom, 2=round bottom, 3=square body and round bottom
        pegdia - diameter in mm
        pegz - peg height in mm
    shoulder_button(char name, char side)
        name - button set name
        side - "left" or "right"
    pwr_button(char name)
        name - button set name 
    u bracket(int [x_loc,y_loc,z_loc], int [width,depth,height,thick])
Button Configuration
The configuration file Odroid_GoA_Case.cfg is an ASCII file that contains a data structure that is an array of arrays. Each array contains a complete case configuration record that is documented in the comments at the top of the file. Copying a similar configuration is a good way to create a new case set. A new set can be append to the end or inserted anywhere other than the first record and must have an unique set name.

Schema for Odroid_GoA_Case.cfg

Code: Select all

    "name",                                                                     // set name
    north_dia,north_z,north_shape,north_shape_z,north_texture,north_fillet,     // north button dia., height, shape, depth, texture, fillet
    north_inside_dia,north_inside_pegdia, north_inside_pegz,                    // inside dia., contact area and height
    north_key1_z,north_key1_size,north_key1_bearing,bearing2,xplus,             // north key1 height, bearing, bearing2, plusx
    north_key2_z,north_key2_size,north_key2_bearing,bearing2,xplus,             // north key2 height, bearing, bearing2, plusx
    north_key3_z,north_key3_size,north_key3_bearing,bearing2,xplus,             // north key3 height, bearing, bearing2, plusx    
    south_dia, south_z,south_shape,south_shape_z,south_texture,south_fillet,    // south button dia., height, shape, depth, texture, fillet
    south_inside_dia,south_inside_pegdia, south_inside_pegz,                    // inside dia., contact area and height
    south_key1_z,south_key1_size,south_key1_bearing,bearing2,xplus,             // south key1 height, bearing, bearing2, plusx
    south_key2_z,south_key2_size,south_key2_bearing,bearing2,xplus,             // south key2 height, bearing, bearing2, plusx
    south_key3_z,south_key3_size,south_key3_bearing,bearing2,xplus,             // south key3 height, bearing, bearing2, plusx
    east_dia, east_z,east_shape,east_shape_z,east_texture,east_fillet,          // east button dia., height, shape, depth, texture, fillet
    east_inside_dia,east_inside_pegdia, east_inside_pegz,                       // inside dia., contact area and height
    east_key1_z,east_key1_size,east_key1_bearing,bearing2,xplus,                // east key1 height, bearing, bearing2, plusx
    east_key2_z,east_key2_size,east_key2_bearing,bearing2,xplus,                // east key2 height, bearing, bearing2, plusx
    east_key3_z,east_key3_size,east_key3_bearing,bearing2,xplus,                // east key3 height, bearing, bearing2, plusx    
    west_dia, west_z,west_shape,west_shape_z,west_texture,west_fillet,          // west button dia., height, shape, depth, texture, fillet
    west_inside_dia,west_inside_pegdia, west_inside_pegz,                       // inside dia., contact area and height
    west_key1_z,west_key1_size,west_key1_bearing,bearing2,xplus,                // west key1 height, bearing, bearing2, plusx
    west_key2_z,west_key2_size,west_key2_bearing,bearing2,xplus,                // west key2 height, bearing, bearing2, plusx
    west_key3_z,west_key3_size,west_key3_bearing,bearing2,xplus,                // west key3 height, bearing, bearing2, plusx
    dpad_dia, dpad_dia_z,                                                       // dpad bottom dia., height
    dpad_index1_loc, dpad_index1_size, dpad_index1_angle,                       // dpad index notch loc, size, bearing
    dpad_index2_loc, dpad_index2_size, dpad_index2_angle,                       // dpad index notch loc, size, bearing
    dpad_ns_loc, dpad_ns_size,                                                  // dpad north-south cross location, size
    dpad_ns_fillet_top,dpad_ns_fillet_vert,                                     // dpad north-south fillet size top, vert
    dpad_ns_shape, dpad_ns_texture,                                             // dpad north-south cross shape, texture
    dpad_ew_loc, dpad_ew_size,                                                  // dpad east-west cross location, size
    dpad_ew_fillet_top,dpad_ew_fillet_vert,                                     // dpad east-west fillet size top, vert    
    dpad_ew_shape, dpad_ew_texture,                                             // dpad north-south cross shape, texture
    dpad_concave_dia,dpad_concave_z,dpad_dimple_dia,dpad_dimple_z,              // dpad depression and dimple dia, depth
    dpad_post_dia,dpad_post_height,                                             // dpad bottom post dia, height        
    shld_button_style,shld_button_post,shld_button_texture,                     // shoulder button style, post, texture
    pwr_base_dia,pwr_button_dia,pwr_button_z,                                   // power button dia., height
    pwr_tab_x,pwr_tab_y,pwr_tab_z,pwr_post,pwr_safe,                            // power button tab size, bottom post, safe geometry
    case_back_style,case_back_texture,case_back_vents                           // case back style, texture, vents
    case_console,case_csi                                                       // case console and sci openings
As you can see there are a lot of parameters(178) per set. Most of them you will never have to touch. Almost half(84) are just used to define the abxy button keys. For the majority of users there are only a few parameters for each button that they will be interested in changing. I'm going to highlight those, mainly the ones that define important options and aesthetics.

Shoulder Buttons
The shoulder buttons are straight forward and only have three parameters. The choice of round or rectangular posts have been added because scrap plastic can easily be made into 4mmx2mmx2mm rectangular posts. For that reason no separate posts are included for printing when a round or rectangular hole is specified. The dual shoulder buttons only accommodate round pegs, have not been tested and therefore are experimental at this time. A 14mm(max) piece of paper clip is used for all button pins.

shld_button_style 0=oem, 1=pin upgrade, 2=big button 3=dual button
shld_button_post 0=round hole, 1=round post, 2=rectangle hole, 3=rectangle post
shld_button_texture 0=none, 1=label

Power Button
The power button can be made to work without a bottom post, which is easier to print. The safe geometry option is related to the bottom post in that the oem version has material removed to allow clearance for the PCB when pressed. With this material removed the area is so thin (.5mm) that it may be hard to print using FFM technology. By allowing for a thicker area, a file can be used to reduce the material just enough to work. This can allow enough flex for the button to work without a bottom peg. These options allow the power button to be printed just like the oem or with a combination of the described modifications.
pwr_post 0=none, 1=enable bottom post
pwr_safe 0=off, 1= enable safe geometry
oem_pwr_button.png
oem_pwr_button.png (9.2 KiB) Viewed 251 times
Dpad
The Dpad is straight forward for the most part. The NS and EW crossbars can be individually controlled for size and verticle(dpad_ns_fillet_vert) and horizontal(dpad_ns_fillet_top) fillets. 1mm-5mm is the useful range for fillets. Two concave shapes can be applied to the Dpad. The first(dpad_concave_dia,dpad_concave_z) is meant to shape the overall slope of the buttons. The second(dpad_dimple_dia,dpad_dimple_z) is meant to be used as a center dimple and is applied starting at the depth of the first automatically. It can be expanded to larger sizes for different effects. For each use, think of a sphere of a given diameter(dpad_concave_dia) pressed into the Dpad by a given depth(dpad_concave_z). dpad_ns_shape, dpad_ns_texture are not currently used.

dpad_concave_dia = sphere diameter in mm
dpad_concave_z = depth in mm
dpad_dimple_dia = sphere diameter in mm
dpad_dimple_z = depth in mm

The last thing to mention about the Dpad is the bottom peg. The Dpad model can be generated with and without the bottom peg. If the Dpad is rendered without one then one is automatically added to the platter for printing. The Dpad peg is a friction fit and the length may need to be adjusted depending on your print quality. The length and shape play a critical role in the operation of the button. If the peg is to long it will not engage the rubber button correctly and can cause poor action and a bad tactile feel. I also found the rounder the end the more it moves around so a flat bottom with an edge fillet seemed to work best IMO, but it is easy to adjust with a file.

abxy Buttons
The noteworthy parameters for the abxy buttons are the north_shape, north_shape_z, north_texture, north_fillet. These are the basic parameters to control the aesthetics and what most user will be interested in changing. Each button has the same parameters and can be controlled sperately as illustrated in the "remix" button set.

north_shape 0=round, 1=PSx
north_shape_z = height of shape in mm
north_texture = 0=none, 1=abxy letters, 2=PSx symbols
north_fillet = radius in mm

One last item I want to mention is the abxy button keys in order to explain how to make new ones for other consoles. There are 5 variables that define each leg of a key with up to 3 legs per button. The first(north_key1_z) is the height above the bottom of the key as measured from the bottom of the button to the bottom of the key. The next variables(north_key1_size) are the size of the leg as x,y,z. They are followed by two bearing variables and length(xplus) in mm.

north_key1_z = height to bottom of leg
north_key1_size = x,y,z in mm
north_key1_bearing = bearing in degrees
bearing2 = bearing in degrees
xplus = length in mm

The location and orientation of a leg in a key is defined by a polar coordinate(bearing and distance). The bearing is measured from the 3 o'clock or easterly position, rotating counterclockwise. The first bearing(north_key1_bearing) and the radius of the button are converted from a polar coordinate to a Cartesian coordinate (x=radius(cos(bearing), y=radius(sin(bearing)) giving the location to place the leg. Most leg's vector continue on the original bearing but in some cases it is rotated around the base point like the Y button key. That is the purpose of the subsequent bearing and distance. The bearing2 is additive in rotation when legs are rotated around their base point. The length(xplus) is to compensate in situations when the placement and rotation requires the leg to be longer to clear the side wall of the button.
button_bottoms.png
button_bottoms.png (31.07 KiB) Viewed 251 times
Summary
The quality of the print and subsequent post-preparation will be important to the performance of the button set. It is also very important to take the time and fit each button properly. The shoulder button posts need to be the correct length. The Dpad bottom peg needs to be the right length and shape for proper button engagement. The abxy button keys must be well defined and clean. They cannot interfere with button travel. The underside button cavity must be clean and flat at the top. Use a file, emery board, knife or sandpaper to clean or straighten all critical areas. Test them as you assemble and fix any potential issues so you won't have to disassemble again. It takes a little extra effort to go from, yeah they kinda work to, hmm not bad and they look awesome.
These users thanked the author hominoid for the post (total 2):
mad_ady (Wed Apr 01, 2020 2:25 pm) • rooted (Thu Apr 02, 2020 6:00 am)

Post Reply

Return to “Projects”

Who is online

Users browsing this forum: gisorax and 3 guests