Pro všechny verze naší vlajkové tiskárny Original Prusa i3 MK3 jsme připravili nový firmware 3.10. A je to pořádná nálož, od řady oprav, až po zajímavé nové funkce. Nejdřív je ale potřeba zdůraznit jednu věc. Můžeme si vymyslet celou řadu nových funkcí, ale deska EINSY už nemá mnoho volné paměti. Každá tvorba nové funkce se tedy nejdříve musí odrazit od optimalizaci funkcí starých. Protentokráte jsme byli nadmíru úspěšní, ušetřili jsme 5 KB ve FLASH paměti a skoro 400 B v RAM, což je mimochodem téměř dost na obsluhu programu, s nímž Apollo přistálo na měsíci (věděli jste, že ten program je také na Githubu?). Díky tomu jsme se mohli při tvorbě nových funkcí docela rozšoupnout.

Jak se šetří? Například přepsáním podpory TWI

Jedním z našich oblíbených způsobů, jak ušetřit místo, je přepsat starší kód a napsat jej lépe, úsporněji. Nejlépe to vyjde ve chvíli, když můžeme odstranit něco softwarového, co umí dělat hardware. Tak například komunikace TWI s optickým senzorem filamentu pro MK3. Z historických důvodů jsme měli implementovanou softwarovou podporu komunikace s optosenzorem filamentu v MK3, nyní jsme se rozhodli komunikaci převést na TWI (Two Wire Interface) podporovanou v hardware. Ačkoliv se změna týká jen původní MK3, ostatní modely MK3 mají jiný typ senzoru filamentu, úspora v kódu dopadá na všechny modely a otevírala prostor pro další funkce.

Přepis funkce není jediný způsob, jak šetřit místo. Další postup? Důsledně jsme zkoumali ASM výpis kritických funkcí a snažili jsme se “namotivovat” compiler, aby kód přeložil lépe. Někdy jsme ale narazili: třeba funkce Thumbnail Skipper – tam došlo až na surový assembler, protože compiler samotný naši snahu o optimalizaci nebyl ochoten pochopit.

A co jsme tedy přidali? O tohle si naši uživatelé psali velmi často: zobrazování času do další výměny filamentu v režimu Color Change a to jak v případě práce s jednotkou MMU, tak v ručním režimu. Díky tomu si můžete naplánovat, za jak dlouho se máte k tiskárně vrátit a vyměnit na ní filament za jinou barvu a nemusíte ji nechat zoufale pípat. Nyní čekáme, až tuto funkci bude podporovat další verze PrusaSliceru nebo jiné slicovací programy. A do tiskárny Mini přijde záhy.

Z drobnějších funkcí je tu preheat pro materiál PVB nebo podpora trysky 0,8mm.

Komunitní překlady

Novinkou je podpora komunitních překladů firmware. Naše tiskárny komunikují celou sadou jazyků, ale o překlady jsme se doposud starali my. Jenže jaký ze dvou tisícovek jazyků celého světa vybrat a jak vyjít s omezeným místem v paměti? Jeden jazyk dnes zabere 12KB a podporovat lze maximálně 16 jazyků. Nakonec jsme se rozhodli, že firmware nadále bude obsahovat námi definovanou sadu jazyků a umožní si zvolit komunitní překlad, tedy překlad, na kterém bude spolupracovat komunita. Považujeme to za spravedlivé – ten jazyk, který má své aktivní propagátory, si dotyční mohou nyní přeložit. Jako první jsme díky 3d-gussnerovi, který je také autorem překladového mechanismu, zvolili holandštinu. V nabídce jazyků se nově tedy objevuje volba Community made, kde je zatím jedinou položkou „Nederlands.“ Když ji zvolíte, tiskárna si jazyk nakopíruje do CPU FLASH a restartuje se v něm, stejně jako u našich vlastních překladů. Pokud to zkusíte a neumíte holandsky, budete se muset pár slovíček naučit, abyste si tiskárnu přepnuli do jazyka, jemuž rozumíte, tak pozor na to. A jak se mohou komunity zapojit do překladů? Na to právě vytváříme nástroje a postupy a nebojte, dáme zase včas vědět.

Velkou změnou byl přepis práce s SD kartou, tu se díky tomu podařilo zrychlit na desetinásobek. Nyní je výrazně rychlejší vypsání souborů a celková práce s výpisem obsahu SD karty – stejně rychlé je vypsání desíti i stovky položek. Dosavadním problémem bylo například třídění rozsáhlých seznamů. Dosud jsme z mnoha důvodů používali Bubble Sort algoritmus, kvůli němuž bylo potřeba na setřídění souborů do požadovaného pořadí čekat i půl minuty. Nově jsme po průzkumu variant zvolili Shell Sort algoritmus, který je podstatně rychlejší, i když náročnější na implementaci. Jeho jedinou podstatnou nevýhodou je, že zatřídí i adresáře, což jsme vyřešili dvojitým spuštěním algoritmu a tříděním zvláště adresářů a zvláště souborů. Zatím stále ve firmware používáme Bubble Sort, který díky rychlejšímu čtení z SD karty je nyní několikanásobně rychleji, ale až všechno otestujeme, přejdeme pravděpodobně na Shell Sort.

