Menangani Komunikasi Serial Asinkron di Arduino

Sebuah papan Arduino dibekali beberapa pilihan protokol komunikasi data yakni serial asinkron dan serial sinkron (I2C, TWI dan SPI). Serial asinkron adalah protokol komunikasi serial yang tidak memiliki jalur clock sinkronisasi, dan sebaliknya protokol komunikasi serial sinkron memilikinya. Pada tutorial kali yang akan kita fokuskan tentang komunikasi serial asinkron, sementara untuk tipe komunikasi sinkron akan saya bahas di tutorial berikutnya.

Hardware Serial

Sebuah papan Arduino minimal memiliki satu buah hardware serial dalam bentuk UART (Universal Asynchronous Receiver Transmitter) tergantung pada tipe papannya. Sebagai contoh, papan Arduino Uno memiliki satu buah serial UART, namun papan Arduino Mega memiliki 4 buah serial UART. Untuk Arduino Uno serial UART berada pada pin digital 0 (Rx) dan 1 (Tx). Jadi, selain sebagai pin digital untuk input atau output, pin 0 dan 1 memiliki fungsi khusus menjadi pin serial untuk komunikasi serial asinkron/UART.

Yang perlu Anda perhatikan adalah, level elektrikal data serialnya. Karena menggunakan UART (dan sesuai dengan level tegangan Arduino juga) maka level elektrikal komunikasi serial pada Arduino menggunakan level tegangan digital alias 0V untuk logika ‘0’ dan 5V untuk logika ‘1’ (atau yang sering disebut juga level TTL/Transistor-transistor Logic). Jika device pairing komunikasi serial berada pada level yang sama (misal : sama-sama mikrokontroller/Arduino) maka antar pin serial dapat langsung dihubungkan secara menyilang (Rx ketemu Tx_lawan, Tx ketemu Rx_lawan). Sedangkan jika device pairing berada pada level serial RS232 (contoh : komputer/laptop) maka Anda harus menggunakan konverter serial TTL to RS232, untuk menyesuaikan level tegangan agar kedua device dapat berkomunikasi.

Secara umum wiring antar device yang berkomunikasi secara serial asinkron adalah sebagai berikut :ilustrasi wiring komunikasi serial uart arduino

Jika menggunakan konverter tegangan :

ilustrasi wiring komunikasi serial uart arduino dengan level konverter ttl to rs232

Software Handler

Untuk menangani komunikasi serial asinkron di Arduino, setidaknya ada dua hal yang harus Anda lakukan. Yang pertama, Anda harus menginisialisasi parameter serial di void loop(). Yang kedua Anda bisa melakukan pembacaan data/pengiriman data dengan function Serial.read() dan Serial.Write(). Berikut ini adalah beberapa function/procedure yang sering digunakan dalam hubungannya dengan komunikasi serial di Arduino.

Serial.begin(9600); –> inisialisasi parameter baudrate pada pin serial (sekaligus mengaktifkan pin 0 dan 1 sebagai pin serial)

Serial.write (); –> mengirim data melalui pin serial

Serial.read (); –> menerima data melalui pin serial

Serial.print (); –> menampilkan karakter di jendela Serial Monitor

Serial.println (); –> menampilkan karakter di jendela Serial Monitor (ganti baris)

Sebagai contoh, Anda dapat membuka program ‘SoftwareSerialExample’ yang dapat dibuka melalui menu File – Examples – SoftwareSerial – SoftwareSerialExample. Pada program ini, dicontohkan bagaimana mengirim dan membaca di pin serial yang berasal dari pin digital yang diemulasi menjadi pin serial. Untuk lebih jelasnya tentang pin digital yang dijadikan pin serial dapat Anda baca di artikel sebelumnya, “Mengemulasi Pin Digital menjadi Pin Serial dengan SoftwareSerial

SofwareSerial

SoftwareSerial adalah library Arduino yang mampu mengubah pin digital menjadi pin serial. Dengan demikian Anda dapat memiliki lebih dari satu pin serial pada papan Arduino (Uno) yang dapat digunakan untuk berbagai keperluan. Untuk lebih detailnya bisa dibaca disini.

0 0 votes
Article Rating

Leave a Reply

5 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
unkwon

ganteng

Indra

gan gimana ya programnya kalo kita mau membaca jarak sensor ultrasonic pada arduino uno (slave), tapi hasilnya dikirim ke arduino mega(master) ?? terhubung secara serial (rxtx)

munir

gan gimana carannya komunikasi antar blue pill stm32f103 dengan arduino nano ??

5
0
Would love your thoughts, please comment.x
()
x