JellyTitan / Sofle-Pico

A split ortholinear keyboard based on Sofle V2 that uses RP2040 Pico MCU, 128x64 OLEDs, RGB lighting, and rotary encoders.
Other
42 stars 4 forks source link

Initial Chico files, largely limited to new custom Choc V1/V2 hotswap… #12

Closed TheWerle closed 9 months ago

TheWerle commented 9 months ago

… doublesided footprint and PCB tinkering

JellyTitan commented 9 months ago

Sorry, it looks like this one's not ready yet. Routing, rotary encoders, and zones are missing. DRC is "failing aggressively": image image

Regarding "Chico" - I do love me a good portmanteau - but the lineage naming convention is fairly well established. The Sofle is descended from the Corne lineage, which set the precedent for the naming structure [base]-[varaint], so in this case it would be Sofle Pico Choc (or chocolate) and then the Sofle Pico would become the Sofle Pico Classic or Sofle Pico MX. It would take a pretty good argument to deviate from that structure.

I'm gonna close this PR for now. Once you get farther along, perhaps to the point of prototyping, I'd be happy to review a new PR.

I think that the Choc switches are popular enough to warrant a variant, but spinning one out that's done really well can take a while. Perhaps we should keep the discussion going over here?

TheWerle commented 9 months ago

Yeah, sorry, didn't intend to check anything in anywhere but my private fork. I don't know Git or GitHub well, have only used private SVN servers. One of the many skills in hoping to improve with this project

TheWerle commented 9 months ago

Question regarding your footprints:

D_DO-41_SOD81_P10.16mm_Horizontal""

The dual package diode includes both the thru-hole pads and a redundant via for the anode. Was that just to save you time in routing, or some way of trying to game JLCPCB for quote by using pad primitives rather than vias? Trying to infer your intention while making a functional equivalent for SOD123 and DO-41

JellyTitan commented 9 months ago

I was very particular about the diode placement - they had to have an easily identifiable relationship with the switch, and not interfere with the physical switch. (The chocs are a bit bigger, so i have to push the diodes right to the bottom). It's this extra via that you're referring too? image

That was added to avoid acid traps. Without it, the default teardrop addition is pretty close to a 90 degree angle. image

With the extra via, it's nice and clean: image

Regarding:

trying to game JLCPCB for quote by using pad primitives rather than vias?

Not trying to game anything, just wanted less acid traps. JLC is pretty fast and loose with the hidden fees though - so I've not objections to optimizing for reduced production costs.

uberrice commented 9 months ago

@JellyTitan 90° are normally fine, the only thing you should avoid is 45°. I have also heard that acid traps more or less are a thing of the past now, but @TheWerle will probably be a lot more knowledgeable about that :)

JellyTitan commented 9 months ago

you should avoid is 45°

Thanks! A while back you sent over a link about acid traps. I re-read it and found the bit about them not really being a thing. It's too late though - i'm enjoying the aesthetic of the gentle curves.

TheWerle commented 9 months ago

Oh yeah the various loopy / teardrop / shapes are definitely fun aesthetically.

Generally speaking designers still avoid acute angles <45° out of habit and because they're generally not beneficial, but its basically true that acid-traps are a thing of the past. Modern photoresist and cleaning processes have eradicated the issue, which is good because trying to prevent it with copper pours would be a real nightmare.

TheWerle commented 9 months ago

For your most recent board order, how did the RPI socket thru-holes with the one-sided soldermask tenting turn out? I like the idea of using that to infer correct socket placement, but there's a chance in fabrication that the vendor would plug the holes with soldermask and the user would have to chip/drill/ream it out in order to fit the solder-pins.

JellyTitan commented 9 months ago

Turned out great! I've been using it all over the place, Cantor MX, ErgoDonk Zero, and at least 4 iterations of Sofle. I've only been ordering from JLC lately though.

Somewhere in the Sofle lineage this staggered double sided footprint was introduced. Those holes are pretty close together for people just learning to solder. I've seen MCU solder bridge issues come up a few times on Sofle build threads. The one-sided soldermask, along with the increased offset space should cut down on those issues. (Plus i've got the annular rings dialed in just how I like em!)

image

TheWerle commented 9 months ago

https://github.com/TheWerle/Sofle-Chico.git

Initial schematic capture and PCB layout for minimalist changes "choc" version are checked into my Fork if either of you would want to take a look. Definitely focused on functional electrical changes, with hopefully zero to no required mechanical / packaging changes outside those directly related to the switches. I'd love some feedback, I still haven't built a keyboard yet so there's undoubtedly some details devils I'm missing.

Rules Changelog Added design-for-manufacturability rules changes to get things more in line with JLCPCB manufacturability standards 2mil soldermask expansion for copper-defined pads 4mil minimum soldermask web 5mil min copper trace, 8mil clearance Added some net-classes but didn't really do much with them

