Close
0%
0%

Zvychai One

Extendable cyberdeck

Similar projects worth following
Zvychai One is an extendable cyberdeck built around RPi4. Base configuration features clamshell design, 40% back/underlit keyboard, 5" TFT screen and is powered by two 18650 Li-ion onboard batteries.

There were couple points in time when I was in need of:

  • a purpose for a SBC i've had laying around;
  • a platform to experiment with general purpose embedded system that ran Linux;
  • a case to dip my toes into elaborate electronic box design in CAD of choice with further employment of FDM 3D printing to make this design real;
  • a backup computer of sorts, not necessarily a performant one, but with easy access to it's detachable constituents;
  • a proper scratch to an itch of an intense desire to have a cyberdeck which materialized after you know who did his rizz; add a few rounds of scrolling through existing and fictional designs related to the matter also;
  • having a semblance of a doomsday communication device due to recent events (especially country-wide blackout periods); dunno who I would talk to while inhabiting this kind of dystopia, but my wishful thinking makes me hope that I will be able to set up a few LoRa nodes to talk to my buddies after comms go up in smoke and before electronic warfrare starts to cover residence areas.

Initially I was trying to cram everything into a CNC control panel which was bought in a local flea market, but eventually I've fired up FreeCAD and after a year and some (primary parts were not designed during the 2023 Cyberdeck contest, but as you may know, the hardest project part starts after 85% of progress - and so few of those % were rushed after contest was announced) ta-da - Zvychai One (case logo natively spells "ЗВИЧАЙ 1") came to fruition, featuring:

  • 8G Raspberry Pi 4;
  • 5" Eyoyo TFT display;
  • 40% KPRepublic BM43A keyboard powered by QMK;
  • Geekworm X708 v2.0 UPS HAT with double 18650 battery holder as a primary power management system;
  • design that is self-sufficient in base configuration and yet aims to tick a few boxes to be extendable;
  • clicky connector lid action thanks to some magnets from Aliexpress.

Primary features should be pretty self-explanatory - this is a RPi based machine with some autonomous capabilitues.

The "extendable" part is what i would like to drive the project further, namely:

  • 3 pairs of "Picattiny rail" like moutning points for different heavy-duty attachments (currently carrying handle, detachable strap holders, ethernet switch and SDR receiver caddy with antenna attachments are available; keyboard carrier is also on this rail);
  • 1 module well (to the right of the screen) which can house.. whatever you can fit there - a devboard, a PCB, a RGB macro input panel, beefy power source etc;
  • 2 smaller module openings (top left and right), which probably can house sensor boards, cameras, small displays etc.;
  • 3 auxiliary openings on primary case and keyboard carrier - initially to be used for wiring between the two and/or installing a USB hub or additional battery inside the keeb carrier, but they are vacant for now and covered with bolted on lids;
  • 1/4" tripod mount to, well, put it on a tripod; with adapters it probably can be used to mount a GoPro or a light source, you name it;
  • 3 LEDs near charge level indicator resemble a "notification panel" with user defined function;
  • the "spine" under the back cover also has several points where heat-set nuts can be installed and then something can be bolted to them;

And as a bit of closing trivia - "Zvychai" can be roughly translated as "tradition"/"custom" from my native language. Name is partially influenced by how domestic electronic industry of the past named household appliances it was producing (just look up names of TV sets/casette players in USSR).

Despite naming it "One", it is actually a 4th iteration of the design and that is what reflected as "v4" in design files.

Gerber_PCB_zvychai_indication_2 copy.zip

x-zip-compressed - 68.54 kB - 12/19/2023 at 01:56

Download

Gerber_PCB_zvychai_rpi_breakout_idc_2023-12-19.zip

x-zip-compressed - 17.82 kB - 12/19/2023 at 01:56

Download

Gerber_PCB_zvychai_primary_well_breakout_2023-12-19.zip

x-zip-compressed - 12.43 kB - 12/19/2023 at 01:56

Download

GPIO_FFC_ConduitAndPrimaryWellCover_Stl.zip

x-zip-compressed - 437.17 kB - 12/19/2023 at 01:56

Download

