• Tidak ada hasil yang ditemukan

Implementasi Error Detection System Pada Komunikasi Serial Arduino Menggunakan Metode Cyclic Redundancy Check (CRC)

N/A
N/A
Protected

Academic year: 2022

Membagikan "Implementasi Error Detection System Pada Komunikasi Serial Arduino Menggunakan Metode Cyclic Redundancy Check (CRC)"

Copied!
6
0
0

Teks penuh

(1)

Fakultas Ilmu Komputer

Implementasi Error Detection System Pada Komunikasi Serial Arduino Menggunakan Metode Cyclic Redundancy Check (CRC)

Reynald Novaldi1, Sabriansyah Rizqika Akbar2, Rakhmadhany Primananda3 Program Studi Teknik Informatika, Fakultas Ilmu Komputer, Universitas Brawijaya

Email: 1[email protected], 2[email protected], 3[email protected]

Abstrak

Tingginya perkembangan sistem IoT saat ini berbanding lurus dengan tingginya perkembangan sistem komunikasi. Hal ini tidak menutup kemungkinan pertukaran data pada sistem komunikasi tersebut berhasil 100%. Hal tersebut dipengaruhi oleh faktor cuaca, noise, tegangan listrik pada sistem tidak stabil dan crosstalk. Akan tetapi permasalahan pada pertukaran data ini dapat dikurangi ataupun dihindari dengan metode error detection dan error correction. Ada bermacam-macam metode error detection seperti reed solomon code, hamming code, dan cyclic redundancy check. Arduino uno adalah mikrokontroller yang pengembangannya dalam bidang Iot terbilang pesat, pengembangannya yang mudah membuat Arduino Uno menjadi banyak digunakan dalam embedded system dan wireless sensor network. Penelitian ini menggunakan metode error detection yaitu cyclic redundancy check atau CRC, CRC memiliki efisiensi dan keakuratan yang tinggi dalam mendeteksi suatu kesalahan pada komunikasi atau pertukaran data. CRC menggunakan sistem polynomial division dan linear feedback shift register yang dimana metode ini sangat efisien untuk diimplementasikan pada hardware maupun software. Pada penelitian ini metode CRC diimplementasikan pada dua mikrokontroller arduino yang saling berhubungan lewat komunikasi serial yakni I2C, SPI, dan UART, dan salah satu arduino sebagai pengirim dan satu lainnya sebagai penerima data. Dari pengujian fungsionalitas sistem error detection didapatkan bahwa sistem dapat mendeteksi adanya kesalahan pada data dengan tepat dengan persentase 100% dan pada pengujian waktu didapatkan hasil bahwa sistem dengan komunikasi UART membutuhkan waktu yang lebih cepat daripada sistem dengan SPI atau I2C.

Kata kunci: CRC, Error Detection, Arduino, Komunikasi Serial Abstract

The high development of the IoT system current is directly proportional to the high development of the communication system. This does not cover the possibility of the exchange of data on the communications system 100%. It is influenced by factors of weather, noise, voltage on the System unstable and crosstalk. But the problems on the exchange of this data can be reduced or avoided by the method of error detection and error correction. There are various methods of error detection such as reed solomon code, hamming code, and cyclic redundancy check. Arduino uno is a mikrokontroller development in the field of Iot is fast, easy development making the Arduino Uno became widely used in the embedded systems and wireless sensor network. This research method using error detection that is cyclic redundancy check or CRC, CRC has high efficiency and accuracy in detecting an error in communication or exchange of data. CRC polynomial systems using linear feedback shift and division registers where the method is very efficient to implement in hardware or software. this research of CRC method implemented on two mikrokontroller the arduino interconnected via a serial communications i.e. I2C, SPI, and UART, and one of the arduino as a sender and the other one as the recipient of the data. From testing the functionality of the system error detection is obtained that the system can detect an error in the data correctly with percentage 100% time on testing and obtained results that systems with communication UART takes a faster than a system with SPI or I2C.

Keywords: CRC, Error Detection, Arduino, Serial Communication

(2)

Fakultas Ilmu Komputer, Universitas Brawijaya

1. PENDAHULUAN

Era teknologi dengan cepat mengalami perkembangan dan seiring perkembangan teknologi perkembangan sistem komunikasi pun ikut berkembang. Tetapi seiring berkembangnya sistem komunikasi tetap memiliki faktor utama atau masalah utama yaitu kesalahan pada pertukaran informasi atau data hal ini menyebabkan data yang diterima oleh penerima adalah data yang tidak sebagaimana mestinya diterima. Faktor cuaca, radiasi, crosstalk, noise, dan tegangan listrik tidak stabil adalah faktor yang ikut mempengaruhi kesalahan data dalam pengiriman data ini (Fu, B, & Ampadu, 2009).

