Page
Univerzálne asynchrónne sériové rozhranie sa používa na komunikáciu medzi Arduinom a PC alebo inými zariadeniami. Komunikuje pomocou dvoch pinov RX a TX a v počítači ho vidíme po nainštalovaní IDE Arduina ako COM port. To je zabezpečené pomocou virtuálneho portu, ktorý je emulovaný cez USB pomocou pomocného obvodu na doske Arduina. Je to potrebné, pretože nie je možné priamo prepojiť PC a Arduino.
A nie je to možné ani v prípade, že je v počítači ešte reálne prítomný sériový port. Je to spôsobené rozdielmi medzi napäťovými úrovňami, ktoré oba systémy používajú. Arduino používa úrovne 0 a +5V, zatiaľ čo pravé sériové porty používajú +-12V. Nás to ale nemusí nejako výrazne trápiť, pretože cez USB nám Arduino dovoľuje komunikovať tak, ako keby reálne prepojené boli oba systémy.
Komunikácia oboch systémov je potom veľmi jednoduchá, pretože v Arduine stačí pridať iba pár riadkov.
Serial.begin(9600);
int buttonState = digitalRead(pushButton);
Serial.println(buttonState);
Takto by sme mali vybavenú hardvérovú stránku komunikácie. Existuje ale aj softvérová možnosť, pri ktorej sa využije knižnica SoftwareSerial. Je štandartnou súčasťou Arduina a používa sa prakticky identicky.
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
mySerial.begin(4800);
mySerial.println("Hello, world?");
Opäť nič zložité, len si treba dať pozor na niektoré piny, na ktorých to nemusí fungovať. Podrobnosti sú na stránke http://arduino.cc/en/Reference/softwareSerial a viac sa tejto knižnici budem venovať pri komunikácii pre ATtiny85.
Toto Arduino má jednu UART zbernicu. Príklad komunikácie je v programe serial01uno.ino.
Toto Arduino ma štyri UART zbernice, preto môže naraz komunikovať s viacerými zariadeniami. Príklad komunikácie je v programe serial02mega.ino.
Netestoval som ho zatiaľ, ale malo by mať rovnaké zapojenie ako Arduino Mega 2560, takže štyri UART zbernice, akurát že používa 3,3V. Okrem toho by mala existovať SerialUSB, napojená priamo na chip Sam3X.
Treba prepojiť TX z prvého na RX na druhom, ak chceme posielať údaje z prvého Arduina. Treba prepojiť RX z prvého na TX na druhom, ak chceme posielať údaje z druhého Arduina. Ak niektorý smer nepotrebujeme používať, nie je potrebné prepojiť príslušné piny.
Pretože máme k dispozícii štyri zbernice, je jednoduché cez základnú zbernicu komunikovať s počítačom a cez zvyšné s druhým Arduinom. Zapojenie ako proxy funguje tak, že čaká na prečítanie riadku z jedného vstupu Serial1 a celý tento získaný riadok pošle do počítača. Z počítača možno riadiť správanie proxy:
Príklad komunikácie je v programe serial03megaproxy.ino. Ak pripojíte Arduino UNO s programom serial01uno.ino, môžete sledovať jeho komunikáciu.
ATtiny85 nemá žiadnu UART zbernicu, ale je schopné použiť knižnicu SoftwareSerial. Pomocou nej vieme posielať výstup cez proxy priamo do počítača. Podmienkou použitia je prepnúť mikrokontrolér aspoň na 8 MHz.
Ako sa to používa v praxi? Popíšem tu napríklad môj vývoj stmievača LED svetiel:
Príklad komunikácie je v programe serial04tiny85.ino. Ak ho pripojíte ku Arduino Mega 2560 na vstup Serial1, môžete sledovať jeho komunikáciu.
16.07.2015