OctoPrint: spierballen voor je 3D-printer
Bijna vier weken staat mijn 3D-printer, de Prusa i3 MK3S+ hier nu te ronken, en ik ben nog steeds zot content.
Eén ding dat mensen die een 3D-printer gaan kopen misschien kan afschrikken (en zeker bij Prusa) is de nogal spartaanse gebruikersinterface. De Prusa i3 draait op een 8-bit microcontroller, die heel gespecialiseerd is, maar niet genoeg spierballen heeft om naast het printen ook nog eens een vlotte gebruikersinterface op een touchscreen te toveren.
Daarom moet je het doen met een old-school LCD-scherm en een draaiknop.
G-code
Vooraleer ik met een oplossing hiervoor kom, eerst nog een saai theoretisch stuk. Mijn excuses.
Op zich is een 3D-printer een redelijk dom stuk hardware. De bestanden die je afdrukt bevatten een hoop codes, de G-code, met daarin exacte instructies van wat de printer moet uitvoeren:
G0 X12 ; move to 12mm on the X axisG0 F1500 ; Set the feedrate to 1500mm/minuteG1 X90.6 Y13.8 E22.4 ; Move to 90.6mm on the X axis and 13.8mm on the Y axis while extruding 22.4mm of material
Voor een complexe print bestaat zo’n bestand al snel uit een miljoen commando’s.
De printer zelf weet nooit wat hij aan het afdrukken is, en ook niet in welk materiaal. Daarom kan je niet gewoon een 3D-object naar de printer sturen, maar moet dat eerst gesliced worden naar G-code, specifiek voor jouw model printer en het materiaal dat je gebruikt.
Slicen is je 3D-model in lagen verdelen, en die lagen zo efficiënt mogelijk uittekenen voor je printer. Om dat te doen gebruik je een speciaal stuk software: de slicer.
De G-code die hieruit voort komt moet je dan op een SD-kaart zetten, in de printer steken en via de spartaanse interface selecteren.
Omslachtig toch? Dat zou toch veel sneller via WiFi moeten kunnen.
Enter OctoPrint
Al een geluk dacht Gina Häußge exact hetzelfde 8 jaar geleden, toen ze begon met de ontwikkeling van OctoPrint. Dit stuk software zorgt ervoor dat je je 3D-printer kan aansturen via je netwerk, en dat je G-code kan sturen rechtstreeks vanuit je slicer, of via een webinterface.
Je installeert OctoPrint op bijvoorbeeld een Raspberry Pi, die je dan via USB aansluit op je printer. Over die USB-kabel gaat OctoPrint dan met je printer praten, zodat je over je netwerk bestanden kan gaan afdrukken.
Maar het is ook veel meer dan dat. OctoPrint maakt van je domme 3D-printer een slim device. Je kan rechtstreeks je printkop bedienen, de ventilators regelen, temperaturen instellen en nog zo veel meer.
Dankzij een plug-in systeem is het ook uitbreidbaar met extreem veel andere coole features.
Er zijn momenteel bijna 300 plugins te downloaden voor OctoPrint. Dit zijn mijn favorieten:
Octolapse voor timelapses
Je kan op OctoPrint eenvoudig een webcam aansluiten om zo je print in de gaten te houden. OctoPrint kan ook van elke laag die geprint wordt een foto maken, en zo een timelapse maken van hoe je print tot stand komt.
Standaard is dat redelijk basic, en neemt hij een foto aan het begin van elke laag. Omdat je bed niet bij elke foto op dezelfde positie staat zijn de standaard timelapses van OctoPrint niet stabiel.
Met Octolapse zijn ze dat wel. Deze plugin analyseert de G-code en gaat per laag bepalen wat het beste punt is om een foto te nemen. Zo krijg je een veel stabielere timelapses. Zoals deze:
Multi-cam
Standaard wordt er maar 1 webcam weergegeven in OctoPrint, met multi-cam kan je er zoveel instellen als je wil.
Aan mijn Raspberry Pi 4 hangt één HQ Camera, en ik heb ook nog een Raspberry Pi 3 met daarop MotionEyeOS en twee extra camera’s. Dankzij multi-cam kan ik makkelijk tussen die drie camera’s wisselen.
Telegram Notifications
Sommige prints duren uren, en dan is de Telegram plugin wel erg handig. Die biedt een persoonlijke Telegram bot die om de zoveel millimeter de status van je print doorstuurt via een bericht, inclusief foto of gif.
Je kan er ook prints mee starten, en stoppen. Of gewoon even de status opvragen, als je aan de schoolpoort staat te wachten.
Het opzetten van de bot is even werk, maar moet je al een geluk maar 1 keer doen.
The Sp
aghetti Detective
Als een print loskomt en je domme 3D-printer gewoon in de lucht blijft printen, dan zit je al snel met een hele hoop plastieke spaghetti.
The Spaghetti Detective is een dienst, die je webcam in de gaten houdt en door middel van AI een hele hoop problemen detecteert en je waarschuwt als je print faalt.
In theorie is dit fantastisch, en de $4/maand die ze vragen voor hun Premium-abonnement is echt cheap. Maar … omdat hun dienst op hun server draait moet je webcamstream continu naar hen uploaden, en dat is extreem belastend voor je Internetverbinding. Niet ideaal in tijden van telethuiswerk, maar ik ga binnenkort proberen de open-source variant aan de praat te krijgen op onze NAS.
Arc Welder
Wat Arc Welder doet is eigenlijk zwarte magie. Arc Welder bekijkt G-code en gaat waar mogelijk verschillende opéénvolgende commando’s voor rechte lijnen vervangen door commando’s voor krommingen. Dit zorgt voor veel minder G-code (en dus minder communicatie tussen de printer en OctoPrint) en ook properdere prints.
Dankzij Arc Welder beweegt de extruder (printkop) veel minder in kleine schokjes, en meer in vloeiende bewegingen.
Het is een relatief nieuwe plugin, maar hij is gemaakt door de man achter Octolapse, en zijn code begint zijn weg ook te vinden naar de verschillende slicers. Op termijn gaat deze plugin dus niet meer nodig zijn.
Nog enkele fijne plugins die ik gebruik
- Bed Level Visualizer & Prusa Leveling Guide: een volledig recht printbed is de natte droom van menig printerbezitter. Deze twee plugins (in combinatie met de nylock-mod) maken dat mogelijk.
- PrusaSlicer thumbnails: maakt het mogelijk om een thumbnail mee te sturen in uw G-code, die dan ook in de interface van OctoPrint te zien is.
- Resource monitor: een extra tab met daarin hoe hard uw Raspberry Pi aan het zweten is. Hopelijk nooit, want een stutterende Raspberry Pi kan zorgen voor een gefaalde print.
- UI Customizer: standaard is de UI van OctoPrint functioneel, maar niet altijd even praktisch, zeker niet op een mobiel toestel. UI Customizer probeert dit op te lossen.
- DisplayLayerProgress: toont de voortgang van een print in de titel van je browsertab.
OctoDash
Omdat het me handig leek om OctoPrint ook aan de printer zelf te bedienen bestelde ik op AliExpress een 7” touchscreen om aan de Raspberry Pi te hangen. Eens aangekomen leerde ik al snel dat de interface van OctoPrint niet geschikt is om met een touchscreen te gebruiken.
Er zijn plugins zoals TouchUI, die dit proberen op te lossen, maar ik was niet content van ‘t resultaat. Het ziet er oubollig uit, en de bediening is verre van ideaal.
Gelukkig is er OctoDash, dit is een native applicatie met een strak uiterlijk, dat via de API verbinding maakt met je OctoPrint-server. De functionaliteit is redelijk beperkt, maar het doet alles wel perfect.
Mijn scherm was wel veel te groot en nam te veel plek in op de tafel.
Een betere oplossing: een scherm van 4” (de perfecte HyperPixel 4.0 van Pimoroni en een nieuw frontpaneel voor de printer.
(Pro tip: bestel geen dingen meer in Engeland. Ik heb meer invoerrechten & douane betaald op dit scherm dan het koste.)
App
OctoPrint heeft geen native app voor iOS, maar al een geluk zijn er enkele ontwikkelaars in dat gat gesprongen. OctoClient is er zo één, en die doet z’n werk perfect. Ideaal om snel eens te kijken hoe uw print ervoor staat.
Nadelen?
Je hoort regelmatig wel dat het betrouwbaarder en sneller zou zijn om van op SD-kaarten te drukken. Enerzijds omdat die gegarandeerd de G-code op het gewenste tempo van de printer aangeven, en anderzijds omdat je dan bescherming hebt tegen stroomuitval.
Dat eerste lijkt me geen probleem met een Raspberry Pi 4. Er moet echt al heel veel aan de gang zijn alvorens zo’n beest niet snel genoeg G-code kan aanleveren.
En ja, stroomuitval, het kan gebeuren, maar om daar nu alle voordelen die OctoPrint biedt te laten schieten?
Conclusie
Ik kan iedereen met een Prusa, of éénder welke andere 3D-printer OctoPrint ten zéérste aanraden. Het is gratis, poepsimpel om te installeren en configureren, en het maakt 3D-printen echt veel leuker.
Doe het wel stap voor stap. Zie eerst dat je goed kan printen van op de SD-kaart en test dan plugins één voor één uit.
Member discussion