{"id":13673812,"url":"https://github.com/brickbots/HandiPi","last_synced_at":"2025-04-28T13:32:00.383Z","repository":{"id":50621774,"uuid":"497420652","full_name":"brickbots/HandiPi","owner":"brickbots","description":"Handheld RPI4 based computer with keyboard and display","archived":false,"fork":false,"pushed_at":"2023-10-08T21:14:59.000Z","size":20573,"stargazers_count":755,"open_issues_count":0,"forks_count":35,"subscribers_count":32,"default_branch":"main","last_synced_at":"2024-11-11T14:39:04.252Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/brickbots.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null},"funding":{"ko_fi":"brickbots"}},"created_at":"2022-05-28T20:24:22.000Z","updated_at":"2024-10-31T03:25:57.000Z","dependencies_parsed_at":"2024-01-17T04:41:17.472Z","dependency_job_id":"c175a09e-f1b3-4407-8af2-747209a04021","html_url":"https://github.com/brickbots/HandiPi","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brickbots%2FHandiPi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brickbots%2FHandiPi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brickbots%2FHandiPi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brickbots%2FHandiPi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brickbots","download_url":"https://codeload.github.com/brickbots/HandiPi/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251319757,"owners_count":21570451,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T11:00:24.496Z","updated_at":"2025-04-28T13:31:55.337Z","avatar_url":"https://github.com/brickbots.png","language":null,"funding_links":["https://ko-fi.com/brickbots","https://ko-fi.com/brickbots'"],"categories":["硬件_其他","Projects"],"sub_categories":["网络服务_其他","Maker"],"readme":"# HandiPi\n\nHandheld RPI4 based computer with 36-key tactile keyboard and display\n\n![The HandiPi](https://raw.githubusercontent.com/brickbots/HandiPi/main/images/beauty/IMG_8141.jpeg)\n\n## What is it?\n\nGlad you asked.. it's a fully functional linux computer with:\n* A Raspberry Pi 4\n* Custom 36-key keyboard with 5 way directional buton based around an Atmega328\n* 4.3\" DSI touchscreen display\n* PiSugar power controller with 5000mah battery\n\nIt runs for about 4 hours with general terminal use and is pretty useful on it's own, but you can hook \nup external monitors and other USB peripherals if you need more screen or typing space.\n\n![Full work mode!](https://raw.githubusercontent.com/brickbots/HandiPi/main/images/beauty/IMG_8124.jpeg)\n\nThe keyboard runs QMK and interfaces to the Pi via USB, so it's fully configurable.  I really like the\n[Miryoku](https://github.com/manna-harbour/miryoku) layout and use it on all my keyboards...so that's\nwhat the physical button layout is based around.  The switches are Diptronic DTS63K tactiles with 1Nm \nof actuation force.  They look the same as the generic ones, but it's worth the few extra dollars as \nthey feel so much better to type on.  It's still a thumb-typing experience, but the limited number of\nkeys and the well thought out layering system of Miryoku makes it a suprisingly useful keyboard!\n\n![It's a keyboard](https://raw.githubusercontent.com/brickbots/HandiPi/main/images/beauty/IMG_8130.jpeg)\n\n## Oh god, why?\n\nWell.. it all started when I picked up the PCB's for the \n[PICOmputer](https://www.tindie.com/products/bobricius/picomputer-rp2040-raspbbery-pico-qwerty-devkit/) \nmade by [Bobricius](https://www.tindie.com/stores/bobricius/).  It's a sort of carrier board for the \nRaspberry Pi PICO that includes a keyboard using 6mm pushbutton tactile switches and a display.  It's \nsimple, but it really opens up some fun potential.  I ended up 3d printing a case for mine and adding\na battery with charging to make it a neat little toy to play with.  Along the way, I was really\nimpressed with how well the keyboard actually worked.. even though I didn't follow his advice and bought\ncheaper switches with higher actuation force.\n\nWhen it came time to replace the Orange Pi based desktop PC I used at my workbench I grabbed the RPI4 I ordered\nearly in the pandemic and had been hording.  I was just going to put it in a boring case, but then I got \nto thinking about the PICOmputer and wondering if I could build a case with a screen and keyboard.  I'd \nstill use the computer with a monitor, keyboard and trackball at my desk most of the time, but I could \ngrab it and have my workbench computer with me if I wanted to go hack at a friends house or makerspace.\n\nSo that's where the idea came from, and the rest was just balancing the screen size with portability and\nthinking hard about thumb-typing layouts....\n\n## Designing a tiny keyboard\n\nI've built a good number of keyboards in my time, and even [designed](https://github.com/brickbots/chocV)\na [couple](https://github.com/brickbots/slabv).  Most of the keyboards I've built rely on a pre-assembled \nPro-Micro style controller, but I just didn't think I'd have the space to use that trick here.  There are \nmany good refrence designs for the basic AtMega circuit, and I can\nsolder surface mount diodes okay, but I realy didn't think I'd have the skills to do a fine-pitch \nAtMega surface mount package without a lot of pain and suffering.  It was then that I remembered the first\nkeyboard I ever built.... the [Plaid](https://github.com/hsgw/plaid)!\n\nThe Plaid is a really neat 4x12 ortho keyboard built using ALL throughhole components!  It uses virtual\nusb on an AtMega328 which is one of the few AtMega versions availabe in a DIPP package.  With this \nschematic in hand and information about the boot loader HSGW used, I started designing a new PCB.\n\n![It's a tiny keyboard](https://raw.githubusercontent.com/brickbots/HandiPi/main/images/build/IMG_4371.jpeg)\n\nThis is actually version 2... for the first one I thought I understood more than I did and left off the 3.6v\nzener diodes on the USB data lines.  BTW, USB actually uses 3.6v signals!  Who knew?  I didn't know, so I \nthought the zeners were for overvoltage protection... They are not and many USB hubs/controllers won't work \nwith 5v signal lines.  So, you need those if you are using a 5v MCU.\n\nHere's a good place to thank [PCBWay](https://www.pcbway.com) for covering the cost of these boards.  Liam\nreached out to me after seeing the [Framedeck project](https://github.com/brickbots/framedeck) with it's\ncustom keyboard/trackball PCB and asked me to give PCBWay a try with my next project.  I did, and they gave \nme a coupon to cover the cost, which was right nice of them.  The PCB's are not overly complicated, but the \npricing was in line with other vendors, they arrived quickly, looked nice and clean and were fabbed to spec.\nOverall, a nice experience and I'll definitely consider them again in the future.\n\nSo after two revisions, everything worked and it looks nice and tidy with the 1mm top PCB to cover the guts\nand present nice legends.\n\n![KB Top plate](https://raw.githubusercontent.com/brickbots/HandiPi/main/images/build/IMG_8152.jpeg)\n\n## OS and Navigation\nThis little bad-boy runs Raspberry Pi OS, a Debian derivitive, and I use i3 as my window manager.  This is\na great tiling window manager that I run on all my linux systems, but it's particularly well suited for \nresource limited machines as it's very light weight.  It's also very keyboard friendly, which helps as \nthis unit does not have a great pointing device.  The touchscreen works okay for some things, and the \nMiryoku layout has support for mouse keys on a layer (which can be used with hjkl or the directional button)\n, but I prefer keyboard interaction where possible.\n\ni3 does have a good number of multi-key combos to get stuff done, and these are tricky with just two thumbs. \nIt's possible to get another finger in the mix and still hold on, but I ended up using the directional button \nfor a lot of the multi-key directional bits like focus left/right/up/down, resizing windows, or switching\ndesktops.  The directions are mapped to mod-h,j,k,l which will change window focus by default.  I can combine\nthis shift to move windows.  If I hold down the center directional button, the four directions change\nbetween four desktops, and I can combine this with shift to move a window to a specific desktop!\n\nThere are some other less common combos (like defining vertical/horizontal splits) that can always be \naccessed using the actual key combos\n\n## More info\n\nHere's a photo of the back of the unit showing the HDMI, audio output, and charging port of the PiSugar. \nTo the left (in the photo, right side of the unit) is the one available USB port on the RPI 4.  To make \nthe whole thing thinner, I removed the ethernet jack and double USB ports.  One of the usb pinouts is \nrun internally to talk to the keyboard, and I put a single-high USB jack on the other for external \nconnections.\n\n![Connections](https://raw.githubusercontent.com/brickbots/HandiPi/main/images/beauty/IMG_8135.jpeg)\n\nIf you'd like to learn more about how this was all put together check these links below:\n\n* [Parts List](docs/BOM.md)\n* [Build Tour](docs/build.md)\n\n## Copyright and License\n\nCopyright (c) 2022 Richard Sutherland. All rights reserved.\n\nAll files are licensed under MIT license\nsee the [LICENSE](LICENSE) for more information.\n\n\u003ca href='https://ko-fi.com/brickbots' target='_blank'\u003e\u003cimg height='35' style='border:0px;height:46px;' src='https://az743702.vo.msecnd.net/cdn/kofi3.png?v=0' border='0' alt='Buy Me a Coffee at ko-fi.com' /\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrickbots%2FHandiPi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrickbots%2FHandiPi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrickbots%2FHandiPi/lists"}