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 :
Jika menggunakan konverter tegangan :
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.
a Technopreneur – writer – Enthusiastic about learning AI, IoT, Robotics, Raspberry Pi, Arduino, ESP8266, Delphi, Python, Javascript, PHP, etc. Founder of startup Indomaker.com
ganteng
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)
sisi slave tinggal kirim aja lewat serial pin (0,1) pake Serial.write(). Sisi master tinggal baca aja pake Serial.read(). Pastikan antara slave dan master kabelnya cross (tx ketemu rx) dan ground keduanya harus tersambung
gan gimana carannya komunikasi antar blue pill stm32f103 dengan arduino nano ??
bisa pake serial uart, bisa juga pake i2c