Kesalahan data seperti pergantian bit, dan pertukaran tempat antara data satu dengan yang lain dapat dihindari dan dikurangi dengan sistem error detection yang diterapkan pada sistem komunikasi.

Banyak metode yang digunakan untuk mendeteksi kesalahan seperti hamming code, cyclic redundacy check, reed solomon code, dll.

Cyclic redundancy check adalah metode yang banyak digunakan dan populer untuk mendeteksi error dikarenakan implementasi yang mudah pada perangkat lunak dan perangkat keras.

Metode ini digunakan pada perangkat keras seperti perangkat penyimpanan dan memori, selain implementasi yang mudah CRC juga dapat mendeteksi error pada data yang memiliki panjang bit yang besar.

Terdapat beberapa penelitian yang menjadi sumber referensi oleh penulis yang pertama adalah penelitian yang dilakukan oleh Engdahl(2014) menggunakan CRC paralel untuk diimplementasikan pada software dan menggunakan perangkat keras ARM Cortex- A15 dan dalam implementasinya mendapatkan kecepatan 2,6 kali lebih cepat dalam komputasinya jika dibandingkan dengan CRC lookup table biasa. Lalu penelitian oleh Lee(2014) juga mengimplementasikan metode CRC pada high-speed semiconductor memory untuk mendeteksi adanya kesalahan data yang besar.

Dari beberapa penelitian yang sudah dilakukan metode CRC dapat mendeteksi adanya kesalahan pada data dan dapat diimplementasikan pada perangkat keras maupun perangkat lunak. Hal inilah menjadikan metode CRC lebih efektif dan efisien dibandingkan metode yang lain dan hal inilah yang mendasari penulis menggunakan metode

CRC pada penelitian ini untuk mendeteksi kesalahan data pada komunikasi serial antara Arduino.

Pada penelitian ini penulis menggunakan metode CRC untuk mendeteksi error yang ada pada komunikasi serial Arduino, penulis menggunakan dua buah Arduino yang saling terhubung dengan pin RX, TX nya. Salah satu Arduino bertindak sebagai penerima data masukan dari pengguna dan pengirim data sedangkan Arduino yang lain bertindak sebagai penerima data sekaligus untuk mendeteksi adanya error pada data yang diterima.

2. PERANCANGAN DAN IMPLEMENTASI

Pada bab perancangan dan implementasi sistem dilakukan perancangan perangkat keras dan lunak sebagai gambaran bagaimana sistem dibuat dan selanjutnya dilakukan juga implementasi pada perangkat keras dan lunak tersebut.

2.1. Perancangan Sistem

Gambar 1. Diagram perancangan sistem Pada Gambar 1 dilakukan perancangan hardware yaitu perancangan komunikasi serial Arduino Uno dengan menghubungkan antara pin Rx, dan pin Tx pada mikrokontroler Arduino dan dilanjutkan dengan perancangan software yaitu perancangan sistem error detection pada sistem komunikasi Arduino tersebut.

2.2. Perancangan Hardware

Perancangan perangkat keras dilakukan untuk merancang serial komunikasi serial Arduino yang saling terhubung satu sama lain dengan pin Rx, Tx. Pada penelitian ini menggunakan pin 10 dan pin 11 yang ada pada Arduino sebagai pin Rx, Tx seperti pada Gambar 2.

(3)

Gambar 2. Perancangan Serial Arduino

2.3. Perancangan Software

Perancangan software dilakukan untuk merancang komunikasi serial pada Arduino dan perancangan metode CRC sebagai sistem error detection pada sistem komunikasi serial Arduino. Gambar 3 merupakan diagram alir perancangan sistem.

Gambar 3. Diagram alir perancangan sistem

2.4. Perancangan Sistem Error Detection Pada sub-bab perancangan ini memuat tentang perancangan sistem error detection dengan metode CRC pada komunikasi serial Arduino yang menggunakan dua buah mikrokontroller Arduino uno. Salah satu Arduino bertindak sebagai penerima data masukan dari pengguna melalui serial monitor sekaligus sebagai pengirim codeword, codeword didapatkan melalui gabungan antara data dan remainder yang didapatkan dari perhitungan polinomial division yaitu perhitungan XOR dan operasi geser antara biner data masukan dengan bilangan polinomialnya, jika most significant bit (MSB) yang dimiliki oleh biner data bernilai 1 maka akan dilakukan operasi XOR dengan bilangan polinomialnya jika MSB bernilai 0

kali dan begitu seterusnya sampai mendapatkan sisa hasil bagi. Data dan remainder digabung menjadi codeword dan dikirimkan ke penerima, jika codeword telah sampai pada penerima akan dilakukan komputasi seperti pada sisi pengirim sampai mendapatkan remainder, jika remainder bernilai 0 maka data tersebut tidak mengalami kesalahan atau tidak ada error jika remainder pada codeword bernilai selain 0 maka data tersebut terdapat error. Gambar 4 merupakan gambar diagram alir perancangan sistem error detection.

