Archiv pro rubriku: ICT a elektronika

Vše co se týká počítačů, elektrotechniky, elektroniky. Vlastní přípravky, zařízení a programátorská tvorba.

Převod LaTeXu pro kancelářské balíky

Psaní závěrečné vysokoškolské práce není většinou žádná legrace, pokud vám před dokončením prací začne textový editor rozsypávat čísla obrázků, pak se k tomu přidají i tabulky, nadpisy a křížové odkazy a už se objevuje představa o polstrované místnosti v léčebně. Nabízí se léty ověřený, více méně blbuvzdorný LaTeX, jako velice silný nástroj pro sázecí práce.

Pro někoho bude ze začátku přechod nejspíš složitý, protože výsledek toho co píšete uvidíte až po exportu. Nicméně systém dovoluje se oprostit o zbytečného přemýšlení, co kam kde posunout a stará se o všechno sám. Pokud Vám ještě některý z vyučujících připraví šablonu, máte práci hodně usnadněnu. Nesmí to být však šablona, ve které musíte vyměnit půl balíků, protože se již dlouhá léta nepoužívají, byť šablona je z loňského roku, spousta věcí nefunguje. To bych pak autora rád potkal osobně v temném koutě univerzity a poděkoval za jeho skvělou práci.

Při tvorbě jsem měl tu výhodu, že jsem již jednu takovou práci zpracovával a mohl čerpat příkazy, balíky a další vymoženosti z minulosti. Nicméně předchozí práce byla jako jeden soubor a nová šablona je rozdělená do několika souborů podle kapitol. Přehlednost je výborná, ale pokud chcete poslat vedoucímu práce výstup ve formátu, kde Vám může označit úseky které se mu nelíbí máte smůlu. Převodníky totiž dokáží zpracovat pouze jeden soubor a nedokáží jít po \include do dalších souborů.

V tomto momentu nastupuje všemocný skript v Bashi, který příkazem awk vyhledává v hlavním souboru příkazy \include a podle odkazu načte a vloží do výstupu soubor. Inspiroval jsem se na tomto odkazu, avšak tahle verze nezpracovala soubory ve stejné složce jako je hlavní zdrojový soubor, ale soubory uložené ve složkách zpracoval. V základní verzi uměl jít pouze v první úrovni odkazů. Skript jsem ale upravil tak, že projde první úrovní, zjistí, kolik má ještě příkazů \include a kolik z nich je zakomentovaných, rozdíl uloží do proměnné a pokud je rozdílná od nuly, tak projde tento soubor znovu, dokud se objeví další vložené soubory. Celý skript vypadá takhle:

#! /bin/bash

i=1
pocet=1

while [ „$pocet“ -gt „0“ ];do

