User Tools

Site Tools

This translation is older than the original page and might be outdated. See what has changed.
Translations of this page?:

Action disabled: register
cs: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 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 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 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 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 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 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

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 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 usbi2c
  • 'serial' - Systémové seriové rozhraní například kombinace usb232r a i2c232v

Pokud má device hodnotu None, nebo není vůbec zadaný, tak se knihovna pokusí sekvenčně použít jednotlivé drivery.

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.


Poznámka: Pro seznámení se s jazykem Python můžete využít 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 PyQtGraph

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ý MicroPython.

Cubesat Space Protocol

Pro aplikace kde je potřeba větší spolehlivost, ale je výhodné zachovat fyzickou vrstvu I2C by mohlo být výhodné implementovat Cubesat Space Protocol.

cs/pymlab.txt · Last modified: 2017/02/23 12:17 (external edit)