• From Simulation to Real Hardware: Dual E-Paper Bring-Up

    TheCatwoman2 hours ago 0 comments

    Before committing to the custom round PCBs, the entire UI was built and tested in simulation first — two virtual e-paper displays, button navigation, page-turn logic, and even a fake boot sequence, all running on a simulated ESP32. This let the software architecture get worked out before any board space or fabrication cost was on the line.

    From there, the project moved to a breadboard prototype: a standard ESP32 dev board wired to two physical e-paper displays, used purely to validate that the real hardware could do what the simulation promised.

    ## Key challenge: driving two e-paper displays from one ESP32

    Both displays share the same SPI bus, which meant getting independent chip-select (CS) lines right for each panel was critical — without careful CS management, the two displays would contend for the bus and fail to update reliably. Getting the timing and wiring dialed in took a fair amount of trial and error, but once solved, it unlocked reliable independent updates on both screens simultaneously.

    With that working, the rest of the UI — file index, home screen, page rendering — came together quickly on the breadboard setup.

    ## Milestone: first real hardware boot

    Seeing "SHELL:READER" actually render on physical e-ink for the first time — after weeks of only seeing it in simulation — confirmed the core software and multi-display driving approach both work as designed.

    **Next step:** the custom round PCBs are heading to fabrication now that the software and dual-display approach are validated on standard hardware. Big thanks to [PCBWay](https://www.pcbway.com) for sponsoring fabrication on this one — odd-shaped, round boards aren't trivial to produce, and having a manufacturing partner who can actually turn them around has been key to getting this off of a breadboard and into real hardware.

    ---

    Also following this build over on LinkedIn: https://www.linkedin.com/feed/update/urn:li:activity:7501341903909638145/

  • Okay so new software and like pretty much a whole...

    TheCatwoman10/12/2025 at 05:47 0 comments

    ┌─────────────┐ ┌─────────────┐
    │                                    │ │                                    │
    │ Left Screen                │ │Right Screen               │
    │   (400x300)                │ │  (400x300)                 │
    │                                    │ │                                    │
    └─────────────┘ └─────────────┘
         Hinge in the middle

    new thing

    okay so i scrapped the old news.... time to start over from the ashes.

    So i went and looked at pocketMage and got some ideas about software.  Still a long road ahead but this is the current stuff.  working on gettting the protoype wired up but so far this all builds at least lol... nothing works til you see it working 

    if anyone has any cool ideas id love to hear them.

    also feel free to yell at me about my stupid code

    ShellPrototype/
    ├── src/                    # Main application source code
    │   ├── main_simple.cpp     # Simplified working main application
    │   ├── main.cpp           # Full-featured main (work in progress)
    │   ├── globals.cpp        # Global variables and state
    │   ├── HOME.cpp           # Home screen application
    │   ├── TXT.cpp            # Text editor application
    │   ├── SETTINGS.cpp       # Settings application
    │   ├── TASKS.cpp          # Task manager application
    │   ├── USB.cpp            # USB functionality
    │   ├── LEXICON.cpp        # Dictionary/reference application
    │   ├── CALENDAR.cpp       # Calendar application
    │   ├── sysFunc.cpp        # System utility functions
    │   ├── einkFunc.cpp       # E-paper display functions
    │   ├── ShellPhone.cpp     # Main application coordinator
    │   └── assets.c           # Graphics assets and bitmaps
    ├── tests/                  # Component test files
    │   ├── test_clamshell_display.cpp  # Dual display clamshell demo
    │   ├── test_i2c_scan.cpp          # I2C device detection
    │   ├── test_keypad.cpp            # Keypad functionality test
    │   ├── test_touch.cpp             # Touch sensor test
    │   ├── test_rtc.cpp               # Real-time clock test
    │   ├── test_sdcard.cpp            # SD card functionality test
    │   └── test_battery.cpp           # Battery monitoring test
    ├── include/               # Header files
    │   ├── config.h          # Pin definitions and configuration
    │   ├── globals.h         # Global variable declarations
    │   ├── assets.h       ...

    Read more »