Skip to content

JoergSH/elegoocc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ESP32 Centauri Carbon Monitor

🇬🇧 English | 🇩🇪 Deutsch


English

📋 Overview

Real-time monitoring and control system for the Elegoo Centauri Carbon 3D printer using an ESP32 microcontroller. Communicates via the SDCP (Smart Device Control Protocol) over WebSocket.

License Platform Status

✨ Features

  • 🌡️ Real-time monitoring of bed, nozzle, and chamber temperatures
  • 📊 Print progress tracking with layer and percentage information
  • 🌀 Fan speed monitoring (model, auxiliary, and box fans)
  • 📍 Position tracking (X, Y, Z coordinates)
  • 💡 Light control via WebSocket commands
  • ⏸️ Print control: Pause, Resume, Cancel
  • 🔄 Automatic reconnection if connection is lost
  • 📡 WebSocket protocol (SDCP 3.0)

🛠️ Hardware Requirements

  • ESP32 development board (ESP32-WROOM, ESP32-DevKit, etc.)
  • Elegoo Centauri Carbon 3D printer
  • WiFi network (2.4 GHz)
  • USB cable for programming

📚 Software Requirements

Arduino IDE or PlatformIO

Required Libraries:

  • WebSocketsClient by Markus Sattler
  • ArduinoJson by Benoit Blanchon

Install via Arduino Library Manager or PlatformIO.

🚀 Installation

  1. Clone the repository:

    git clone https://github.com/YOUR_USERNAME/esp32-centauri-monitor.git
    cd esp32-centauri-monitor
  2. Create credentials file:

    cp secrets.h.example secrets.h
  3. Edit secrets.h with your settings:

    const char* ssid = "YOUR_WIFI_SSID";
    const char* password = "YOUR_WIFI_PASSWORD";
    const char* printerIP = "192.168.1.XXX";  // Your printer's IP
  4. Upload to ESP32:

    • Open the project in Arduino IDE or PlatformIO
    • Select your ESP32 board
    • Upload the sketch
  5. Open Serial Monitor (115200 baud) to view output

📖 Usage

After uploading, the ESP32 will:

  1. Connect to your WiFi network
  2. Establish WebSocket connection to the printer
  3. Display printer status every 3 seconds
  4. Show detailed JSON data for debugging

Available Control Functions:

pausePrint();      // Pause current print
resumePrint();     // Resume paused print
cancelPrint();     // Cancel current print
toggleLight();     // Toggle printer light
startPrint("filename.gcode");  // Start a print job

📊 Serial Output Example

========================================
         PRINTER STATUS
========================================
State: PRINTING (13)

--- Temperatures ---
Bed:     100.0°C / 100.0°C
Nozzle:  270.4°C / 270.0°C
Chamber: 30.1°C

--- Position & Movement ---
Current Position: 196.66,57.05,16.43
Z-Offset: 0.00 mm

--- Fan Speeds ---
Model Fan:     27%
Auxiliary Fan: 0%
Box Fan:       0%

--- Print Progress ---
Progress: 4%
Layer: 58 / 465
Print Speed: 100%
File: model.gcode

Light: ON
========================================

🔧 Configuration

Edit these values in the code if needed:

const unsigned long STATUS_INTERVAL = 3000;  // Status request interval (ms)
const unsigned long PING_INTERVAL = 50000;   // Keep-alive ping interval (ms)

🌐 SDCP Protocol

This project uses SDCP 3.0 (Smart Device Control Protocol) developed by cbd-tech. Key commands:

Command Function Description
0 Status Request Get current printer status
128 Start Print Start a print job
129 Pause Pause current print
130 Cancel Cancel current print
131 Resume Resume paused print
403 Light Control Toggle printer light

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

📧 Contact

Your Name - @yourtwitter

Project Link: https://github.com/YOUR_USERNAME/esp32-centauri-monitor


Deutsch

📋 Übersicht

Echtzeit-Überwachungs- und Steuerungssystem für den Elegoo Centauri Carbon 3D-Drucker mit einem ESP32-Mikrocontroller. Kommuniziert über das SDCP (Smart Device Control Protocol) per WebSocket.

✨ Funktionen

  • 🌡️ Echtzeit-Überwachung von Druckbett-, Düsen- und Kammertemperaturen
  • 📊 Druckfortschritt mit Schicht- und Prozentinformationen
  • 🌀 Lüftergeschwindigkeits-Überwachung (Modell-, Hilfs- und Kammerlüfter)
  • 📍 Positions-Tracking (X-, Y-, Z-Koordinaten)
  • 💡 Lichtsteuerung über WebSocket-Befehle
  • ⏸️ Drucksteuerung: Pausieren, Fortsetzen, Abbrechen
  • 🔄 Automatische Wiederverbindung bei Verbindungsverlust
  • 📡 WebSocket-Protokoll (SDCP 3.0)

