Sponzor konstrukce
Tuto konstrukci sponzoroval výrobce nejen plošných spojů PCBWay.


Protože se jedná o sponzorovanou konstrukci, je její zveřejnění prakticky souběžné se zveřejněním pro mé patrony. Současně je tato konstrukce dostupná i na webu PCBWay v sekci sdílených projektů. Odtud si můžete velice snadno objednat výrobu například PCB a samozřejmě tam naleznete veškerou dokumentaci.
Tento shield pro RaspberryPi vznikl z důvodu potřeby ovládání dalších periferií na 3D tiskárně za použití tiskového serveru. Většinou totiž běží tiskový server na malém počítači RaspberryPi, který disponuje i vstupně-výstupními porty GPIO, které je možné použít pro ovládání periferií tiskárny. V dnešní době prakticky všechny tiskové servery, tedy Repetier Server, OctoPrint i Klipper, umožňují jejich ovládání.
Aby však bylo možné tato GPIO použít, je nutné je vybavit další elektronikou, a to hlavně posílit jejich proudové zatížení a zvětšit jejich napěťové úrovně. A právě k tomu je tento shield určený. Kromě samotného rozšíření GPIO obsahuje i vestavěný DC/DC měnič, kterým je možné přímo napájet připojený počítač RaspberryPi, případně další periferie. Vše je uzpůsobeno jak mechanickým, tak elektrickým provedením, aby tento shield pasoval přímo na RaspberryPi a současně umožňoval připojení dalších modulů, jako je například TFT dotykový displej.
Z toho důvodu jsou některé GPIO vynechány a shieldem pouze prochází skrze oboustranný 40pin konektor. Toto řešení umožňuje vytvořit velmi malý, ale zároveň poměrně vybavený tiskový server. Pokud pak vaše tiskárna nedisponuje například ovládáním osvětlení nebo senzorem filamentu, může tyto funkce převzít právě tiskový server bez toho, aby bylo nutné jakkoli zasahovat do stávající elektroniky tiskárny, a to včetně jejího firmware. Pokud používáte pro řízení tiskárny firmware Klipper, což důrazně doporučuji, je integrace tohoto shieldu opravdu jednoduchá.
Technické specifikace
| Napájecí napětí | 8-30 V DC, DC konektor 5,5 x 2,1 mm. |
|---|---|
| Opticky oddělené vstupy | 3x. |
| Výkonové výstupy | 5x. |
| Proud z výkonového výstupu | 1 A na každý výstup pouze při volbě napájecího napětí vstupu, typicky 24 V. |
| Volitelné napětí výkonového výstupu | 12 V, maximálně 1 A pro všech pět výstupů dohromady, nebo napájecí napětí vstupu. |
| Napájecí výstup 5 V | Jištěný pojistkou, maximálně 1 A. |
| Výstup pro LED pásek WS2812B | 5 V / max. 1 A, přibližně do 20 LED. |
| Zvuková signalizace | Piezo měnič. |
| I2C rozhraní | 2x konektor, 3,3V logika. |
| UART | 2x konektor, jeden s 5V logikou a jeden s 3,3V logikou. |
| Univerzální IO port | 1x 3,3V IO port, například OneWire. |
| Připojení k RaspberryPi | Průchozí 40pinový konektor. |
| Podporované RaspberryPi | Zero W, Zero 2 W, 3, 3B, 3B+ a 4B. |
| Napájení RaspberryPi | Přes 40pinový konektor, 5,1 V / 2,5 A. |
Zapojení shieldu
Jak už jsem v úvodu naznačil, tato deska se zasouvá do 40pinového konektoru RaspberryPi. Její provedení přesně kopíruje počítače RaspberryPi 3, 3B, 3B+ a 4B, ale je možné ji použít i s variantou Zero. V takovém případě doporučuji výkonnější variantu Zero 2 W, která utáhne bez problému libovolný tiskový server, a to včetně TFT dotykového displeje. Pro připojení je použit oboustranný konektor, takže lze nad tuto desku připojit nějakou další. To se právě výborně hodí při použití s TFT displejem. Z toho důvodu jsou některé vývody tímto shieldem nepoužité, aby nekolidovaly s displejem.
Shield je rozdělen do dvou částí. Jednou je napájecí DC/DC měnič a druhou pak samotné výkonové rozšíření GPIO vývodů počítače. Jako DC/DC měnič byl použit obvod XL4004, který je poměrně výkonný a vyžaduje minimum externích součástek. Výstupní napětí je možné lehce regulovat kolem hodnoty 5 V, přičemž maximálně jde nastavit 5,2 V, což by mělo být ještě bezpečné pro připojený počítač. Nicméně doporučuji při oživování nastavit hodnotu na 5,1 V.
Díky tomuto měniči je možné celý tiskový server napájet přímo ze zdroje 3D tiskárny nebo libovolného napájecího adaptéru 8-30 V. Poměrně často se totiž stává, že pokud je Raspberry napájeno pomocí microUSB, je na kabelu a konektoru poměrně značný úbytek napětí a počítač pak může pracovat nestabilně. Tento problém je tedy tímto měničem eliminován. Současně se dá napětí 5 V ještě použít pro napájení například chytrých LED pásků WS2812B, kde může být připojeno až 20 LED. Tento výstup napětí je jištěn vratnou pojistkou 1 A, aby v případě jakékoli poruchy nebo zkratu na LED pásku došlo k jeho odpojení bez toho, aby to ohrozilo funkci počítače. Případně je možné připojit ještě do samostatné svorky X5 další 5V zařízení. I tento výstup napětí je chráněn vratnou pojistkou 1 A.
Druhou částí je samotné ovládání GPIO z počítače. Proto jsou na desce tři opticky oddělené vstupy použitelné například pro dodatečné senzory filamentu nebo koncové spínače. Pro výkonové ovládání je k dispozici pětice výstupů, kterým můžeme nastavit výstupní napětí 12 V nebo napájecí napětí vstupu, typicky 24 V. O napájení 12 V se stará malý DC/DC měnič s výstupním proudem maximálně 1 A. Proto je nutné dbát na to, aby tento proud nebyl překročen. Pokud je výstupní napětí nastaveno na 24 V, je možné z každého výstupu odebírat proud 1 A. Samozřejmě je možné jednotlivá napětí kombinovat a nastavit například na dva výstupy napětí 12 V a na zbylé tři výstupy 24 V. Pak každý 12V výstup může poskytovat proud 0,5 A.
Poslední menší částí jsou komunikační sběrnice. K dispozici jsou dva konektory I2C a dva konektory UART, přičemž jeden konektor UART používá 5V logiku včetně napájení a druhý 3,3V logiku včetně napájení. To se může hodit, pokud potřebujeme připojit například 8bitovou řídicí desku s 5V logikou nebo 32bitovou desku s 3,3V logikou bez toho, abychom museli tyto signály upravovat. Vše je už vyřešeno na desce shieldu. Konektor označený OneWire lze použít jako univerzální vstupně-výstupní port a lze k němu připojit například teplotní čidlo DS18B20. Do zbylé mezery na PCB se podařilo vměstnat ještě piezo měnič, takže lze použít i zvukovou signalizaci.
Schéma zapojení

