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.
- 🌡️ 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)
- ESP32 development board (ESP32-WROOM, ESP32-DevKit, etc.)
- Elegoo Centauri Carbon 3D printer
- WiFi network (2.4 GHz)
- USB cable for programming
Arduino IDE or PlatformIO
Required Libraries:
WebSocketsClientby Markus SattlerArduinoJsonby Benoit Blanchon
Install via Arduino Library Manager or PlatformIO.
-
Clone the repository:
git clone https://github.com/YOUR_USERNAME/esp32-centauri-monitor.git cd esp32-centauri-monitor -
Create credentials file:
cp secrets.h.example secrets.h
-
Edit
secrets.hwith 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
-
Upload to ESP32:
- Open the project in Arduino IDE or PlatformIO
- Select your ESP32 board
- Upload the sketch
-
Open Serial Monitor (115200 baud) to view output
After uploading, the ESP32 will:
- Connect to your WiFi network
- Establish WebSocket connection to the printer
- Display printer status every 3 seconds
- 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========================================
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
========================================
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)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 |
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Elegoo for the Centauri Carbon printer
- WalkerFrederick for SDCP protocol documentation
- sheffieldnikki for Python reference implementation
Your Name - @yourtwitter
Project Link: https://github.com/YOUR_USERNAME/esp32-centauri-monitor
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.
- 🌡️ 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)
- ESP32 Entwicklungsboard (ESP32-WROOM, ESP32-DevKit, etc.)
- Elegoo Centauri Carbon 3D-Drucker
- WLAN-Netzwerk (2,4 GHz)
- USB-Kabel zum Programmieren
Arduino IDE oder PlatformIO
Benötigte Bibliotheken:
WebSocketsClientvon Markus SattlerArduinoJsonvon Benoit Blanchon
Installation über Arduino Library Manager oder PlatformIO.
-
Repository klonen:
git clone https://github.com/DEIN_USERNAME/esp32-centauri-monitor.git cd esp32-centauri-monitor -
Zugangsdaten-Datei erstellen:
cp secrets.h.example secrets.h
-
secrets.hbearbeiten 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
-
Auf ESP32 hochladen:
- Projekt in Arduino IDE oder PlatformIO öffnen
- ESP32-Board auswählen
- Sketch hochladen
-
Seriellen Monitor öffnen (115200 Baud) zur Anzeige
Nach dem Hochladen wird der ESP32:
- Sich mit dem WLAN verbinden
- WebSocket-Verbindung zum Drucker herstellen
- Druckerstatus alle 3 Sekunden anzeigen
- 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========================================
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
========================================
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)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 |
Beiträge sind willkommen! Bitte erstelle gerne einen Pull Request.
- Projekt forken
- Feature-Branch erstellen (
git checkout -b feature/NeuesFunktion) - Änderungen committen (
git commit -m 'Neue Funktion hinzugefügt') - Branch pushen (
git push origin feature/NeuesFunktion) - Pull Request öffnen
Dieses Projekt ist unter der MIT-Lizenz lizenziert - siehe LICENSE Datei für Details.
- Elegoo für den Centauri Carbon Drucker
- WalkerFrederick für die SDCP-Protokoll-Dokumentation
- sheffieldnikki für die Python-Referenzimplementierung
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!