Skip to content

Jim-23/monbit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Monbit

A tiny ESP32-based digital monster pet with an e-ink display that evolves over time based on care, sleep cycles, and randomness.

Monbit front panel

Motivation

Monbit is a personal project created to learn embedded development, hardware prototyping, and product design.

The goal is not only to create a device, but also to explore the full product development process. From firmware and electronics to CAD design and physical prototype.

I want to document the entire journey, sharing both successes and failures, to create a resource for others interested in similar projects.


Documentation

Current Progress

Current Version: v0.0.4 (2026-07-13)

Firmware

  • ESP32 bring-up
  • Project architecture (modular source files)
  • E-Ink display communication
  • Basic UI rendering
  • Partial display refresh
  • 3-button input system
  • Button debouncing
  • Monster state system
  • Monster actions (Feed / Play / Sleep)
  • Automatic monster tick system
  • Persistent storage (save/load)
  • Audio subsystem
  • Menu system
  • Battery management
  • Deep sleep
  • Sprite rendering

Hardware

  • Components selected
  • ESP32 tested
  • E-Ink display tested
  • Buttons tested (breadboard)
  • First enclosure front prototype designed (front lid, far from final)
  • Audio amplifier connected
  • Speaker connected
  • Battery integrated
  • Charging module integrated
  • Power switch integrated
  • Accelerometer integrated
  • Permanent wiring
  • First fully assembled prototype
  • Final enclosure designed

Gameplay

  • Basic monster stats
  • Monster actions
  • Time-based stat changes
  • Beep when button is pressed
  • Naming the monster
  • Monster sprite and animations
  • Monster emotions
  • Growth/aging system
  • Evolution
  • Random events
  • Game balancing

Documentation

  • README
  • Roadmap
  • Devlog
  • Project versioning
  • Wiring diagrams
  • Hardware BOM
  • Build instructions

Milestones

v0.0.1 — Hello Hardware

Completed:

  • ESP32-C3 configured with PlatformIO
  • USB serial debugging enabled
  • E-Ink display connected and initialised
  • First successful display render (MONBIT v0.0.1)

Update:

  • basic GUI setup
  • connected first button

v0.0.2 — Buttons

Completed:

  • Buttons are detected and affect the stats
    • LEFT button => eat
    • MIDDLE button => play
    • RIGHT button => sleep
  • Screen has two options for refresh - full or partial
  • When the button is pressed, the screen refreshes partially (without the big blink)
  • Happiness renamed to Fun

v0.0.3 - Storage

Completed:

  • Every tick (currently 10 seconds), the hunger, fun and energy are changed by 1
  • Every time the button is pressed, the current state of the Monster is saved to Flash
  • When rebooted, the data is loaded

v0.0.4 - Audio

Completed:

  • Audio subsystem added
  • Beep when button is pressed

Hardware

Core components:

  • ESP32-C3 SuperMini ?

  • WeAct 1.54" E-Ink Display

  • 500mAh LiPo Battery

  • TP4056 USB-C Charging Module ?

  • Tactile Buttons

  • MAX98357A Audio Amplifier

  • Speaker

  • MPU6050 Accelerometer

Software

Development environment:

  • C++
  • Arduino Framework
  • PlatformIO
  • Visual Studio Code

Libraries:

  • GxEPD2
  • FreeMonoBold0pt7bt
  • i2s

Gallery

Wiring & Setup

ESP32 to e-ink display wiring Display plugged in

Display & GUI

First screen text render First UI rendered on the e-ink display

GUI update

Buttons

First button wired Display refreshing on button click

Feed button - hungry state Feed button - less hungry state

Three buttons connected

Enclosure

Multiple front panel iterations

First front panel - front First front panel - back

Front panel - front Front panel - back

Repository Structure

monbit/
├── firmware/     # ESP32 firmware (PlatformIO)
│   ├── include/
│   ├── lib/
│   ├── src/
│   ├── test/
│   └── platformio.ini
├── hardware/     # Hardware notes & measurements
│   ├── hardware_notes.md
│   └── measurements.md
├── design/       # CAD files (enclosure STLs)
├── docs/         # Design notes
│   ├── game_design.md
│   └── ui_design.md
├── photos/       # Build & progress photos
├── DEVLOG.md
├── ROADMAP.md
├── LICENSE
└── README.md

About

A tiny ESP32-based digital monster pet with an e-ink display that evolves over time based on care, sleep cycles, and randomness.

Resources

License

Stars

1 star

Watchers

1 watching

Forks

Packages

 
 
 

Contributors

Languages