keybrd library is an open source library for creating custom-keyboard firmware.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

tutorial_4_split_keyboard_with_IOE.md 3.3KB

keybrd Tutorial 4 - split keyboard with I/O Expander

When you finish this tutorial you will be able to be able to modify a 2-matrix keybrd sketch to suite your own split keyboard design.

Overview of split keyboard with I/O Expander

The breadboard in this picture models a split keyboard. breadboard keyboard with 2 rows and 4 columns of keys

The breadboard has four bus strips used as rows. Two rows connected to a microcontroller, and two rows connected to a I/O expander.

The I/O expander has a small notch on one end, which identifies the end with pin 1. In the picture, pin 1 is on the right end.

The microcontroller and I/O expander are connected by 4 jumper wires:

  • ground
  • power
  • Serial CLock signal (SCL)
  • Serial DAta signal (SDA)

A decoupling capacitor on the power pin dampens noise coming in through the power wire.

The microcontroller and I/O expander communicate via I2C bus, which consists of two signals: SCL and SDA. Two resistors pull-up voltage on the SCL and SDA.

I/O expander I2C address is configured by hardware pins. The MCP23018 with all address pins grounded has an I2C address of ?? todo.

The I/O expander has two ports. Each port has eight pins. One port is connected to the matrix’s rows. The other port is connected to the matrix’s columns.

Building a split keyboard with I/O Expander

We will build a split keyboard adding parts to the basic breadboard keyboard described in tutorial_1_breadboard_keyboard.md

todo add schematic

Continuing from the basic breadboard keyboard instructions:

  1. Insert the I/O expander

  2. Install I/O expander power

    • ground
    • power
    • capacitor
  3. Install I2C bus

    • SCL
    • SDA
    • pull-up resistors on SCL and SDA
  4. configure I2C address

  5. Assemble key matrix as shown in the picture.

  6. Connect I/O expander ports to matrix rows and columns

Sketch for split keyboard with I/O Expander

The keybrd_4_split_with_IOE_annotated.ino sketch explains how the I/O Expander works on a keyboard.

Creative Commons License
keybrd tutorial by Wolfram Volpi is licensed under a Creative Commons Attribution 4.0 International License.
Permissions beyond the scope of this license may be available at https://github.com/wolfv6/keybrd/issues/new.