cs:usbi2c
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verzeNásledující verzeObě strany příští revize | ||
cs:usbi2c [2014/05/03 15:14] – kaklik | cs:usbi2c [2018/03/07 18:18] – roman | ||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
- | ====== Převodník USB na I²C USBI2C01A ====== | + | ====== Převodník USB na I²C - USBI2C01A ====== |
- | I²C je velmi rozšířená sběrnice vhodná pro připojování nejrůznějších čidel na krátké vzdálenosti. Avšak není obvyklé, aby byla vyvedena na běžných počítačích a dostupná tak k přímému použití. (([[http:// | + | [[cs:i2c|I²C]] je velmi rozšířená sběrnice vhodná pro připojování nejrůznějších čidel na krátké vzdálenosti. Avšak není obvyklé, aby byla vyvedena na běžných počítačích a dostupná tak k přímému použití. (([[http:// |
{{ : | {{ : | ||
Řádek 9: | Řádek 9: | ||
===== Použití modulu ===== | ===== Použití modulu ===== | ||
- | Modul se po připojení k USB chová, jako standardní HID zařízení. | + | Modul se po připojení k USB chová, jako standardní HID zařízení. |
==== HIDAPI ==== | ==== HIDAPI ==== | ||
Řádek 18: | Řádek 18: | ||
=== Ubuntu 14.04 === | === Ubuntu 14.04 === | ||
- | Na počítač, ke kterému převodník připojíme, | + | 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-smbus cython | + | sudo apt-get install libudev-dev libusb-1.0-0-dev libhidapi-dev python-setuptools |
- | Dále pak potřebujeme pouze balík Pymlab, jak je zmíněno na stránce [[cs:i2c]]. | + | Dále pak potřebujeme pouze balík |
sudo pip install pymlab | 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: == | == Příklad blikání LEDkami na USBI2C01A pomocí Pythonu: == | ||
Řádek 33: | Řádek 52: | ||
try: | try: | ||
print " | print " | ||
- | h = hid.device(0x10C4, | + | h = hid.device() |
+ | h.open(0x10C4, 0xEA90) | ||
| | ||
print " | print " | ||
Řádek 39: | Řádek 59: | ||
print " | print " | ||
| | ||
- | h.write([0x02, | + | h.write([0x02, |
time.sleep(0.1) | time.sleep(0.1) | ||
for k in range(10): | for k in range(10): | ||
- | h.write([0x04, | + | h.write([0x04, |
time.sleep(0.1) | time.sleep(0.1) | ||
- | h.write([0x04, | + | h.write([0x04, |
time.sleep(0.1) | time.sleep(0.1) | ||
| | ||
Řádek 56: | Řádek 76: | ||
//Příklad je nutné spustit s oprávněním správce.// | //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 == | == Nastavení přístupových práv k USB == | ||
Řádek 61: | Řádek 86: | ||
Aby se skript nemusel spouštět s právy roota, je třeba vytvořit v adresáři **/ | Aby se skript nemusel spouštět s právy roota, je třeba vytvořit v adresáři **/ | ||
- | SUBSYSTEM==" | + | SUBSYSTEM==" |
- | SUBSYSTEM==" | + | SUBSYSTEM==" |
| | ||
- | ==== Linux Kernel ==== | + | Aby se tato konfigurace stala aktivní, tak je potřeba USB zařízení odpojit a opět připojit. |
+ | |||
+ | === Windows 8 === | ||
- | 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 jiný. Zatím ale neexistuje vhodný ovladač integrovaný v jádře, ale vyvíjí se mimo něj. <wrap info> Podle současného vývoje by driver měl být stabilně integrován v jádře 3.15. </ | + | Pokud ve windows jeste nemame, tak stahneme a nainstalujeme |
+ | 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:// | ||
- | To lze udělat buď kompilací nového modulu do aktuálního jádra které používáme, | + | Dale pak stahneme a nainstalujeme |
+ | pip install C: | ||
- | === Kompilace samostatného modulu === | + | Pri instalaci se muze stat, ze pip odmitne balik nainstalovat kvuli spatne zdetekovane architekture win32 viz. [[http:// |
- | <WRAP info round> | + | Po uspesne instalaci vsech zavislosi muzeme nainstalovat hidapi. |
- | Tato metoda použití modulu zatím nefunguje úplně správně, použijte prosím metodu kompilace celého jádra. | + | |
- | </ | + | |
- | Nejdříve zkompilujeme modul hid-cp2112 | + | 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 ==== | ||
- | git clone https:// | + | Linux je případem operačního systému, kde existuje systémové řešení komunikace |
- | cd hid-cp2112 | + | |
- | make | + | |
- | + | ||
- | Kdyby jsme se v této chvíli pokusili modul vložit do jádra pomocí //insmod//, tak se modul sice do jádra vloží. Ale nic se nestane, neboť k modulu USBI2C01A se mezitím přilepí | + | |
- | + | ||
- | [34842.853142] usb 3-4: new full-speed USB device number 3 using xhci_hcd | + | |
- | [34842.870424] usb 3-4: New USB device found, idVendor=10c4, | + | |
- | [34842.870427] usb 3-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 | + | |
- | | + | |
- | | + | |
- | [34842.870430] usb 3-4: SerialNumber: | + | |
- | [34842.874171] hid-generic 0003: | + | |
- | + | ||
- | Na poslední řádce vidíme, že přidělený identifikátor je v tomto případě **0003: | + | |
- | + | ||
- | sudo su | + | |
- | echo -n " | + | |
- | + | ||
- | A připojíme na něj náš nově přeložený ovladač: | + | |
- | + | ||
- | insmod ./ | + | |
- | echo -n " | + | |
- | + | ||
- | Následně ověříme, že v systému vidíme novou sběrnici I²C. | + | |
- | i2cdetect -l | + | |
i2c-0 i2c | i2c-0 i2c | ||
i2c-1 i2c | i2c-1 i2c | ||
Řádek 111: | Řádek 125: | ||
i2c-4 i2c | i2c-4 i2c | ||
i2c-5 i2c | i2c-5 i2c | ||
- | i2c-6 i2c | + | i2c-6 i2c |
- | i2c-7 i2c | + | i2c-7 smbus |
i2c-8 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: |
- | + | ||
- | | + | |
| | ||
00: -- -- -- -- -- -- -- -- -- -- -- -- -- | 00: -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
Řádek 126: | Řádek 141: | ||
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
- | 70: -- -- -- -- -- -- -- -- | + | 70: 70 -- -- -- -- -- -- -- |
- | | + | |
- | + | Vidíme, že je na sběrnici připojeno zařízení s adresou //0x70//, které je v tomto případě [[cs: | |
- | === Kompilace celého jádra | + | |
- | V terminálu se přepneme do složky ve které chceme kernel zkompilovat. Následně stáhneme zdrojový balíček aktuálně běžícího kernelu: | + | ==== Ukázky |
- | apt-get source linux-image-$(uname -r) | + | === CLKGEN01B === |
- | Následně nainstalujeme nástroje potřebné pro kompilaci. | + | [[cs: |
- | sudo apt-get install kernel-package libncurses5 libncurses5-dev | + | {{: |
- | sudo apt-get build-dep linux-image-$(uname -r) | + | |
- | V této fázi by již měl být k dispozici nový adresář obsahující zdrojové kódy jádra. V našem případě linux-3.11.0. Přepneme se do něj a vytvoříme konfiguraci jádra identickou s aktuálně běžícím jádrem. | ||
- | cd linux-3.11.0 | ||
- | make oldconfig | ||
- | Následně aplikujeme [[https:// | + | === MAG01A === |
- | patch -Np1 --ignore-whitespace | + | [[cs:mag]] |
- | Pravděpodobně se stane, že některé soubory nebude možné automaticky upravit. Proto je potřeba to udělat ručně | + | {{: |
- | Takto najdeme odmítnuté změny. | + | |
- | find . -name " | + | === GPIO === |
- | + | ||
- | A postupně je upravíme ručně. A násdne spustíme menuconfig ve kterém nový modul zapneme. Na cestě: //> Device Drivers > HID support > Special HID drivers; | + | |
- | + | ||
- | make menuconfig | + | |
- | + | ||
- | Ukončíme menuconfig a zapneme kompilaci kernelu | + | |
- | + | ||
- | sudo make-kpkg -j 8 --initrd --append-to-version=i2c-test kernel-image | + | |
- | + | ||
- | Ta bude chvíli trvat a spotřebuje cca 10 GB místa pro vytvoření objektových souborů.. Po skončení operace by se v nadřazeném adresáři měl objevit .deb balíček, který můžeme naistalovat pomocí: | + | |
- | + | ||
- | sudo dpkg -i linux-image-3.11.10i2c-test_3.11.10i2c-test-10.00.Custom_amd64.deb | + | |
- | sudo reboot | + | |
- | + | ||
- | Pokud k převodníku máme připojené nějaké I²C zařízení, | + | |
- | + | ||
- | kaklik@popelnice: | + | |
- | | + | |
- | 00: -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 50: -- -- -- -- -- 55 -- -- -- -- -- -- -- -- -- -- | + | |
- | 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 70: -- -- -- -- -- -- -- -- | + | |
- | kaklik@popelnice: | + | |
- | + | ||
- | V tomto případě je k modulu USBI2C01A připojen modul [[cs: | + | |
- | + | ||
- | ==== Ukázky připojených I²C modulů ==== | + | |
- | + | ||
- | === CLKGEN01B === | + | |
- | + | ||
- | {{: | + | |
- | + | ||
- | + | ||
- | + | ||
- | === MAG01A | + | |
- | {{ :cs:modules: | + | [[cs:i2cio]] |
+ | {{youtube> | ||
===== Související stránky ===== | ===== Související stránky ===== | ||
cs/usbi2c.txt · Poslední úprava: 2018/03/07 18:18 (upraveno mimo DokuWiki)