Terminal with builtin ortholinear keyboard and touch screen as a home automation interface.

Overview

OLKB-Terminal

Terminal with builtin ortholinear keyboard and touch screen as a home automation interface.

Features

  • Step and STLs available for non-commercial use.
  • 7" Touch Screen
  • Raspberry pi 4
  • Home assistant loads in kiosk mode.
  • 5x1 buttons to interact directly with home assistant with physical buttons

olkb-terminal olkb-terminal olkb-terminal

  • Customizable panels for the front, 3 in the back and a grid for custom attachments.

olkb-terminal

olkb-terminal olkb-terminal olkb-terminal olkb-terminal

Bill of Materials (BOM)

Note: I chose these because I mostly already had them. There are many other choices available. Some will be less expensive and some will work better. Some will just be different, but you might prefer them. That's all part of the fun.

Printed Parts

I used the Ziro Carbon Fiber PLA Filament.

Part Name Qty X size (mm) Y size (mm) STL
Screen Front 1 214 133 STL
Screen Rear 1 214 133 STL
Void30 Base Plate 1 207 111 STL
Rear Base Plate 1 211 139 STL
Pi Plate 1 106 74 STL
5x1 Front Acc Panel 1 119 22 STL
Small Front Acc Blank Panel 1 120 16 STL
Rear Large Blank Panel 1 116 107 STL
Rear Small Blank Panel 2 107 27 STL
Fan Holder (optional) 2 10 10 STL

These parts are licensed CC-BY-NC. That means you can't charge for them, and you can't send .stl to a shop that charges for prints.

I have designed these to be as easy to print as possible, but if you really want to buy a printed set, contact me and I'll see what solutions we can find.

Raspberry Pi Components

Name Link
Screen (C) [1] https://amzn.to/3ztpCKe
Raspberry Pi 4 2GB https://amzn.to/3nM6MMq
SD Card [2] https://amzn.to/3Cx8bug
USB Drive [2] https://amzn.to/3EDvPaz
Power Supply https://amzn.to/2XvkFU4
Power Cable (USB-C on both ends) https://amzn.to/3lLiLae
Case https://amzn.to/3kqMV3l
Fan https://amzn.to/39kYTVV

[1] I have this version, which is more than a year old now. There is a newer version of the screen that looks like it has some nice features:

[2] I use a USB Drive to run the pi. If you do that too, you can just use any 8GB+ micro SD card to get the raspberry pi booted, and then use the USB drive from then on.

Void30

Take a look at the victorlucachi/void30 repo for details.

I used an Elite-C microcontroller, which is essentially an Arduino Pro Micro with a USB-C port.

Cables

Name Link
Micro HDMI Video Cable https://amzn.to/3tWw2QZ
Micro USB Right Angle Touch Screen Cable https://amzn.to/39kEMXI
USB-C for Void30 (If you have a USB-C) https://amzn.to/3lLH9IQ
Power Cable (USB-C on both ends) https://amzn.to/3lLiLae

Make sure you get the right cable for your Void30 microcontroller. You need one that is about 6inches (15cm).

Screws

Location Size Min. Qty
Hinge M5x15mm+ 2
Hinge M5 Lockhnut 2
Screen Case M4x14mm-20mm 4
Accessory Mounts M3x6mm 18+

5x1 Front Switch Panel

You should have enough leftovers from the Void30 build. Except for the Dupont connectors.

  • Wires, 24awg-28awg should be fine. I would guess the farthest one is less than 8" (20cm) long.
  • 5x cherry mx compatible switches
  • 5x cherry mx compatible keycaps, but I hope to release some STLs for printable ones soon.
  • 2x3 Dupont connector. If you aren't already prepared to crimp dupont connectors, I would try to find a 2x3 dupont cable and just cut off the other end to solder.
  • Heat shrink. Optional, but makes these wires a little more tidy.

Scripts/Setup

I have a very peculiar raspberry pi setup. If this project takes off, I would consider making a custom image for it. But this can be accomplished with a regular raspian setup.

