Tutorial Arduino Dasar SoftwareSerial


Setelah sebelumnya dijelaskan mengenai tutorial dasar komunikasi serial pada Arduino, pada ulasan kali ini akan mengupas masalah komunikasi serial lebih dari satu perangkat. Pada board Arduino Uno hanya tersedia satu pin RX dan TX, dengan demikian (pada kondisi normal) hanya memungkinkan sebuah board Arduino Uno tersebut untuk melakukan komunikasi serial dengan satu perangkat saja. Sedangkan dalam beberapa aplikasi ada yang menuntut microcontroller untuk melakukan komunikasi serial dengan beberapa perangkat sekaligus. Untuk mengantisipasi hal tersebut, board Arduino Uno dilangkapi dengan feature perangkat lunak yang memungkinkan untuk menjadikan pin Arduino lainnya sebagai pin RX-TX. Semisal menjadikan pin digital 9 sebagai RX dan pin digital 8 sebagai TX. Hal itu dapat dilakukan dengan menggunakan library SoftwareSerial.

<img src="arduino.png" alt="arduino">


Pengujian ini dengan menggunakan dua buah komputer yang terhubung dengan sebuah board Arduino Uno. Data yang dikiramkan dari masing-masing komputer ditampilkan pada Serial Monitor Arduino Ide. Selain itu diperlukan adapter untuk pin digital 8 dan 9 Arduino yang digunakan sebagai TX dan RX ke salah satu komputer. Berikut adalah contoh penggunaan source code (sketch) library SoftwareSerial dan penjelasannya.

/*
Program komunikasi serial
SoftwareSerial

Loki Lang
*/

#include<SoftwareSerial.h>

SoftwareSerial langSerial(9, 8);

void setup()
{
  Serial.begin(9600);
  langSerial.begin(9600);
}

void loop()
{
  while(langSerial.available() && Serial.available() > 0)
  {
    langSerial.println(Serial.read());
    Serial.println(langSerial.read());
  }
}

Adapun penjelasan untuk source code (sketch) program Arduino menuliskan data ke EEPROM ialah sebagai berikut.
  • Agar library SoftwareSerial dapat digunakan perlu mencakup file header SoftwareSerial.h terlebih dahulu
  • Deklarasi global SoftwareSerial langSerial(9, 8); dengan pin digital 9 sebagai RX dan 8 sebagai TX
  • Nama variable langSerial dapat diganti dengan nama lain, hanya perlu diingat nama variable tersebut harus sama setiap kali memanggil function terkait library SoftwareSerial
  • Sebelum masuk pada program utama, dilakukan inisialisasi komunikasi serial baik secara hardware (Serial.begin()) maupun software (langSerial.begin()) dengan deklarasi serta baud rate yang digunakan yakni 9600
  • Pada program utama akan dilihat apakah komunikasi serial dengan dua perangkat tersebut dapat dijalankan
  • Nilai yang dikambalikan (return), dari function Serial.available() dan langSerial.available(), adalah dalam boolean
  • Selama nilai return dari keduanya true, maka akan terus menjalankan instruksi selanjutnya
  • Bila salah satu nilai return (atau bahkan keduanya) dari Serial.available() atau langSerial.available() bernilai false, maka tidak ada instruksi yang dikerjakan, hingga keduanya bernilai true
  • Setelah keduanya bernilai true komunikasi serial dapat dilakukan, instruksi selanjutnya ialah menampilkan karakter pada masing-masing Serial Monitor Arduino IDE
  • Pada hardware serial akan membaca data yang diberikan oleh komputer yang terhubung software serial, lalu menampilkannya di Serial Monitor
  • Hal sebaliknya juga berlaku pada komputer yang terhubung dengan hardware serial, akan membaca data dari komputer yang terhubung dengan software serial


Saat ini di Indonesia board Arduino Uno R3 dapat diperoleh dengan mudah di kota-kota besar. Board Arduino Uno R3 dijual dengan harga murah. Membuat perkembangan Arduino kian pesat. Bila ada sesuatu yang belum jelas dan ingin tahu lebih dalam seputar project Arduino, pemrograman, dan elektronika, bisa bertanya pada bagian comment.