blogy logo
login PRIHLÁS SA
BLOG deadawp
ČLÁNKY
DISKUSIE
2
SLEDOVAŤ BLOG
Programátor
deadawp



Ovládanie Arduina cez UART z počítača
pridal deadawp 19.11. 2020 o 9:38 (naposledy upravené 19.11. 2020 o 10:34)



UART (Sériová linka) je komunikačné rozhranie, ktoré sa pri Arduine štandardne používa pre výpis premenných, debugging programu a slúži taktiež pre nahratie nového firmvéru. Taktiež sa toto rozhranie používa aj pre komunikáciu, napríklad dvoch Arduín, Arduina s počítačom, alebo s perifériou. UART využíva signály TX (vysielací) a RX (prijímací). Zariadenie môže používať iba jeden zo signálov, používa sa to napríklad pri perifériách typu - UART RFID čítačky RDM6300, ktorá využíva iba TX signál.

Dnes si ukážeme implementáciu komunikácie počítača s Arduinom, ktoré sú prepojené hardvérovou UART linkou Arduina. Obe zariadenia využívajú RX aj TX. Počítač bude vykonávať dopyty na Arduino, ktoré mu odpovie s výstupom. Výstup Arduina bude reportovať stavy všetkých digitálnych vývodov a analógových vstupov. V prípade Arduina Uno máme 11 digitálnych vstupno-výstupných vývodov (nerátame používané D0 a D1 pre RX a TX) a 6 analógových vstupov. Aplikácia bude schopná všetky digitálne výstupy nastavovať na hodnotu HIGH / LOW.  


Výstup vo Windows programe Hercules - využitý pre komunikáciu s Arduinom

Využité príkazy pre dopyt (použitie v PC / UART monitore pre používateľský vstup):

  • Input? - Vráti Output - STAVY D GPIO, (STAVY ANALÓG. VSTUPOV)
  • SET HIGH - nastavenie všetkých D vývodov (výstupov) na HIGH
  • SET LOW - nastavenie všetkých D vývodov (výstupov) na LOW
  • SET DX HIGH - nastavenie vývodu DX na HIGH
  • SET DX LOW - nastavenie vývodu DX na LOW

Program je prispôsobený pre architektúru Arduina Uno (AtMega328P), a Arduino Mega (AtMega 1280 / 2560). Programová logika tak dokáže na základe direktív nastaviť špecifické premenné, hodnoty digitálnych vstupno-výstupných vývodov (51) a analógových vstupov (17). 

Program využíva aj isté informačné výstupy v prípade, že sa používateľ snaží nastaviť istú logickú úroveň pre vstup - INPUT (HIGH) / pullup vstup - INPUT_PULLUP (LOW), nakoľko digitálne vývody nastavené ako vstupy nemôžu byť ovládané funkciou digitalWrite, nereagujú na ňu.

Implementačne využíva program 3 polia, ktoré definujú skupinu, kam daný vývod patrí. Každé pole má svoje špecifikum, na ktoré sa aplikuje príslušný pinMode, ktorý obmedzí / rozšíri možnosti použitia vývodu.

Rozlišujeme:

  • Výstup - OUTPUT
  • Vstup - INPUT
  • Vstup +5V - INPUT_PULLUP (interný pullup rezistor 20kohm zapnutý)

Ukážka spomínaných direktív pre Arduino Uno a Mega

Program i zapojenie využíva hardvérovú UART linku. Z toho dôvodu nie je možné bez odpojenia Arduina od počítača nahrať nový firmvér do Arduina, nakoľko je UART blokovaný počítačom. Program je možné upraviť aj pre virtuálnu UART linku prostredníctvom vstavanej knižnice SoftwareSerial, ktorá nebude blokovať fyzickú UART linku, prídete však v programe o ďalšie 2 ovládateľné GPIO výstupy, respektíve vstupy podľa priradenia do príslušného poľa.

Pre používateľský vstup môžete využiť COM port Arduina otvorený priamo v Serial monitore dostupnom v Arduino IDE, alebo prostredníctvom softvéru typu Terminal, Herkules, Putty, Hyperterminal. Aby používateľ videl, že UART komunikácia funguje a baudrate je správny ešte pred prvým odoslaným príkazom, Arduino každú sekundu vysiela reťazec "Zadajte prikaz - Input? / SET D2 HIGH / SET D2 LOW / SET HIGH / SET LOW" až do momentu, kým prvý krát od spustenia príjme dáta.

Programová logika (Uno, Nano, Mega compatible): https://pastebin.com/8wxgzaud

 

 



Prístupov 7837
Kvalita článku
hlasov 0

PRÍSPEVKY
SLEDUJETE
Prosím prihláste sa pre možnosť pridania komentáru.
Prihláste sa, alebo použite facebook login facebook login
ĎALŠIE ČLÁNKY V BLOGU
Update grafov, ukážkových kódov - Hladin...
[ 16.11.2024] (príspevkov 0)
XIAO ESP32-C6 od Seeed Studio
[ 10.11.2024] (príspevkov 0)
ESP-IDF v4.4.2 prechod na v5.2
[ 5.11.2024] (príspevkov 0)
Krabička pre RFID DOMINATOR 2.0
[ 18.10.2024] (príspevkov 0)
Známe neduhy - Ecotec 1.6E Opel/GM Chevr...
[ 8.10.2024] (príspevkov 0)
Cold-start BQ25570 vs BQ25504 od Texas I...
[ 2.8.2024] (príspevkov 0)
EG21-G - MQTT pripojenie na Thingsboard
[ 5.6.2024] (príspevkov 0)
Quectel EG21-G - HTTP request
[ 17.5.2024] (príspevkov 0)
Tip na darček k jubileu 60
[ 29.4.2024] (príspevkov 0)