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/02/08 22:18] – [Vývojová verze] 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.
-===== Interaktivní uživatelské rozhraní iPython ===== 
-  
-Vhodným řešením pro testování zařízení je použití interaktivního prostředí iPython, kde můžeme přímo interaktivně zkoušet jednotlivé části kódu a zpracovávat, nebo vykreslovat měřená data.  
  
-Ubuntu iPython získáme instalací těchto balíků:  +==== i2c-tools ==== 
-  sudo apt-get install ipython-notebook python-scipy python-numpy+[[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. 
  
-Pak již můžeme iPython spustit z příkazového řádku +  git clone https://github.com/MLAB-project/i2c-tools.git 
-  ipython notebook --pylab inline+  cd i2c-tools 
 +  make EXTRA="py-smbus" 
 +  sudo make install 
 +  cd py-smbus 
 +  sudo python setup.py install 
 +  sudo ldconfig
  
-Tento íkaz spustí server iPythonu 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.+Verze I2C-tools umístěná na MLAB githubu má oproti verzi z repozitářů Ubuntu idané metody read_i2c_block 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.  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 59: Řá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.1454969925.txt.gz · Poslední úprava: 2016/02/08 22:18 (upraveno mimo DokuWiki)