cs:usbi2c
                Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Předchozí verze | |||
| — | cs:usbi2c [2024/11/07 12:36] (aktuální) – [HIDAPI] kaklik | ||
|---|---|---|---|
| Řádek 1: | Řádek 1: | ||
| + | ====== Převodník USB na I²C - USBI2C01A ====== | ||
| + | |||
| + | [[cs: | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Modul se proto snaží řešit tento problém použitím obvodu [[http:// | ||
| + | |||
| + | ===== Použití modulu ===== | ||
| + | |||
| + | Modul se po připojení k USB chová, jako standardní HID zařízení. Tato vlastnost má výhodu, že teoreticky nepotřebuje žádné speciální ovladače. A s modulem lze komunikovat přímo přes standardní USB HID rozhraní. Některé operační systémy však obsahují programové vybavení pro přímé použití sběrnice I2C/SMBus. V takových případech je výhodné nahradit generický USB HID ovladač speciálním driverem, který tento modul zapojí do systémové sběrnice I2C. | ||
| + | |||
| + | ==== HIDAPI ==== | ||
| + | |||
| + | HIDAPI je platforma, přes kterou se dá k převodníku přistupovat z Linuxu, Windows nebo MAC OS na různých procesorových platformách. Podmínkou je, že na dané platformě je nainstalováno libusb-1.0. | ||
| + | |||
| + | |||
| + | === Ubuntu Linux === | ||
| + | |||
| + | Na počítač, ke kterému převodník připojíme, | ||
| + | |||
| + | sudo apt-get install libudev-dev libusb-1.0-0-dev libhidapi-dev python-setuptools python-pip python-smbus cython | ||
| + | |||
| + | Dále pak potřebujeme pouze balík [[cs: | ||
| + | |||
| + | sudo pip install pymlab | ||
| + |  | ||
| + | == Nastavení USBI2C v pymlabu s HIDAPI == | ||
| + | Převodník USBI2C lze používat s [[cs: | ||
| + | |||
| + | Nastavení může vypadat takto: | ||
| + |  | ||
| + | cfg = config.Config( | ||
| + | i2c = { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + |  | ||
| + | bus = [ | ||
| + | { << Dalsi Pymlab zarizezi >>}, | ||
| + | ], | ||
| + | ) | ||
| + | cfg.initialize() | ||
| + |  | ||
| + | |||
| + | == Příklad blikání LEDkami na USBI2C01A pomocí Pythonu: == | ||
| + | |||
| + | import hid | ||
| + | import time | ||
| + |  | ||
| + | try: | ||
| + | print " | ||
| + | h = hid.device() | ||
| + | h.open(0x10C4, | ||
| + |  | ||
| + | print " | ||
| + | print " | ||
| + | print " | ||
| + |  | ||
| + | h.write([0x02, | ||
| + | time.sleep(0.1) | ||
| + | for k in range(10): | ||
| + | h.write([0x04, | ||
| + | time.sleep(0.1) | ||
| + | h.write([0x04, | ||
| + | time.sleep(0.1) | ||
| + |  | ||
| + | print " | ||
| + | h.close() | ||
| + |  | ||
| + | except IOError, ex: | ||
| + | print ex | ||
| + |  | ||
| + | print " | ||
| + | |||
| + | //Příklad je nutné spustit s oprávněním správce.// | ||
| + | |||
| + | <WRAP info round> | ||
| + | Podrobnosti k ovládání IO portů přes HID API najdete v [[http:// | ||
| + | |tomto dokumentu]] | ||
| + | </ | ||
| + | |||
| + | == Nastavení přístupových práv k USB == | ||
| + | |||
| + | Aby se skript nemusel spouštět s právy roota, je třeba vytvořit v adresáři **/ | ||
| + | |||
| + | SUBSYSTEM==" | ||
| + | SUBSYSTEM==" | ||
| + |  | ||
| + | Aby se tato konfigurace stala aktivní, tak je potřeba USB zařízení odpojit a opět připojit. | ||
| + |  | ||
| + | === Windows 8 === | ||
| + | |||
| + | Pokud ve windows jeste nemame, tak stahneme a nainstalujeme [[https:// | ||
| + | Spolecne s nim potrebujeme mit nainstalovany i nastroj pip. V pripade, ze se nenainstaluje spolecne s pythonem (sel by spustit z prikazoveho radku), tak jej musime nainstalovat samostatne, podle navodu na teto strance: https:// | ||
| + | |||
| + | Dale pak  stahneme a nainstalujeme [[http:// | ||
| + | pip install C: | ||
| + | |||
| + | Pri instalaci se muze stat, ze pip odmitne balik nainstalovat kvuli spatne zdetekovane architekture win32 viz. [[http:// | ||
| + | |||
| + | Po uspesne instalaci vsech zavislosi muzeme nainstalovat hidapi. | ||
| + | |||
| + | H:\>pip install hidapi | ||
| + | Collecting hidapi | ||
| + | Using cached hidapi-0.7.99-6.tar.gz | ||
| + | Building wheels for collected packages: hidapi | ||
| + | Running setup.py bdist_wheel for hidapi | ||
| + | Stored in directory: C: | ||
| + | 4967b124ee3c5de267640f1b6fd0da760d99cf4e81181aab7 | ||
| + | Successfully built hidapi | ||
| + | Installing collected packages: hidapi | ||
| + | Successfully installed hidapi-0.7.99.post6 | ||
| + | H:\> | ||
| + | ==== Linux Kernel ==== | ||
| + | |||
| + | Linux je případem operačního systému, kde existuje systémové řešení komunikace se sběrnicí I2C, takže je výhodné generický HID ovladač vyměnit za modul v kernelu. Obvod CP2112 je podporován v linuxovém kernelu od verze jádra 3.16. K jeho funkci proto stačí zavést modul i2c-dev, jak je popsáno v [[cs: | ||
| + | |||
| + | kaklik@UST-vyvoj: | ||
| + | i2c-0	i2c | ||
| + | i2c-1	i2c | ||
| + | i2c-2	i2c | ||
| + | i2c-3	i2c | ||
| + | i2c-4	i2c | ||
| + | i2c-5	i2c | ||
| + | i2c-6	i2c | ||
| + | i2c-7	smbus | ||
| + | i2c-8	smbus | ||
| + | kaklik@UST-vyvoj: | ||
| + | |||
| + | Pokud ano, tak rozhraním můžeme pracovat stejně jako s klasickou SMBus sběrnicí. S tím rozdílem, že modul neumí SMBus Quick Write, musíme proto použít parametr //-r//, jako je uvedeno v následujícím příkladu: | ||
| + | |||
| + | kaklik@UST-vyvoj: | ||
| + |  | ||
| + | 00: -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
| + | 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
| + | 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
| + | 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
| + | 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
| + | 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
| + | 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
| + | 70: 70 -- -- -- -- -- -- -- | ||
| + | kaklik@UST-vyvoj: | ||
| + | |||
| + | Vidíme, že je na sběrnici připojeno zařízení s adresou //0x70//, které je v tomto případě [[cs: | ||
| + | |||
| + | ==== Ukázky připojených I²C modulů ==== | ||
| + | |||
| + | === CLKGEN01B === | ||
| + | |||
| + | [[cs: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| + | |||
| + | === MAG01A === | ||
| + | |||
| + | [[cs:mag]] | ||
| + | |||
| + | {{: | ||
| + | |||
| + | === GPIO === | ||
| + | |||
| + | [[cs: | ||
| + | |||
| + | {{youtube> | ||
| + | ===== Související stránky ===== | ||
| + | |||
| + | * [[cs: | ||
| + | * [[cs: | ||
| + | * [[cs: | ||
| + | |||
| + | |||
| + | ===== Reference ===== | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