Podpora Print Hosts

A tohle je další věc, o kterou si naši uživatelé často píší: lepší podpora externích software, které s tiskárnou komunikují po sériové lince a umožní si tiskárnu přizpůsobit zcela podle přání uživatele. Například Octoprint, Pronterface nebo Repetier-Host. I tady jsme měli představu, kam se posunout a díky uvolnění místa jsme se posouvat mohli.

Tak třeba funkce Thumbnail Skipper, kde především vzniklo ono zrychlení práce s SD kartou. Prusa Slicer totiž generuje pro Mini náhledové obrázky, které vkládá do GCODE a ta se pak zobrazují na displeji při tisku (tzv. Thumbnaily). Na textovém displeji MK3 se samozřejmě nezobrazí, takže se pro tuto tiskárnu negenerovaly, neboť způsobovaly problémy (žel včetně sestřelení firmware watchdogem) a zdržovaly start tisku. Jenže externí software by je zase používal rád, protože obrázek dá lepší představu o tom, co GCODE obsahuje, než často kryptická jména souborů. V Octoprintu najdete pluginy, které již nyní umí thumbnaily zobrazovat a komunita volala po tom, abychom tomuto trendu vyšli vstříc.

K tomu jsme využili přepsání čtení z SD karty, kdy se podařilo rychlost zvýšit téměř na desetinásobek. To nově umožní přeskakovat komentářové řádky v GCODE, což jsou třeba i thumbnaily. Takový zásah je ovšem nutné důkladně otestovat, aby vše dobře fungovalo. Zobrazení náhledu tištěného objektu tedy vypadá jako prkotinka, ale byl za ní přepis zásadní části firmware tiskárny.

Další takovou funkcí zaměřenou na spolupráci s externími platformami jsou Host Actions. O co jde? O rovnoprávné ovládání tiskárny vzdáleně i lokálně, tedy o to, abyste například tisk mohli zahájit jak tlačítkem na tiskárně, tak přes vzdálený příkaz externího programu a vždy jste od tiskárny dostali stejnou odezvu. Zní to jednoduše, ale s tím tiskárna také původně nepočítala. Například automat starající se mimo jiné o kontrolu větráků při závadě na větráku dělá pauzu, aby mohl uživatel větrák vyčistit. Jenže jak byste vyčistili větrák, u kterého nestojíte? Nad tím vším bylo potřeba se znovu zamyslet a předělat to.

Právě Host Actions mohou za uklizení kusů komunikace ve firmware. Doufáme, že díky tomu budou moci externí programy s tiskárnou komunikovat lépe, bez dodatečných zásahů přímo na tiskárně a budete moci tak naše tiskárny lépe přizpůsobit i svému specifickému workflow. Na tom jasně vidíte, jak důležité je naše důsledné lpění na open source. Díky otevřenému kódu se taková propojení a přizpůsobování workflow realizují snadno a rychle.

Je to všechno? Není. Řadu méně atraktivních a přitom důležitých detailů o novém firmware 3.10 jsme si pro vás nechali do Release Notes, v nichž se dočtete úplně vše, co by vás mohlo zajímat. Podpora vývojářské komunity je pro nás důležitá, jenže podpora komunity není zdaleka jen swag rozdávaný na konferencích a veletrzích, ale především dobrá dokumentace. Tu se teď snažíme pro vás dále zlepšit!

Doufáme, že rozšířená podpora Printer Hosts pomůže posunout externí programy pro ovládání tiskáren. Ostatně, když nám do komentářů napíšete, jak a k čemu je používáte a jaké máte oblíbené, pomůžete nám se soustředit ve vývoji na ty podstatné funkce!

A chcete vědět, co chystáme do další verze? Tady máte alespoň malou ochutnávku: nově přidáme „počitadlo ujetých kilometrů“, správně řečeno „menu Údržba“. Jde o evidenci, jakou vzdálenost mají jednotlivé motory nachozené a od toho odvození, která ložiska je potřeba promazat a co na tiskárně zkontrolovat. Pro kvalitu tisku a dlouhou životnost vaší tiskárny je to důležité. O tom ale zase někdy příště. Pokud byste sami měli nějaký nápad, jak naši MK3 dále vylepšit, určitě se o své připomínky nezapomeňte podělit ve speciální diskuzním vlákně na našem fóru!

Tisku zdar!