Gambar 4. Diagram alir perancangan sistem error detection

2.4. Implementasi Sistem

Bab implementasi sistem adalah sub-bab yang mengikuti perancangan sistem yang telah dibuat sebelumnya, dimana implementasi sistem komunikasi serial Arduino dan implementasi sistem error detection. Pada Gambar 5 menunjukkan hasil implementasi sistem.

Gambar 5. Implementasi sistem

(4)

Fakultas Ilmu Komputer, Universitas Brawijaya

3. PENGUJIAN DAN ANALISIS

3.1. Pengujian Fungsional Sistem Komunikasi Arduino

Pengujian fungsionalitas sistem komunikasi Arduino merupakan pengujian yang dilakukan dengan menggunakan dua buah mikrokontroller Arduino yang saling terhubung melalui serial dengan pin Rx, Tx. Hasil pengujian akan dianalisis apakah kedua Arduino tersebut dapat mengirim dan menerima data yang dimasukkan pada Arduino pengirim. Hasil pengujian dapat dilihat pada Gambar 6 dan Gambar 7.

Gambar 6. Tampilan output pada pengirim

Gambar 7. Tampilan output pada penerima Pada gambar 6 menunjukkan bahwa pengguna memasukkan data bernilai 12 pada Arduino pengirim dan pada Gambar 7 merupakan tampilan serial monitor pada Arduino penerima yang menerima data bernilai 12. Dari Gambar 6 dan Gambar 7 dapat disimpulkan bahwa Arduino pengirim mampu mengirimkan data yang telah dimasukkan oleh pengguna ke Arduino penerima.

3.2. Pengujian Fungsional Sistem Error Detection dengan Metode CRC

Pada sub-bab ini dilakukan pengujian pada sistem error detection apakah sistem dapat mendeteksi adanya kesalahan pada data.

Pengujian akan dilakukan dengan 2 tahap pengujian yaitu pengujian dengan data yang tidak ada error dan pengujian dengan data yang terdapat error.

Untuk pengujian pertama yaitu pengujian dengan tidak ada error pada data. Pengujian ini dilakukan bertujuan untuk menguji apakah sistem dapat memberikan hasil keluaran yang tepat. Untuk tampilan pengujian ini ditunjukkan pada Gambar 8 dan Gambar 9.

Gambar 8. Tampilan output pada pengirim

Gambar 9. Tampilan output pada penerima Pada Gambar 8 menunjukkan untuk polinomial yang digunakan adalah CRC-8-CCIT 0x07 dan data yang dimasukkan oleh pengguna bernilai 12 sehingga mendapatkan remainder 3, data beserta remainder lalu dikirim ke penerima dan pada sisi penerima yang ditampilkan pada Gambar 9 Arduino penerima mendapatkan atau menerima data bernilai 12 dan 3 selanjutnya data ini akan dilakukan pengecekan error dengan dilakukan operasi linear feedback shift register dan polynomial division dan mendapatkan hasil tidak ada error pada data dikarenakan hasil validasi data atau remainder dari data tersebut bernilai 0, yang berarti data tersebut tidak terdapat kesalahan/error. Untuk perhitungan manual dari metode ini dipaparkan pada Gambar 10.

(5)

Gambar 10. Perhitungan manual metode CRC pada data

Pada Gambar 10 data dan remainder dijadikan bilangan biner lalu dilakukan operasi XOR dengan polinomialnya sampai data dan remainder tersebut habis, dan menghasilkan sisa hasil atau remainder dari operasi pada Gambar 10 tersebut remainder atau sisa hasil bagi bernilai 0 maka data tersebut dinyatakan tidak ada kesalahan.

Untuk pengujian kedua menggunakan data dengan kesalahan, kesalahan pada data dilakukan dengan cara data tersebut sebelum dikirimkan akan ditambahkan 1 bit, lalu dikirimkan ke penerima.

Gambar 11. Tampilan output pada pengirim

Gambar 12. Tampilan output pada penerima

Pada Gambar 11 adalah tampilan pengirim yang menunjukkan data masukan bernilai 12 dan mendapatkan remainder 3, lalu data dan remainder ini dikirimkan ke penerima tetapi pada sisi penerima data tersebut berubah nilai menjadi 13 dan remainder 3 data dan remainder ini dilakukan proses pengecekan apakah data tersebut terjadi kesalahan dengan cara operasi LFSR dan operasi xor dengan polinomial yang digunakan dan dari hasil operasi tersebut menghasilkan remainder 1 yang berarti data tersebut terdapat kesalahan. Untuk perhitungan manual dari pengujian ini ada pada Gambar 13.

Gambar 13. Tampilan output pada pengirim Pada Gambar 13 data dan remainder dijadikan biner lalu dilakukan XOR dengan polinomialnya sampai data dan remainder tersebut habis, dan menghasilkan sisa hasil atau remainder dari operasi tersebut bernilai 1 maka data tersebut telah terjadi perubahan bit atau terdapat error.

3.3. Pengujian Waktu

Pengujian waktu dilakukan untuk mengatahui berapa waktu yang dibutuhkan sistem untuk melakukan proses dari data tersebut dimasukkan sampai data tersebut dinyatakan terdapat kesalahan atau tidak. Pengujian waktu dilakukan pada protokol komunikasi yang berbeda yaitu UART (Universal Asynchrounous Receiver-Transmitter), I2C (Inter-grated Circuit), dan SPI (Serial Paralel Interface).

Ketiga protokol ini dibandingkan dan dianalisis

(6)

Fakultas Ilmu Komputer, Universitas Brawijaya

waktunya mana yang membutuhkan waktu yang paling cepat dan mana yang membutuhkan waktu paling lama. Polinomial yang dipakai sebagai perbandingan terhadap setiap protokol menggunakan 0x31, 0xD5, dan 0x07. Hasil pengujian dapat dilihat pada Tabel 1:

Tabel 1. Waktu sistem setiap Interface

Polinomial UART

(ms) I2C (ms)

SPI (ms) CRC-8-Dallas/Maxim: 0x31 70 93 78

CRC-8: 0xD5 70 94 78

CRC-8-CCITT:0x07 70 94 78

Gambar 14. Grafik pengujian waktu Pada tabel 1 dan Gambar 14 menunjukkan hasil pengujian waktu pada setiap protokol komunikasi yang digunakan. Waktu ini didapatkan dari penjumlahan waktu pada sistem pengirim, waktu pengiriman, dan waktu pada sisi sistem penerima. Pada pengujian waktu ini didapatkan waktu yang dibutuhkan sistem dengan protokol UART adalah sebesar 70ms untuk setiap polinomial yang digunakan. Untuk protokol I2C membutuhkan waktu 93ms untuk polinomial 0x31 dan 94ms untuk polinomial 0xD5 dan 0x07. Untuk SPI membutuhkan waktu 78ms pada setiap polinomial yang diguakan.

Dari hasil pada tabel 1 didapatkan analisis bahwa UART membutuhkan waktu yang lebih sedikit dari protokol lainnya dan sistem yang menggunakan protokol I2C membutuhkan waktu yang lebih banyak dibandingkan dengan 2 protokol lainnya.

4. KESIMPULAN

Berdasarkan pada hasil pengujian dan analisis yang telah dilakukan metode CRC dalam melakukan pengecekan melakukan pengubahan data yang menjadi masukan dari tipe data integer ke tipe data biner lalu dilakukan operasi XOR dengan bilangan polinomialnya

dan operasi pergeseran bit sehingga mendapatkan sisa hasil bagi atau remainder dan metode CRC dapat melakukan pengecekan error dengan bermacam-macam bentuk bilangan polinomial.

Pada penelitian ini menggunakan data yang memiliki panjang 8-bit yang dikomputasi oleh CRC dan dikirimkan ke penerima, dan pada saat pengujian data yang terdapat error dengan menggunakan data yang diterima Arduino penerima berbeda yaitu bertukar posisi antara data dan remainder, dan hasilnya sistem berhasil mendeteksi adanya perubahan data tersebut.

Untuk pengembangan penelitian kedepannya diharapkan penelitian ini dapat diimplementasikan pada sistem IoT sebagai sistem error detection dan dapat melakukan koreksi pada data yang terdapat error.

5. DAFTAR PUSTAKA

Bogart Jr, T. F. (1992). Introduction to Digital Circuits. International Edition.

Engdahl, J. R., & Chung, D. (2014). Fast Parallel CRC Implementation in Software.

Fu, B, & Ampadu, P. (2009). On Hamming Product Codes With Type-II Hybrid ARQ for On-Chip.

Lee, J.-H. (2015). CRC(Cyclic Redundancy Check) Implementation in High-Speed Semiconductor Memory.

0 20 40 60 80 100

0x31 0xD5 0x07

UART I2C SPI

Gambar

Gambar 1. Diagram perancangan sistem  Pada  Gambar  1  dilakukan  perancangan  hardware  yaitu  perancangan  komunikasi  serial  Arduino Uno dengan menghubungkan antara pin  Rx, dan pin Tx pada mikrokontroler Arduino dan  dilanjutkan  dengan  perancangan
Gambar 2. Perancangan Serial Arduino
Gambar 6. Tampilan output pada pengirim
Gambar 10. Perhitungan manual metode CRC pada  data
+2

Referensi

Dokumen terkait