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 [2016/12/06 19:44] – [i2c-tools] kaklik
Řá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 STM32 ===== 
- 
-Pro použití Python frameworku na vyčítání čidel přímo z [[cs:stm32f10xrxt]] by bylo užitečné použít Python interpretr pro ARM. Například by mohl být použitelný [[http://code.google.com/p/python-on-a-chip/|Python on a chip]].  
- 
  
cs/pymlab.txt · Poslední úprava: 2017/02/23 12:17 (upraveno mimo DokuWiki)