Uživatelské nástroje

Nástroje pro tento web


cs:i2c

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
Následující verzeObě strany příští revize
cs:i2c [2014/05/03 15:15] – [MLAB I²C Python framework] kaklikcs:i2c [2014/11/29 18:32] – [Související stránky] kaklik
Řádek 1: Řádek 1:
 ====== Sběrnice I²C ve stavebnici MLAB ====== ====== Sběrnice I²C ve stavebnici MLAB ======
  
-[[http://cs.wikipedia.org/wiki/I%C2%B2C|Sběrnice I²C]], nebo také TWI je velmi rozšířená elektronická sběrnice určená pro nízko rychlostní komunikaci mezi různými periferiemi. V případě stavebnice MLAB je to nejčastěji komunikace mezi mikroprocesorem a čidly. Existuje od ní také varianta [[http://cs.wikipedia.org/wiki/System_Management_Bus|SMUus]], která je její podmonžinou. Avšak obsahuje i definici timeoutů a Packet Error Checking, proto je v jistém smyslu robustnější, než I2C.+[[http://cs.wikipedia.org/wiki/I%C2%B2C|Sběrnice I²C]], nebo také TWI je velmi rozšířená elektronická sběrnice určená pro nízko rychlostní komunikaci mezi různými periferiemi. V případě stavebnice MLAB je to nejčastěji komunikace mezi mikroprocesorem a čidly. Existuje od ní také varianta [[http://cs.wikipedia.org/wiki/System_Management_Bus|SMUus]], která je její podmnožinou. Avšak obsahuje i definici timeoutů a Packet Error Checking, proto je v jistém smyslu robustnější, než I2C.
  
 Avšak díky[[cs:arm| novým možnostem]] ve výpočetní technice lze sběrnici použít i pro komunikaci s čidly přímo z Linuxového systému. Navíc v případě použití některého [[cs:usbi2c|adaptéru na I2C]] lze tuto sběrnici připojit i ke klasickému PC Avšak díky[[cs:arm| novým možnostem]] ve výpočetní technice lze sběrnici použít i pro komunikaci s čidly přímo z Linuxového systému. Navíc v případě použití některého [[cs:usbi2c|adaptéru na I2C]] lze tuto sběrnici připojit i ke klasickému PC
  
-===== Konvertory pro připojení I²C k PC ===== 
  
-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://www.paintyourdragon.com/?p=43|Kromě vyvedení DDC z volného portu pro display.]])) Proprietární konstrukce jako: +===== Spojování I²C zařízení =====
  
-  * [[http://www.robot-electronics.co.uk/acatalog/USB_I2C.html|USB-I2C  USB to I2C Communications Module]] +I2C je sbernice původně určená k propojování zařízení na malé vzdálenosti. (Původně na rozměru plošných spojů). Avšak s použitím vhodných technik je možné její rozsah zvětšit na řádově desítky metrů(( [[http://cladlab.com/electronics/circuit-design/communication-protocols/i2c-protocol#gallery|I2C Transmission Distances And Buffer’s]] ))(Použití na delší vzdálenosti nemusí být bezpečné, protože delší vodiče se může snadno indukovat elektrostaticky a elektromagnaticky vysoké napětí, které poškodí připojená zařízení) Přesná vzdálenost na kterou lze I2C používat je proto dána především prostředím ve kterém sběrnici používáme a také požadovanou spolehlivostí výsledného systému.
-  * [[http://www.harbaum.org/till/i2c_tiny_usb/index.shtml|i2c-tiny-usb]] +
-  * [[http://www.headfuzz.co.uk/?q=usbtoi2c|OpenServo interface]]+
  
-Mají společný problém s kvalitou driverůNavíc i2c-tiny-usb nesplňuje úplně I²C specifikaci a už bec ne USB physical layer specifikaci a jeho nejvyšší komunikační rychlost je 50 Kbps+V MLABu je spojování I2C zařízení řešeno na několika úrovních podle zvoleného rozsahu sítěLokálně (rozsahu několika metrů) jsou moduly spojovány přímo MLAB kablíky. A oddělovány modulem [[cs:i2chub]], tímto modulem je také řešen převod mezi logickými úrovněmi 3,3V a +5V
  
-==== Integrované obvody ====+Na rozsáhlejší vzdálenosti je sběrnice vedena stíněnými signálními kabely na koncích opatřenými dutinkami zapojenými do modulu [[cs:uniserial]]. Tento modul obsahuje i velmi základní ochranu proti přepětí. Hlavně je ale přestupním mechanickým můstkem mezi "externí těžkou kabeláží" a interním jemným zapojením přístrojů.
  
-=== FTDI ===+Pro rozsáhlé sítě je I²C nahrazeno jinou fyzickou vrstvou (CAN, Ethernet), která propojuje jednotlivé I2C síťové segmenty. 
  
-Firma FTDI navíc nevyrábí žádný obvod, který by umožňoval přímou komunikaci přes USB (jejich USB device obvody mají pouze I²C slave rozhraní) komunikace s I²C je u FTDI možná pouze za použití speciálního režimu (([[http://www.ftdichip.com/Products/ICs.htm|MPSSE]])), což umožňuje pouze několik obvodů v kombinaci s knihovnou [[http://code.google.com/p/libmpsse/|Libmpsse]] 
  
 +==== Programový balík Pymlab ====
  
-=== Silicon Labs ===+Jde o softwarový balík, který umožňuje vytvářet síť z I²C zařízení a modulů, které slouží jako routovací body. Princip funkce spočívá v definování struktury sítě a adres jednotlivých nódů ve zdrojovém souboru ovládacího programu, pak lze ke všem bodům v síti přistupovat pomocí jednoduchých příkazů jazyka Python. 
 +  
 +Instalaci samotného softwarového balíku [[cs:pymlab|pymlab]] pak provedeme snadno pomocí: 
  
-Vyrábí celou sérii převodníků [[http://www.silabs.com/products/interface/usbtouart/Pages/default.aspx|USB na něco jiného]] jedním z nich je i CP2112, který je převodníkem na SMbus. +  sudo pip install pymlab
-=== NXP ===+
  
-NXP vyrábí [[http://www.nxp.com/products/interface_and_connectivity/bridges/uart_to_i2c_master_gpio_bridges/SC18IM700IPW.html|konvertor UART na I²C SC18IM700IPW]]+V případě, že již nějakou starší verzi pymlab máme nainstalovanou, tak stačí spustit
  
 +  sudo pip install --upgrade pymlab
  
-==== Možnosti řešení ====+Oba příkazy jsou rovnocenné a využívají python balíčkovací systém ve kterém je [[https://pypi.python.org/pypi/pymlab/0.2|pymlab zařazen]].
  
-  Použití modulu s PIC18F4550 a firmwaru kompatibilního s i2c-tiny-usb.[[cs:i2c-pic-usb|Konvertor I²C na USB s PIC]] +Tím by se měly stáhnout i balíky se kterými pymlab pracuje, jako je například cython-hidapi v pythonu označovaný pouze jako modul hid.  Nenainstaluje se alelibusb. To stále musíme provést ručně pomocí:
-  - Navržení nového modulu s kterým z obvodů od Cypress +
-  - Použití modulu [[cs:usbi2c|USBI2C]] s obvodem [[http://www.silabs.com/products/interface/usbtouart/Pages/HID-USB-to-SMBus-Bridge.aspx|CP2112]]  +
-  - Konstrukce i2c-tiny-usb z modulů MLAB viz. [[cs:i2c_avr_usb|I2C AVR USB]]+
  
 +  sudo apt-get install libudev-dev libusb-1.0-0-dev libhidapi-dev python-setuptools python-smbus cython 
  
  
 +===== Konvertory pro připojení I²C k PC =====
 +
 +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://www.paintyourdragon.com/?p=43|Kromě vyvedení DDC z volného portu pro display.]]))
 +
 +==== USB rozhraní ====
 +
 +Proprietární konstrukce jako: 
 +
 +  * [[http://www.robot-electronics.co.uk/acatalog/USB_I2C.html|USB-I2C  USB to I2C Communications Module]]
 +  * [[http://www.harbaum.org/till/i2c_tiny_usb/index.shtml|i2c-tiny-usb]]
 +  * [[http://www.headfuzz.co.uk/?q=usbtoi2c|OpenServo interface]]
 +
 +Mají společný problém s kvalitou driverů. Navíc i2c-tiny-usb nesplňuje úplně I²C specifikaci a už vůbec ne USB physical layer specifikaci a jeho nejvyšší komunikační rychlost je 50 Kbps. Nicméně v MLABu jsou tyto konstrukce nahrazeny zařízením [[cs:i2c_avr_usb|I2C AVR USB]], což je ekvivalent konstrukce i2c-tiny-usb ale postavené modulů MLAB. Alternativou je také nedokončená konstrukce [[cs:i2c-pic-usb|Konvertor I²C na USB s PIC]].
 +
 +==== USB HID ====
 +
 +Pro připojení bez nutnosti použití driverů určených pro specifický hadrware je možné použít specifikaci [[http://en.wikipedia.org/wiki/USB_human_interface_device_class|USB HID]]. V MLABu tuto specifikaci splňuje modul [[cs:usbi2c|USBI2C01A]], který lze ovládat například přes Python a HIDAPI. viz níže. 
 +
 +==== UART/RS232 na I2C ====
 +
 +NXP vyrábí [[http://www.nxp.com/products/interface_and_connectivity/bridges/uart_to_i2c_master_gpio_bridges/SC18IM700IPW.html|konvertor UART na I²C SC18IM700IPW]]. Tento obvod by mohl být základem pro konstrukci dalšího konverzního modulu. 
 +
 +==== Ethernet na I2C ====
 +
 +Pomocí modulů [[cs:eth|ETH01A]] a [[cs:stm32f10xrxt|STM32F10xRxT01A]], lze zkonstruovat konvertor Ethernet - I²C. A ten následně ovládat softwarovým balíkem Pymlab. Viz Python níže. 
 ===== Použití I²C v systému Linux ===== ===== Použití I²C v systému Linux =====
  
Řádek 46: Řádek 68:
 Jádro však obvykle nemá instalovaný modul //i2c-dev// (([[https://i2c.wiki.kernel.org/index.php/Main_Page| Linux I²C Subsystem]])), přidáme jej proto do systému: Jádro však obvykle nemá instalovaný modul //i2c-dev// (([[https://i2c.wiki.kernel.org/index.php/Main_Page| Linux I²C Subsystem]])), přidáme jej proto do systému:
   sudo modprobe i2c-dev   sudo modprobe i2c-dev
-  + 
 +<WRAP tip>   
 +Příkaz modprobe přidá modul pouze do běžící instance jádra. Po rebootu nám tento modul pravděpodobně bude chybět. Pokud nechceme modprobe používat i po následujícím startu počítače, tak  do souboru /etc/modules přidáme řádek: 
 +  i2c-dev   
 +</WRAP> 
 Nyní již můžeme vypsat dostupné I²C sběrnice v systému: Nyní již můžeme vypsat dostupné I²C sběrnice v systému:
  
Řádek 103: Řádek 130:
  
  
 +===== Ostatní operační systémy =====
  
-==== MLAB I²C Python framework ==== +V jiných operačních systémech, jako Windows či MAC OSkde nemůžeme nebo nechceme využít podporu I²C rozhraní v jádře, můžeme použít pro ovládaní I2C  prostředí jazyka Python, který je multiplatformní a běží na všech známých OS
- +
-Jde o softwarový balík, který umožňuje vytvářet senzorovou síť z I²C čidel a modulů [[cs:i2chub|I2Chub02A]]které slouží jako routovací body pro čidlakterá nemohou být na jedné sběrnici. Víc informací viz[[https://github.com/MLAB-project/MLAB-I2c-modules|pyMLAB]] na Githubu. +
- +
-Princip funkce spočívá v definování struktury sítě a adres jednotlivých nódů ve zdrojovém souboru ovládacího programu, pak lze ke všem bodům v síti přistupovat pomocí jednoduchých příkazů jazyka Python. +
-  +
-Výsledkem je možnost testovat a demonstrovat všechna nová čidla a zařízení. Bez nutnosti udržovat aktuální všechny specifické zdrojové kódy pro 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é platformy. +
- +
-Pokud však 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 +
-]]. +
-Instalaci samotného softwarového balíku pymlab pak provedeme snadno pomocí:  +
- +
-  sudo easy_install pymlab +
- +
-Tím by se měly stáhnout i balíky se kterými pymlab pracuje, jako je například cython-hidapi pythonu označovaný pouze jako modul hid.  +
- +
-=== Rozšíření iPython === +
-  +
-Vhodným řešením pro testová použít interaktivní prostředí iPythonkde můžeme přímo interaktivně zkoušet jednotlivé části kódu a zpracovávat data.  +
- +
-Jeho základní instalace se v Ubuntu provede instalací těchto balíků:  +
-  sudo apt-get install ipython-notebook scipy numpy +
- +
-Pak již můžeme iPython spustit z příkazového řádku +
-  ipython notebook --pylab inline +
- +
-Pro přímý přístup ke sběrnici I²C bez sudo je třeba být ve skupině i2c:  +
-  sudo adduser kaklik i2c +
- +
----- +
-Poznámka: Pro seznámení se s jazykem [[http://www.tutorialspoint.com/python/|Python]] můžete využít [[http://physics.muni.cz/~janak/pyzen/|Zenovou školu Pythonu]] od Zdeňka Janáka. +
- +
-=== Python interpreter pro ARM  STM32 === +
- +
-Pro použití Python frameworku na vyčítání čidel by bylo potřeba na [[cs:stm32f10xrxt]] zprovoznit Python interpretr. Řešením by ale mohl být [[http://code.google.com/p/python-on-a-chip/|Python on a chip]] +
- +
  
 ===== Související stránky ===== ===== Související stránky =====
  
-  * [[cs:usbi2c|USBI2C]] - rozplánovaný modul určený k přímému převodu I2C na USB+  * [[cs:usbi2c]]
   * [[cs:i2c-pic-usb|I2C-PIC-USB]] - Konvertor I²C na USB s PIC   * [[cs:i2c-pic-usb|I2C-PIC-USB]] - Konvertor I²C na USB s PIC
   * [[cs:i2c_avr_usb|I2C-AVR-USB]] - Konvertor I²C na USB s AVR   * [[cs:i2c_avr_usb|I2C-AVR-USB]] - Konvertor I²C na USB s AVR
Řádek 150: Řádek 142:
   * [[cs:odroid-x2]]   * [[cs:odroid-x2]]
   * [[cs:friendlyarm]]   * [[cs:friendlyarm]]
 +  * [[cs:i2chub]]
 +  * [[cs:pymlab]]
  
cs/i2c.txt · Poslední úprava: 2022/09/02 21:20 autor: kaklik