Mech/footprints Changelog: Swapped MX hotswaps with for Choc V1 reversible hot swaps. (ditched V2 support, seems like they're unpopular enough to not merit the layout compromises the larger/extra holes require)

Added SOD-123 alternative pads for TH Zener Diodes

Created "SK6803 MINI-E_v2" footprint to simplify pads and relabel pins to actual package markings. (I personally just couldn't stick with that one-off datasheet, pin1 package markers are standardized and SK68xx pinouts carry over to different packages for a reason). Expanded LED cavity for a bit more tolerancing assurance, spaced pads for copper-to-edge manufacturing rules)

Silkscreen simplification for some footprints to reduce errors where it goes out of the board outline / onto exposed copper / overlaps mask expansion

Added on-board fiducials for ASSY assist, but will likely remove if I figure out better panelization setup

Electrical Changelog Changed expansion headers for Cirque/OLED/expansion to 3V3 from VSYS to prevent overvoltage on peripherals

Added reversible minimalist TRRS dual-power protection diode PFET (Q1) with Jumper bypass option. Could install just one, two w/ bypass jumper pins, or bypass it altogether

Relabeled "VCC" as "VDC" with notes to more clearly indicate that its a ~5.0V rail, not 3.3V VCC like legacy Sofle and pro-micro designs would use

Swapped GND / VDC Zones between top/bot and did extensive prioritized routing/stitching for power flow and signal return coupling improvements for i2c/UART/LED data signals.

Added some optional decoupling cap pads for VDC

TODO:
Scrub BOM / Pick and Place / assembly files to see where I inevitably screwed up all that Silkscreen polish Figure out how the various KiCAD panelization plugins work and if they can produce reduced cost quoteable turnkey packages for Fab+Assy Learn how to design keyplate Mechanical model check against packaging

JellyTitan commented 9 months ago

I took a gander - looks great! My background is in design, so many of the routing decisions I made were more for aesthetics than function.

On the aesthetic side, these would be my suggestions, and not requirements. Curve the pad outline to match the hole. image

There's a ton of great electrical improvements that I'd eventually like to incorporate into the MX version.

Mech/footprints Changelog: Swapped MX hotswaps with for Choc V1 reversible hot swaps. (ditched V2 support, seems like they're unpopular enough to not merit the layout compromises the larger/extra holes require)

Good footprint choice. I appreciate you using the minimal outline, rather than the blob footprint silks. image

I'm intrigued by the RH_SKT repetition - this would make it super hard to install the sockets on the wrong hand. Usually the diodes are installed before the sockets though - so it might make more sense to move the _SKT indicator to the lower right of the socket outline/upper left of the diode? Alternately, maybe an explicit call-out in the build guide to start the soldering sequence with one specific key/diode/LED that has aggressive handedness indication? This would cut down on the visual static and use process to reduce errors?

Added on-board fiducials for ASSY assist, but will likely remove if I figure out better panelization setup

I've been thinking a bit about this. The usual standard for split keyboards is to have them joined in the middle. When JLC ships them, they break them in half, so there's a jagged join. THere's a Corne variant that adds a 'frame' to discourage that. image

I think top-to-top might be a good approach, so even if JLC gives you an ugly detachment, it's not user facing. image

Looking at the DRC, it looks like mostly orphaned track chunks. Not sure if you found the cleanup tools in KiCad yet, but they should knock out most of those:

image

On the LED holes - I'm not sure i put it in the build logs - but those have always been a PITA. When hand soldering, the less play they have in the holes, the easier it is to solder straight. I went back through all the LED boards I built, looking for the tightest fitting hole I could find, and they all used the same specs. Just something to keep in mind when building the first iteration.

Overall - great work - keep going!

TheWerle commented 9 months ago

I took a gander - looks great! My background is in design, so many of the routing decisions I made were more for aesthetics than function.

A lot of the aesthetics serve a function here though, particularly for the poke-yoke consistent component orientation choice you made. It makes some of the board routing a little more busy or difficult, but the benefits to the end-user during assembly will be worth it.

My layout teardown was overall not super necessary, I largely did it to help me think things through end-to-end. Biggest functional change I made in layout was a ground-up emphasis on prioritized routing of digital signal traces for signal+GND coupling and trace topology coupled with more power stitching.

On the aesthetic side, these would be my suggestions, and not requirements. Curve the pad outline to match the hole.

I'll give it a shot. You've clearly done time in the trenches there, but man the methodology for custom pad modification in the KiCad footprint manager sucks. Other tools allow merging of shapes rather than forcing complex outlines by coordinates. Apparently KiCAD 8 can natively import Altium libs, I might start hybridizing stuff like that for easier tools.

Good footprint choice. I appreciate you using the minimal outline, rather than the blob footprint silks.

I'm with you, Silk minimalism is the way to go. Infer the minimums for orientation, pin1/polarity notation is a must, but after that it just becomes visual noise and DRC problems to solve.

I'm intrigued by the RH_SKT repetition - this would make it super hard to install the sockets on the wrong hand. Usually the diodes are installed before the sockets though - so it might make more sense to move the _SKT indicator to the lower right of the socket outline/upper left of the diode? Alternately, maybe an explicit call-out in the build guide to start the soldering sequence with one specific key/diode/LED that has aggressive handedness indication? This would cut down on the visual static and use process to reduce errors?

On second thought, per-key handedness markings are redundant with the socket outlines for assembly indicators. I'm now thinking a better option would just be a prominent Right/Left hand graphical indicators for each board side, add handprint clipart to some open-space maybe? That would serve as the pre-assembly visual reference with less clutter and would contribute to your effort to make things less English-language coded.

Added on-board fiducials for ASSY assist, but will likely remove if I figure out better panelization setup

I've been thinking a bit about this. The usual standard for split keyboards is to have them joined in the middle. When JLC ships them, they break them in half, so there's a jagged join. THere's a Corne variant that adds a 'frame' to discourage that. I think top-to-top might be a good approach, so even if JLC gives you an ugly detachment, it's not user facing. Ultimately how you go down that road just depends on the approach
Looking at the DRC, it looks like mostly orphaned track chunks. Not sure if you found the cleanup tools in KiCad yet, but they should knock out most of those:

I'd be curious for more of your thoughts/priorities on the value in optimization/tinkering with panelization. After reviewing JLCPCB's documentation online and tossing up some quicky fab packages I don't think there's much more to be gained in terms of reducing board Fab costs. The only further board simplification I see would be changing the routed LED voids for big circles to further reduce "slot" fees, and I don't think that's remotely worth it relative to the soldering hassle it would introduce.

One method that does seem to work for enabling single-pass assembly of all the SMT components would be making the schematic hierarchical with two nested copies of the existing sheet, but there's tradeoffs. You can manually copy-paste the existing board layout as a flipped image, reassign the designators for that half, and then generate a single Pick and Place file that covers both halves of the board. However, its no longer a true "dual-sided" design at that point and you would have to either update/maintain the copied layouts going forward or repeat that process every time. Any other solutions inherent to panelization would require some other way of merging the pick-n-place coordinates that they'll probably call foul on.

For the connected boards like you show, the remaining rough spots are called "mouse bites". With the low-cost model of these fabricators the only way I can imagine avoiding them would be to do the panelization with v-scores, which is not worth it. The most I'd do is add a 4-5mil soldermask pullback to board edge outline, that way you can sand the bites less risk of chipping mask.

JellyTitan commented 9 months ago

prioritized routing of digital signal traces for signal+GND coupling and trace topology coupled with more power stitching.

You lost me here - but it sounds like you know what you're doing!

custom pad modification in the KiCad footprint manager sucks

If you get stuck here - or it's not fun - let me know, I'd be happy to handle those.

better option would just be a prominent Right/Left hand graphical indicators for each board side, add handprint clipart to some open-space maybe

This is the kinda stuff that I get really excited about. I was thinking about the explicit build guide approach - and now i think it's a bad idea - because nobody reads the docs. Or, at least, they skim and look at pictures. Might be a good practice though, but not relied upon exclusively. In an earlier scuttled project, I tried adding 'rally stripes' to one side to make it really clear there was a difference between sides. image I think that approach has merit - but I think that's at odd's with the minimalist aesthetic. I think the less silks that appear on the top of the board, the better. (At least as far as mass appeal is concerned).

In Brian Low's build guide, he approached this with a piece of tape, and i thought it was a great solve: image

Since the Sofle Pico family supports through hole stuff, the Tape approach isn't a good solve.

I think the terms front/back can get confusing. Maybe 'switch side' and 'socket side' would be more grokable, and there's supporting iconography too.

I think the iconography idea is really the way to go. I'd like to dial in the symbols & size. I'll try to get to it this week and maybe bounce some ideas off you.

thoughts/priorities on the value in optimization/tinkering with panelization

The current sofle Pico was designed with the hobbiest/hand builder in mind, with the intent to build a variant for vendors that is PCBA optimized. When looking at JLC PCBA, the hot swop sockets and SK6803 are 'special parts' requiring a $25USD upcharge, so using the double sided design to produce two separate PCBA variants RH/LH would not be cost effective.
I was thinking it makes sense to build a PCBA specific single-sided variant with both RH & LH.

I'm really on the fence about selling kits for the Sofle Pico. On one hand, i know making things available drives adoption, but on the other hand, it doesn't sound like fun. I think making a PCBA single-sided variant available would encourage vendors to start selling it.

Are you interested in the commerce side of things?

TheWerle commented 9 months ago

You lost me here - but it sounds like you know what you're doing!

TLDR version is "if you've got a digital data signal make sure its route path goes over unbroken GND for signal integrity". Bad ground returns create noise. Its basically what ubberice did in his routing pass, but I did even more. This is why higher complexity boards use Ground Planes, it radically simplifies good signal returns. In Pico's case the highest priority of routing would be the I2C / UART / LED traces, any time they cross a break in the GND copper on the opposite layer you should put a GND jumper trace roughly parallel to the signal to reconnect the GND return. The data-rates are so slow for a keyboard that its likely immaterial, but once there's additional peripherals like the trackpad included signal integrity may become more of a factor.

Here's a signal return simulation video that shows signal returns like a heat-map, it really helps you get the idea of the impacts of good returns as data rates or frequencies get higher.

https://youtu.be/4nEd1jTTIUQ?si=-38V_ukHplw8Lfnn&t=494

In an earlier scuttled project, I tried adding 'rally stripes' to one side to make it really clear there was a difference between sides.

"Racing stripes make you type faster" is a fun theory, shame it didn't pan out.

The current sofle Pico was designed with the hobbiest/hand builder in mind, with the intent to build a variant for vendors that is PCBA optimized. When looking at JLC PCBA, the hot swop sockets and SK6803 are 'special parts' requiring a $25USD upcharge, so using the double sided design to produce two separate PCBA variants RH/LH would not be cost effective. I was thinking it makes sense to build a PCBA specific single-sided variant with both RH & LH.

Yeah, I think the versatility of that approach is worth it. KiCAD seems to make it fairly simple to maintain a single-half SCH/PCB, then just use hierarchy to reannotate and flip the copied layout. The assembly outputs would then be scalable, you could upload two assembly file-sets of BOM+PnP files at either of the "low-cost SMD" or "special-parts SMD w/ upcharge" levels and let end-users do their own time/effort/cost budgeting between the two. Between the optimizations for either "panelization" or "single-sided" solutions the single-sided path seems the sweet spot for cost/effort/benefit in relation to the use-case.

I spent some time yesterday combing thru JLCPCBs "basic" parts to identify drop-in replacements for the diodes/PFET/level-shifter and generate the cheapest/quickest "low-cost" option. I'm hoping to have an orderable prototype turnkey package for both a modified Pico and "Chico" by the end of the week. Whenever I get those (and assuming they pass thru my initial basic checks), if you're interested I'd be willing to ship you a spare pair of the boards to try out.

I also looked over your keyplate instructions and modified my switch footprint yesterday to generate a SVG, but don't yet have a clue on how to evolve that into a STEP. I downloaded FreeCAD to try, but haven't gotten further yet than importing the SVG.

I'm really on the fence about selling kits for the Sofle Pico. On one hand, i know making things available drives adoption, but on the other hand, it doesn't sound like fun. I think making a PCBA single-sided variant available would encourage vendors to start selling it.

Are you interested in the commerce side of things?

I think I'm of a similar mindset to you in that regard, "if this is easy to buy/build then more people will adopt it and I can piggyback off their code improvements." If viewed in terms of "I want to sell kits and be required to offer formal customer support" then absolutely not. In my mind the #1 way to ruin a good hobby is to try to make money off it, and compared to my real job my hobbies can't afford me. I need a better ergo keyboard for my RSI (left ulnar nerve is currently jacked) and to up my game in 3D printing and basic coding skills so I can tinker with more hobby electronics in costumes/gadgets/etc.

TheWerle commented 9 months ago

image How do your keyplates avoid collisions with the level shifter on the left-hand, since its not mirrored there? Did you hog that out, or does the MX keyplate just float above the component?

TheWerle commented 9 months ago

image Pulled the trigger on 5 of each build turnkey.

EDIT: Scratch that, didn't factor in the "oh yeah they'll definitely charge me for this twice I'm too obvious". The quotes for boards double (reasonably so) for another $26 each, and then still I'm drowning in extra boards I don't really need. That's not necessarily bad for resellers but would suck for notional DIYers. I can hide the split at the cost of singulating boards myself and uglier edges, but I don't know if its worth it. I'll have to submit a few degrees of "merging" to see what level can sneak by as a single board.

uberrice commented 9 months ago

@TheWerle I don't know if anything changed - but the level shifters are not necessary. The data lines of the RGB LEDs are both 3.3 and 5v compatible. That's why there is a bypass solder bridge - worked for me at least.

As for keyplate problems, none here - the PCB actually is 'floating' between the top and bottom plates - at least for the ones I printed when I made my board.

JellyTitan commented 9 months ago

How do your keyplates avoid collisions with the level shifter on the left-hand, since its not mirrored there? Did you hog that out, or does the MX keyplate just float above the component?

With the Acylic or FDM plates, there is a 2mm gap between plate and PCB, so there's plenty of clearance for the level shifter. In all honesty, i stopped using them after the first two rounds of prototypes.

JellyTitan commented 9 months ago

they'll definitely charge me for this

In the last couple months, it's felt like JLC has started charging for PCBA as a separate board, basically doubling the shipping cost.

I know the 'different design' quantity option also tweaks the price. That's another fee/option that's applied inconsistently. image This asymmetric board with a snap-off bit on the left hand was hit with the 'multiple designs' fee image

JellyTitan commented 9 months ago

spent some time yesterday combing thru JLCPCBs "basic" parts to identify drop-in replacements for the diodes/PFET/level-shifter and generate the cheapest/quickest "low-cost" option

I appreciate you taking the time to do this! That's super helpful.

if you're interested I'd be willing to ship you a spare pair of the boards to try out.

I'd be delighted! Let me know when you're at that point, and i'll send a USPS pre-paid shipping label.

I need a better ergo keyboard for my RSI

I"m sorry - that's no fun. :C

Thats what got me started down the ergo path. When I started out with ergo stuff, the ErgoDox was fairly expensive, and then a few years later the 'ergodone'. started showing up on AliExpress, which made them far more accessible.

Lately i've seen the Sofle and Corne popping up on AliExpress too, which i think is a good indicator the appetite for splits is growing. I'd love to make the Sofle Pico family so easy to build and use that vendors start picking it up and driving the price point down.

TheWerle commented 9 months ago

image

Just resubmitted it with the middle slot removed and enough extra traces attached, that gets me thru at least the initial "multi-design" check. Its wired where it could be remapped as a single "batwing" board if i ever get to the point where I wanna try that out. I'll have to score/snap it myself and clean it up on the belt-sander or see if I can get access to a router at work, but I wanted to try it just for the sake of doing so. The price for soldering 300 diodes is definitely worth it... but in reality I only need to solder 60 and I'm paying for spares.

I think focusing on enabling assembly maybe a dead end for the project tho, just too many changes required that move it away from the target DIYers audience. You could check in two packages to the repo for "DIY hand solder" versus "board kit vendor" but I doubt its worth that much configuration management versus leaving the choice to end-users.

I'll let you all know when they arrive, would happily send each of you a spare.

https://github.com/TheWerle/Sofle-Chico/tree/main/Sofle_Chico_Panel

TheWerle commented 8 months ago

spent some time yesterday combing thru JLCPCBs "basic" parts to identify drop-in replacements for the diodes/PFET/level-shifter and generate the cheapest/quickest "low-cost" option

I appreciate you taking the time to do this! That's super helpful.

I'll do some initial board power/voltage drop tests and let you know if I stand by the recommendations, but it should be pretty safe. The 1N4148s are of course fully interchangeable, the final MOSFET chosen is a name-brand Vishay component, and I dropped the level-shifter buffer per @uberrice's note that the SK6803s will be 3.3V logic tolerant.

if you're interested I'd be willing to ship you a spare pair of the boards to try out.

I'd be delighted! Let me know when you're at that point, and i'll send a USPS pre-paid shipping label.

@JellyTitan Shipping notice arrived, the boards should be here by next Monday. Would you prefer I ship you a connected "wing" or go ahead and split it? I'm hoping to get access to either a V-scoring machine or a mill at work to clean up the edge nicely.

image image

JellyTitan commented 8 months ago

Exciting stuff! I'd prefer a pre-split board if you can. Would there be any noteworthy deviations from the MX build guide that would need documenting?

TheWerle commented 8 months ago

After I split the boards there shouldn't be any intended deviations, I think it should be procedurally identical. I'll make a changelog list for added/modified steps as I go through my own initial build. There's aesthetic changes from my silkscreen simplifications and stuff but your current instruction sequence seems like it should largely match. The diodes are preinstalled so obviously that's step one handled, any further changes will be new instructions for stuff like jumper-bypassing the TRRS cable protection FET on whichever board is designated as "secondary", but procedurally that's a repeat of the old level-shifter drag-solder instructions. I modified the footprint on the jumper to remove the soldermask sliver between the pads to see if it makes bridging with just solder more reliable.

I'm also tinkering in Autodesk, I've got my first-draft keyplates done and a combination OLED+40mm Cirque plate designed. They're updated for 4x4mm Choc switch apertures with a 0.5mm retention clip notch, and I've modified the case-assembly 2.5mm holes to be 2.5mm/4.1mm counter-bore holes so I can recess the M2 screw heads a bit and added a fillet at the outer plate edges where the user's wrist might make contact. I'm going to add some polish to all that today, I want to place windows in the keyplate for the PICO logo on the PCB.

I also plan to add some screw slots/holes for flush-mounting the OLED to the top plate, rather than have the plate floating above the display. With the supply chain variability / support for multiple variants of the display this will probably require me to jumper-wire it rather than use pin-sockets, but I'd personally prefer that over the floating oversized window. I'll create a non-Cirque integrated version with that sort of mounting as well, I'm personally planning to forgo the right-hand rotary encoder in favor of the trackpad but I want to support the baseline design.

I'll have to wait until my OLED displays arrive to fully verify all that, my parts will be arriving over the next 2-3 weeks, but I'm confident I can knock something out that will improve the FDM case aesthetics. Relatedly, where did you get your 3D model for the OLED display? I've adjusted the display window based on the AliExpress dimensions and the KiCAD STEP model, but the dimension drawing doesn't include the mounting. If you've got a better datasheet or mechanical drawing I'd love to see it.

image

Oooh aaaaah

JellyTitan commented 8 months ago

Looks great! I'm looking forward to seeing it. It feels like there's always a ton of llittle gotcha's that pop-up when it comes time to put all the little pieces together. I really don't use the RH rotary encoder anymore, but it's part of the Sofle heritage now. I usually end up grabbing most of my 3d parts from grabcad, if I can't find it in a popular part library. I think the 128x64 OLED .step was one of these guys: https://grabcad.com/library/tag/ssd1306 I recall that I couldn't find any good spec sheets on those - only grainy aliexpress images. The swapped pins on the oval/round corners came as a complete surprise. I'm afraid there might be more variants out there that are gonna cause people grief down the line. I haven't seen those 128x64 OLEDs available without the headers pre-soldered. I figured people that want those mounted flush with the MCU would skip the socket, however, that would mean losing access to the boot buttons on some of the Pico models. I really like the idea of leaving holes in the plates to let the Pico logo show through. I've ordered cheap unbranded clones to see if they would ship with the Pi logo - and some do. (I think that's implied with 'replica' stuff - no logos in the product listing image, but the delivered product has 'Rolex' or at least 'Rolox').

TheWerle commented 8 months ago

image image I like the logo window, but I'm struggling with figuring out the correct tool/selection options to make it look good. Its too tight on the outline,

image I somehow go the diameter on this wrong but I think it will end up looking nice when I've got it nailed down.

JellyTitan commented 8 months ago

Looking good so far! I'm a little worried about the precision splitting - but I've never tried that sort of thing. To increase the offset for the logo hole, I'd recommend push/pull on the body: image

Or if you like to tweak at the sketch level, offset path is a good option: image

During my first trackpad iteration, I tried tilting it -but I never got so far as to actually try using it. Now that I look at it again, there would have been collisions with the rotary encoder, so I think your approach with skipping the encoder is better. image image

JellyTitan commented 8 months ago

Did you have any plans for branding? I think the logo lends itself well to variants: image

TheWerle commented 8 months ago

Looking good so far! I'm a little worried about the precision splitting - but I've never tried that sort of thing. To increase the offset for the logo hole, I'd recommend push/pull on the body: Or if you like to tweak at the sketch level, offset path is a good option:

This is where I'm running into "newbie" problems, I've never done 3D CAD of any sort so a lot of the tool names are still opaque to me. I'm pretty happy that after a week of effort I'm basically as good at it as a 9 year old who plays Roblox.

It took me an embarrassingly long time to both convert the keyplate SVG to a sketch and figure out I needed to use "project" to make the body shape, I was stuck for like a full day on that alone. Converting the logo SVG to a sketch got me the current aperture, but it has hundreds of faces that won't simplify and I can't figure out a way to select them all such that push-pull does a "scale it larger" operation like I want. The easiest answer is "just reimport the logo sketch and make it bigger" but I'm trying to force myself to learn how to "do it right"

During my first trackpad iteration, I tried tilting it -but I never got so far as to actually try using it. Now that I look at it again, there would have been collisions with the rotary encoder, so I think your approach with skipping the encoder is better.

Yeah, not sure yet what I'll use encoders for even outside of "more awkward scroll wheel", so bumping it for the trackpad seems like a no brainer. Getting to where I understand QMK enough to actually compile that in is the daunting problem for the future, I am still utterly baffled by how to do any of that. My coding skills have utterly decayed.

Angling it is definitely a goal, but I figured I'd knock out a "flat" design that's easy to print first before trying too many new planes/faces. I'd like to get a functional feel for how "good" the trackpad actually operates as a mouse before I sink too much time into it.

Did you have any plans for branding? I think the logo lends itself well to variants:

I've got some rough ideas but no skills to implement them, graphic design in particular is an area where I'm going to need help. I still like the snappiness of the "Chico" portmanteau, but appreciate your "implied design heritage" argument for the "Sofle-Pico-Choc" nomenclature. I don't have strong opinions there.

The only logo idea would be something to infer "choc" by blending the raspberry pips or leaves to somehow look like a chocolate bar / wrapper or cocoa bean, but I don't know if it would be intuitive enough to justify being overly busy.

TheWerle commented 8 months ago

@JellyTitan Saw your uploaded foam gasket file, I really like the idea. I've had my in-laws Cricut just sitting here unused for months, finally going to get some use out of it. First pass came out rough, I cleaned it up with an X-acto. Ideally my final case-files and recommending assembly hardware will be sufficiently low-profile that I won't use a top-gasket, but a bottom gasket to compliantly fill the component gap and dampen noise could be really nice. I'd be curious to try a thinner rubber mat option as well, not sure if that would work with cricut but could be doable with a laser-cutter. I've got a friend who owns a 3-in-1 Snapmaker 3D Printer / CNC/ Laser machine, I'm hoping to try at least one case prototype using each of those processes.

I'm really trying to lean into the "low-profile" benefit of the chocs, working on redesigning the FDM bottom plates to make a reversible plate with mirrored top/bottom counter-bore 4.4mm/2.5mm mount-holes or even hex-slots for holding a nut in place. It seems like that should be feasible for either FDM or CNC case processes. What would you think about modify the existing FDM bottom plate designs to include that as a common feature for Pico/Chico? There's no reason I can see that the Pico bottom plate couldn't also use recessed screw heads / nuts.

I need to get some additional options for spacers and standoffs, the smallest pieces I've got right now are hex M2*5+6 standoffs and they don't cleanly pass through the mounting holes, but once I have optimal hardware the total thickness should be ~3/8" for the case, ~3/4" from the bottom to the top of the keycaps

image image image

JellyTitan commented 8 months ago

What would you think about modify the existing FDM bottom plate designs to include that as a common feature for Pico/Chico? There's no reason I can see that the Pico bottom plate couldn't also use recessed screw heads / nuts.

I've got a love hate relationship with Chocs - mostly because I'm chasing short actuation distance, and there's not a whole lot of options in Chocs. (Maybe 10ish + frankenswitching)?

I've built the sofle choc, and i found the keyplates to be difficult to use, and unnecessary. That said, I used pcb plates. Because theres only .8 gap between the plate and the pcb, when you are pressing the switch in, the plates tend to push down to the pcb, so it makes putting all your switches in a total PITA. image

As for the functionality of the plates with Chocs, the 5-pin design and the low height keeps those switches in place just fine without the plates. SA keycaps on MX switches can get pretty tall, and they will sometimes tip-out of the thumb cluster - but Chocs generally don't have those problems.

That being said - i think FDM Choc plates are a good solution for aesthetics. I've made some myself: https://github.com/the-via/keyboards/pull/2139#issue-2075778686

I think it would be good to have a choc specific fdm case. You can see how well love and shared the corne is https://www.printables.com/search/models?q=corne%20case

I'd encourage you to make a Choc fdm case.

As for recessing the screws, in my experience, 'the juice isn't worth the squeeze'. Most split keyboards have rubber bumpers on the bottom to keep them from sliding around the desk. Even a really tiny 2mm bumper is enough to keep a 2mm cap srew head off the desk. I'm not sure the added complexity of recessed screws would be offset by added utility.

If the case is purely fdm, you can abandon the standoff passthroughs entirely, and use the holes to attach bottom to top plate: image

JellyTitan commented 8 months ago

First pass came out rough, I cleaned it up with an X-acto.

I'm 100% new to gasket's in keyboards. I see them a whole lot more in traditional keyboards, rarely in splits. I was kinda bummed that the cricut cut came out so rough. If you do try out the lazer cutting, can you update the experience?

TheWerle commented 8 months ago

I've built the sofle choc, and i found the keyplates to be difficult to use, and unnecessary. That said, I used pcb plates. Because theres only .8 gap between the plate and the pcb, when you are pressing the switch in, the plates tend to push down to the pcb, so it makes putting all your switches in a total PITA. image

Ah, so presuming standard ~1.6mm plates you're both maintaining a gap and failing to lock in the retention clips into the 1.3mm retention zone. Its never going to feel good typing on a trampoline, but that would potentially be a case where a thinner membrane like rubber could help. If you can't fully engage the switch retention clips I'd have to think you'd be better off oversizing the gaps and keeping the plate flush-mount for pure aesthetics rather than push it up onto the switch bodies.

At least for the FDM solution it works very nicely, I built in the retention lip similar to your MX keyplate / what I'm seeing in these Corne cases. My prototype plate is 2.2mm thick PLA with a 1.1mm plane halfway up for the retention clips and it all sits clean flush with the mating surface. Any bowing while typing will be inherent to the underbody support. I'm still waiting for my Choc-sockets and LEDs to arrive/be installed for final fit checks, but I think that part of the design will work cleanly.

I'd encourage you to make a Choc fdm case.

As for recessing the screws, in my experience, 'the juice isn't worth the squeeze'. Most split keyboards have rubber bumpers on the bottom to keep them from sliding around the desk. Even a really tiny 2mm bumper is enough to keep a 2mm cap srew head off the desk. I'm not sure the added complexity of recessed screws would be offset by added utility.

Providing at design files for FDM and Acrylic designs on a simple sandwich-case equivalent to your Sofle-Choc is a requirement as far as I'm concerned. Fancier versions from there I'm going to leave to more skilled hands.

I mainly went down the counterbore path to reduce any chance of collisions under the keycaps if somebody used hardware large nuts/heads. I just don't like the lumps hanging off the bottom, and the pockets turned out surprisingly clean for a lower-end PLA print. They're a compromise due to the thinner plates, I don't want to weaken the joint too much, but I think if the surfaces largely stay flush that will be fine. I am going to need to increase the head clearance diameters on my next print to provide more tolerance for disparate hardware.

EDIT: OK no, I can go thinner/simpler still. I snagged some M2.5 screws from work, screwed them directly into the 3D printed holes, and it works well enough that I'm taking the plunge for M2 socket heat inserts. Anyone with a soldering iron can install these, they'll reduce total thickness and increase stability, and if you don't want to use them you can just install other hardware.

If the case is purely fdm, you can abandon the standoff passthroughs entirely, and use the holes to attach bottom to top plate: ![image](https://private-user-images.githubusercontent.com/72168556/312150090-0133c217-1263-4ec6-88e8-ed13bfac17d0.png?

This is neat, but I have to imagine it would exacerbate the trampoline typing issue, at least until I've done enough iterations that I can confidently measure the stack-up. That's why I'm jazzed about the foam layer, with the right spacers I should be able to effectively "float" the case and keep noise/vibration down with a compliant material layer.

First pass came out rough, I cleaned it up with an X-acto.

I'm 100% new to gasket's in keyboards. I see them a whole lot more in traditional keyboards, rarely in splits. I was kinda bummed that the cricut cut came out so rough. If you do try out the lazer cutting, can you update the experience?

Will do. I saw that they sell X-acto style knife heads for Cricut which apparently work better on foam than the standard cutting blades, but I don't think I want to invest much into the gadget when I've got access to cooler and more versatile options. It's just a bit self-evidently limited for my interests, and I hate the monetization intrusiveness of its application.

Honestly the better solution for creating these might be to 3D print a cookie-cutter "tool" and stamp cut them. You could possibly even derive or outright integrate it into a bottom-plate design.

TheWerle commented 8 months ago

@JellyTitan I'm getting the boards milled today, and the bulk of my remaining components arrived so I've begun soldering in my LEDs/switches. If you email me your address (send to peter.werle@gmail.com) I can get you a singulated pair in the mail soon.

I got your QMK fork setup in QMK MSYS and compiled the default code earlier as well, so making progress. With luck I'll have a functioning keyboard by Sunday.

PXL_20240314_200831834 PXL_20240314_201742543 MP PXL_20240314_220402259

JellyTitan commented 8 months ago

That's looking great! I'm looking forward to it! I sent over an email. I can send you a SASE if you like. One of the big remaining to-do's is to cleanup/consolidate the OLED images before submitting a QMK PR. I'm hoping to get that in next week. It might need some refactoring because QMK development is so rapid, and I wrote most of that 3 months ago. In theory, the UF2 flashing and VIA should let you workaround any QMK hangups.

When you're doing your initial flash, can you keep an eye out for any improvements/clarifications for the docs? The jekyll deploy adds the easy edit links: image

TheWerle commented 8 months ago

Put it all together and we're up and running! I think my TRRS jacks will finally arrive tonight, so naturally I'm going to start tearing it apart just as fast, but so it goes.

image image

Build log notes:

Biggest hurdle was dealing with ramifications of the Tenstar Pico clone diode/pinout difference discovery. Initial board bring-up couldn't power the LEDs because there was no voltage on Pin39. I added a 0-ohm 0603 between the pins on the module to bridge the VIN/VOUT pins. If that remains a recommended module (and I do like its build quality and extra button utility for the cost) a note will need to be made and the zener diode directions should be updated to reflect that the boards do in-fact include onboard protection.

Soldering went fine, the poka-yoke definitely is a huge help in regard to avoiding dumb errors when installing socket headers.

image I haven't yet tested the dual-power protection circuit, focusing on getting the basics running first so i've used my bypass jumper. I'll check that after I tear things down to add the TRRS jacks.

image I went ahead and drilled some holes to plate-mount the OLED with some M2 nylon washers to level things out, I couldn't stand the teetering. To make it connect I used a larger flat solder-tip to reflow and pressed the pins down flush. That gave me enough pin-length that it mates solidly.

Initial programming went fine with the various pre-compiled UF2 loads, but cleanup is needed for the documentation. For the sake of reducing configuration management I'd suggest treating the Via load as the "default", since VIA is by far the most user-friendly path and the keymaps are identical anyway.

The OLED orientation code is out of date relative to the 3.5.4 hardware, though I'm unclear if that's due to variation between your various displays or from changes between board iterations. As far as i can see from the "hero shots" and poka-yoke the intended oled placement is always "right-hand pin headers" for both left/right halves, so I don't see a scenario where you need to be using the 270° rotation.

JellyTitan commented 8 months ago

Thanks for the feedback! I updated the VIA flashing notes and removed the default non-via .uf2's.

The Pico clones seem to be all over the place- thanks for figuring out the Tenstar pinout.

The OLED mounted to the plate looks great! Looking at it from the side - the OLED not seating completely feels 'unsatisfying'. I've tried some alternatives to the needle pins, but nothing worked great. I just saw these on aliexpress and ordered a few for funsies. image

I think an IC socket might be a better solution - but i'm not terribly familiar with them, and i'm not seeing measurements listed often. Any ideas on that?

I'll take a closer look at the OLED orientation when i refactor the base QMK config for a PR.

TheWerle commented 8 months ago

The OLED mounted to the plate looks great! Looking at it from the side - the OLED not seating completely feels 'unsatisfying'. I've tried some alternatives to the needle pins, but nothing worked great. I just saw these on aliexpress and ordered a few for funsies.

image I tried removing the alignment plastic after soldering hoping more shiny would make it better, but there's just no making those black sockets look good. I cant really think of a better alternative that wouldn't involve desoldering the display pins. The need for variable height relative to the various RP2040 modules and case/switch solutions just makes a single solution impossible. I'm cool with extra soldering personally, but its definitely outside the general level of difficulty you're targeting for the project.

You could remove the display pins and replace them with long needle-pins that you either direct solder or mate to a low-profile socket strip instead, or you could clip some wire test jumpers, solder them into the board, and mate them under the display.

I'm not a fan of those sockets, they're typically pretty huge and you need a fair bit of clearance for locking the lever arm. Its really only useful if you're reading/writing flash to preload chips, which isn't really a thing in our modern ISP era.