if [ „$i“ -eq „1“ ];
then
echo „a“
awk ‚!/\input\{/ {print}
/\input{/ {
sub (/input\{/,““)
sub (/\}.*/,““)
sub (/}/,““)
sub (/\\/,““)
cmd= „cat ./“$1″“
system(cmd)
}‘ zaverecna-prace.tex > mergedfile.tex
i=0;
else
echo „b“
awk ‚!/\input\{/ {print}
/\input{/ {
sub (/input\{/,““)
sub (/\}.*/,““)
sub (/}/,““)
sub (/\\/,““)
cmd= „cat ./“$1″“
system(cmd)
}‘ mergedfile.tex > mergedfile2.tex

mv mergedfile2.tex mergedfile.tex
fi

echo „předgrep“
prave=$(grep -c -i „\input{“ mergedfile.tex)
komentovane=$(grep -c -i „%\input{“ mergedfile.tex)
echo „počet $prave $komentovane“
pocet=$(($prave-$komentovane))

echo „zbývajících $pocet“
done

Pro převod z LaTeXu do souborů dostupných kancelářským balíkům se mi osvědčil Pandoc. Převod je jednoduchý, v příkazové řádce zvolíte jaký soubor, nebo soubory podle typu chcete překládat a zvolíte název výstupního formátu včetně koncovky. Necháte chvíli přechroupat a je hotovo. Převod ale naní 100% čistý, například obsah tagu \label se zobrazuje v převedeném textu, ale pro účely kontroly dosavadního výtvoru vedoucím práce je převod naprosto dostačující.

Horko, moc horko!

Poslední dobou se stále častěji začal sám od sebe vypínat notebook pod zátěží. Po nainstalování několika programů pro ověření místa vzniku vysoké teploty ze systémových teploměrů bylo potvrzené přehřívání procesoru.

Po pár přečtených diskusí na fórech byl problém diagnostikován jako degradace teplovodné pasty na procesoru. Našel jsem si recenze a volba padla na ArcticCooling MX2.

Pak jsem našel vhodný termín pro rozebrání celého počítače. Bylo nutné odmontovat horní kryty abychom mohli vymontovat sestavu chladiče a heat-pipes. Odpojil jsem touchpad, klávesnici, kryt s reproduktory jsem pouze posunul a odlepil na jedné straně kabely k reproduktorům. Odšrouboval jsem několik šroubů z chladiče a zjistil, že celý problém vznikl povolením dvou šroubů. Chladič tak nedoléhal těsně k procesoru a nepředával teplo tam, kam měl. Nicméně už bylo rozebráno, a nebylo cesty zpět.

Velké kusy staré pasty jsem odstranil hned. Na malé kousky jsem si natočil vatu na špejli a lihem setřel do čista veškeré části pasty. Po vyčištění jsem procesor osušil vatou a odstranil všechna vlákna, která by mohla na styčných plochách zůstat.

Nanášení pasty nebyl žádný problém, stačilo jemně tlačit na injekční stříkačku a pasta se pěkně roztahovala po povrchu i bez dalších nástrojů. Před sešroubováním všech součástí jsem vyzkoušel běh počítače a mohl konstatovat, že se operace podařila. Počítač se už nevypíná v maximálním zatížení, teplota se bez zátěže drží kolem 58°C bez zapnutého ventilátoru. Při aktivním chlazení teplota spadne až na 45°C.  Po zahoření pasty se teploty ještě sníží.

EDIT: Po týdnu denního používání počítače spadla teplota procesoru na necelých 50°C dle programu TPFanControl a průměrných 40°C podle programu SpeedFan. Zatížení procesoru bylo přibližně 10% bez aktivního režimu chlazení. Aktivní chlazení sníží teplotu na 43 respektive 33°C.

Deska pro ochranu GPIO portů Raspberry

Raspberry Pi jako horký kandidát na řízení všemožných ubastlených zařízení by bylo neustále v ohrožení poškození přepětím na I/O portech, rozhodl jsem se udělat rozšiřující desku. Oproti jiným řešením, kdy jsou chráněna pouze sériová rozhranní, jsem se rozhodl, že budu chránit celé GPIO rozhraní.

Nejdřív bylo zapotřebí zjistit princip ochrany. Na webu Adafruit.com jsem nalezl již připravené rozšiřovací desky(jedna s IO, druhá s tranzistory), nicméně chránily pouze několik málo portů a údajně neposkytovaly dostatečnou rychlost pro sériové sběrnice. Proto jsem se rozhodl navrhnout vlastní desku. Druhým dokumentem ze kterého jsem v začátku čerpal byl astromik.org.

Ve vývojovém softwaru jsem si připravil základní desku pro všech 17 komunikačních pinů. Desku jsem připravil i jako hlavní napájecí zařízení pro Raspberry i další desky. Je možné desku napájet napětím 12V ze zdroje, vyšším napětím než 12V po přepnutí na napájení přes stabilizátor a deska může napájet i další přiřazené desky konektorem Molex připojeným na 12V větev. Komunikační piny jsou pak nápájeny přes další stabilizátor na hladině 5V.

Samotná konstrukce vyžaduje propojení GPIO rozhraní u Raspberry do headerové lišty. V tomto prostoru jsou umístěny tranzistory s ochrannou diodou, pull-up rezistory a napájecí linky. Princip oddělení tkví v použití unipolárního tranzistoru, kde na gate je připojeno trvale napětí 3V3. Návod pro zapojení je zde.

Zapojení ochraného tranzistoru

Zapojení tranzistoru jako měniče hladin napětí

Pokud je na pinu Raspberry logická jednička, pak je napětí Ugs nulové a nepřekročí hladinu pro otevření kanálu.

Pokud je na straně nižší napěťové úrovně logická nula, je obvod otevřen na zápornou svorku a napětí Ugs překročí hladinu pro otevření tranzistoru. Otevřením tranzistoru také klesne napětí v druhé větvi a ta je ve stavu logické nuly.

Pokud na straně vyššího napětí je nastavena logická nula, pak zařazená dioda způsobí tok proudu Ids pokles napětí Ugs. Pak je i na straně nižšího napětí hladina logické nuly.

Připravit celou desku tak, aby se vešla na Raspberry a vzhledově nebyla odpudivá, byl náročný úkol. První verze desky ovlivněná nákresem astromika měla povážlivou trhlinu v návrhu. Chyběly totiž pull-up rezistory na straně nižšího napětí. Takže se muselo přistoupit k úpravě, ale kde vzít místo?

Druhá verze už musela být oboustraná, aby se všech 17 sad měničů vešlo mezi dvě přípojné konektorové lišty. Pro nižší nároky na prostor jsem zvolil SMD součástky a jen doufám, že se mi tato volba při kompletaci nevymstí. Velikost není přehnaná, takže bude muset ustoupit třas rukou a případné kýchnutí.