Mengemulasi Pin Digital menjadi Pin Serial dengan SoftwareSerial

Komunikasi serial digunakan untuk bertukar data antar device menggunakan protokol serial. Sebenarnya ada dua macam tipe komunikasi serial yang dapat dibangun dengan Arduino, yakni serial sinkron (SPI, I2C/IIC dan TWI) dan serial asinkron melalui pin 0 dan 1. Pada tutorial kali ini yang akan dibahas adalah serial asinkron, karena tipe komunikasi ini dapat diemulasi dari pin digital biasa (pin 2 – 13). Sedangkan pin 0 dan 1 adalah pin yang secara native dirancang sebagai pin serial (asinkron).

Dengan pengemulasian pin digital menjadi pin serial, maka dalam satu papan Arduino Anda akan memiliki lebih dari satu pin serial. Satu pin serial dapat Anda gunakan untuk monitoring/debugging ke arah komputer (via kabel USB), pin serial yang lain dapat digunakan untuk berinteraksi dengan device lain untuk bertukar data. Contoh aplikasi yang menggunakan model seperti ini dapat Anda baca di artikel saya terdahulu, “Arduino Bluetooth Module HC-05 Sketch Handler

Bagaimana cara mengemulasi pin digital menjadi pin serial? Jawabannya adalah menggunakan library SofwareSerial.h. Anda perlu mendeklarasikan library di sketch Anda jika akan mengemulasi pin digital menjadi pin serial. Sebagai contoh, dapat Anda buka program/sketch ‘SoftwareSerialExample’ melalui menu File | Examples | SoftwareSerial | SoftwareSerialExample. Secara global program ini akan menjadikan/mengemulasikan pin 10 dan 11 menjadi pin serial, kemudian melempar/meneruskan semua data yang keluar masuk ke pin ini ke pin serial hardware di pin 0 dan 1. Karena pin 0 dan 1 terhubung dengan atmega16u2 yang bertugas melakukan komunikasi ke port USB, maka otomatis semua data yg masuk ke pin serial (software) 10 dan 11 akan dapat dimonitor komputer melalui jendela Serial Monitor via kabel USB.

2015-07-15 09_48_26-SoftwareSerialExample _ Arduino 1.6.5

Terakhir, berkat adanya library SoftwareSerial.h, fungsionalitas papan Arduino menjadi lebih maksimal karena Anda bisa memiliki lebih dari satu port serial yang dapat digunakan untuk berbagai keperluan. Namun library ini juga punya sedikit keterbatasan (terkait kemampuan hardware Arduino juga), yakni :

– maksimal baudrate yang dapat digunakan adalah 115200 bps

– jika Anda mengemulasi lebih dari satu pin serial pada pin digital, maka dalam satu waktu hanya satu pin serial yang dapat menerima data

– pada beberapa tipe papan Arduino yang lain seperti Arduino Mega, Mega ADK, Leonardo dan Micro, tidak semua pin digital dapat diemulasi menjadi pin serial. Silahkan melihat datasheet papan Arduino terkait untuk lebih detailnya.

Tetapi, walaupun memiliki keterbatasan, tetaplah library SoftwareSerial ini sangat membantu jika kita membutuhkan pin serial tambahan. Dan enaknya lagi, cara menambahkannya pun tidaklah sulit, karena semua function-nya disamakan dengan function serial bawaan Arduino. Silahkan dilihat kembali contoh program di atas, maka Anda akan mengerti maksud saya. Selamat mencoba ….

5 1 vote
Article Rating
Tags:

Leave a Reply

15 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
di2c

Gan Aji, maksudnya dalam satu waktu hanya satu pin serial yang bisa menerima data itu gimana ya?
karna saya rencana pake uno + modul bluetooth & gsm shield.
pin 0, 1, dengan bluetooth, pin 10, 11, dengan gsm shield. apakah komunikasi data 2 modul tersebut bisa di ekseksi dalam satu loop() ??
dan apakah klo pake 2 pin serial seperti itu pin 0, 1, harus di deklarasikan juga dgn Softwareserial atau tidak??

DI2C

saya udah coba emulasi pin digital menjadi serial, tapi saya baru test dengan simulasi proteus menggunakan instrument virtual terminal. untuk pin 0, 1 bisa kirim dan terima data, tapi untuk pin 10, 11, yg diemulasi hanya bisa terima data saja tidak bisa kirim. kira2 permasalahannya apa ya gan?? apa proteusnya yg gak support??

Nia Safitri

gan, kalau pake pin 0 1 harus dideklarasikan software serial gak?

Durotul

Maaf mau menanyakan.
Saya ada modul laser yang kalau mau digunakan ke device lain katanya pakai komunikasi UART.
Nah, ketika melihat di serial monitor arduino harus send comment misal dengan ketik “D”, “S”, dll.
Bagaimana untuk mengambil dan mengolah data yang seperti itu ke arduino, karena rencananya mau digabungkan dengan sensor-sensor lainnya?
Terimakasih.
durotul.muntafiah@gmail.com

joko

Mas Aji, apakah arduino mega bisa difungsikan sebagai PPI, dengan bi-directional port yang bisa dibaca komputer dan tiap port bisa diaktifkan maupun dinonaktifkan dari program komputer?
Terimakasih.

wibi

Jika memanfaatkan Sofware serial dan Hardware serial dalam satu program bersamaan apakah bisa?
Software serial digunakan untuk komunikasi serial dan Hardware serial digunakan hanya untuk mengirim serial monitor untuk device Bluetooth, RF 433 mhz, dll.?

wibi

okay mas ajii terimaksih sarannya

Nia Safitri

bang mau tanya, maksudnya lebh dari 1 pasang software serial gak jalan dalam satu waktu gimana? kalau beda waktu tetep gak bisa?

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