Archived
1
0
This repo is archived. You can view files and clone it, but cannot push or open issues or pull requests.
keybrd/tutorials/tutorial_4c_split_keyboard_with_IOE.md

3.2 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. breadboard keyboard with 2 rows and 4 columns of keys

The breadboard's four bus strips are used as rows. Two rows (blue buses) are connected to the microcontroller. Two rows (red buses) are connected to the I/O expander.

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

The MCP23S17 communicates via SPI protocol, where Teensy LC is the master, and MCP23S17 is slave. The Teensy LC and MCP23S17 are connected via 6 jumper wires:

CONNECTION Teensy LC MCP23S17
ground GND VSS
power 3.3v VDD
Serial Clock SCK0 SCK
Master Out, Slave In MOSI0 SI
Master In, Slave Out MISO0 SO
Chip Select CS0 /CS

A decoupling capacitor suppresses high-frequency noise from the power supply.

MCP23S17's I/O expander address is configured by hardware pins. The MCP23S17 with all address pins grounded has an device address of 0x20.

The MCP23S17's /RESET pin is connected to VDD.

The MCP23S17 I/O expander has two ports. Each port has eight pins. Port B is connected to the matrix's rows. Port A is connected to the matrix's columns.

Building a split keyboard with I/O Expander

Starting with the basic breadboard keyboard described in tutorial_1_breadboard_keyboard.md, add parts as described above. Refer to the MCP23S17 datasheet to locate its pins.

Sketch for split keyboard with I/O Expander

The keybrd_4c_split_with_IOE.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.