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.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
Následující verze
Předchozí verze
cs:pymlab [2016/04/03 15:56] kaklikcs:pymlab [Unknown date] (aktuální) – upraveno mimo DokuWiki (Unknown date) 127.0.0.1
Řádek 1: Řádek 1:
 ====== Komunikační knihovna pymlab ====== ====== 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, I²C, Ethernet a USB. Jde o pokusnou implementaci [[cs:pdn|polymorfní sítě přístrojů]].+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. 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.
Řádek 9: Řádek 9:
 ===== Instalace ===== ===== 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 a další nástroje. Viz [[cs:usbi2c|stránka tohoto modulu]].+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í:  Instalaci samotného softwarového balíku pymlab pak provedeme snadno pomocí: 
  
Řádek 17: Řádek 21:
   sudo pip install pymlab   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.  Nenainstaluje se ale libusb. To stále musíme provést ručně pomocí: +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.  
- +
-  sudo apt-get install libudev-dev libusb-1.0-0-dev libhidapi-dev python-setuptools python-smbus cython +
  
 ==== Vývojová verze ==== ==== Vývojová verze ====
  
-Nejaktuálnější vývojová verze knihovny je k dispozici na githubu. Tu taktéž můžeme nainstalovat do systému knihovnu přitom vyvíjet.+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   git clone https://github.com/MLAB-project/pymlab.git
Řádek 31: Řádek 33:
  
 Následně je užitečné úpravy knihovny zpětně vystavit na githubu, nebo vytvořit pull-request. 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í ===== ===== 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: 
  
-==== Interaktivní uživatelské rozhraní iPython ==== +  cfg config.Config( 
-  +      i2c 
-Vhodným řešením pro testování zařízení je použití interaktivního prostředí iPythonkde můžeme přímo interaktivně zkoušet jednotlivé části kódu a zpracovávatnebo vykreslovat měřená data. +          "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, }, 
 +              ], 
 +           }, 
 +      ], 
 +  )
  
-Ubuntu iPython získáme instalací těchto balíků:  +Jde o JSON zápis struktury. Blok i2c definuje kořenové komunikační rozhraní. Ten má dva parametry. 
-  sudo apt-get install ipython-notebook python-scipy python-numpy+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. 
  
-Pak již můžeme iPython spustit z příkazového řádku +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:
-  ipython notebook --pylab inline+
  
-Tento íkaz spustí server iPythonu a obvykle otevře i okno systémového webového prohlížeče s otevřenou složkou ze které jsme iPython server spustili. Vytvořené notebooky se pak ukládají s adresou relativní k této složce.+  * 'smbus' - Systémové smbus/I²C rozhraní 
 +  * 'hid' - Připojení 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.  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   sudo adduser kaklik i2c
  
 Změna se projeví po odhlášení a přihlášení uživatele. Změna se projeví po odhlášení a přihlášení uživatele.
 +
 +</WRAP>
  
 ---- ----
Řádek 63: Řádek 101:
 {{ :cs:sw:flowchart.png?direct&500 |}} {{ :cs:sw:flowchart.png?direct&500 |}}
  
-===== Python interpreter pro ARM STM32 =====+===== 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]].
  
-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.1459698975.txt.gz · Poslední úprava: 2016/04/03 15:56 (upraveno mimo DokuWiki)