Schéma osazení

Oživení a montáž shieldu
Při oživování musíme pouze nastavit výstupní napětí DC/DC měniče trimrem TM1 na hodnotu 5,1 V. Tím je veškeré oživení hotové.
I samotná montáž by neměla činit žádné potíže, neboť shield se pouze zasune do konektoru na RaspberryPi. Doporučuji použít distanční sloupky M2,5, které shield zafixují ve správné pozici.
Krabičky
Pro jednotlivé varianty sestav vzniknou modely krabiček, které bude možné vytisknout a celou sestavu tak vhodně zakrytovat. Proto sledujte tento projekt i v diskusi, na niž najdete odkaz níže.
Význam jednotlivých konektorů
| US2 | Napájení shieldu 8-30 V, DC konektor 5,5 x 2,1 mm, střední kolík +. |
|---|---|
| X1 | Výkonové výstupy. |
| X1-1, X1-3, X1-5, X1-7, X1-9 | Kladné napětí, 12 V max. 200 mA nebo napájecí napětí vstupu max. 1 A. |
| X1-2 | Spínané GND, GPIO05. |
| X1-4 | Spínané GND, GPIO06. |
| X1-6 | Spínané GND, GPIO13. |
| X1-8 | Spínané GND, GPIO19. |
| X1-10 | Spínané GND, GPIO26. |
| X3 | Opticky oddělené vstupy. |
| X3-1 | Anoda +3-24 V, GPIO12. |
| X3-2 | Katoda, spojeno s GND. |
| X3-3 | Anoda +3-24 V, GPIO16. |
| X3-4 | Katoda, spojeno s GND. |
| X3-5 | Anoda +3-24 V, GPIO20. |
| X3-6 | Katoda, spojeno s GND. |
| X4 | LED pásek WS2812B. |
| X4-1 | GND. |
| X4-2 | Datová komunikace do pásku WS2812B, GPIO27. |
| X4-3 | Napájení pásku +5 V / 1 A. |
| X5 | Výstup napětí 5 V / 1 A. |
| X5-1 | Výstup 5 V / 1 A. |
| X5-2 | GND. |
| OneWire PS1 | GND. |
| OneWire PS2 | GPIO21. |
| OneWire PS3 | 3,3 V, max. 50 mA. |
| I2C 3V3 PS1 | GND. |
| I2C 3V3 PS2 | 3,3 V, max. 50 mA. |
| I2C 3V3 PS3 | SCL. |
| I2C 3V3 PS4 | SDA. |
| UART 5V PS1 | GND. |
| UART 5V PS2 | TXD, GPIO14. |
| UART 5V PS3 | RXD, GPIO15. |
| UART 5V PS4 | 5 V, max. 100 mA. |
| UART 3V3 PS1 | GND. |
| UART 3V3 PS2 | TXD, GPIO14. |
| UART 3V3 PS3 | RXD, GPIO15. |
| UART 3V3 PS4 | 3,3 V, max. 50 mA. |
| JP1 | Volba výstupního napětí pro X1-1. |
| JP2 | Volba výstupního napětí pro X1-3. |
| JP3 | Volba výstupního napětí pro X1-5. |
| JP4 | Volba výstupního napětí pro X1-7. |
| JP5 | Volba výstupního napětí pro X1-9. |
| JP1 až JP5, piny 1/2 | Výstupní napětí 12 V. |
| JP1 až JP5, piny 2/3 | Napájecí napětí vstupu US2. |
Seznam použitých komponent
| Označení | Ks | Hodnota / typ | Knihovna / součástka | Pouzdro |
|---|---|---|---|---|
| C1, C2, C6, C8 | 4 | 100nF | C-EUC1206 | C1206 |
| C3 | 1 | 33nF | C-EUC1206 | C1206 |
| C4 | 1 | 220uF/35V | CPOL-EU153CLV-0605 | 153CLV-0605 |
| C5 | 1 | 330uF/16V | CPOL-EU153CLV-0605 | 153CLV-0605 |
| C7 | 1 | 100uF/35V | CPOL-EU153CLV-0605 | 153CLV-0605 |
| C9 | 1 | 100uF/25V | CPOL-EU153CLV-0605 | 153CLV-0605 |
| D1 | 1 | MBRD1045 | 50WQ10FN | TO-252-COMMON-PINS |
| DC1 | 1 | R-78C12-1.0 | R-78C12-1.0 | SIP3 |
| F1, F2 | 2 | SD110-08 | 1812L | 1812L |
| JP1, JP2, JP3, JP4, JP5 | 5 | JP2E | JP2E | JP2 |
| L1 | 1 | 33uH/5A | DR127 | DR127 |
| LED1, LED2, LED3, LED4, LED5 | 5 | LED | CHIPLED_1206 | CHIPLED_1206 |
| OK1, OK2, OK3 | 3 | SFH618A-3X007 | SFH618A-3X007 | SMD4-7 |
| Q1, Q2, Q3, Q4, Q5, Q6 | 6 | MOSFET-NREFLOW | MOSFET-NREFLOW | SOT23 |
| R1, R26 | 2 | 2K2 | R-EU_R1206 | R1206 |
| R2, R23, R24, R25 | 4 | 10K | R-EU_R1206 | R1206 |
| R3, R6, R9, R12, R15, R18 | 6 | 10R | R-EU_R1206 | R1206 |
| R4, R7, R10, R13, R16, R19 | 6 | 100K | R-EU_R1206 | R1206 |
| R5, R8, R11, R14, R17, R20, R21, R22 | 8 | 3K9 | R-EU_R1206 | R1206 |
| R27 | 1 | 1K | R-EU_R1206 | R1206 |
| SG1 | 1 | F/CM12P | F/CM12P | F/CM12P |
| TM1 | 1 | 2K | TRIMPOTTC33X | TC33X |
| U$1 | 1 | XL4005 | XL4005 | TO263-5L |
| U$2 | 1 | 2.1MMJACKTHM | 2.1MMJACKTHM | PJ-102A |
| U$3, U$4, U$5, U$6 | 4 | 4_PIN_JST-XH | 4_PIN_JST-XH | 4_PIN_JST-XH |
| U$7 | 1 | 3_PIN_JST-XH | 3_PIN_JST-XH | 3_PIN_JST-XH |
| X1 | 1 | AK550/10 | AK550/10 | AK550/10 |
| X2 | 1 | RASPI_BOARD_B | RASPI_BOARD_B+#_E4 | RASPI_BOARD |
| X3 | 1 | AK550/6 | AK550/6 | AK550/6 |
| X4 | 1 | AK550/3 | AK550/3 | AK550/3 |
| X5 | 1 | AK550/2 | AK550/2 | AK550/2 |
Instalace ve spojení s firmwarem Klipper
Nyní si popíšeme, jak tento shield zprovoznit, pokud používáte firmware Klipper. Firmware Klipper se skládá v podstatě ze dvou částí: samotného firmware běžícího v řídicí desce, jež ovládá 3D tiskárnu, a aplikace, která běží v řídicím počítači, většinou RaspberryPi nebo podobném OrangePi. Toto rozdělení umožňuje maximálně využít výpočetní výkon RaspberryPi a do řídicí desky, která může být založena na 8bitovém MCU, se již posílají předpřipravené příkazy, které deska pouze vykoná.
Další velkou výhodou je možnost připojit k hlavnímu počítači RaspberryPi hned několik řídicích desek, a tak rozšířit možnosti tiskárny. Samotný počítač RaspberryPi obsahuje několik GPIO, které jsou napojeny na tento shield, takže se nabízí možnost využít je jako rozšíření ke stávající řídicí desce. Z tohoto důvodu musíme na Raspberry kromě samotného Klipperu doinstalovat podporu MCU, které bude ovládat GPIO. O samotné instalaci Klipperu se zde nebudu rozepisovat, ale můžete se podívat do diskuse nebo do oficiální dokumentace RPi microcontroller.
Pokud máte na RaspberryPi zprovozněn Klipper, připojte se přes SSH a dále postupujte dle instrukcí:
cd ~/klipper/
sudo cp "./scripts/klipper-mcu-start.sh" /etc/init.d/klipper_mcu
sudo update-rc.d klipper_mcu defaults