Schematic_zvychai_indication_upper_connector_2023-11-21.pdf

Adobe Portable Document Format - 54.89 kB - 11/21/2023 at 21:16

Preview

View all 10 files

View all 49 components

  • Module well wiring

    mkdxdx12/19/2023 at 01:38 0 comments

    I was not keen on to put here something small, so this update took an embarassingly long time to come up with, especially considering what came to fruition.

    First of all - holy moles, the deck actually won the contest. I was hoping to get into some kind of notable category (painting this whole thing was tedious after all), sure, but this blew me away. Thanks Hackaday Team!

    What I was working on was a way to route RPi GPIOs into primary module well, so it could function, as, well, a module well. So I could connect something there without disassembling the whole thing.

    There was no way i could just grab a 2.54 20x2 and botch some 24AWG wires on it and run the whole bundle somewhere in the backplate until it surfaced in the module hatch. There are slots for that, yes, but it needs to be tidy to some extent and also there was no way to fit standard 2.54 headers onto a Pi - there was no headroom.

    So i've decided to make two PCBs - one to convert GPIO header into something smaller (say, a flat cable) and then run that and convert it back into 2.54 format, more suitable for prototyping things.

    First PCB order was botched - i did not check how they were connecting to eachother, so they were forming a mirrored GPIO layout. So i rerouted everything and sent everything back - that's almost two months before these arrived:

    Looked tidy enough, but there was a problem. This bundle was lifting the back case cover and also it was permanent - you simply could not remove these cables without cutting those 1.27 IDC connectors. The permanency was the least of concerns, but that lifting business, that was a nono.

    And it turned out - the top board was not fitting the primary cover (the one with a charging indication). And i was not in the mood to reprint and repaint it again. No, hell no. Next time, when chosing the CAD for PCB design - check thoroughly if it able to export into 3d cads with a proper format - EasyEDA can export either a good quality 3d model for referencing in case design - but the model will be wildly out of proportions, or it can export DXF - but that is 2D only and good luck deleting all the unnecessary shapes on that.

    So, back to PCB design, another order, wait for another month of wait, all while redesigning the little left cover to fit the header. Another fitting job without actual reference hardware, another painting work, no red this time.

    And finally it arrived - the new board is white, assembled and ready to be installed:

    This time i've designed a little shroud that goes in front and supposed to contain all the flex cables in it.. But i miscalculated the thickness and could not make it any more thick either - it would not allow keyboard to close snuggly. So i've had to run everything semi-externally. Adds to the aesthetics i guess.

    Oh and i've also had to cut the little cover to fit all the flex cables when they bend - i'm yet to update CAD files for that, so it may not be taken into account at the moment of STL uploading.

    I was in such hurry to assemble everything, i skipped the part where i usually test everything with continuity tester. And so, naturally, the monster of short-circuits, the beast he is, just waits to bite your bum in the most unexpected and cruel way - i missed the short circuit on one of GPIO pairs and it resulted in, what is my best guess, a RPi PMIC going into thermal shutdown and not wanting to boot back again for some time. Almost had a heart attack at that point - some projects just hate me more than i hate them, i guess.

    Fortunately, after cutting a connector and crimping another one, the short was gone.

    Btw the layout on the breakout looks something like this - you look at the board to the left, and imagine your RPi board looks like the one to the right. Sort ot unconventional, but it works imo.

    So RPi is back alive, and i needed some way to test if it truly works. Do something digital, but something on the cheap and quick. LoRa is out...

    Read more »

  • Indication v2

    mkdxdx09/20/2023 at 09:56 0 comments

    Now that boards have arrived, time to soup up the indication panel with something a bit less messy.

    The new board is to the left.

    Board archive for instant JLCPCB quote will be added to file archive. You will also need new spacer panel which receives PCB bolts and is tied to the case with large power switch nut.

    The only problem with it is that i have used PH2.0 connectors to interface the board with everything, and even they have high enough profile to push against battery caddy and prevent top cover from being flush when assembled.
    So for now i will not use PH2.0 connectors and just solder power and interface wires directly and apply some sauce to add strain relief - after all you absolutely do not want your battery terminals to break off easily and fly around within enclosure to cause high octane havoc. Maybe i will release another board revision that has connectors moved to the top part so they won't press against battery caddy since this is more safe.

    The board also comes with separate indication trigger pin alongside of power to user leds - this will allow to trigger charge level indication with whatever signals you wish, basically (as long as it is within 3-5V range). I will use VIN pin on UPS hat so that when charger is connected - indication panel will display current charging level. Remember though that this battery level indicator only relies on direct battery voltage measurement - hardly a precise way of telling if tanks are full.
    Grab another low profile 2.54 header - there is not much space around motherboard to fit full size ones. Solder it to a piece of smallest perfboard you could find, bodge a jumper wire to "VIN +" near USB power connector on UPS hat and route this wire to CHRG pin on USER connector on the indication board. Since this pin active high, you can probably also add two diodes and connect Pi GPIO in parallel, so that you also can control indication from the Pi, but i'm not going to do that for now.
    One nice thing about this little connector board is that it clamps display power connector under it so it won't fly around when you are working with the board.
    The amount of parasitic additions asks for another HAT to be designed.
    There ain't much new to demonstrate though, i've shown how indication panel works before but here is a more marketing friendly action which shows how new leds flash and how board reacts to charger connected.

    On less important note, i've found these cool angle USB connectors connectors to tidy up the left side of things

    And free advice for the most patient readers: please have enough sleep especially when actively working on a project. Assembling the board was not really hard, however when parts arrived, it's either me or the seller who swapped N-mosfet reel with P-mosfet reel, which took me 2 hours at 3am to figure out after the fact that i've soldered both onto the board (basically means that both of them are open when power is applied, which was not the intended effect).

    But the most clear demonstration of what sleep deprivation can do to your ability to build blinky things is the realization that i've soldered Q2 gate transistors... 90 degrees rotated from how they are supposed to be fitted. Which made Q2 always open even when i figured out which was the correct reel the seller sent me and it drove me nuts.
    And before a keen eye says "your PCB design allows to do that" - that PCB was also designed mostly at 2-4am in the morning, so, yeah, sure.
    But hey - the relief of fixing your own mistakes is worth it, right?

  • Boarding up

    mkdxdx08/27/2023 at 23:58 0 comments

    To tidy up the indication panel, it was decided to move li-ion gauge schematic and user LEDs onto a single PCB. A little reverse engineering was required - these gauges work too good to look for more schematics on the net.

    So here is my interpretation of it, not really big of a deal, just an ol dumb quad-opamp with a TL341 as a reference rail and pmosfet which turns whole schematic on when button ties it's gate to the ground. No idea what red path does - i have several of these modules and some feature that diode connected to input voltage, some don't, my own pcb won't feature it and pmosfet source will be connected directly to battery positive terminal.

    After some messing around in easyeda:

    Just connect your 1S Li-Ion to VCC/GND terminal and once you press the button, charge gauge should show approximate fuel left in your tanks. Calibrating it is probably whole another story, but i hope schematic is clear enough where should you look for that. Oh and you don't connect R21NC between Q1 gate and INDICATOR_EXTCTL - this one is for a case when there is a need to have external charge gauge trigger control, but it will have active low polarity. It's just i have no idea how to set up "do not populate" parts properly.

    USER header is where Pi GPIO signals go to light up leds for any purpose. INDICATOR_EXTCTL supposed to work as a digital pushbutton - provided you install Q2 and appropriate parts around it. So and then you can route this signal to either GPIO, or, which i will probably go for - route it to UPS HAT external power input, so once i connect it to charger - battery gauge will light up to let me now when i should disconnect it.

    Now slap together a PCB and push it into production. And while i'm at it - spin some breakout PCBs to route RPi GPIO into primary module well.


    PCB/schematic projects will be published once they arrive and i verify they work as intended.
    With any luck.

    Edit: i forgot to transfer 100n capacitor from original schematic. Oh well. Looks like usual bypass cap, so slapping it on somewhere along voltage supply rails should work, right..?

  • Cyberdeck Cafe entry

    mkdxdx08/21/2023 at 17:28 0 comments

    Precious folks have put the project entry at Cyberdeck Cafe, hell yeah!

  • SDR carrier

    mkdxdx08/14/2023 at 17:56 0 comments

    Get it? Because radio signals have carrier frequency?


    So, i've added another rail attachment which can hold a generic SDR dongle and generic "rabbit ears" antenna on a swivel mount (how handy it has 1/4" threaded mount so that is what is going to be needed to build here)

    You're going to need 

    Add some paint work

    Assemble


    Put SDR and antenna mount inside, vigorously apply some cable ties (or velcro), mount the thing on the thing

    Please do not do this - i took first USB extender i had and i probably should have went to aliexpress for some smart 90deg usb plugs or something, because this is barely acceptable:

    And boom, you are now prepared to commence some r e c e p t i o n. Fire up gnuradio-based-sdr-ui of choice (i've found Gqrx SDR ui works well, but the reception itself is rather subpar because reasons) and receive to your heart's content.

    Or just, flex your aerial and be done with it

  • Indication panel wiring

    mkdxdx08/09/2023 at 00:57 0 comments

    So today i've got my low profile 2.54 headers for the Pi from Aliexpress and that means that it is time to connect those three LEDs left on primary cap alongside of battery level indicator.

    Since UPS HAT already occupies some GPIO for it's purposes (these are marked red), i've chosen another set of GPIOs to hook up cap leds (marked in green)

    Some assembly pics:

    And if everything is done correctly, after booting basic GPIO toggling python script, you may be greeted by this (new leds are to the left of the power switch):

    Some use cases are probably to indicate things like WLAN status, battery low, messenger unread blinking... You name it.

  • Initial commit

    mkdxdx08/09/2023 at 00:49 0 comments

    So, i've done component list, provided files and assembly instructions, so it probably should be that minimum to call it a "project".

    There are probably few more steps pending - i'm about to write about notification panel wiring and maybe there will be a SDR attachment soon.

View all 7 project logs

  • 1
    Disclaimer
    • Project contains lithium batteries - take care when working with them;

    • All dimensions are in milimeters;

    • Bolt dimensions specify metric size, bolt length specifies thread length (not total length); "Ф" is a diameter for whatever part it is specified; nut dimensions specify thickness alongside of thread size;

    • Every 3d object in this project and their dimensions are tuned to be correctly printed on my printer, and that is why you should be ready for cases when parts with tight dimensions (like attachment rails vs a handle attachment) are either too loose or too tight, and thus - STEP files provided for further ad hoc adjustments;

    • This guide does not include detailed steps for painting but may touch the subject a bit;

    • This guide may not include some late assembly stages that will be featured in project log, nor parts list will include parts that constitute those late stages (e.g. separate attachment assemblies - they will feature their own mini part list and build instructions in project log section), however i will try to keep files/archives up to date.
    • I will skip bootable image setup entirely - internet is full of stories like this, but i will mention that my build currently runs on Pop!_OS.
    • If it was not apparent already - brace yourself for the fact that English is not this hacker's native language;

    So, are you ready? (Casio for scale)

  • 2
    Print parts

    No step-by-step instructions here, follow your printing intuition/experience, but few tips would be:

    • I'd say print everything except small covers with 3-4 walls and 30-40% infill. Most parts do not require much printing support except maybe if you have trouble printing long bridges. Handle, skeleton hinge parts and ethernet carrier require support. Orientation wise - handles should be printed with their mounting points in same plane as primary case like so; zvychai_v4_skeleton_hinge_omega will require support in this orientation; ethernet switch carrier is best printed like this; zvychai_v4_handle_reinforcer_strapslot element will require support when printed flat on largest side;
    • There are parts that require large printing volume (zvychai_v4_primary_case is roughly 266x148x67mm) and are not pre-split for standard volumes (like my old e3). I've printed those via local printing services. However at some point i've cut the keyboard plate in half (zvychai_v4_bm43a_key_plate_left/right, but "whole" variant is also present) because local printing services can shove their per material gram rates up their hotend fan intake.
    • Parts that will be closest to heat sources (like zvychai_v4_primary_case) should be printed with something more heat resistant than PLA or you're gonna be upset with me. What i've found out lately is that Pi can get hot when CPU is loaded and especially when charger is connected (UPS HAT heats up the heatsink lmao) - a late discovered design flaw, but printing the case with PET(G)/Nylon (ABS for primary case will probably be out of the question) should get you going without fear of spontaneous deformation; batteries may heat up too when charging, but i've seen no screaming issues on that part atm.
    • If you plan on using stock skeleton hinge, you will need two of zvychai_v4_skeleton_hinge_omega and one of them should be mirrored.
    • Print zvychai_v4_paint_stencil_X only if you plan on painting the thing as they are here purely as stencils, not structural parts.
    • You will need 3x zvychai_v4_aux_cover to cover all aux connector holes.
    • If you have/plan to use strap, you're going to need 2x zvychai_v4_handle_reinforcer_strapslot and it should be printed with something that has higher tensile strength, or else you're in for a surprise impact test at some point. If you are not planning to use strap, zvychai_v4_handle_reinforcer should be printed instead - one per handle (photos depict only right handle in use that requires that reinforcer)
    • You will need 5x zvychai_v3_display_control_piston to reach display menu buttons. Feel free to print them horizontally to avoid heat creep on short travel distances.
    • Print zvychai_v4_attachment_ethernet_cover and zvychai_v4_attachment_ethernet_carrier if you plan on using ethernet switch with the board that i've linked in list of parts. If not, you can leave left attachment slot empty or print another zvychai_v4_handle.
    • I will advise to print two zvychai_v4_handle - one will be carrying handle, second will be a sort of a stand - rather accidental design discovery that nonetheless works almost as intended.
    • Everything i've not mentioned before should be printed atleast once if you expect for your build to look close to pictures presented in the project gallery.
  • 3
    Printed parts preparation - painting, threaded inserts

    If you plan on painting parts, this is probably best time for it - before you thread in any wires, install any other parts and before you melt in heat insert nuts. Remember to sand surfaces, degrease them before priming and painting. I've used cheapest enamel primer i could find in my local all-in-one shop, then it was white and red enamel. Grab a painters tape to add patterns, follow 45 degree slopes and you too can get your unique blend of Dazzle camo and classic mecha vibe. 

    Or not, i'm a sign, not a cop. It's not pretty process, must i warn you:

    But unlike painting, M3 heat set nuts (brass insert, threaded inserts etc.) are mandatory here. 

    Hope got yourself a kit of those. Grab a heat set nut inserting guide, practice on failed prints and get going. 

    You will need them in primary case, back cover, top right cover, top left cover and "spine" parts, in every Ф4.5mm hole that looks like a shallow "well" - that where they go. Most of them should be no longer than 5mm. Those wells that are on top covers can be shorter - 3-4mm long nuts should be ok.

    Basically, wherever you see a bolt sticking out on the following images, that where a thread insert is:


    This part here is your bravery test - you need threaded inserts inside of the case for the battery caddy to be able to hold the Pi assembly tight. You will have to thread your soldering iron through the slot without melting it two times. SH72 with conical tip worked for me here.
     

View all 15 instructions

Enjoy this project?

Share

Discussions

elizabeth sawan wrote 08/20/2023 at 06:59 point

dude it's look like an amazing gaming console which can play games like https://mini-militia.com/mini-militia-for-pc/ thanks for sharing.

  Are you sure? yes | no

Matthew H wrote 08/18/2023 at 16:57 point

Man, this one's cool as heck!

  Are you sure? yes | no

Richard Hogben wrote 08/17/2023 at 21:59 point

Nice paint job

  Are you sure? yes | no

RobsonCouto wrote 08/14/2023 at 22:39 point

Now this is cyberpunk! You nailed on the looks, I'm jealous! One of my favourites!

  Are you sure? yes | no

Patrick Tait wrote 08/03/2023 at 04:18 point

I'd say you win the asthetic contest this year

  Are you sure? yes | no

mkdxdx wrote 08/09/2023 at 20:01 point

we'll see, people do here beautiful stuff too

thanks!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates