All Projects → taylorconor → threeboard

taylorconor / threeboard

Licence: other
A fully-functional open source and open hardware mechanical USB computer keyboard with only three keys!

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
Starlark
911 projects

Projects that are alternatives of or similar to threeboard

ptScheduler
Pretty tiny Scheduler or ptScheduler is an Arduino library for writing non-blocking periodic tasks easily.
Stars: ✭ 14 (-85.71%)
Mutual labels:  avr
atmega
Bare ATmega 8/168/328 microcontrollers with the Arduino IDE.
Stars: ✭ 75 (-23.47%)
Mutual labels:  avr
vusbtiny
Small ISP programmer that uses an ATtiny running V-USB
Stars: ✭ 18 (-81.63%)
Mutual labels:  avr
atmega8-magnetometer-usb-mouse
ATmega8 working as USB mouse, by reading movements from a magnetometer (digital compass). [Projeto Final do curso de Bacharelado em Ciência da Computação DCC/UFRJ]
Stars: ✭ 19 (-80.61%)
Mutual labels:  avr
libavrutil
Easy to use, lightweight and unified library for performing common microcontroller tasks
Stars: ✭ 21 (-78.57%)
Mutual labels:  avr
ioBroker.denon
Denon AVR adapter for ioBroker
Stars: ✭ 15 (-84.69%)
Mutual labels:  avr
Arduino-GPIO
General Purpose Input/Output (GPIO) library for Arduino
Stars: ✭ 43 (-56.12%)
Mutual labels:  avr
digital-electronics-2
AVR course at Brno University of Technology
Stars: ✭ 12 (-87.76%)
Mutual labels:  avr
ATtiny85-TinyLoad
Electronic Dummy Load
Stars: ✭ 32 (-67.35%)
Mutual labels:  avr
qmk distro msys
A Windows one-click installer for the QMK CLI
Stars: ✭ 91 (-7.14%)
Mutual labels:  keyboard-firmware
sdfirm
Ultra light weight small device firmware. Well architected to support MMU, SMP, low power idle. Can be run on various CPU architectures.
Stars: ✭ 2 (-97.96%)
Mutual labels:  avr
Arduino-Log
Simple application log library. supporting multiple log levels, custom output & flash memory support.
Stars: ✭ 132 (+34.69%)
Mutual labels:  avr
avr-ds18b20
AVR library for controlling DS18B20 temperature sensors
Stars: ✭ 52 (-46.94%)
Mutual labels:  avr
DemOS
Free, simple, extremely lightweight, stackless, cooperative, co-routine system (OS) for microcontrollers
Stars: ✭ 18 (-81.63%)
Mutual labels:  avr
ATtiny13-TinyTacho
Simple RPM-Meter
Stars: ✭ 36 (-63.27%)
Mutual labels:  avr
ATtiny85-TinyDFPlayer
MP3-Player
Stars: ✭ 22 (-77.55%)
Mutual labels:  avr
Open-SAE-J1939
SAE J1939 protocol free to use for embedded systems or PC with CAN-bus
Stars: ✭ 120 (+22.45%)
Mutual labels:  avr
Original-CR10-Marlin-Firmware-Source
This is the ORIGINAL Creality CR10 Firmware Source as Creality installs it.
Stars: ✭ 16 (-83.67%)
Mutual labels:  avr
snackymini-keyboard
Snackymini Keyboard
Stars: ✭ 28 (-71.43%)
Mutual labels:  keyboard-firmware
ATtiny13-TinyUPS
Uninterruptible Power Supply
Stars: ✭ 92 (-6.12%)
Mutual labels:  avr

threeboard

threeboard is a fully-functional open source and open hardware mechanical USB computer keyboard with only three keys. It supports multiple programmable layers, and achieves the same functionality as a full-sized keyboard. Its firmware and hardware are built completely from scratch and are extensively documented.

Unlike a traditional keyboard, characters don't show up on the screen after each keypress, because there aren't enough keys. Instead, combinations of the three keys are used to specify key and modifier codes on two built-in 8-bit LED binary indicators. This can then be sent to the host computer as USB keycodes. The multiple layers allow users to program macros into the threeboard’s storage for quick retrieval. All functionality is documented in the threeboard user manual.

Motivation

The main goal of the threeboard project is to build a relatively easy to understand, readable, self-contained and well-documented embedded software and hardware project. The threeboard is built from scratch, with no external dependencies. This means that all components, from the USB stack to the PCB hardware designs, are written from the ground up and are all contained in this repository.

The threeboard project is extensively documented: within the firmware itself as comments, in this set of detailed markdown documents, and in a PDF design document. The primary design goal of the C++ firmware code is readability, to enable as many people to read and learn from it as possible, regardless of background. It's well tested, including end-to-end integration tests which execute tests against the firmware in a hardware simulator to emulate the physical hardware.

How to try it out

The threeboard project includes a terminal-based graphical firmware simulator capable of simulating the entire functionality of the threeboard. You can build and run the simulator yourself by reading the simulator build instructions. The simulator is built on top of the simavr AVR simulator, and runs the exact same firmware file that gets flashed to physical hardware. The simulator also allows remote debugging with GDB, so you can step through the threeboard firmware as it's being simulated to learn about it or investigate bugs!

Building your own physical threeboard requires a physical threeboard PCB, soldering tools and components, as well as some knowledge of electronics and soldering. If you're interested in building one, check out the threeboard hardware build instructions.

Full documentation

Below are markdown files documenting various aspects of the threeboard project in detail. Full 41-page documentation is available in PDF format in the threeboard design doc file.

Background reading

threeboard user manual
How do USB keyboards work?

Firmware

Firmware design
Firmware build instructions
Simulator user manual & design
Simulator build instructions

Hardware

Hardware design
Hardware build instructions
Component list

Hardware designs are licensed under CERN-OHL-P, the firmware is licensed under GPLv3, and all documentation under CC BY-SA 4.0.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].