ACC:Xess Printer Monitor
Wemos D1 mini (ESP8266) + SH1106 OLED Klipper/Moonraker Display

A compact, feature‑rich external monitor for Klipper / Moonraker printers.
Displays temperatures, status, progress, ETA, layer information, fan speeds, and more — all on a 1.3" SH1106 OLED driven by a Wemos D1 mini (ESP8266).

This project includes a custom 3D‑printed enclosure designed to house the Wemos D1 and the OLED-display. The enclosure is available in two variants: one slightly over‑engineered (Type A), and one streamlined version without unnecessary features (Type B).


🚀 Quickstart

    Download the firmware and open it in Arduino IDE

    Install the ESP8266 board package

    Install required libraries: ArduinoJson, Adafruit GFX, Adafruit SH110X

    Edit WiFi credentials + Moonraker IP in the .ino file

    Wire the OLED: SDA → D2, SCL → D1

    Select board: LOLIN(WEMOS) D1 R2 & mini

    Upload the firmware

    Power the monitor — it will connect automatically and begin displaying data


🖨️ Printer Compatibility

(Including Creality K1 Requirements)

The ACC:Xess Printer Monitor was originally developed for the Creality K1 series (see important notes regarding K1 compatibility), but it works seamlessly with any 3D printer running Klipper together with Moonraker.

    Creality K1 / K1 Max

    Any DIY Klipper machine

    Any printer exposing standard Moonraker API endpoints

Important for Creality K1 / K1 Max users

Creality K1 printers do not include Moonraker by default.
To use this monitor with a K1 or K1 Max, the printer must be:

    Rooted (root access enabled)

    Running Moonraker

Once Moonraker is installed, the K1 behaves like any standard Klipper printer, and the monitor works out‑of‑the‑box.
After Moonraker is installed:

    The monitor connects directly to the printer’s Moonraker API

    All features (status, ETA, layers, fans, etc.) work normally


🔌 Wiring (Connections)

The ACC:Xess Printer Monitor uses a Wemos D1 mini (ESP8266) and a 1.3" SH1106 OLED display.
The display communicates over I2C, requiring only four wires.

Notes

    The SH1106 OLED must be powered from 3.3V, not 5V

    Typical I2C address: 0x3C

    No resistors or level shifters required

    Keep I2C wires short for best stability


Wiring diagram

Wemos D1 mini       SH1106 OLED
--------------------------------
3V3  --------------> VCC
GND  --------------> GND
D1   --------------> SCL
D2   --------------> SDA


⭐ Features

    Real‑time printer status (Ready, Idle, Preparing, Printing, Paused, Cooling, Finished)

    Smooth progress bar with Fluidd‑style smoothing

    Accurate ETA even without slicer metadata

    Temperature graph (hotend + bed)

    Fan speed overview

    File information with scrolling long filenames

    Automatic page rotation

    Filament runout alert mode


📚 Required Libraries

Install via Arduino IDE → Tools → Manage Libraries:

    ArduinoJson (6.x)

    Adafruit GFX Library

    Adafruit SH110X

Included automatically with the ESP8266 package:

    ESP8266WiFi

    ESP8266HTTPClient

    Wire (I2C)


🛠️ Install ESP8266 Board Package

    Open Arduino IDE

    Go to File → Preferences

    Add this URL under Additional Boards Manager URLs:
    http://arduino.esp8266.com/stable/package_esp8266com_index.json

    Tools → Board → Boards Manager

    Search for ESP8266

    Install esp8266 by ESP8266 Community


🌐 Configure WiFi and Moonraker IP

Edit these lines in the .ino file:
cpp

const char* ssid     = "YourWiFiName";
const char* password = "YourWiFiPassword";
const String moonrakerHost = "http://192.168.x.x:7125";

Notes

    ESP8266 supports 2.4 GHz WiFi only

    Moonraker typically runs on port 7125


⬆️ Uploading to Wemos D1 mini

    Tools → Board → LOLIN(WEMOS) D1 R2 & mini

    Tools → Port → select the Wemos/CH340 device

    Recommended settings:

        Flash Size: 4MB (FS:none)

        CPU Frequency: 80 MHz

        Upload Speed: 921600 or 115200

    Upload using Sketch → Upload or Ctrl + U


🔄 First Startup

On boot, the monitor will:

    Show boot animation

    Connect to WiFi

    Display its own IP address

    Connect to Moonraker

    Begin monitoring


📺 Display Pages

    Temperatures

    Status + progress bar

    Time (elapsed + ETA)

    Temperature graph

    Fan speeds

    File information (filename, object height, total layers)

    Filament Runout alert


🟢 Status Modes

State		Meaning

Ready		Printer idle and cold
Idle		Heating or moving
Preparing	File loaded
Printing	Active print
Paused		Print paused
Cooling		Print finished / cooling nozzle
Finished	Print complete and nozzle cooled


🧰 Troubleshooting

Uploading issues

    Ensure the USB cable supports data transfer

    Avoid USB hubs during flashing

    Hold the BOOT button (if available) when connecting

    Verify the correct serial port is selected

WiFi issues

    Check SSID/password

    Ensure 2.4 GHz WiFi

Moonraker issues

    Verify the printer’s IP

    Ensure Moonraker is running

    Test in a browser:
    http://<printer-ip>:7125/printer/info

OLED issues

    Check wiring

    Confirm the display is SH1106, not SSD1306


📄 License

This project is licensed under the
Creative Commons Attribution‑NonCommercial 4.0 International License (CC BY‑NC 4.0).

You may use, modify, and share the project for personal and non‑commercial purposes only.
Commercial use of any kind is strictly prohibited.

See the LICENSE.TXT file for full details.


🙌 Credits

© 2026 Tobias / ACC:Xess
Licensed under CC BY‑NC 4.0

Website: https://www.accxess.se
General inquiries: animator75@gmail.com

Support the project: https://buymeacoffee.com/accxess