Toto je starší verze dokumentu!
Obsah
Softwarové nástroje pro vývoj stavebnice MLAB
Tato stránka se zabývá softwarovými nástroji potřebnými pro tvorbu stavebnice MLAB, pro technické vybavení přejděte na stránku s návody.
Tvorba MLABu není omezena na jeden konkrétní set nástrojů protože různí uživatelé mají různé nároky a také přístup k různým druhům softwaru.
Elektronické CADy
Nástroje pro vytváření návrhů plošných spojů a jejich schémat, případně simulace zapojení. Preferován je aktuálně návrhový systém KiCAD ostatní nástroje tu jsou uvedeny, proto protože některé konstrukce jsou v nich i nadále nakresleny.
KiCAD
Program KiCad je jeden z mála OpenSource nástrojů určený k EDA návrhu elektronických konstrukcí. Použití kicadu pro návrh modulů popisuje samostatná stránka.
Mentor Graphics PADS Layout
Jde o komerční software, ve kterém byly dříve navrhovány MLAB moduly. Do budoucna však předpokládáme jeho úplné nahrazení Open-Source softwarem KiCAD. Zdůvodu zachování kompatibility však má Mentor Graphics PADS svojí samostatnou stránku.
OrCAD Schematic
Nástroj pro vyváření zapojení modulů a následný export netlistů pro zpracování návrhu PCB v systému PADS. Protože se však používal v kombinaci s PADS a nadále se významně nevyvíjí, tak je nyní úplně nahrazen programem KiCAD. Historické použití OrCADu je však zdokumentováno na samostatné stránce.
Eagle
Některé moduly jsou navržené v tomto systému ale díky nutnosti odlišné adresářové struktury jsou publikovány v SVN databázi MLAB_E, která zatím nemá webové výpisy. Do budoucna se využití Eagle pro návrh modulů dále nepředpokládá.
Mechanické CADy
LibreCAD
Pro kreslení plošných technických výkresů je využíván LibreCAD. V Ubuntu jej lze nainstalovat přímo z balíku:
sudo apt-get install librecad
FreeCAD
FreeCAD se naopak hodí pro 3D modelování klasickým způsobem, který je známý z komerčních CAD programů. Zatím je výhodné používat jeho denní build verze dostupné z PPA.
sudo add-apt-repository ppa:freecad-maintainers/freecad-daily sudo apt-get update sudo apt-get dist-upgrade sudo apt-get install freecad-daily freecad-daily-doc
ATOM
ATOM je nástroj pro univerzální editaci zdrojových kódů.
Pro OpenSCAD je potřeba doinstalovat balíček language-openscad.
OpenSCAD
OpenSCAD je nástroj pro návrh 3D modelů technických zařízení. Na rozdíl od většiny návrhových nástrojů OpenSCAD využívá pro popis objektu programovací jazyk. Tento přístup umožňuje jednak parametrizaci modelů a navíc jejich snadné verzování s identifikací přesné změny. Základní úvod do používání programu je na Know only 10 things to be dangerous in OpenSCAD, existuje také přehled základních funkcí.
Dalším zdrojem informací je videotutoriál.
Instalace Ubuntu
Pro instalaci aktuální verze od Ubuntu 14.10 je připraven PPA repozitář:
sudo add-apt-repository ppa:openscad/releases sudo apt-get update
Openscad můžeme po jeho přidání pak nainstalovat příkazem:
sudo apt-get install openscad
Spustíme jej pak obvyklým způsobem z dashboardu, nebo z příkazového řádku.
Pro použití nejnovějších funkcí je vhodné použít denní kompilaci openscadu.
sudo apt-get install openscad-nightly
Tu lze pak spustit z příkazového řádku jako openscad-nightly, obě verze proto mohou být naistalované paralelně.
Pro zobrazení náhledů vygenerovaných STL souborů v prohlížeči Nautilus můžete využít nástroj stl-thumbnailer.
Generování a prohlížení výrobních dat
Gerber data
Skládání gerber dat
Pro skládáni dat lze využít program gerbmerge. Který se na internetu vyskytuje v několika různých větvích vývoje. Pro použití s programem kicad je výhodné použít relativně novou vývojovou větev prof. Karl-heinz Kunzelmann. Ta vychází z prvotní verze 1.8. a dalších úprav. Poměrně významně se však liší od verze gerbmerge3, která ale má čistější zdrojový kód.
Nejdříve nainstalujeme závislosti.
sudo apt-get install python-simpleparse python-simpleparse-mxtexttools
Následně stáhneme gerbmerge z githubu.
git clone https://github.com/MLAB-project/gerbmerge cd gerbmerge sudo python setup.py install
Aby gerbmerge fungoval, tak je mu potřeba zadat způsob panelizace to se dělá konfiguračním souborem. Příklad konfiguračního souboru je vložen u zdrojových kódů programu. Přímo v něm jsou komentáře vysvětlující jeho použití. Pakud ale máme připravený konfigurační soubor např. layout-mm-3.3.cfg tak gerbmerge můžeme spustit.
kaklik@popelnice:~/git/gerbmerge/testdata-with-KiCAD-using-metric-units/MLAB_panel$ ../../src/gerbmerge/gerbmerge.py layout-mm-3.3.cfg
Program se pokusí nalézt optimální rozložení motivů na panelu podle zvolené konfigurace a vygeneruje výsledné složené soubory.
Příklad pro složení SET10A (instalace se schoduje s předchozím příkladem) Nejprve je potřeba se dostat do místa, kde jsou data setu:
MLAB@MLAB:~/MLAB-project/gerbmerge/MLAB_panel/SET10A$
Nastavení skládání setu je v souboru layout.cfg a v soboru placement.merge.txt je uloženo požadované rozložení v setu. Soubor s rozložením setu se vygeneruje atomaticky při prvním spuštění programu gerbmerge. Vygenerování takto připravených dat se provede následujícím příkazem:
../../src/gerbmerge/gerbmerge.py main.cfg layout.txt
Upravená verze programu gerbmerge pro MLAB
V MLAB repozitáři gerbmerge existuje větev ust-patches, ve které se testují úpravy gerbmerge pro potřeby MLABu. Vychází z větve prof. Kunzelmanna.
První změnou je přidání podpory pro vícero vrtacích vrstev. To je motivováno potřebou oddělit prokovené a neprokovené díry. Druhá změna pak umožňuje rozdělit konfiguraci do více souborů. To by mělo umožnit vyčlenit opakující se kusy konfigurace do sdílených souborů, na které se pak odkáže u konkrétní panelizační úlohy.
Pro ilustraci se podívejme na panelizaci PRO201B. U ní se definice vrstev pro skládané MLAB moduly nachází v mlab_layers.cfg
:
[IncludeSection] *TopLayer=%(prefix)s-F.Cu.gbr *BottomLayer=%(prefix)s-B.Cu.gbr *TopSilkscreen=%(prefix)s-F.SilkS.gbr *TopSoldermask=%(prefix)s-F.Mask.gbr *BottomSoldermask=%(prefix)s-B.Mask.gbr Drills=%(prefix)s-PTH.drl DrillsNPTH=%(prefix)s-NPTH.drl BoardOutline=%(prefix)s-Edge.Cuts.gbr
Za povšimnutí stojí definice dvou vrtacích vrstev Drills=
a DrillsNPTH=
. I v upravené verzi gerbmerge musí vždy existovat vrstva Drills
. Lze k ní však přidat další, která se jmenuje Drills
a něco. Sekce [IncludeSection]
v souboru značí, že se definice pod touto sekcí vloží do sekce, ze které bylo na tento soubor odkázáno. V main.cfg
, hlavním souboru s konfigurací, stojí:
[EEPROM02A] Prefix=%(projdir)s/../PRO201A/EEPROM02A/EEPROM02A Include = mlab_layers.cfg [HBSTEP01B] Prefix=%(projdir)s/../PRO201A/HBSTEP01B/HBSTEP01B Include = mlab_layers.cfg ... a podobně
To znamená, že výše ukázaný mlab_layers.cfg
se vloží pod sekci [EEPROM02A]
a [HBSTEP01B]
. V obou se použijí stejné definice vrstev, jen se v nich za %(prefix)s
doplní jiné prefixy cest. Zdrojové data jsou tu vzata ze sousedního projektu PRO201A. PRO201A a PRO201B jsou totiž podobné panelizace, jen PRO201B používá vlastnosti upraveného gerbmerge.
Vedle mlab_layers.cfg
se do main.cfg
vloží ještě common.cfg
a output_layers.cfg
. V tomto případě nezáleží na tom, z jaké sekce main.cfg
bylo vložení vyvoláno, protože ve vkládaných souborech se nepoužívá sekce [IncludeSection]
. Obsah se vloží tak, jak je, tedy pod původní sekcí, pod kterou je zapsán v common.cfg
a output_layers.cfg
.
Na závěr si prohlídněme, jak je v PRO201B pro gerbmerge zadáno rozvržení skládaných modulů. gerbmerge nebude rozvržení hledat automaticky, místo toho vypočítá rozvržení ze zadání v layout.txt. Formát tohoto souboru je popsán v dokumentaci gerbmerge.
Skládání se pro PRO201B vyvolá např. takto:
$ cd MLAB_panel/02_PRO/2V/PRO201B $ python ../../../../src/gerbmerge/gerbmerge.py main.cfg layout.txt
Kde jsme prvně předali název hlavního konfiguračního souboru a poté souboru s rozvržením.
GerberTools
GerberTools je vhodný pro ruční skládání s frézováním na můstky. Napsaný primárně pro Windows v C#. Sputitelná verze programu
Gkódy pro 3D tisk
Technologická data pro 3D tisk v MLABu generujeme programem Slic3r. Zatím od něj neexistují připravené balíky v použitelné verzi. Proto je nutné program přeložit přímo ze zdrojových souborů na githubu.
Instalace Slic3r
sudo apt-get install libextutils-cppguess-perl freeglut3-dev
Postup kompilace
Z githubu se aktuálně používá master větev, která je kompromisem mezi stabilitou a možnostmi software. Samotná kompilace pak probíhá vetšinou podle instrukcí v souboru README.md
Programátorské nástroje
Na většinu programování softwaru se používá se v MLABu používá Python, nebo C. Vývojové nástroje jsou pro tyto jazyky dobře obecně známé. Většina vývoje je navíc orientována na Linux. Proto zde uvedeme jen seznam nástrojů, které používáme.
Programovací GUI
Programovací prostředí v kterém je vytvářen zdrojový kód. Mezi uživateli jsou nejoblíbenější následující dvě volby. Jinak lze ale zdrojový kód psát v libovolném textovém editoru.
Light Table
Light Table je programátorský editor kódu, který vyniká speciálními vlastnostmi, jako je například interaktivní spouštění částí zdrojových kódů, nebo přímé vyhledávání v dokumentaci. Jeho instalaci do systému provedeme stažením zkompilovaného balíku z stránky Light Table Download, rozbalením staženého balíku a provedením následujících příkazů, které jej přesunou do systémových složek.
sudo mv LightTable /opt/LightTable sudo ln -s /opt/LightTable/LightTable /usr/bin/lighttable
Sublime text
Multiplatformní placený editor pro linux, Windows, Mac OS. Mezi jeho vyjímečné vlastnosti patří například náhled celého zdrojového kódu. Pro běžné použití stačí nezaplacená varze.
Instalace v Ubuntu
sudo add-apt-repository ppa:webupd8team/sublime-text-3 sudo apt-get update sudo apt-get install sublime-text-installer
Code::Blocks
Jde o velmi rozřířený editor, jehož výhodou je, že běží na více platformách a mohou ho tedy používat i uživatelé windows.
sudo apt-get install codeblocks
Embeded systémy
Nástroje na programování jednotlivých typů mikrokontrolérů jsou většinou popsány v částech týkajících se programování u jednotlivých architektur:
PIC
ARM
AVR
Správa verzí
GitHub
Pro správu softwarového vývoje a dokumentace modulů používáme github.
Linux
Jako nejefektivnější uživatelské rozhraní pro git se osvědčil příkazový řádek s tím, že jeho efektivita je zde ještě markantnější než u SVN.
Nový uživatel
Pro pohodlnou ptáci s git je efektivnější používat metodu klonování s SSH. Není při práci vyžadováno stále přihlašování. Komunikace je autentizována na základě privátního klíče. Pro každý počítač je potřeba vygenerovat unikátní klíč.
- Je potřeba si založit uživatelský účet na https://github.com/
- Následně je potřeba vygenerovat na daném počítači SSH klíč.
- Vygenerovaný klíč je potřeba vložit do účtu na githubu
- Pokud v návodu nefunguje správně uložení klíče do schránky, tak je možné daný klíč získat otevřením skrytého souboru a provést překopírování klíče ručně.
cat ~/.ssh/id_rsa.pub
- Tento postup stačí provést jen při prvním stahování na daném počítači.
Základní příkazy
Klonování repozitáře :
- Nejprve je potřeba vybrat místo, kde má být repozitář v počítači uložen a v daném místě si otevřít příkazový řádek.
- Příklad bude ukázán na repozitáři kicad-mlab: https://github.com/MLAB-project/kicad-mlab
- Na dané stránce si stáhneme potřebnou cestu k repozitáři. Webové tlačítko „Clone or download“.
- Je potřeba si přepnout cestu pro „Clone with SSH“, na místo „Clone with HTTPS“.
- Pro náš případ cesta vypadá takto: git@github.com:MLAB-project/kicad-mlab.git
- Nyní stačí v příkazové řádce zadat příkaz:
git clone git@github.com:MLAB-project/kicad-mlab.git
- Následně můžeme být vyzváni k zadání hesla, které jsme si zvolili při generování SSH klíče.
Stažení aktuální verze:
- V místě uložení repozitáře je potřeba zadat v příkazové řádce následující příkaz:
git pull
Zjištění stavu aktuálnosti repozitáře
git status
Tento příkaz vypíše u jakých souborů došlo ke změně, nebo které byli přidány jako nové.
Přidání nového souboru, složky
git add název_souboru
Po označení celé cesty z výpisu příkazů lze cestu vložit pomocí kliknutí na prostřední tlačítko myši. Pro přidání všech změn lze použít ```git add .```.
Vytvoření commitu
git commit -m "Popis provedené změny"
Po tomto příkazu je commit pouze v lokální kopii repozitáře. Aby se data odeslala na server je potřeba zadat následující příkaz.
Upload na server
git push
Pro ověření, zda veškeré úkony proběhly v pořádku je dobré se podívat na výstup příkazu:
git status
Ve výpisu by neměly být žádné položky, které jsme chtěli nahrát.
Změna velikosti lokálního repozitáře
Git si ve výchozím nastavení stahuje celý repozitář včetně veškeré historie úprav. Toto lze zamezit při stahování repozitáře pomocí parametru ```–depth=<pocet stazenych commitu>```
git clone <adresa_repozitare> --depth=1
Pokuď toto chcete aplikovat na existující kopii repozitáře, lze to provést následujícím postupem.
git fetch --depth 2 git reflog expire --expire=all --all git gc --prune=all
Přejmenování větve repozitáře
Protože u repozitářů hardware není vhodné využívat větev master, neboť mezi větvemi vyrobeného hardware nemá velký smysl větve slučovat do aktuální. Tak každý hardwarový repozitář obsahuje větve pojmenovávající varianty již vyrobeného hardware.
Protože git implicitně předpokládá název hlavní větve jako master, tak je nutné provést přejmenování.
Nejdříve lokálně přejmenujeme větev v naklonovaném repozitáři
git branch -m master new_branch # Rename branch locally
Změnu názvu je potřeba nahrát do repozitáře na serveru
git push --set-upstream origin new_branch # Push the new branch, set local branch to track the new remote
Následně je potřeba ve webovém rozhraní githubu pro nastevení repozitáře změnit jméno default větve. (Na githubu volba Branches → Default branch). Pak je možné větev master smazat.
git push origin :master # Delete the old branch
Odděleni složky z repozitáře do samostatného repozitáře
Některé repozitáře postupem času vyrostou v obrovské molochy, které na disku zabírají hodně prostoru. Toto je příklad repozitáře Modules. Přitom častým požadavkem lidí je snadno navázat na konstrukci jednoho jedinného modulu. Což znamená si ho na githubu forknout. Plánovaným řešením tohoto problému je oddělení jednotlivých modulů do samostatné organizace. Pro oddělení složky modulu do samostatného repozitáře využijeme postup z dokumentace githubu.
Nejdříve je potřeba si naklonovat čistý repozitář.
git clone git@github.com:MLAB-project/Modules.git
V něm je potřeba vyfiltrovat složku, která obsahuje oddělovaný modul
git filter-branch --prune-empty --subdirectory-filter cesta_k/modulu master
Takto upravenému repozitáři ještě vytvoříme větev pojmenovanou podle konkrétní verze modulu.
git branch -m master Názevmodulu_včetně_verze
Následně je potřeba na githubu vytvořit nový repozitář a cestu na remote nahradit jeho adresou. např.
git remote set-url origin git@github.com:mlab-modules/ISM02.git
Pak stačí do repozitáře nahrát připravený obsah odděleného modulu
git push -u origin BRANCH-NAME
Windows
TortoiseGit Pod operačním systémem Windows je možné stahovat pohodlně data z GitHub do počítače přes program TortoiseGit.
Dokumentace vývoje
Textová dokumentace
Veškeré textové dokumenty jsou v MLABu kódovány v UTF-8 někteří uživatelé ale požívají na editaci souborů windows a výsledkem je nekompatibilní soubor, který je třeba překódovat.
Převod kódování textových souborů.
iconv -f WINDOWS-1250 -t UTF-8 zprava.txt -o zprava.txt
Dokuwiki
Dokuwiki je systém ve kterém běží tato dokumentace.
Offline editace
Podstatné ale je, že je možné tuto dokumentaci editovat i offline, což se hodí zejména při cestování.
K tomu je potřeba si na svém notebooku zprovoznit lokální instanci wiki. Tu si zprovozníme podle návodu na instalaci Dokuwiki pod Ubuntu. Data pak mezi oběma instancemi wiki synchronizujeme pomocí pluginu sync, který naistalujeme na svojí lokální instanci wiki. Po první synchronizaci se serverovou wiki můžeme stránky lokálně offline editovat a změny následně nahrát na veřejnou wiki MLAB.
LaTeX
LaTeX je je systém pro sazbu profesionálních dokumentů. V složce templates je pro něj šablona.
V případě psaní dokumentace v Ubuntu se použivají následující balíky
sudo apt-get install texmaker texlive-lang-czechslovak
Po jejich istalaci je možné psát a editovat MLAB dokumenty napsané v LaTeXu
Dokuwiki a Latex
Poslední dobou je poměrně častým dokumentačním problémem převod dokumentace postupně vznikající na wiki do formální podoby dokumentu. Přímé přepisování není příliš efektivní. Proto je vhodnější využít programové nástroje jako například Pandoc, ten umí vzájemně převádět mnoho formátů dokumentů. Ale neumí přímý převod Dokuwiki syntaxe na Latex. Lze si však pomoci použitím HTML kódu, který generuje dokuwiki a se kterým již Pandoc umí pracovat.
Webová verze Pandoc umí zpracovat HTML kód o délce pouze do 1000 znaků. Je proto vhodné si nainstalovat lokální offline verzi.
sudo apt-get install pandoc
Převod pak můžeme realizovat příkazem:
pandoc -f html -s -t latex temp_doc.html
Převedený dokument se nám pak vypíše do příkazové řádky, odkud jej pak stačí zkopírovat do Latexového editoru.
Obrázková dokumentace
Dia
Program dia slouží na tvorbu diagramů a blokových schémat.
Fritzing
Je snaha použít fritzing pro tvorbu dokumentace zapojení jednotlivých modulů v konstrukcích. Zatím však Fritzing nepodporuje mechanické umístění. Plošných spojů. Takže se tento nástroj reálně nepoužívá.
Prezi
Je nástroj na tvorbu veřejných prezentací projektů.
ImageMagick
Kontrola kvality
Pro zkontrolování celkové kvality dokumentace návrhů slouží přehled dokumentace modulů.
Tento přehled lze řadit podle různých kriterií. Například
- https://www.mlab.cz/modules/all?order=status,name - řazení podle stavu a jména
- https://www.mlab.cz/modules/all?order=id - podle id (výchozí)
- https://www.mlab.cz/modules/all?order=root - podle složky (tedy kategorií)
Každý modul má přiřazenou známku kvality. Aktuálně se hodnotí kvalita fotografie podle následujících kritérií
- 0 - žádná fotografie
- 25 - render z KiCAD
- 50 - nekvalitní fotografie např. z telefonu
- 100 - profesionální fotografie z fotografického boxu.
Organizace vývoje
Redmine
Je nástroj pro vytváření úkolů a dělbu práce na projektech. Jeho instanceběží na serveru.
Nástroje pro zpracování dat
Interaktivní výpočetní nástroje
Jupyter notebook
Jupyter je softwarový nástroj, který umožňuje použít více výpočetních a programátorských balíků jako je například Python nebo Octave. Výhodou Jupyteru je interaktivní zpracování příkazů což oceníme hlavně při testování nebo psaní nových algoritmů.
Instalace
Postupujeme podle doporučení v repozitáři se zdrojovými kódy.
sudo pip install notebook
Spuštění se naopak provede
jupyter notebook
Kde si pak zvolíme námi použitý kernel.
gnuradio
Gnuradio je nástroj pro zpracování signálových dat obvykle z SDR přijímačů.
Simulační nástroje
Nec2++
Necpp je nástroje pro numerické výpočty anténních parametrů.
QAntenna
Kompilace
sudo apt-get install qtbase5-dev qttools5-dev
git clone git://git.code.sf.net/p/qantenna/code qantenna-code qttools5-dev-tools cd qantenna-code/ qmake qantenna.pro make