

Circuit board and circuitpython code for a foot-keyboard of arbitrary size
- Size
- 50 × 50 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 29
- Nets
- 17
- Pads
- 118
- Tracks, vias
- 189, 50
- Pours
- 4
- Routed
- Yes
- KiCad
- KiCad 6 (file 20211014)
- Created
- 3 Dec 2022
- Updated
- 4 Dec 2022
Overview
Octochat is an open-source printed circuit board by accelerando-consulting, from the accelerando-consulting/aio-octochat repository on GitHub. It is a 2-layer board of 50 × 50 mm with 29 parts on 17 nets, routed with 189 tracks and 50 vias.
It is built around the PCF8574T. Its parts include 9 connectors, 4 resistors, 1 IC, 1 diode and 1 switch. It belongs with the keyboards and input boards of this library.
Main components
1README
README.mdOctoChat - a tileable foot keyboard for people or pets
This project is a circuit board that allows one to construct a mechanical keyboard as large or as small as you like. From a single key, to potentially 64 keys.
The keyboard connects via I2C - it can connect direct to a raspberry pi, or to a small microcontroller. ESP32, ESP8266 and Nordic NRF52 are good choices.
If you have a board that runs circuitpython such as the Adafruit feather or one of Accelerando's Redsoil or Hailstone boards you can create a USB or Bluetooth keyboard with the included CircuitPython code.
Accelerando's Stacx project (for the Ardiuino framework) also supports these keys.
How it works
The PCF8574 IO expander is used. This chip has 8 pins, each key uses two pins. A four key board can be made with one octochat fitted with a PCF8574 and three more octochats with no chip. Each active octochat can control three other passive octochats. Connections can be chained, so you can add another active octochat into your board. The PCF8574 supports 16 addresses, so you can have up to 16 active keys, plus up to 48 passive keys.
Each key has one keyswith and one LED. Program the IO Expander's register with bit pattern 0xFF. When a key is pressed, that bit will read zero. To light a LED, program the corresponding bit to a zero.
The outputs of the PCF8574 are arranged thusly
- D0 - the key on this module (pulled high, low when pressed)
- D1 - the LED on this module (sink mode, program output low to light the LED)
- D2 - the key on passive module 2
- D3 - the LED on passive module 2
- D4 - the key on passive module 3
- D5 - the LED on passive module 3
- D6 - the key on passive module 4
- D7 - the LED on passive module 4
Each module has two connectors for each passive module, one at 90 degrees and one at 45 degrees. You should use one or the other, not both. All the ribbon connectors also relay the I2C SCL and SDA lines, so you can site a new active module anywhere you choose.
What can I do with it
Make a soundboard for your cat, or dog.
Add foot controls to your PC.
Create assistive tech for the disabled.
Control machinery (I use one to control vacuum pickup and fume extraction at my soldering station).
Parts
29| Qty | Value | Footprint | References |
|---|---|---|---|
| 8 | MountingHole | MountingHole:MountingHole_2.1mm | H1, H2, H3, H4, H5, H6, H7, H8 |
| 2 | 3k3 | Resistor_SMD:R_0805_2012Metric | R3, R4 |
| 2 | LOGO | LOGO | G***, G*** |
| 1 | 100k | Resistor_SMD:R_0805_2012Metric | R1 |
| 1 | 1206 | LED_SMD:LED_1206_3216Metric | D1 |
| 1 | 220R | Resistor_SMD:R_0805_2012Metric | R2 |
| 1 | A0 | Jumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm | JP1 |
| 1 | A1 | Jumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm | JP2 |
| 1 | A2 | Jumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm | JP3 |
| 1 | Cherry MX | Kailh:SW_MX | SW1 |
| 1 | IN_A | Connector_FFC-FPC:Molex_200528-0060_1x06-1MP_P1.00mm_Horizontal | J1 |
| 1 | IN_B | Connector_FFC-FPC:Molex_200528-0060_1x06-1MP_P1.00mm_Horizontal | J2 |
| 1 | OUT_1A | Connector_FFC-FPC:Molex_200528-0060_1x06-1MP_P1.00mm_Horizontal | J3 |
| 1 | OUT_1B | Connector_FFC-FPC:Molex_200528-0060_1x06-1MP_P1.00mm_Horizontal | J4 |
| 1 | OUT_2A | Connector_FFC-FPC:Molex_200528-0060_1x06-1MP_P1.00mm_Horizontal | J5 |
| 1 | OUT_2B | Connector_FFC-FPC:Molex_200528-0060_1x06-1MP_P1.00mm_Horizontal | J6 |
| 1 | OUT_3A | Connector_FFC-FPC:Molex_200528-0060_1x06-1MP_P1.00mm_Horizontal | J7 |
| 1 | OUT_3B | Connector_FFC-FPC:Molex_200528-0060_1x06-1MP_P1.00mm_Horizontal | J8 |
| 1 | PCF8574 | Package_SO:SOIC-16W_7.5x10.3mm_P1.27mm | U1 |
| 1 | QWIIC | Connector_JST:JST_SH_SM04B-SRSS-TB_1x04-1MP_P1.00mm_Horizontal | J9 |
Similar boards
- 2 layers82.6 × 79.5 mm

- 2 layers100 × 100 mm

- 2 layers100 × 45 mm

- 2 layers148.6 × 192.2 mm

Badge
NuttyShell/NuttyBadge
NuttyBadge: A NuttyShell crafted multi-tool. Opensourced Hardawre and Software
169 parts31GPL-3.0 - 2 layers139.7 × 88.9 mm

- 2 layers83 × 35 mm

- 2 layers45.7 × 67.3 mm

- 2 layers65 × 120 mm

Nomad
0Zane/Nomad
One Adventure - One device,Nomad is a custom outdoor mobile device built around the ESP32-S3. It is designed for explorers, researchers, and outdoor enthusiasts who need reliable positioning, long-range communication…
81 parts17MIT
Questions
How big is the Octochat PCB?
It measures 50 × 50 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Octochat use?
29 parts, built around the PCF8574T. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Octochat KiCad files?
From the accelerando-consulting/aio-octochat repository on GitHub, at the commit this page was made from: the board is octochat.kicad_pcb and its schematic octochat.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Octochat design in my own project?
Its repository states no licence, so its author keeps all rights: ask accelerando-consulting before reusing the design.