Skip to the content
PCBKitNew board
2 layers99.7 × 48.3 mmTexteditor, the printed circuit board in 3D

The Codex is an attempt at an open-source, distraction-free writing device inspired somewhat by the AlphaSmart Neo (at least the display was).

Size
99.7 × 48.3 mm
Copper layers
2
Thickness
1.6 mm
Parts
17
Nets
51
Pads
98
Tracks, vias
94, 7
Pours
1
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
3 Apr 2026
Updated
1 Aug 2026

Overview

Texteditor is an open-source printed circuit board by ajackson2681, from the ajackson2681/codex repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 99.7 × 48.3 mm with 17 parts on 51 nets, routed with 94 tracks and 7 vias.

It is built around the L7805 and BC547. Its parts include 8 connectors, 4 capacitors, 2 ICs, 1 resistor and 1 transistor.

Main components

2

README

README.md

Codex

The Codex is an attempt at an open-source, distraction-free writing device inspired somewhat by the AlphaSmart Neo (at least the display was). The Codex pairs a 40x4 character LCD with USB HID keyboard support, and SD card storage. For a more in-depth summary/breakdown, you can visit the page I have on my website: Codex Web Page.


Project Status

Codex is under active development. Current state:

Working:

  • LCD driver
    • Originally used a derivation of the Arduino LiquidCrystal library (noted below under Libraries Used and Acknowledgements). I have since written a custom one from the ground up specific for this project.
  • USB HID keyboard input via TinyUSB
  • Gap buffer with insert/delete/backspace
  • Character, word, line, frame, and document navigation
  • Frame buffer rendering (LCD stays in sync with cursor position)
  • SD card read/write (FatFs via no-OS-FatFS-SD-SPI-RPi-Pico)
  • Document save/load
  • File selection on boot
  • Tab handling (inserted as two spaces)
  • Home/End at line, frame, and document scope
  • Card detect

In progress / planned:

  • Keyboard shortcut finalization
  • Save new document/give file name
  • PWM backlight brightness control (potentiometer on one of the analog pins + transistor)
  • Rev 2+ PCB: LiPo + boost converter, switchable external/battery power input, finalized sockets for ribbon cables/harnesses
  • Final Enclosure (currently a wedge shape)
  • Documentation: build guide, BOM, update procedure, etc.

Maybes

  • Ability to change file after startup

Explicitly out of scope (for now):

  • Text selection / clipboard
  • Undo/redo
  • Rich text or formatting of any kind

Hardware

Bill of Materials (high level)

