├── README.md ├── cyberdeck-baseplate.stl ├── cyberdeck-button.stl ├── cyberdeck-final.f3z ├── cyberdeck-final.zip ├── cyberdeck-frame-bottom-left.stl ├── cyberdeck-frame-bottom-right.stl ├── cyberdeck-frame-top-left.stl ├── cyberdeck-frame-top-right.stl ├── cyberdeck-hinge-support-left.stl ├── cyberdeck-hinge-support-right.stl ├── cyberdeck-keyboard-plate-2D.stl ├── cyberdeck-keyboard-plate.stl ├── cyberdeck-plates-only.zip ├── cyberdeck-preview-1280x720.jpg ├── cyberdeck-print-files-only.zip ├── cyberdeck-screen-frame-left.stl ├── cyberdeck-screen-frame-right.stl ├── cyberdeck-screen-plate-2D.stl ├── cyberdeck-screen-plate.stl └── trackball.ino /README.md: -------------------------------------------------------------------------------- 1 | # Framework Cyberdeck 2 | ![cyberdeck-preview-1280x720](https://github.com/BenMakesEverything/cyberdeck/assets/133932153/2c051050-e1c6-4eae-afb5-19fcace6cb1c) 3 | 4 | ### This is a custom built portable PC using Framework components. 5 | 6 | ## 3D Files: 7 | 8 | Full project file: cyberdeck-final.zip (step format) or cyberdeck-final.f3z (fusion 360) 9 | 10 | If you only want the 3D printed parts: download cyberdeck-print-files-only.zip (step format) 11 | 12 | If you only want the flat top/bottom plates: download cyberdeck-plates-only.zip (step format) 13 | 14 | ## STL Files: 15 | 16 | The 3D printed frame has been broken up into 4 parts and the screen frame into 2 parts to fit standard-sized printers. 17 | 18 | You need: 19 | 20 | frame-top-left, frame-top-right, frame-bottom-left, frame-bottom-right, screen-frame-left, screen-frame-right, and button (printed x2) 21 | 22 | I printed mine at 50% infill for strength and durability. 23 | 24 | For the plates, I reccommend using something other than PLA, plus they are too big for most printers. Get it laser cut from acrylic or machined from aluminum. For that purpose I have included 2D versions of the files, if you want to use a laser. Otherwise just use the regular ones that have the bevels and other features. 25 | 26 | 27 | ## Code: 28 | 29 | Trackball Arduino code: trackball.ino 30 | 31 | ## Parts List: 32 | 33 | Motherboard/CPU, Expansion Cards, Battery, Speakers, Wifi Card: https://frame.work/marketplace 34 | 35 | RAM: https://www.newegg.com/corsair-16gb-260-pin-ddr4-so-dimm/p/N82E16820236663 36 | 37 | SSD: https://www.newegg.com/western-digital-500gb-sn770/p/N82E16820250216 38 | 39 | Antenna: https://www.amazon.com/gp/product/B07DB5VWS1/ 40 | 41 | Keyboard: https://www.ebay.com/ - Search “Magic Keyboard 2” 42 | 43 | Keyboard cable: https://smarthomemount.com/products/slim-power-cable-male-usb-a-to-90-degree-apple-lightning 44 | 45 | Screen: https://www.amazon.com/gp/product/B0BZYXFSCX/ 46 | 47 | Screen Cable (USB C, 1 right angle end): https://www.amazon.com/gp/product/B0BZPSPFV1 48 | 49 | L shape USB Connector: https://www.amazon.com/gp/product/B0BCGH47CN/ 50 | 51 | USB C to mini cable: https://www.amazon.com/gp/product/B0744BKDRD/ 52 | 53 | Arduino Pro Micro: https://www.amazon.com/gp/product/B01MTU9GOB/ 54 | 55 | LOGITECH T-SBC12-CPQ Trackball: https://www.ebay.com/itm/372128644088 56 | 57 | Hinges: https://www.amazon.com/gp/product/B0BNH8985Y/ 58 | 59 | USB Hub: https://www.amazon.com/gp/product/B0BLJFZ42M/ 60 | 61 | Threaded Inserts (M2): https://www.amazon.com/gp/product/B088QJG676/ 62 | 63 | Threaded Inserts (M3): https://www.amazon.com/gp/product/B08BCRZZS3/ 64 | 65 | Aluminum Plate (x2): https://www.amazon.com/gp/product/B0BFR7DSBP/ 66 | 67 | Rubber Feet: https://www.amazon.com/gp/product/B0B2KSPPHS 68 | 69 | Power switch (I removed the metal tab): https://www.amazon.com/gp/product/B07YQQ3R7W/ 70 | 71 | Also uses various metric hardware: m2, m3 and m4 bolts. 72 | 73 | ## Hardware: 74 | 75 | Standard Hex head bolts: 76 | 77 | Motherboard mounting - [5] M4x8mm 78 | 79 | Hinges (bottom part) - [4] M3x8mm 80 | 81 | Wifi card - [1] M3x6mm 82 | 83 | Display boards, hub - [7] M2x4mm 84 | 85 | Tapered Head bolts (listed length includes head): 86 | 87 | Front plates - [6] M3x6mm 88 | 89 | Hinges (front part, goes through plate) - [4] M3x16mm, [4] M3 Nuts 90 | 91 | Speakers - [4] M3x8mm 92 | 93 | ### Enjoy! 94 | -------------------------------------------------------------------------------- /cyberdeck-baseplate.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BenMakesEverything/cyberdeck/6bddc64a3240ce2ff90aace659c0a12280c4d32f/cyberdeck-baseplate.stl -------------------------------------------------------------------------------- /cyberdeck-button.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BenMakesEverything/cyberdeck/6bddc64a3240ce2ff90aace659c0a12280c4d32f/cyberdeck-button.stl -------------------------------------------------------------------------------- /cyberdeck-final.f3z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BenMakesEverything/cyberdeck/6bddc64a3240ce2ff90aace659c0a12280c4d32f/cyberdeck-final.f3z -------------------------------------------------------------------------------- /cyberdeck-final.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BenMakesEverything/cyberdeck/6bddc64a3240ce2ff90aace659c0a12280c4d32f/cyberdeck-final.zip -------------------------------------------------------------------------------- /cyberdeck-frame-bottom-left.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BenMakesEverything/cyberdeck/6bddc64a3240ce2ff90aace659c0a12280c4d32f/cyberdeck-frame-bottom-left.stl -------------------------------------------------------------------------------- /cyberdeck-frame-bottom-right.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BenMakesEverything/cyberdeck/6bddc64a3240ce2ff90aace659c0a12280c4d32f/cyberdeck-frame-bottom-right.stl -------------------------------------------------------------------------------- /cyberdeck-frame-top-left.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BenMakesEverything/cyberdeck/6bddc64a3240ce2ff90aace659c0a12280c4d32f/cyberdeck-frame-top-left.stl -------------------------------------------------------------------------------- /cyberdeck-frame-top-right.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BenMakesEverything/cyberdeck/6bddc64a3240ce2ff90aace659c0a12280c4d32f/cyberdeck-frame-top-right.stl -------------------------------------------------------------------------------- /cyberdeck-hinge-support-left.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BenMakesEverything/cyberdeck/6bddc64a3240ce2ff90aace659c0a12280c4d32f/cyberdeck-hinge-support-left.stl -------------------------------------------------------------------------------- /cyberdeck-hinge-support-right.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BenMakesEverything/cyberdeck/6bddc64a3240ce2ff90aace659c0a12280c4d32f/cyberdeck-hinge-support-right.stl -------------------------------------------------------------------------------- /cyberdeck-keyboard-plate-2D.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BenMakesEverything/cyberdeck/6bddc64a3240ce2ff90aace659c0a12280c4d32f/cyberdeck-keyboard-plate-2D.stl -------------------------------------------------------------------------------- /cyberdeck-keyboard-plate.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BenMakesEverything/cyberdeck/6bddc64a3240ce2ff90aace659c0a12280c4d32f/cyberdeck-keyboard-plate.stl -------------------------------------------------------------------------------- /cyberdeck-plates-only.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BenMakesEverything/cyberdeck/6bddc64a3240ce2ff90aace659c0a12280c4d32f/cyberdeck-plates-only.zip -------------------------------------------------------------------------------- /cyberdeck-preview-1280x720.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BenMakesEverything/cyberdeck/6bddc64a3240ce2ff90aace659c0a12280c4d32f/cyberdeck-preview-1280x720.jpg -------------------------------------------------------------------------------- /cyberdeck-print-files-only.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BenMakesEverything/cyberdeck/6bddc64a3240ce2ff90aace659c0a12280c4d32f/cyberdeck-print-files-only.zip -------------------------------------------------------------------------------- /cyberdeck-screen-frame-left.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BenMakesEverything/cyberdeck/6bddc64a3240ce2ff90aace659c0a12280c4d32f/cyberdeck-screen-frame-left.stl -------------------------------------------------------------------------------- /cyberdeck-screen-frame-right.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BenMakesEverything/cyberdeck/6bddc64a3240ce2ff90aace659c0a12280c4d32f/cyberdeck-screen-frame-right.stl -------------------------------------------------------------------------------- /cyberdeck-screen-plate-2D.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BenMakesEverything/cyberdeck/6bddc64a3240ce2ff90aace659c0a12280c4d32f/cyberdeck-screen-plate-2D.stl -------------------------------------------------------------------------------- /cyberdeck-screen-plate.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BenMakesEverything/cyberdeck/6bddc64a3240ce2ff90aace659c0a12280c4d32f/cyberdeck-screen-plate.stl -------------------------------------------------------------------------------- /trackball.ino: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | /** 4 | Reads X/Y values from a PS/2 mouse connected to an Arduino 5 | using the PS2Mouse library available from 6 | http://github.com/kristopher/PS2-Mouse-Arduino/ 7 | Original by Kristopher Chambers 8 | Updated by Jonathan Oxer 9 | Updated again by Ben Makes Everything - youtube.com/channel/UCKU7oz0NZLOml3dzGOjPfXg 10 | */ 11 | #include 12 | #include 13 | #define MOUSE_DATA 10 14 | #define MOUSE_CLOCK 15 15 | 16 | PS2Mouse mouse(MOUSE_CLOCK, MOUSE_DATA, STREAM); 17 | 18 | //Trackball Speed multiplier 19 | const int pointerSpeed = 4; 20 | 21 | int buttonState; 22 | int lastButtonState = 0; 23 | unsigned long lastDebounceTime = 0; 24 | unsigned long debounceDelay = 200; // debounce time setting 25 | 26 | void setup() 27 | { 28 | Serial.begin(38400); 29 | mouse.initialize(); 30 | //these 2 lines keep the built in LED from coming on when the trackball moves 31 | pinMode(LED_BUILTIN_TX,INPUT); 32 | pinMode(LED_BUILTIN_RX,INPUT); 33 | } 34 | 35 | void loop() 36 | { 37 | int16_t data[3]; 38 | mouse.report(data); 39 | int reading = data[0]; 40 | Serial.println(reading); 41 | 42 | if (reading != lastButtonState) { 43 | lastDebounceTime = millis(); 44 | } 45 | 46 | if (reading != buttonState) { 47 | buttonState = reading; 48 | if (reading == 9) { 49 | Mouse.press(MOUSE_LEFT); 50 | } 51 | else{ 52 | Mouse.release(MOUSE_LEFT); 53 | } 54 | if (reading == 10) { 55 | Mouse.press(MOUSE_RIGHT); 56 | } 57 | else{ 58 | Mouse.release(MOUSE_RIGHT); 59 | } 60 | } 61 | if ((data[2] != 0) || (data[1] != 0)) { // reads trackball movement and converts to pixel movement 62 | Mouse.move(data[1]*pointerSpeed, -data[2]*pointerSpeed, 0); // (0,0,0)==(x,y,scroll) 63 | } 64 | lastButtonState = reading; 65 | } --------------------------------------------------------------------------------