Skip to the content
PCBKitNew board
2 layers87.1 × 78.7 mmSoftKeyboardController, the printed circuit board in 3D

This README is also used as the main page for the Doxygen-generated documentation. The remainder of this file contains project details, diagrams, and usage information. # PlatformSoftKeyboardControl

Size
87.1 × 78.7 mm
Copper layers
2
Thickness
1.6 mm
Parts
52
Nets
96
Pads
279
Tracks, vias
815, 86
Pours
5
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
26 Sep 2025
Updated
11 Dec 2025

Overview

SoftKeyboardController is an open-source printed circuit board by Setting-Dawn, from the Setting-Dawn/PlatformSoftKeyboardControl repository on GitHub, published under the MIT licence. It is a 2-layer board of 87.1 × 78.7 mm with 52 parts on 96 nets, routed with 815 tracks and 86 vias.

It is built around the DRV8848PWP, PCA9956BTWY and CD74HC4067SM96. Its parts include 14 resistors, 10 connectors, 6 capacitors and 6 ICs. It belongs with the ESP8266 boards of this library.

Main components

3

README

README.md

PlatformSoftKeyboardControl

Control a 2 Degree of Freedom Platform using a soft sensing sheet.

This README is also used as the main page for the Doxygen-generated documentation. The remainder of this file contains project details, diagrams, and usage information.

PlatformSoftKeyboardControl

Project Goal:

Control a 2 Degree of Freedom Platform using a custom piezoresistive sensing sheet.

Mechanical Considerations

The balancing table is controlled by two motors connected to the table's surface via a strut with two ball joints that control rotation about perpendicular axes.

Lever Arm Powered By Motor

Software Design

Task Diagram

ESP32 Code Task Diagram

Webserver Task

The ESP32 hosts its own wifi on which it hosts a webpage on 192.168.5.1 that communicates the recorded data in csv forma to either the user or an external program that interprets it. The functionality of this task is based on an example by A. Sinha.

Webserver Task State Diagram

Motor Control Task

The motor control task awaits confirmation that the IMU has initialized and then begins operating the motor PIDs according to the setpoint stored in the xBar and yBar shares.

Motor Control State Diagram

Material Reading Task

In order to perform EIT analysis, a series of voltage differences needs to be measured. For one complete measurement, one electrode is grounded while its neighboring electrode is supplied with a current while the remaining electrodes are used to measure the voltage differences. This is then repeated for each electrode. This task is responsible for taking those individual datapoints and reporting the resulting 208 values to the webpage task to be published in csv format.

Material Reading State Diagram

PyEIT interpretation

A python script using the pyEIT module is able to read the data hosted by the webpage and analyze any changes in resistivity of the material. The resulting centroid is then passed back to the webpage using url arguments.

Other Code Used

  • Liu, et al:
  • bryanduxbury:
  • yuskegoto:
  • spluttflob:
  • madhephaestus:

Parts

52
QtyValueFootprintReferences
11TestPointTestPoint:TestPoint_Loop_D1.80mm_Drill1.0mm_BeadedTP1, TP2, TP3, TP4, TP5, TP6, TP7, TP8, TP9, TP10, TP11
51kΩResistor_SMD:R_0805_2012MetricR8, R9, R10, R11, R14
4MountingHoleMountingHole:MountingHole_2.5mmH1, H2, H3, H4
30.1μFCapacitor_SMD:C_0805_2012MetricC2, C4, C5
310kΩResistor_SMD:R_0805_2012MetricR1, R5, R13
24.7kΩResistor_SMD:R_0805_2012MetricR2, R6
2500mΩResistor_SMD:R_0805_2012MetricR3, R4
2ADC128D818Package_SO:TSSOP-16_4.4x5mm_P0.65mmU2, U3
2Conn_01x08_SocketConnector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_VerticalJ7, J8
2Conn_01x12_SocketConnector_PinSocket_2.54mm:PinSocket_1x12_P2.54mm_VerticalJ5, J6
1100Resistor_SMD:R_0805_2012MetricR12
110μFCapacitor_SMD:C_0805_2012MetricC3
12.2μFCapacitor_SMD:C_0805_2012MetricC6
13.3kΩResistor_SMD:R_0805_2012MetricR7
1470μFCapacitor_THT:CP_Radial_D10.0mm_P5.00mmC1
1Barrel_Jack_SwitchConnector_BarrelJack:BarrelJack_CUI_PJ-102AH_HorizontalJ1
1CD74HC4067SMPackage_SO:SSOP-24_5.3x8.2mm_P0.65mmU5
1DRV8848Package_SO:TSSOP-16-1EP_4.4x5mm_P0.65mmU6
1EXT IMU ConnectionConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ2
1Motor 1TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_HorizontalJ3
1Motor 2TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_HorizontalJ4
1Motor Encoder 1Connector_Molex:Molex_KK-396_A-41792-0005_1x05_P3.96mm_HorizontalJ10
1Motor Encoder 2Connector_Molex:Molex_KK-396_A-41792-0005_1x05_P3.96mm_HorizontalJ9
1NodeMCUME507F24:ESP32_NodeMCU_KeeYeesESP1
1PCA9956BTWYSamacSys_Parts:SOP50P640X110-39NIC1
1TL071Package_TO_SOT_SMD:SOT-23-5U4

Questions

How big is the SoftKeyboardController PCB?

It measures 87.1 × 78.7 mm and has 2 copper layers, 1.6 mm thick.

What parts does the SoftKeyboardController use?

52 parts, built around the DRV8848PWP, PCA9956BTWY and CD74HC4067SM96. 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 SoftKeyboardController KiCad files?

From the Setting-Dawn/PlatformSoftKeyboardControl repository on GitHub, at the commit this page was made from: the board is hardware/SoftKeyboardController.kicad_pcb and its schematic hardware/SoftKeyboardController.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the SoftKeyboardController design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 4 layers213.7 × 140.6 mmMSCKee, the printed circuit board in 3D

    MSCKee

    Creative-Difficulty/mSCKee

    Split Keyboard for Hack Club Outpost with dual light sensors, per-key addressable backlighting, integrated RP2040 MCU

    205 parts1
  • 2 layers297 × 75 mm8x8, the printed circuit board in 3D

    8x8

    matiyau/screen_antenna

    Screen Antenna is a Visible Light Communication (VLC) system that integrates data transmission and reception, with the conventional pixel display capability of RGB LEDs.

    250 parts
  • 2 layers32 × 20 mmAntdrive, the printed circuit board in 3D

    Antdrive

    edatki/Antdrive

    Motor driver for antweight combat robots

    30 parts2MIT
  • 4 layers85 × 68 mmFMRC, the printed circuit board in 3D

    FMRC

    svenssonjoel/FMRC

    Four Motor Robot Controller

    107 parts1GPL-3.0
  • 2 layers53.3 × 71.1 mmEquatorial mount, the printed circuit board in 3D

    Equatorial mount

    JWehle/equatorial-mount

    Driver board for an dual stepper motors in an equatorial mount for astrophotography.

    27 partsApache-2.0
  • 4 layers65 × 56.5 mmPAFT pcbs, the printed circuit board in 3D

    PAFT pcbs

    pritaljariwala/PAFT_pcbs

    41 parts
  • 2 layers121.9 × 95.9 mmECE445-Wattbalance PCB, the printed circuit board in 3D

    ECE445-Wattbalance PCB

    Royalflamejlh/WattBalance

    A small Kibble Watt Balance made to demonstrating an accurate alternative to scales.

    80 parts