Nyní musíme zkompilovat firmware pro MCU RaspberryPi:
cd ~/klipper/
make menuconfig

sudo service klipper stop
make flash
sudo service klipper start

Nyní je podpora MCU z RaspberryPi nainstalována a stačí definovat do konfiguračního souboru printer.cfg funkce pro tento MCU. Část konfiguračního souboru tiskárny, kde jsou definované výstupy, si můžete prohlédnout v PDF dokumentaci. Nyní můžeme konfigurační soubor uložit a restartovat firmware. Následně už můžeme přes uživatelské rozhraní dané výstupy ovládat.

Pokud by se vám firmware nechtěl spojit s MCU v RaspberryPi a hlásil, že nemůže najít cestu k sériovému portu na adrese /tmp/klipper_host_mcu, doporučuji RaspberryPi vypnout a zase zapnout. Pokud by problém dále přetrvával, můžete zkusit přidat uživatele pi do skupiny tty příkazem:
sudo usermod -a -G tty pi
Tímto bychom měli vyřešené ovládání výstupů, ale ještě si ukážeme, jak použít vstupy například jako detektory filamentu. Opět ukázku konfigurace najdete v PDF souboru na konci článku. V uživatelském rozhraní se nám to pak zobrazí nějak takto:

Samozřejmě je nutné mít na paměti, že vstupy mají otočenou logiku. To znamená, že v klidovém stavu jsou v LOG 1 a v momentě sepnutí přejdou do LOG 0. To je způsobeno použitím optočlenů na vstupech MCU. Nicméně logiku vyhodnocení je možné upravit v konfiguraci přidáním znaku vykřičníku před definici pinu, například switch_pin: !host:gpio12.
To by mělo jako ukázka použití shieldu s firmwarem Klipper stačit. Pro další informace navštivte stránky s dokumentací pro firmware Klipper, kde se můžete dočíst více podrobností, které se do tohoto zjednodušeného návodu nevešly.
Použití s Repetier serverem
Další možností je použití s Repetier serverem. Zde je zprovoznění mnohem jednodušší, ale na druhou stranu to neposkytuje tolik možností jako Klipper. Pokud používáte tento server, vyžaduje zprovoznění pouze definování patřičných funkcí ve webovém rozhraní serveru. Pár informací je možné najít v diskusi včetně videonávodu na mém YouTube:
Použití s dalšími servery
Samozřejmě toto není výčet všech použitelných serverů. Můžete použít například velmi oblíbený OctoPrint. Nicméně o tom se zde nebudu rozepisovat, protože ho sám nepoužívám, ale mohu vás odkázat do mé diskuse, kde se pár věcí okolo tohoto serveru řešilo.
Případně zde odkážu na můj Patreon, kde bývají k dispozici rozšířené články a návody k podobným tématům.
Závěrečné prohlášení
Autor této konstrukce se zříká jakékoli odpovědnosti za chování této konstrukce a jakékoli škody, která může vzniknout použitím této konstrukce. Veškerou odpovědnost přebírá provozovatel zařízení.
Co znamená EA / FINAL v nadpisu konstrukce
Jde o zkratku Early Access neboli předběžný přístup. Většina mých projektů začíná fází předběžného přístupu, kdy je daná konstrukce uvolněna, ale stále nejde o finální provedení. Některé funkce nemusí být ještě integrovány, případně se v konstrukci mohou vyskytovat chyby. Nicméně již jde o použitelnou konstrukci, která se dále vyvíjí a zdokonaluje. V momentě, kdy uznám, že je již vše funkční a odladěné, přechází konstrukce do finální fáze, označené jako FINAL. Předem upozorňuji, že konstrukce zveřejněné v režimu EA nemusí nikdy přejít do verze FINAL a nelze reklamovat jejich funkcionalitu. Tím, že si tuto konstrukci pořídíte, zároveň stvrzujete, že jste seznámeni s aktuální funkcionalitou a případnými chybami, jež může konstrukce obsahovat, a akceptujete je.
Technická podpora
Veškerá podpora pro tuto konstrukci je řešena výhradně formou diskuse. Proto pokud máte jakýkoli dotaz týkající se této konstrukce, obracejte se do fóra:
Podpora tvorby
Pokud vám tento manuál pomohl, zvažte možnost příspěvku libovolné částky. Právě díky třeba vašemu příspěvku bude moci vzniknout nějaký další manuál nebo celá konstrukce. Přispět je možné také formou členství na Patreonu. Model publikace je takový, že každý nový příspěvek, většinou konstrukce nebo návod, je nejdříve dostupný pro podporovatele a po nějakém čase přejde do bezplatného zveřejnění například na webu nebo diskusi.
Dokumentace
Závěrem si zde můžete stáhnout veškerou dokumentaci.