Stránka 1 z 1

Arduino a USB připojení

PříspěvekNapsal: úte 04. kvě 2021 16:38:39
od ulitej
Tak budu doufat , že si to tady někdo vzdělanější přečte a poradí.
Protože mi trochu nevyšel jeden rozměr a arduino má MIKRO USB konektor tak přemýšlím jak to je.
Pro napájení arduina nepoužiji USB vstup , ale pomocí pinů tak toto je jasné.
Ovšem nyní mám otázku pokud potřebuji komunikovat z počítačem tak bych mohl použít piny RX/TX jako náhradu za vstupní piny RX/TX v USB konektoru?
Pokud né tak tak prosím nerozebírejte jak by to šlo protože budu řešit již jen mechanickou úpravu konektruru na USB kabelu aby se rozměrově vešel tam kam potřebuji.
Díky moc za odpověď.

Re: Arduino a DISPLEJE

PříspěvekNapsal: úte 04. kvě 2021 18:23:46
od Sakul
Ovšem nyní mám otázku pokud potřebuji komunikovat z počítačem tak bych mohl použít piny RX/TX jako náhradu za vstupní piny RX/TX v USB konektoru?

To bohužel nejde. Piny na Arduinu (lépe řečeno mikrokontroleru jsou TX a RX a jsou to piny rozhraní UART, které nemá s USB vůbec nic společného krom toho, že se jedná také o sériovou komunikaci. Piny na USB jsou označeny D+ a D- a jde o zcela jiný komunikační protokol a rozhraní. A z toho důvodu je mezi mikrokontrolér (Arduino) a USB konektor zařazen nějaký aktivní převodník jako třeba CH340 nebo jakýkoli jiný vhodný.

Re: Arduino a DISPLEJE

PříspěvekNapsal: úte 04. kvě 2021 21:05:44
od ulitej
Děkuji moc , takže konečně mám jasno , piny D1 a D2 jsem nikdy nepoužil ve svém programu protože jsem věděl , že mají vazbu na data z USB konektoru, takže by deska arduina musela mít vyvedeny piny "mechanicky" propojeny s USB konektorem což výrobce bohužel nedělá.
Jetě jednou se omlouvám , že jsem zopakoval ten dotaz a neuvědomil si , že to již bylo tady probírané.

Re: Arduino a DISPLEJE

PříspěvekNapsal: pát 21. kvě 2021 15:05:41
od ulitej
Ahoj Lukáši, poprosil bych tě ještě o konsultaci a je to stále k problému USB/pin D0-D1. Něco jsem se snažil pochopit a dohledat, ale nemám nikoho v okolí s kým bych to mohl probrat tak se obracím na tebe a moc si vážím toho ,že tady jseš ochotný odpovídat na dotazy a návíc i dávat rady .
Našel jsem tento návod
https://uart.cz/427/prevodnik-usb-uart/
a něco podobného na aliku
https://www.aliexpress.com/item/1005001 ... web201603_

nebudu to dál popisoovat a zeptám se - Je možno použít tento modul (z ali ten s CH340) a arduino v kterém je nahráno příslušné INO připojit pomocí pinů D0 a D1 a poté to provozovat jako "jednotné arduino"

Možná si řikáš proč s tím stále otravuji , no prostě mám problém s jednou konstrukcí (mechanický) a tak se snažím něco řešit dříve než nastane nefunkční stav (nevím jak to jinak popsat). Pokud bych odpověď našel někde tady na fóru tak mi jen odpověz , že to tady je popsáno a já se pokusím to dohledat a snad to poté pochopím :-)

Re: Arduino a USB připojení

PříspěvekNapsal: pát 21. kvě 2021 17:12:41
od Sakul
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/

Re: Arduino a USB připojení

PříspěvekNapsal: stř 02. čer 2021 14:51:46
od ulitej
Děkuji za odpověd a dovolím si ještě trochu požádat o konsultaci s ohledem na použití IO 340 .
Snažil jsem se pochopit (snad správně) tvoji konstrukci GRBL a jestli to je správně tak komunikace z CH340 probíhá pouze z pinu 13 přes kondenzátor C16 na pin 29 ?

Můj problém bych měl případně řešit při použití CH340 tak , že bych piny (CH340) 2 a 3 přes odpory 1k spojil s piny RX a TX příslušné arduino desky a tady se nějak zasekávám co mám udělat s pinem 13?
Jinak mi dorazily DPS pro ten převodník s ATMEGA 8 U2 a tak jsem bohužel zjistil , že tento Atmel je opravdu o hodně cenově výše než ta CH340 a co více hůře sehnatelný a tak asi zůstanou v šupliku nebo nejde jen zaměnit třeba za 16 U 2 ?
No mám ještě další otázky v hlavě a to k ledkám které indikuji komunikaci TX/RX - toto jsi na tvé desce GRBL neřešil - je totak ?

Teď jsem dohledal zapojení kde jsou ty piny 2/3 vedeny přes odpor až na 328 a tím mám zase větší zmatek ve svých "znalostech" vůči tvému GRBL https://forum.arduino.cc/t/arduino-nano ... tic/626989 ale zase vidím ty ledky na které jsem se trochu zeptal :D

Re: Arduino a USB připojení

PříspěvekNapsal: stř 02. čer 2021 23:20:20
od Sakul
Právě že nikoli. Komunikace z CH340 neprobíhá přes pin13, to je pouze reset procesoru pokud je třeba například automatizovaně aktualizovat firmware (pokud obsahuje procesor bootloader). Pro komunikaci jako takovou to nemá vůbec žádný vliv. Komunikace probíhá přes piny 2 a 3 (TX a RX). Na tom schématu (Arduino NANO) z tvého odkazu je to ještě přehlednější, i když je to zapojené naprosto stejně jako v mém zapojení GRBL v2.

Re: Arduino a USB připojení

PříspěvekNapsal: čtv 03. čer 2021 9:32:49
od ulitej
Děkuji a jak jinak to napsat sypu se popel na hlavu :-) přehlédl jsem, že opravdu na pinech 2 a 3 ve schématu je změna barvy na úroveŇ vrstvy NET (snad je to správně) a kdybych šel do návrhu .brd tak bych to tam viděl.