Uživatelské nástroje

Nástroje pro tento web


cs:pymlab

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.


Předchozí verze
cs:pymlab [Unknown date] (aktuální) – upraveno mimo DokuWiki (Unknown date) 127.0.0.1
Řádek 1: Řádek 1:
 +====== Komunikační knihovna pymlab ======
 +
 +Jde o softwarový balík, který umožňuje vytvářet senzorovou síť založenou na komunikačních rozhraních RS232, [[cs:i2c|I²C]], Ethernet a USB. Jde o pokusnou implementaci [[cs:pdn|polymorfní sítě přístrojů]].
 +
 +Princip funkce spočívá v definování struktury sítě a adres jednotlivých nódů v konfiguračním souboru ovládacího programu. Lze tak ke všem bodům v síti přistupovat pomocí jazyka Python. Pro routování I2C mezi jednotlivými segmenty obsahujícími čidla se stejnými adresami jsou využívány moduly  [[cs:i2chub|I2Chub02A]], které slouží jako routovací body pro zařízení, která nemohou být na jedné větvi sběrnice. Což je například více senzorů se stejnou I²C adresou. Zdrojové soubory knihovny a příkladů použití jsou v repozitáři [[https://github.com/MLAB-project/MLAB-I2c-modules|pyMLAB]] na  MLAB Githubu.
 +
 +Výsledkem je možnost testovat a demonstrovat všechna nová čidla a zařízení. Bez nutnosti udržovat aktuální specifické zdrojové kódy pro všechny používané MCU. Lze tak dosáhnout nezávislosti na aktuálně používaných mikrokontrolérech, protože v blízké době by mělo být možné z Pythonu generovat program pro různé architektury.
 +
 +===== Instalace =====
 +
 +Pokud potřebujeme na sběrnici přistupovat přes rozhraní USB pomocí modulu [[cs:usbi2c|USBI2C01A]], tak je potřeba nainstalovat balík s hidapi, libusb a další nástroje.
 +
 +  sudo apt-get install libudev-dev libusb-1.0-0-dev libhidapi-dev python-setuptools python-smbus python-numpy cython git
 +
 + Viz [[cs:usbi2c|stránka tohoto modulu]].
 +Instalaci samotného softwarového balíku pymlab pak provedeme snadno pomocí: 
 +
 +  sudo easy_install pymlab
 +  
 +nebo 
 +  sudo pip install pymlab
 +
 +Oba příkazy jsou rovnocenné a využívají python balíčkovací systém ve kterém je [[https://pypi.python.org/pypi/pymlab/|pymlab zařazen]]. Tím by měly být staženy i závislosti se kterými pymlab pracuje, jako je například cython-hidapi v pythonu označovaný pouze jako modul hid.  
 +
 +==== Vývojová verze ====
 +
 +Nejaktuálnější vývojová verze knihovny je k dispozici na githubu. Tu nainstalujeme následujícím způsobem. Výhoda využití gitu je v tom, že knihovnu můžeme snadno upravovat a vyvíjet. 
 +
 +  git clone https://github.com/MLAB-project/pymlab.git
 +  cd pymlab
 +  git checkout dev
 +  sudo python setup.py develop
 +
 +Následně je užitečné úpravy knihovny zpětně vystavit na githubu, nebo vytvořit pull-request.
 +
 +==== i2c-tools ====
 +[[https://github.com/MLAB-project/i2c-tools|i2c-tools]] je balík nástrojů pro manipulaci s I²C zařízeními v prostředí Linuxu. Mimo jiné ale obsahuje zdrojové kódy knihovny python-smbus, která je důležitá pro fungování pymlabu. 
 +
 +  git clone https://github.com/MLAB-project/i2c-tools.git
 +  cd i2c-tools
 +  make EXTRA="py-smbus"
 +  sudo make install
 +  cd py-smbus
 +  sudo python setup.py install
 +  sudo ldconfig
 +
 +Verze I2C-tools umístěná na MLAB githubu má oproti verzi z repozitářů Ubuntu přidané metody read_i2c_block a write_i2c_block, které umožňují komunikaci se zařízeními, kterým nestačí SMBus podmnožina příkazů sběrnice. 
 +
 +===== Použití =====
 +
 +Základní vlastností knihovny pymlab je možnost nadefinovat strukturu sítě senzorů. Obecně jde o síť zařízení se kterými komunikovat uživatelský kód. Definice sítě vypadá například takto: 
 +
 +  cfg = config.Config(
 +      i2c = {
 +          "port": '/dev/ttyUSB0', # I2C bus number eg 0 or system device address in case of serial driver'/dev/ttyUSB0'
 +          "device": 'serial',  # here you can explicitly set I2C driver with 'hid', 'smbus', 'serial'
 +      },
 +  
 +      bus = [
 +          {
 +              "type": "i2chub",
 +              "address": 0x73,
 +              
 +              "children": [
 +                  {"name": "thermopile", "type": "thermopile01", "channel": 4, },
 +              ],
 +           },
 +      ],
 +  )
 +
 +Jde o JSON zápis struktury. Blok i2c definuje kořenové komunikační rozhraní. Ten má dva parametry.
 +Parametr //port// určuje systémové rozhraní které bude využito pro komunikaci. Může mít hodnoty buď číslo systémového [[cs:i2c|I2C]] portu na který se má knihovna pymlab připojit.
 +Nebo řetězec, který určuje adresu k systémovému souboru, který se má použít pro komunikaci. 
 +
 +Volba "device" pak může mít několik hodnot podle typu rozhraní, které má být použito. Aktuálně jsou podporovány tyto typy:
 +
 +  * 'smbus' - Systémové smbus/I²C rozhraní
 +  * 'hid' - Připojení přes HIDAPI, což je například případ použití modulu [[cs:usbi2c|]]
 +  * 'serial' - Systémové seriové rozhraní například kombinace [[cs:usb232r|]] a [[cs:i2c232v|]]
 +
 +Pokud má //device// hodnotu //None//, nebo není vůbec zadaný, tak se knihovna pokusí sekvenčně použít jednotlivé drivery. 
 +
 +
 +<WRAP center round tip 80%>
 +Pro přímý přístup ke sběrnici I²C bez sudo je třeba být ve skupině i2c. Uživatele tam přidáme například takto. 
 +  sudo adduser kaklik i2c
 +
 +Změna se projeví po odhlášení a přihlášení uživatele.
 +
 +</WRAP>
 +
 +----
 +Poznámka: Pro seznámení se s jazykem [[http://www.tutorialspoint.com/python/|Python]] můžete využít [[http://physics.muni.cz/~janak/pyzen/|Zenovou školu Pythonu]] od Zdeňka Janáka.
 +
 +===== TODO =====
 +
 +==== Grafické rozhraní ====
 +
 +Grafické rozhraní by v kombinaci s touto knihovnou mohlo být využito pro definování síťové topologie a případné vykreslování grafů ze senzorů zapojených do sítě.  Jedním z již hotových nástrojů, které by pro takovou aplikaci bylo možné použít je například [[http://www.pyqtgraph.org/|PyQtGraph]]
 +
 +{{ :cs:sw:flowchart.png?direct&500 |}}
 +
 +===== Python interpreter pro ARM =====
 +
 +Pro použití Python frameworku na vyčítání čidel přímo z některého mikrokonroleru připojeného na sběrnici by bylo užitečné použít Python interpretr pro ARM. Například by mohl být použitelný [[https://micropython.org/|MicroPython]]. 
 +
 +===== Cubesat Space Protocol =====
 +
 +Pro aplikace kde je potřeba větší spolehlivost, ale je výhodné zachovat fyzickou vrstvu [[cs:i2c|I2C]] by mohlo být výhodné implementovat [[https://en.wikipedia.org/wiki/Cubesat_Space_Protocol|Cubesat Space Protocol]].
 +
 +
  
cs/pymlab.txt · Poslední úprava: 2017/02/23 12:17 (upraveno mimo DokuWiki)