Until then, these are some of the key parts I used to get the software/OS side working:

  1. Home Assistant should already be running (probably on another machine).
  2. Change your user password, please.
  3. Install chromium browser. Any browser should work ok, but chromium has a kiosk mode.
    • The command I use to launch the browser is: /usr/bin/chromium-browser --kiosk --noerrdialogs --enable-features=OverlayScrollbar --disable-restore-session-state http://homeassistant:8123
  4. Use raspi-config to auto login.
  5. Disable screen savers. I do that so I can see what is on the screen without touching it. Run these commands at startup. Check to see if they work with xset q: xset s noblank xset s off xset -dpms
  6. Set up the buttons.py

Connected Projects

This project is very dependent on a lot of other open source and hardware projects.

  • Home Assistant let me write a few lines of code and scripts instead of thousands to get a clean interface.
  • victorlucachi/void30 made a fun keyboard that is not only a perfect fit, but it inspired some of the design choices in CAD.
  • qmk_firmare QMK Firmware is the brains of the void30 and is a pleasure to work with.
  • browser_mod makes it possible to control the display with home assistant automations.

Of course, raspberry pi, Linux, and a thousand projects related to getting a computer running on a pi are also integral.

License

License: CC BY-NC 4.0

This version of this project Has shapes and measurements based off of the Void30 project by @victorlucachi. That project, and this one are licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.

You might also like...
Random scripts and other bits for interacting with the SpaceX Starlink user terminal hardware
Random scripts and other bits for interacting with the SpaceX Starlink user terminal hardware

