Komunikasi serial adalah komunikasi yang pengiriman datanya per-bit secara berurutan dan bergantian. Komunikasi ini mempunyai suatu kelebihan yaitu hanya membutuhkan satu jalur dan kabel yang sedikit dibandingkan dengan komunikasi paralel. Pada prinsipnya komunikasi serial merupakan komunikasi dimana pengiriman data dilakukan per bit sehingga lebih lambat dibandingkan komunikasi parallel, atau dengan kata lain komunikasi serial merupakan salah satu metode komunikasi data di mana hanya satu bit data yang dikirimkan melalui seuntai kabel pada suatu waktu tertentu. Pada dasarnya komunikasi serial adalah kasus khusus komunikasi paralel dengan nilai n = 1, atau dengan kata lain adalah suatu bentuk komunikasi paralel dengan jumlah kabel hanya satu dan hanya mengirimkan satu bit data secara simultan.Hal ini dapat disandingkan dengan komunikasi paralel yang sesungguhnya di mana n-bit data dikirimkan bersamaan, dengan nilai umumnya 8 ≤ n ≤ 128.
Komunikasi serial ada dua macam, asynchronous serial dan synchronous serial.Synchronous serial adalah komunikasi dimana hanya ada satu pihak (pengirim atau penerima) yang menghasilkan clock dan mengirimkan clock tersebut bersama-sama dengan data. Contoh pengunaan synchronous serial terdapat pada transmisi data keyboard. Asynchronous serial adalah komunikasi dimana kedua pihak (pengirim dan penerima) masing-masing menghasilkan clock namun hanya data yang ditransmisikan, tanpa clock. Agar data yang dikirim sama dengan data yang diterima, maka kedua frekuensi clock harus sama dan harus terdapat sinkronisasi. Setelah adanya sinkronisasi, pengirim akan mengirimkan datanya sesuai dengan frekuensi clock pengirim dan penerima akan membaca data sesuai dengan frekuensi clock penerima. Contoh penggunaan asynchronous serial adalah pada Universal Asynchronous Receiver Transmitter (UART) yang digunakan pada serial port (COM) komputer.
Contoh Dasar Komunikasi Serial Mengirim Data Teks:
void setup() { Serial.begin(9600); } void loop() { Serial.print(“Hello World”); delay(2000); }
Penjelasan Singkat Koding Program
Serial.begin(9600); -> Menentukan kecepatan baca data serial (Baud Rate) Serial.print(“Hello World”); -> Untuk mencetak kalimat pada komunikasi
Serial Delay(2000); ->Memberikan waktu jeda 2 detik
1. Serial.available()
Digunakan untuk menyatakan angka, bytes atau karakter yang sudah siap dibaca dari serial port. Data ini adalah data yang telah diterima dan disimpan dalam serial receive buffer. Serial receive buffer dapat menampung 64 bytes data. Berikut ini contoh penulisan instruksi available.
int dataterkirim = 0; void setup() { Serial.begin(9600); } void loop() { if (Serial.available() > 0) { dataterkirim = Serial.read(); Serial.print("saya menerima data: "); Serial.println(dataterkirim, DEC); } }
2. Serial.begin()
“begin()” digunakan untuk mengatur baudrate / kecepatan transmisi data. Beberapa pilihan kecepatan komunikasi data yang dapat digunakan pada board arduino adalah 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 atau 115200. Pengaturan baudrate dilakukan pada bagian setup(). Berikut ini format penulisan dan contoh program “begin()”
void setup() { Serial.begin(9600); }
3. Serial.end()
Perintah “serial.end()” digunakan untuk menutup komunikasi serial port. Berikut format penulisan dan contoh program. Untuk membuka kembali komunikasi serial port dapat menggunakan perintah “Serial.begin()”.
4. Serial.find()
Perintah “Serial.find() digunakan untuk membaca data dari serial port buffer hingga target yang ditentukan dalam perintah “Serial.find()” terpenuhi. Fungsi akan bernilai benar jika target tercapai dan bernilai salah jika target tidak tercapai. Berikut ini contoh penulisan program “Serial.find()”.
5. Serial.print()
Perintah “Serial.print” digunakan untuk menampilkan data ke serial monitor. Data yang ditampilkan dapat berupa karakter, bytes, atau angka. Berikut ini beberapa contoh perintah “serial.print()”.
Serial.print(78) // mencetak "78" Serial.print(1.23456) // mencetak "1.23" Serial.print('N') // mencetak "N" Serial.print("Hello world.") // mencetak "Hello world." Serial.print(78, BIN) // mencetak "1001110" Serial.print(78, OCT) // mencetak "116" Serial.print(78, DEC) // mencetak "78" Serial.print(78, HEX) // mencetak "4E" Serial.println(1.23456, 0) // mencetak "1" Serial.println(1.23456, 2) // mencetak "1.23" Serial.println(1.23456, 4) // mencetak "1.2346"
Terdapat 2 macam yaitu Serial.print dan Serial.println. perbedaannya adalah jika “Serial.print” akan menampilkan data di serial monitor dalam satu baris, tetapi perintah “Serial.println” akan menampilkan data di serial monitor pada baris baru.
6. Serial.read()
Perintah “Serial.read()” digunakan untuk membaca data dari serial port. Berikut contoh penulisan perintah “Serial.read()”
6. Serial.read()
Perintah “Serial.read()” digunakan untuk membaca data dari serial port. Berikut contoh penulisan perintah “Serial.read()”
void loop() { if (Serial.available() > 0) { dataterkirim = Serial.read(); Serial.print("saya menerima data: "); Serial.println(dataterkirim, DEC); } }
7. Serial.write()
Perintah “Serial.write” digunakan untuk membaca data biner dari serial port. Data ini dikirim dalam bentuk byte atau deretan data byte. Contoh penulisan perintah “Serial.write”
void setup(){ Serial.begin(9600); } void loop(){ Serial.write(45); int bytesSent = Serial.write(Test Serial); }
Selain fungsi-fungsi komunikasi yang telah disebutkan diatas terdapat beberapa fungsi lain seperti:
- if (Serial) : Untuk mengecek apakah Port sudah siap
- Serial.flush(): menunggu data terkirim semua
- Serial.parseFloat(): mengambil data float pertama dari data di buffer serial.
- serial.parseInt(): mengambil data integer pertama dari data di buffer serial.
- Serial.peek(): mengambil data berikutnya di bufer penerima
- Serial.setTimeout(): mengeset batas maksimum waktu tunggu(timeout) transmisi data.
- Serial.serialEvent(): fungsi ini akan dipanggil jika data datang/diterima.berlaku spt interupsi serial.
Tidak ada komentar:
Posting Komentar