Skip to the content
PCBKitNew board
2 layers118.1 × 43.2 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
118.1 × 43.2 mm
Copper layers
2
Thickness
1.6 mm
Parts
11
Nets
50
Pads
84
Tracks, vias
58, 0
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 118.1 × 43.2 mm with 11 parts on 50 nets, routed with 58 tracks and 0 vias.

It is built around the L7805. Its parts include 4 capacitors, 3 connectors, 2 ICs and 1 switch.

Main components

1

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

11
QtyValueFootprintReferences
2100nFCapacitor_THT:C_Disc_D4.7mm_W2.5mm_P5.00mmC2, C3
210uFCapacitor_THT:C_Radial_D4.0mm_H5.0mm_P1.50mmC1, C4
1Conn_02x08_Odd_Evenpico:pico_idc_connectorJ1
1L7805Connector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_VerticalU2
1LEDConnector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_VerticalLED
1SD_Modulepico:SD_ModuleJ2
1SW_SPDTConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalSW1
1Screw_Terminal_01x02TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_HorizontalJ3
1~pico:pico_2x20U1

Questions

How big is the Texteditor PCB?

It measures 118.1 × 43.2 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Texteditor use?

11 parts, built around the L7805. 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/rev0/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 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).

    17 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 layers40.6 × 110 mmEuropi surface mount, the printed circuit board in 3D

    Europi surface mount

    Allen-Synthesis/EuroPi

    EuroPi: A reprogrammable Eurorack module based on the Raspberry Pi Pico

    92 parts584CC0-1.0
  • 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 layers59.7 × 57.5 mmFunBox, the printed circuit board in 3D

    FunBox

    GuitarML/FunBox

    Stereo guitar pedal platform using Daisy Seed.

    61 parts289MIT
  • 2 layers90.8 × 35.6 mmERCF easy brd, the printed circuit board in 3D

    ERCF easy brd

    Tircown/ERCF-easy-brd

    More informations on how to reset for flashing:\ https://wiki.seeedstudio.com/Seeeduino-XIAO/#enter-bootloader-mode

    28 parts195GPL-3.0
  • 2 layers111.3 × 106.4 mmSuper Sixteen v1, the printed circuit board in 3D

    Super Sixteen v1

    matthewcieplak/super-sixteen

    Code and schematics for the Super Sixteen Eurorack sequencer

    141 parts171
  • 2 layers91.4 × 71.1 mmPico w rover, the printed circuit board in 3D

    Pico w rover

    NikodemBartnik/Mini-Mars-Rover

    Educational robotic platform made to look like a mini mars rover

    20 parts143MIT
  • 2 layers144.1 × 182.2 mmSHVC CPU-01, the printed circuit board in 3D

    SHVC CPU-01

    starlightk7/OpenSFC

    OSHW Reproduction Parts related to the Super Famicom / Super Nintendo game console

    498 parts114CERN-OHL-S-2.0
  • 2 layers106.1 × 155 mmMotherboard, the printed circuit board in 3D

    Motherboard

    Redherring32/OpenTendo-TopLoader

    An Open Source HardWare (OSHW) recreation of the 1993 toploading NES motherboard (Also known as NES-101)

    84 parts94