====== 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 [[cs:navody|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 [[http://www.kicad-pcb.org/display/KICAD/KiCad+EDA+Software+Suite|KiCad]] je jeden z [[http://en.wikipedia.org/wiki/Comparison_of_EDA_software|OpenSource]] nástrojů určený k EDA návrhu elektronických konstrukcí. Použití KiCADu pro návrh modulů popisuje [[cs:kicad|samostatná stránka KiCAD]]. ==== 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 [[cs:kicad|KiCAD]]. Zdůvodu zachování kompatibility však má Mentor [[cs:pads_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 [[cs:pads_mentor|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 [[cs:kicad|KiCAD]]. Historické použití OrCADu je však zdokumentováno na [[cs:orcad|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í [[cs:eagle|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 [[http://librecad.org/cms/home.html|LibreCAD]]. V Ubuntu jej lze nainstalovat přímo z balíku: sudo apt-get install librecad ==== FreeCAD ==== [[https://www.freecadweb.org/|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 ==== OpenSCAD ==== [[http://www.openscad.org/|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 [[http://blog.cubehero.com/2013/11/19/know-only-10-things-to-be-dangerous-in-openscad/|Know only 10 things to be dangerous in OpenSCAD]], existuje také [[http://www.openscad.org/cheatsheet/|přehled základních funkcí]]. Dalším zdrojem informací je [[https://www.youtube.com/watch?v=Lt7-Zg4GD8o&list=PLmh6bwr3ZDwDQG2mJzvW8x1oJy1AZJpN-|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 [[https://github.com/MLAB-project/stl-thumbnailer|stl-thumbnailer]]. [[cs:openscad|Podrobnější popis použití nástroje OpenSCAD]]. ===== Generování a prohlížení výrobních dat ===== ==== Gerber data ==== Pro prohlížení vygenerovaných dat jsou vhodné nástroje: * [[http://gerbv.sourceforge.net/|Gerbv]] - Linux * [[http://www.pentalogix.com/|ViewMate]] - Windows === 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 [[http://www.dent.med.uni-muenchen.de/~kkunzelm/htdocs/6_software-tools-panelize_metric-kicad-files.html| 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 [[https://github.com/MLAB-project/gerbmerge3|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 [[http://www.gedasymbols.org/user/stefan_tauner/tools/gerbmerge/doc/layoutfile.html|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 [[https://github.com/MLAB-project/gerbmerge|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 [[https://github.com/MLAB-project/gerbmerge/tree/ust-patches/MLAB_panel/02_PRO/2V/PRO201B|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 [[https://github.com/MLAB-project/gerbmerge/blob/ust-patches/MLAB_panel/02_PRO/2V/PRO201B/layout.txt|layout.txt]]. Formát tohoto souboru je popsán [[http://www.gedasymbols.org/user/stefan_tauner/tools/gerbmerge/doc/layoutfile.html|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 == [[https://github.com/ThisIsNotRocketScience/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#. [[https://github.com/ThisIsNotRocketScience/GerberTools/releases|Sputitelná verze programu]] ==== Gkódy pro 3D tisk ==== Technologická data pro 3D tisk v MLABu generujeme programem [[http://slic3r.org/|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 === [[http://lighttable.com/|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 [[http://lighttable.com/|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. [[http://www.codeblocks.org/|Code::Blocks]] sudo apt-get install codeblocks === ATOM === [[https://atom.io/|ATOM]] je nástroj pro univerzální editaci zdrojových kódů. ==== 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 === * [[cs:pic_programming|PIC]] === ARM === * [[cs:arm_programming|ARM]] === AVR === * [[cs:avr_programming|AVR]] ===== Správa verzí ===== ==== GitHub ==== Pro správu softwarového vývoje a dokumentace modulů používáme [[https://github.com/MLAB-project|github]]. Github používá verzovací nástroj [[https://cs.wikipedia.org/wiki/Git | git ]], jeho použití máme popsané na samostatné stránce [[cs:git|]] ==== Subversion ==== Historicky byly konstrukce i moduly udržovány pomocí nástroje [[https://en.wikipedia.org/wiki/Apache_Subversion | Subversion]]. Na tomto nástroji je i postaven ještě původní [[http://home.mlab.cz/Server/GenIndex/GenIndex.php?lang=en&path=/Designs |MLAB web]]. ===== 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 [[https://www.dokuwiki.org/install:ubuntu#alternative_easier_custom_installation|návodu na instalaci Dokuwiki pod Ubuntu]]. Data pak mezi oběma instancemi wiki synchronizujeme pomocí [[https://www.dokuwiki.org/plugin:sync|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 [[http://cs.wikipedia.org/wiki/LaTeX|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 [[http://johnmacfarlane.net/pandoc/try/|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. [[http://donaldmerand.com/code/2012/07/20/how-i-actually-convert-dokuwiki-to-latex.html| Offline metoda tohoto převodu]] ==== 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 === [[http://www.imagemagick.org/Usage/resize/#shrink|Změna velikosti obrázků]]. ===== Kontrola kvality ===== Pro zkontrolování celkové kvality dokumentace návrhů slouží [[https://www.mlab.cz/modules/all|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 [[cs:designs:fotobedna|fotografického boxu]]. ===== Organizace vývoje ===== ==== Redmine ==== Je nástroj pro vytváření úkolů a dělbu práce na projektech. Jeho instance[[http://www.mlab.cz/redmine|běží 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í [[https://github.com/jupyter/notebook|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 ===== [[http://gnuradio.org/|Gnuradio]] je nástroj pro zpracování signálových dat obvykle z SDR přijímačů. ====== Simulační nástroje ====== ===== Nec2++ ===== [[http://elec.otago.ac.nz/w/index.php/Necpp|Necpp]] je nástroje pro numerické výpočty anténních parametrů. ==== QAntenna ==== [[http://qantenna.sourceforge.net/download.php|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