ComponentNotes
Raspberry Pi Pico (RP2040)Mounted via socket currently, likely castellated edge pads on the final PCB
40x4 ST7066U character LCDDual controller (EN1/EN2), 4-bit mode
USB OTG converterUSB port for keyboard
SD card socketSPI mode
Slide potentiometers (x2)Contrast (to LCD V0) and brightness (to analog GPIO)
BC547 NPN transistorPWM backlight switching
TP61090 boost converterLiPo → 5V (Rev 2+)
MCP73871 charge controllerLiPo charge circuit (Rev 2+)
L7805 linear regulatorBench/external power path (Rev0-Rev2, won't be on Rev3)
SPDT switchSelects external 5V vs. LiPo/boost power source (Rev2 only), acts as power switch (Rev0 & Rev1)
LiPo cell(Rev 2+)

PCB Revisions

RevPurposeStatus
BreadboardInitial validation: LCD, USB host, SD cardDone
Rev 0First PCB, puts the breadboard on a dedicated PCB, adds a power switch, adds filtering capacitorsDone
Rev 1Fixes mistakes from Rev0. Sill uses socketed footprints for SD card and Pico. Adds breakout pins for contrast/brightness potentiometers, adds PWM backlight transistor.Validating
Rev 2Dedicated SD card slot, finalized sockets for IDC, potentiometers, and LED power. Pico footprint will allow sockets or solder directly via castellated holes. 5v linear regulator will remain, with an optional switch for swapping to using a 5v direct power source (planned as a Powerboost 1000 module).Designing
Rev 3Removal of 5v linear regulator. Move to all SMD components for assembly by fab house.Planned
???Anything beyond Rev3 will only happen if I make dumb mistakes (and I probably will).

Firmware

Built with the Raspberry Pi Pico SDK

Libraries used

  • Originally used a derivation of LiquidCrystal440, which is in turn a derivation of the Original Arduino Library.
    • Now uses a driver that is purpose-written for this device
  • TinyUSB - USB HID host
  • no-OS-FatFS-SD-SPI-RPi-Pico - SD card / FAT filesystem (submodule)

Recovery

If a firmware update fails or the device won't boot, hold BOOTSEL while connecting the Pico to a computer via USB. It will appear as a USB mass storage device. Then drag and drop a known-good .uf2 to restore it. This is a hardware bootloader built into the RP2040 and cannot be bricked by firmware alone.


Enclosure

Designed in FreeCAD. It has a sort of wedge factor with the 40x4 LCD forming most of the angled top face. Slide potentiometers for brightness and contrast are mounted on the front, with the the keyboard USB port and SD card slot to the right of those. FCStd files are located 3dmodels/ (I'm just committing the whole blob since I don't really know a better way to do it for freecad files in git).

enclosure


Keyboard Compatibility

The Codex should work with any standard USB HID keyboard, both wired or via a wireless USB dongle. The Codex does not support bluetooth keyboards.

Recommended

For a compact keyboard, a 65% or 75% layout is recommended for dedicated Home/End/Page Up/Page Down/Arrow keys without needing Fn combinations. Otherwise, pretty much whatever you're most comfortable with. I use an Epomaker TH80SE, which is a 75% keyboard. However, that doesn't have a dedicated "End" key (it's FN+PgDown). Something like the Epomaker x Aula F65 or Epomaker x Aula F75 could maybe be good choices that include all the buttons.


Keyboard Shortcuts (WIP)

ShortcutPrimary ActionSecondary Action
Arrow keysMove cursor (character / line)
Ctrl + ←/→Move by word
Ctrl + ↑/↓Jump to start/end of frameShift view by one full frame if at frame boundaries
Page Up/Page DownShift view by one full frame
Home / EndStart/end of current line
Ctrl + Home/EndJump to start/end of current frame
Ctrl + Shift + Home/EndJump to start/end of document
TabInsert two spaces
Ctrl + SSave current document to SD card
Ctrl + Shift + IOpen document info (filename, size, etc)

License

The Codex uses a split-license approach:

  • All non-third-party code: GPL v3
  • Hardware (pcb/) and Enclosures (3dmodels/): CERN-OHL-S v2

All third-party libraries retain their original licensing:

  • TinyUSB: MIT
  • no-OS-FatFS-SD-SPI-RPi-Pico Apache 2.0

See the LICENSE file in each directory for full text.


Acknowledgments


Contributing

The Codex is a work in progress and a personal project, but issues, ideas, and pull requests are welcome. If you build one, I'd love to hear about it.

Parts

17
QtyValueFootprintReferences
2100nFCapacitor_THT:C_Disc_D4.7mm_W2.5mm_P5.00mmC2, C3
210uFCapacitor_THT:C_Radial_D4.0mm_H5.0mm_P1.50mmC1, C4
2Conn_01x03Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ7, J8
11KResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_HorizontalR1
1BC547Package_TO_SOT_THT:TO-92_InlineQ1
1Conn_02x08_Odd_Evenpico:pico_idc_connectorJ1
1Contrast BreakoutConnector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_VerticalJ5
1L7805Connector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_VerticalU2
1LEDConnector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_VerticalJ4
1LED PotentiometerConnector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_VerticalJ6
1Power In (7v-20v)TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_HorizontalJ3
1SD_Modulepico:SD_ModuleJ2
1SW_SPDTConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalSW1
1~pico:pico_2x20U1

Questions

How big is the Texteditor PCB?

It measures 99.7 × 48.3 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Texteditor use?

17 parts, built around the L7805 and BC547. 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 Texteditor KiCad files?

From the ajackson2681/codex repository on GitHub, at the commit this page was made from: the board is pcb/rev1/texteditor.kicad_pcb and its schematic pcb/pot_module/potentiometer.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Texteditor design in my own project?

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

More from ajackson2681/codex

4
  • 2 layers99.7 × 48.3 mmTexteditor, the printed circuit board in 3D

    Texteditor

    ajackson2681/codex

    The Codex is an attempt at an open-source, distraction-free writing device inspired somewhat by the AlphaSmart Neo (at least the display was).

    18 parts1GPL-3.0
  • 2 layers118.1 × 43.2 mmTexteditor, the printed circuit board in 3D

    Texteditor

    ajackson2681/codex

    The Codex is an attempt at an open-source, distraction-free writing device inspired somewhat by the AlphaSmart Neo (at least the display was).

    11 parts1GPL-3.0
  • 2 layers75.5 × 20 mmPotentiometer, the printed circuit board in 3D

    Potentiometer

    ajackson2681/codex

    The Codex is an attempt at an open-source, distraction-free writing device inspired somewhat by the AlphaSmart Neo (at least the display was).

    6 parts1GPL-3.0
  • 2 layers26.3 × 18 mmUsb daughter, the printed circuit board in 3D

    Usb daughter

    ajackson2681/codex

    The Codex is an attempt at an open-source, distraction-free writing device inspired somewhat by the AlphaSmart Neo (at least the display was).

    6 parts1GPL-3.0

Similar boards

  • 2 layers132.1 × 45.7 mmIPoS, the printed circuit board in 3D

    IPoS

    peterheinrich/InternetOverSpaghetti

    Transmitting IP packages over a pair of spaghetti thus demonstrating how media independent IP really is.

    42 parts342
  • 2 layers167.8 × 200.6 mmRandom Jazz Generator, the printed circuit board in 3D

    Random Jazz Generator

    telec16/modular-synth

    Little side project, don't expect much updates.

    132 parts16
  • 2 layers117.5 × 56.4 mmDIY Oxygen Analyzer, the printed circuit board in 3D

    DIY Oxygen Analyzer

    ashishkumarpardeshi/DIY_Oxygen_Analyzer

    This repository is for Design and Development of DIY Oxygen Analyzer Prototyping Board, Writing Code and Calibration.

    42 parts11
  • 2 layers100 × 50 mmC6021light, the printed circuit board in 3D

    C6021light

    deltaphi/c6021light

    Feature-compact DIY version of the c6021

    79 parts5GPL-3.0
  • 2 layers259.7 × 159.5 mmBLDC inverter, the printed circuit board in 3D

    BLDC inverter

    vladBaciu/Sensorless-BLDC-HW

    Bachelor thesis project

    104 parts3
  • 2 layers50.8 × 94 mmClockdivider, the printed circuit board in 3D

    Clockdivider

    bmatthieu3/clockdivider

    A simple clock divider module made with an Atmega328p

    41 parts2MIT
  • 2 layers55 × 485 mmFg lampe, the printed circuit board in 3D

    Fg lampe

    devtal-de/fg_lampe

    181 parts1