Komunikasi serial adalah metode pengiriman data bit per bit secara berurutan antara dua atau lebih perangkat. Pada Arduino, komunikasi serial dapat dilakukan melalui port serial hardware atau port serial software (dengan bantuan library tertentu).
Komunikasi Serial pada Arduino
Berikut adalah langkah-langkah umum untuk menggunakan komunikasi serial pada Arduino:
- Memulai komunikasi serial:
- Untuk port serial hardware, panggil fungsi
Serial.begin(baudRate)di dalam fungsisetup(), di manabaudRateadalah kecepatan transmisi yang diinginkan (misalnya 9600, 115200, dll). - Untuk port serial software, impor library yang sesuai (SoftwareSerial atau SerialPort), kemudian inisialisasikan objek serial dengan menentukan pin RX dan TX yang akan digunakan. Kemudian panggil fungsi
begin(baudRate)pada objek serial untuk memulai komunikasi serial.
- Untuk port serial hardware, panggil fungsi
- Mengirim data:
- Untuk port serial hardware, gunakan fungsi
Serial.print(data)atauSerial.println(data)untuk mengirim data ke perangkat eksternal melalui pin TX. - Untuk port serial software, gunakan fungsi
serialObjName.print(data)atauserialObjName.println(data)untuk mengirim data melalui objek serial ke perangkat eksternal.
- Untuk port serial hardware, gunakan fungsi
- Menerima data:
- Untuk port serial hardware, gunakan fungsi
Serial.read()untuk membaca data yang diterima melalui pin RX. - Untuk port serial software, gunakan fungsi
serialObjName.read()untuk membaca data yang diterima melalui objek serial.
- Untuk port serial hardware, gunakan fungsi
- Menggunakan Serial Monitor:
- Serial Monitor adalah alat bawaan dalam Arduino IDE yang memungkinkan Anda memantau dan berinteraksi dengan komunikasi serial antara Arduino dan komputer.
- Anda dapat membuka Serial Monitor dengan mengklik ikon (magnifier) di pojok kanan atas Arduino IDE atau dengan menggunakan pintasan keyboard
Ctrl + Shift + M. - Dalam Serial Monitor, Anda dapat memilih kecepatan baud rate yang sesuai dan melihat data yang dikirim atau diterima melalui komunikasi serial.
Pastikan untuk mencocokkan kecepatan baud rate yang sama antara Arduino dan perangkat lainnya yang berkomunikasi. Jika kecepatan baud rate tidak cocok, data dapat menjadi tidak terbaca dengan benar.
Komunikasi serial pada Arduino sangat berguna dalam berbagai aplikasi, seperti pengiriman data sensor, kendali perangkat eksternal, komunikasi dengan komputer, atau komunikasi antar-modul Arduino.
Penggunaan Sensor Serial
Sensor serial adalah jenis sensor yang menggunakan protokol komunikasi serial untuk mentransfer data antara sensor dan Arduino. Sensor serial umumnya memiliki output yang terhubung ke pin RX (penerima) pada Arduino, dan beberapa sensor juga memiliki input yang terhubung ke pin TX (pengirim) Arduino untuk komunikasi dua arah.
Penggunaan sensor serial pada Arduino melibatkan langkah-langkah berikut:
- Menghubungkan sensor: Hubungkan pin output sensor ke pin RX Arduino menggunakan kabel atau jumper wire. Jika sensor memiliki input untuk komunikasi dua arah, hubungkan pin input sensor ke pin TX Arduino.
- Konfigurasi komunikasi serial:
- Jika menggunakan port serial hardware, pastikan Anda telah memanggil fungsi
Serial.begin(baudRate)di dalam fungsisetup()untuk memulai komunikasi serial pada port serial hardware yang sesuai. - Jika menggunakan port serial software, impor library yang diperlukan (misalnya SoftwareSerial atau SerialPort), inisialisasikan objek serial dengan menentukan pin RX dan TX yang digunakan, lalu panggil fungsi
begin(baudRate)pada objek serial untuk memulai komunikasi serial.
- Jika menggunakan port serial hardware, pastikan Anda telah memanggil fungsi
- Menerima data dari sensor:
- Gunakan fungsi
Serial.read()atauserialObjName.read()untuk membaca data yang dikirim oleh sensor melalui komunikasi serial. Data tersebut dapat dianalisis atau diolah sesuai kebutuhan.
- Gunakan fungsi
- Mengirim perintah ke sensor (opsional):
- Jika sensor memiliki kemampuan menerima perintah, Anda dapat mengirimkan perintah ke sensor melalui komunikasi serial untuk mengontrol atau mengatur pengoperasian sensor tersebut. Gunakan fungsi
Serial.print()atauserialObjName.print()untuk mengirimkan perintah atau data yang dibutuhkan.
- Jika sensor memiliki kemampuan menerima perintah, Anda dapat mengirimkan perintah ke sensor melalui komunikasi serial untuk mengontrol atau mengatur pengoperasian sensor tersebut. Gunakan fungsi
Penting untuk mengacu pada dokumentasi sensor yang digunakan untuk memahami protokol komunikasi yang digunakan dan format data yang diharapkan. Setiap sensor serial mungkin memiliki protokol khusus dan aturan pengiriman data tertentu yang perlu diikuti.
Beberapa contoh serial populer meliputi sensor RFID (Radio Frequency Identification), sensor GPS (Global Positioning System), sensor fingerprint, sensor kelembaban dan suhu, dan masih banyak lagi.
Komunikasi Serial dengan Komputer
Komunikasi serial antara Arduino dan komputer memungkinkan pertukaran data antara kedua perangkat tersebut. Dalam konteks ini, Arduino berfungsi sebagai perangkat yang mengirim dan menerima data melalui port serialnya, sedangkan komputer berperan sebagai penerima atau pengirim data melalui port serialnya.
Berikut adalah langkah-langkah umum untuk menggunakan komunikasi serial antara Arduino dan komputer:
- Koneksi Fisik:
- Pastikan Arduino terhubung ke komputer menggunakan kabel USB yang sesuai.
- Pada Arduino yang menggunakan port serial hardware bawaan, seperti Arduino Uno, Pro Mini, atau Mega, kabel USB akan terhubung langsung ke port USB Arduino.
- Pada Arduino yang menggunakan modul konverter USB ke Serial eksternal, seperti Arduino Nano atau Pro Micro, kabel USB akan terhubung ke modul konverter USB ke Serial.
- Mengatur Kecepatan Baud Rate:
- Baud rate adalah kecepatan transmisi data dalam komunikasi serial. Pastikan Arduino dan komputer memiliki kecepatan baud rate yang sama.
- Pada Arduino, panggil fungsi
Serial.begin(baudRate)di dalam fungsisetup(), di manabaudRateadalah kecepatan baud rate yang diinginkan (misalnya 9600, 115200, dll). - Pada komputer, saat menggunakan software terminal serial atau aplikasi yang mendukung komunikasi serial, atur kecepatan baud rate sesuai dengan yang telah ditentukan di Arduino.
- Pengiriman Data dari Arduino ke Komputer:
- Pada Arduino, gunakan fungsi
Serial.print(data)atauSerial.println(data)untuk mengirim data ke komputer melalui port serial. - Data yang dikirim dapat berupa teks, angka, atau format lain yang sesuai dengan kebutuhan aplikasi yang dijalankan di komputer.
- Pada komputer, Anda dapat menggunakan aplikasi terminal serial atau menulis program menggunakan bahasa pemrograman seperti Python, C#, atau Java untuk membaca data yang dikirim oleh Arduino melalui port serial.
- Pada Arduino, gunakan fungsi
- Menerima Data dari Komputer ke Arduino:
- Pada Arduino, gunakan fungsi
Serial.read()untuk membaca data yang dikirim oleh komputer melalui port serial. - Data yang diterima dapat digunakan untuk mengontrol Arduino atau sebagai input untuk menjalankan logika dan fungsi tertentu di dalam program Arduino.
- Pada Arduino, gunakan fungsi
Penting untuk mencocokkan kecepatan baud rate yang sama antara Arduino dan komputer. Jika kecepatan baud rate tidak sesuai, data yang dikirim atau diterima mungkin tidak terbaca dengan benar.
Komunikasi serial antara Arduino dan komputer digunakan dalam berbagai aplikasi, termasuk pemantauan dan kendali jarak jauh, pengumpulan data sensor, tampilan informasi di komputer, atau integrasi Arduino dengan aplikasi desktop atau web.
Contoh Program
Berikut adalah contoh program Arduino yang melakukan komunikasi serial dengan komputer:
void setup() {
// Memulai komunikasi serial dengan kecepatan baud rate 9600
Serial.begin(9600);
}
void loop() {
// Membaca data yang diterima dari komputer
if (Serial.available()) {
char data = Serial.read();
// Mengirim kembali data yang diterima ke komputer
Serial.print("Data yang diterima: ");
Serial.println(data);
}
// Mengirim data dari Arduino ke komputer
int sensorValue = analogRead(A0);
// Mengirim data sensor analog ke komputer
Serial.print("Data sensor analog: ");
Serial.println(sensorValue);
// Delay untuk stabilitas
delay(1000);
}
Penjelasan:
void setup()– Fungsi setup yang dieksekusi saat Arduino dinyalakan. Di dalamnya, kita melakukan inisiasi awal.Serial.begin(9600)– Mengatur kecepatan baud rate komunikasi serial menjadi 9600 bps. Ini harus sesuai dengan kecepatan baud rate yang diatur di program komputer yang digunakan untuk menerima data dari Arduino.void loop()– Fungsi loop yang dieksekusi secara berulang. Di dalamnya, kita menempatkan logika utama program.if (Serial.available())– Mengecek apakah ada data yang diterima dari komputer melalui komunikasi serial.Serial.available()mengembalikan jumlah byte yang tersedia untuk dibaca.char data = Serial.read()– Membaca data yang diterima dari komputer dan menyimpannya dalam variabeldatabertipechar.Serial.print("Data yang diterima: ")danSerial.println(data)– Mengirim pesan “Data yang diterima: ” diikuti oleh data yang diterima dari komputer melalui komunikasi serial.Serial.print()digunakan untuk mengirim teks tanpa baris baru, sedangkanSerial.println()digunakan untuk mengirim teks dengan baris baru.int sensorValue = analogRead(A0)– Membaca nilai dari sensor analog yang terhubung ke pin A0 pada Arduino. Nilai tersebut akan berada dalam rentang 0 hingga 1023.Serial.print("Data sensor analog: ")danSerial.println(sensorValue)– Menigrim pesan “Data sensor analog: ” diikuti oleh nilai sensor analog ke komputer melalui komunikasi serial.delay(1000)– Menghentikan eksekusi program selama 1 detik sebelum mengulangi proses loop. Ini memberikan keterlambatan antara setiap pengiriman data ke komputer.
Dalam program di atas, Arduino akan mengirimkan data sensor analog yang terhubung ke pin A0 ke komputer melalui komunikasi serial dengan kecepatan baud rate 9600 bps. Selain itu, Arduino juga akan menerima data dari komputer dan mengirimkannya kembali ke komputer.