3.3 KiB
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.
There is a total of 4 matrix rows, each on a breadboard power rail.
The right matrix is connected to a microcontroller. The left matrix is 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:
-
Insert the I/O expander
-
Install I/O expander power
- ground
- power
- capacitor
- Install I2C bus
- SCL
- SDA
- pull-up resistors on SCL and SDA
-
configure I2C address
-
Assemble key matrix as shown in the picture.
-
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.
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.