joakimtoe / KlipperLCD

A simple LCD service that enables the Neptune 3 Pro LCD screen with Klipper
Apache License 2.0
73 stars 11 forks source link

KlipperLCD (for Elegoo Neptune 3 Pro LCD screen)

Want to run Klipper on your Neptune 3 Pro? And still want to be able to use your Neptune 3 Pro LCD touch screen?

Take a look at this python service for the Elegoo Neptune 3 Pro LCD! Running together with Klipper3d and Moonraker!

Look and feel

Whats needed?

Wire the LCD

When wiring your screen, you can either wire it directly to one of your Raspberry Pi / SBC availible UARTs or you can wire it through a USB to UART converter. Both options are described below, pick the option that suits your needs.

To a Raspberry Pi UART

  1. Remove the back-cover of the LCD by unscrewing the four screws.

  2. Connect the LCD to the Raspberry Pi UART according to the table below:

    Raspberry Pi LCD
    Pin 4 (5V) 5V (Black wire)
    Pin 6 (GND) GND (Red wire)
    GPIO 14 (TXD) RX (Green wire)
    GPIO 15 (RXD) TX (Yellow wire)

USB to UART Converter

Quite simple, just remember to cross RX and TX on the LCD and the USB/UART HW. USB <-> UART HW LCD
5V 5V (Black wire)
GND GND (Red wire)
TXD RX (Green wire)
RXD TX (Yellow wire)

Update the LCD screen firmware

  1. Copy the LCD screen firmware LCD/20240125.tft to the root of a FAT32 formatted micro-SD card.
  2. Make sure the LCD screen is powered off.
  3. Insert the micro-SD card into the LCD screens SD card holder. Back-cover needs to be removed.
  4. Power on the LCD screen and wait for screen to say Update Successed!

A more detailed guide on LCD screen firmware update can be found on the Elegoo web-pages.

Enable the UART

Note: You can safely skip this section if you wired the display through a USB to UART converter

Disable Linux serial console

By default, the primary UART is assigned to the Linux console. If you wish to use the primary UART for other purposes, you must reconfigure Raspberry Pi OS. This can be done by using raspi-config:

Run the KlipperLCD service

Klipper socket API

Install dependencies

sudo apt-get install python3-pip git
pip install pyserial

Get the code

git clone https://github.com/joakimtoe/KlipperLCD
cd KlipperLCD

Configure the code

Run the code

Once the LCD touch screen is wired to the Raspberry Pi, Klipper socket API is enabled and the KlipperLCD class is configured according to your wiring you can fire up the code!

python3 main.py

Congratulations! You can now use the touch screen!

Run KlipperLCD service at boot

If the path of main.py is something else than /home/pi/KlipperLCD/main.py or your user is not pi. Open and edit KlipperLCD.service to fit your needs.

Enable the service to automatically start at boot:

sudo chmod +x main.py

sudo chmod +x KlipperLCD.service

sudo mv KlipperLCD.service /etc/systemd/system/KlipperLCD.service

sudo chmod 644 /etc/systemd/system/KlipperLCD.service

sudo systemctl daemon-reload

sudo systemctl enable KlipperLCD.service

sudo reboot

Console

The console is enabled by default and can be accessed by clicking center top of the main screen or by clicking the thumbnail area while printing.

The console enables sending commands and will display all gcode responses and information from Klipper normally found in the console tab in Mainsail or Fluidd.

Thumbnails

KlipperLCD also supports thumbnails!

Follow this guide to enable thumbnails in your slicer: https://klipperscreen.readthedocs.io/en/latest/Thumbnails/