starlink-grpc-tools This repository has a handful of tools for interacting with the gRPC service implemented on the Starlink user terminal (AKA "the d

Rich is a Python library for rich text and beautiful formatting in the terminal.
Rich is a Python library for rich text and beautiful formatting in the terminal.

The Rich API makes it easy to add color and style to terminal output. Rich can also render pretty tables, progress bars, markdown, syntax highlighted source code, tracebacks, and more — out of the box.

Lets you view, edit and execute Jupyter Notebooks in the terminal.

Lets you view, edit and execute Jupyter Notebooks in the terminal.

Module for converting 2D Python lists to fancy ASCII tables. Table2Ascii lets you display pretty tables in the terminal and on Discord.
Module for converting 2D Python lists to fancy ASCII tables. Table2Ascii lets you display pretty tables in the terminal and on Discord.

table2ascii Module for converting 2D Python lists to a fancy ASCII/Unicode tables table2ascii 📥 Installation 🧑‍💻 Usage Convert lists to ASCII table

A terminal UI dashboard to monitor requests for code review across Github and Gitlab repositories.
A terminal UI dashboard to monitor requests for code review across Github and Gitlab repositories.

A terminal UI dashboard to monitor requests for code review across Github and Gitlab repositories.

CLabel is a terminal-based cluster labeling tool that allows you to explore text data interactively and label clusters based on reviewing that data.
CLabel is a terminal-based cluster labeling tool that allows you to explore text data interactively and label clusters based on reviewing that data.

CLabel is a terminal-based cluster labeling tool that allows you to explore text data interactively and label clusters based on reviewing that

This CLI give the possibility to do a queries in Star Wars API and returns a JSON in a terminal.

Star Wars CLI (swcli) This CLI give the possibility to do a queries in Star Wars API and returns a JSON in a terminal. Install $ pip install swcli Qu

WA Terminal is a CLI application that allows us to login and send message with WhatsApp with a single command.

WA Terminal is a CLI application that allows us to login and send message with WhatsApp with a single command.

A terminal spreadsheet multitool for discovering and arranging data
A terminal spreadsheet multitool for discovering and arranging data

VisiData v2.6.1 A terminal interface for exploring and arranging tabular data. VisiData supports tsv, csv, sqlite, json, xlsx (Excel), hdf5, and many

Comments
  • First Draft CAD Fixes

    First Draft CAD Fixes

    Things I'd like to fix:

    [X] The clearance for the screws in the back of the monitor need some geometry to fix the overhangs. [X] The front accessory panels have clearance holes for M3 screws instead of tapped. [ ] The pi plate needs just a little clearance if we are going to fill in that rear panel with stuff.

    opened by jeffeb3 0
Releases(v1.0.0)
Owner
Jeff Eberl
Jeff Eberl
Powerful yet easy command line calculator.

Powerful yet easy command line calculator.

Cruisen 1 Jul 22, 2022
Darkdump - Search The Deep Web Straight From Your Terminal

Darkdump - Search The Deep Web Straight From Your Terminal About Darkdump Darkdump is a simple script written in Python3.9 in which it allows users to

Josh Schiavone 264 Dec 30, 2022
CLI para o projeto Compilado (Newsletter e Podcast do Código Fonte TV)

Compilado CLI Automatização de tarefas através de linha de comando para a geração de assets para episódios do Compilado, a newsletter e podcast do can

Gabriel Froes 18 Nov 21, 2022
💻VIEN is a command-line tool for managing Python Virtual Environments.

vien VIEN is a command-line tool for managing Python Virtual Environments. It provides one-line shortcuts for: creating and deleting environments runn

Artёm IG 5 Mar 19, 2022
Because sometimes you need to do it live

doitlive doitlive is a tool for live presentations in the terminal. It reads a file of shell commands and replays the commands in a fake terminal sess

Steven Loria 3.2k Jan 09, 2023
texel - Command line interface for reading spreadsheets inside terminal

texel - Command line interface for reading spreadsheets inside terminal. Sometimes, you have to deal with spreadsheets. Those are sad times. Fortunate

128 Dec 19, 2022
nbcommands bring the goodness of Unix commands to Jupyter notebooks.

nbcommands nbcommands bring the goodness of Unix commands to Jupyter notebooks. Installation You can simply use pip to install nbcommands: $ pip insta

Vinayak Mehta 181 Dec 23, 2022
Command line tool to automate transforming the effects of one color profile to another, possibly more standard one.

Finished rendering the frames of that animation, and now the colors look washed out and ugly? This terminal program will solve exactly that.

Eric Xue 1 Jan 26, 2022
RSS reader client for CLI (Command Line Interface),

rReader is RSS reader client for CLI(Command Line Interface)

Lee JunHaeng 10 Dec 24, 2022
A python package to display progress of loops to the user

ProgressBars A python package to display progress of loops to the user. Installation This package can be installed using pip. pip install progressbars

Matthias 3 Jan 16, 2022
lfb (light file browser) is a terminal file browser

lfb (light file browser) is a terminal file browser. The whole program is a mess as of now. In the feature I will remove the need for external dependencies, tidy up the code, make an actual readme, a

2 Apr 09, 2022
Management commands to help backup and restore your project database and media files

Django Database Backup This Django application provides management commands to help backup and restore your project database and media files with vari

687 Jan 04, 2023
A Terminal UI for Discord

ToastCord ToastCord is a Discord Terminal UI. At the moment you can only look at Direct messages. TODO: - Add support for guilds - Message sending sup

toast 82 Dec 18, 2022
term2048 is a terminal-based version of 2048.

term2048 is a terminal-based version of 2048.

Baptiste Fontaine 798 Nov 21, 2022
Customisable pharmacokinetic model accessible via bash CLI allowing for variable dose calculations as well as intravenous and subcutaneous administration calculations

Pharmacokinetic Modelling Group Project A PharmacoKinetic (PK) modelling function for analysis of injected solute dynamics over time, developed by Gro

1 Oct 24, 2021
Simple Terminal Styling for Python

escape Escape is a very simple terminal styling library largely inspired by the excellent javascript chalk library. There are other terminal styling l

Syed Abbas 8 Sep 03, 2019
Simple CLI interface for linear task manager

Linear CLI (Unmaintained) Simple CLI interface for linear task manager Usage Install: pip install linearcli Setup: Generate a pe

Mike Lyons 1 Jan 07, 2022
Unpacks things.

$ unp_ unp is a command line tool that can unpack archives easily. It mainly acts as a wrapper around other shell tools that you can find on v

Armin Ronacher 405 Jan 03, 2023
Generate folder trees directly from the terminal.

Dir Tree Artist 🎨 🌲 Intro Easily view folder structure, with parameters to sieve out what you want. Choose to exclude files from being viewed (.git,

Glenda T 0 May 17, 2022
Shellcode runner to execute malicious payload and bypass AV

buffshark-shellcode-runner Python Shellcode Runner to execute malicious payload and bypass AV This script utilizes mmap(for linux) and win api wrapper

Momo Lenard 9 Dec 29, 2022