🛠️ Hardware-Anforderungen

  • ESP32 Entwicklungsboard (ESP32-WROOM, ESP32-DevKit, etc.)
  • Elegoo Centauri Carbon 3D-Drucker
  • WLAN-Netzwerk (2,4 GHz)
  • USB-Kabel zum Programmieren

📚 Software-Anforderungen

Arduino IDE oder PlatformIO

Benötigte Bibliotheken:

  • WebSocketsClient von Markus Sattler
  • ArduinoJson von Benoit Blanchon

Installation über Arduino Library Manager oder PlatformIO.

🚀 Installation

  1. Repository klonen:

    git clone https://github.com/DEIN_USERNAME/esp32-centauri-monitor.git
    cd esp32-centauri-monitor
  2. Zugangsdaten-Datei erstellen:

    cp secrets.h.example secrets.h
  3. secrets.h bearbeiten mit deinen Einstellungen:

    const char* ssid = "DEINE_WLAN_SSID";
    const char* password = "DEIN_WLAN_PASSWORT";
    const char* printerIP = "192.168.1.XXX";  // IP deines Druckers
  4. Auf ESP32 hochladen:

    • Projekt in Arduino IDE oder PlatformIO öffnen
    • ESP32-Board auswählen
    • Sketch hochladen
  5. Seriellen Monitor öffnen (115200 Baud) zur Anzeige

📖 Verwendung

Nach dem Hochladen wird der ESP32:

  1. Sich mit dem WLAN verbinden
  2. WebSocket-Verbindung zum Drucker herstellen
  3. Druckerstatus alle 3 Sekunden anzeigen
  4. Detaillierte JSON-Daten zum Debuggen ausgeben

Verfügbare Steuerfunktionen:

pausePrint();      // Aktuellen Druck pausieren
resumePrint();     // Pausierten Druck fortsetzen
cancelPrint();     // Aktuellen Druck abbrechen
toggleLight();     // Druckerlicht umschalten
startPrint("dateiname.gcode");  // Druckauftrag starten

📊 Beispiel Serielle Ausgabe

========================================
         DRUCKERSTATUS
========================================
Status: PRINTING (13)

--- Temperaturen ---
Bett:    100,0°C / 100,0°C
Düse:    270,4°C / 270,0°C
Kammer:  30,1°C

--- Position & Bewegung ---
Aktuelle Position: 196.66,57.05,16.43
Z-Offset: 0,00 mm

--- Lüftergeschwindigkeiten ---
Modelllüfter:  27%
Hilfslüfter:   0%
Kammerlüfter:  0%

--- Druckfortschritt ---
Fortschritt: 4%
Schicht: 58 / 465
Druckgeschwindigkeit: 100%
Datei: modell.gcode

Licht: AN
========================================

🔧 Konfiguration

Diese Werte können bei Bedarf im Code angepasst werden:

const unsigned long STATUS_INTERVAL = 3000;  // Status-Abfrage-Intervall (ms)
const unsigned long PING_INTERVAL = 50000;   // Keep-alive-Ping-Intervall (ms)

🌐 SDCP-Protokoll

Dieses Projekt nutzt SDCP 3.0 (Smart Device Control Protocol) von cbd-tech. Wichtige Befehle:

Befehl Funktion Beschreibung
0 Statusabfrage Aktuellen Druckerstatus abrufen
128 Druck starten Druckauftrag starten
129 Pausieren Aktuellen Druck pausieren
130 Abbrechen Aktuellen Druck abbrechen
131 Fortsetzen Pausierten Druck fortsetzen
403 Lichtsteuerung Druckerlicht umschalten

🤝 Mitwirken

Beiträge sind willkommen! Bitte erstelle gerne einen Pull Request.

  1. Projekt forken
  2. Feature-Branch erstellen (git checkout -b feature/NeuesFunktion)
  3. Änderungen committen (git commit -m 'Neue Funktion hinzugefügt')
  4. Branch pushen (git push origin feature/NeuesFunktion)
  5. Pull Request öffnen

📝 Lizenz

Dieses Projekt ist unter der MIT-Lizenz lizenziert - siehe LICENSE Datei für Details.

🙏 Danksagungen

📧 Kontakt

Dein Name - @deintwitter

Projekt-Link: https://github.com/DEIN_USERNAME/esp32-centauri-monitor


⭐ Wenn dir dieses Projekt gefällt, gib ihm einen Stern auf GitHub!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages