Ok. Tak se na to podíváme. Ještě než tak učiním poprosím vždy založit nové téma, pokud se obsah nehodí do některého stávajícího. Viz
ZDE.
Takže typické Arduino, krom Micra a nějakých těch 32b nejsou vybaveny USB portem. Ale jak je možné, že třeba Arduino MEGA, UNO, NANO a další to USB mají? No nemají. Respektive ho má deska Arduino, ale nikoli mikrokontrolér. Takže v první řadě je nutné rozlišovat co je Arduino a co je mikrokontrolér. Arduino je nějaká ta celá deska (UNO, MEGA, NANO), která obsahuje mikrokontrolér a mnoho dalších obvodů, aby právě ten mikrokontrolér mohl vůbec fungovat.
Takže mi se nyní zaměříme na mikrokontrolér ATMEGA328P. Ten je obsažen v deskách Arduino UNO, NANO, MINI a asi i dalších. Tento mikrokontrolér (budu psát procesor) neobsahuje HW USB rozhraní. Toto rozhraní bychom mohli emulovat pomocí Firmware, ale to by nebylo příliš praktické pro Arduino desky. Takže jak to tedy je a jak tento procesor komunikuje s okolím? No celkem jednoduše. Tento procesor obsahuje mnoho HW periferií jako například I2C, SPI a UART. Všechno to jsou komunikační porty a všechny jsou sériové. Nás však zajímá UART, lépe řečeno USART (UNIVERSAL SYNCHRONOUS ASYNCHRONOUS RECEIVER TRANSMITTER). V drtivé většině aplikací se tento port používá v asynchronním režimu tedy
UART. To znamená , že pokud spolu komunikují dva procesory pomocí tohoto rozhraní, tak musí být předem dohodnuto, jak tato komunikace bude probíhat a to zejména musí být stejná komunikační rychlost (například 9600bps), dále kolik a jaké budou start a stop bity a kolik bitů se bude přenášet v rámci jednoho "paketu". To je klíčové, aby si procesory vzájemně rozuměly. Zde asi nechci zabíhat do nějakých dalších detailů, jako je třeba procentuální odchylka (chyba) v časování konkrétní rychlosti (bps) v závislosti na taktovacím kmitočtu procesoru (použitém oscilátoru).
Nicméně díky tomu, že UART je tak jednoduchý používá se velice často. No a zde se dostáváme k tomu jak je to s tím USB v Arduino deskách. Aby se dal procesor propojit s počítačem pomocí UART bylo by nutné tuto komunikaci převést na trochu jiný standard a to je RS232. Zde zůstává zachován princip komunikace a jediné co se mění jsou napěťové úrovně pro LOG1 a O. UART používá TTL logiku, tedy zjednodušeně LOG-1 se rovná napájecímu napětí procesoru (5V v případě ATMEGA328P) a LOG-0 se rovná 0V. RS232 používá však vyšší napěťové úrovně a to někde kolem -12V pro LOG-0 a +12V pro LOG1. Navíc jsou invertovány Start a Stop bity. Takže, aby procesor mohl komunikovat s PC je potřeba převodník komunikace například MAX232. No jenže je tu další problém. Dnes už běžné počítače nedisponují komunikačním portem RS232. Proto bylo zvoleno USB. To má oproti RS232 několik celkem zásadních výhod, které se pro Arduino výborně hodí. Jednou takovou je možnost přímo skrze USB napájet připojené zařízení. USB je opět sériové rozhraní, ale podstatně složitější než UART a oproti UARTu brutálně rychlé. Takže, opět je potřeba nějaký převodník, který dokáže převést komunikaci z UARTu na USB. Těchto převodníků je velké množství a patří mezi ně i tebou odkázaný CH340G (C). Tento převodník se hojně používá na Čínských klonech Arduino desek a je za tím poměrně zajímavý příběh, proč tomu tak je. Osobně tento převodník používám skoro ve všech mích konstrukcích, kdy potřebuji možnost propojit procesor s počítačem skrze USB.
Ten první odkaz je celkem pro mne zajímavý. Jde o procesor , který má HW USB port. Jde o verzi z rodiny U, jako je ATMEGA32U4, který je použit v Arduino Micro. Originální Arduina používají jako převodník USB procesor ATMega8U2, což má pár výhod, ale je to o něco dražší a navíc to vyžaduje mít vybavení k naprogramování tohoto procesoru.
Takže závěrem pro tebe je optimální použít USB převodník CH340G. To jak se to zapojí je jednoduché protože se to propojí s HW UART portem s piny TX a RX. Samozřejmě je nutné tyto vývody mezi procesorem a USB převodníkem překřížit. Vždy musí být zapojeno i
GND, aby procesor a USB převodník byly na stejném potenciálu, pokud jsou oba napájeny vlastním napětím.
PS: Konkrétní použití USB převodníku CH340G a procesoru najdeš třeba v mé konstrukci CNC řízení GRBL Board:
https://www.sakul.cz/grbl-board/n/