Skripsi
Untuk Memenuhi Sebagai Persyaratan Mencapai
Sarjana Teknik
Oleh:
Iqbal Cahya Kurniawan
1600022043
Kepada
Program Studi Teknik Elektro
Fakultas Teknologi Industri
Universitas Ahmad Dahlan
Pembimbing, Tanggal,………………...........
ii
HALAMAN PENGESAHAN
SKRIPSI
SISTEM KOMUNIKASI NIRKABEL BERBASIS MODUL
NRF24L01 PADA ALAT SARUNG TANGAN PINTAR
PENGENDALI KURSI RODA
Dekan
Fakultas Teknologi Industri
Universitas Ahmad Dahlan
iii
PERNYATAAN TIDAK PLAGIAT
iv
PERNYATAAN PERSETUJUAN AKSES
v
PERNYATAAN KEASLIAN TULISAN
NIM : 1600022043
Menyatakan dengan sebenarnya bahwa skripsi/tugas akhir yang saya tulis ini
alihan tulisan atau pikiran orang lain yang saya akui sebagai hasil tulisan atau
Apabila di kemudian hari terbukti atau dapat dibuktikan skripsi/tugas akhir ini
hasil jiplakan, maka saya bersedia menerima sanksi atas perbuatan tersebut.
vi
MOTTO
vii
PERSEMBAHAN
viii
KATA PENGANTAR
Assalamu’alaikum Wr.Wb.
Dengan mengucapkan Alhamdulillahirobbil’alamin, penulis memanjatkan puji
dan syukur kepada Allah SWT atas rahmat dan hidayat –Nya sehingga penulis
dapat menyelesaikan skripsi dengan judul “Sistem Komunikasi Nirkabel
Berbasis Modul Nrf24l01 Pada Alat Sarung Tangan Pintar Pengendali Kursi
Roda”. Skripsi ini disusun untuk memenuhi sebagian persyaratan mencapai
derajat Sarjana Teknik di Program Studi Teknik Elektro Fakultas Teknologi
Industri Universitas Ahmad Dahlan Yogyakarta.
Selama penulisan ini penulis menyadari bahwa banyak pihak telah
memberikan bantuannya, sehingga pada kesempatan ini penulis ingin
mengucapkan terimakasih yang tulus kepada :
1. Allah SWT yang telah memberikan kemudahan dan kelancaran selama
proses pengerjaan skripsi.
2. Ayahanda (alm. Arry Sudariyanto) dan Ibunda (Siti Wartikah) yang
telah senantiasa memotivasi, menasehati, menyemangati setiap saat.
3. Kakak Kandung ku Mba Fitri, Mas Ganjar, Mas Bagus yang telah
memberi semangat dan motivasi selama ini.
4. Bapak Sunardi, S.T., M.T., Ph.D., selaku Dekan Fakultas Teknologi
Industri Universitas Ahmad Dahlan.
5. Bapak Nuryono Satya Widodo, S.T.,M.Eng selaku kepala program studi
teknik elektro.
6. Bapak Anton Yudhana, S.T., M.T., Ph.D., selaku dosen pembimbing
tugas akhir yang telah memberikan pengarahan dalam tugas akhir saya.
7. Bapak Ir. Wahyu Sapto Aji, S.T., M.T selaku dosen pembimbing
akademik yang selalu memberikan motivasi, dukungan, semangat dan
pengarahan.
ix
8. Muhammad Annas, Ahmad Yogaswara, Febryarta Tryhamsyah, Ponco
Sukaswanto selaku kerabat yang telah memberikan informasi dan
pandangan kepada penulis.
9. Estu Ilham Kumara, Andrean Dwi Cahyo,Febryarta Tryhamsyah selaku
teman seperjuangan bimbingan bapak Anton Yudhana.
10. Segenap Dosen Teknik Elektro Universitas Ahmad Dahlan, yang telah
membagikan ilmunya sehingga skripsi ini dapat diselesaikan.
11. Kawan-kawan ku teknik elektro UAD 2016 yang menjadi teman
seperjuangan.
12. Pihak-pihak yang belum disebutkan satu- persatu.
Penulis menyadari bahwa skripsi ini masih jauh dari sempurna. Oleh karena
itu, penulis mengharapkan kritik dan saran bersifat membangun demi
sempurnanya skripsi ini dan untuk penulisan skripsi selanjutnya.
Harapan penulis, semoga do’a dan bantuan yang sangat berharga tersebut
mendapat imbalan dari Allah SWT, amin ya robal alamin.
Wasslamualaikum Wr.Wb.
Yogyakarta,21 Desember 2019
Penulis
x
DAFTAR ISI
HALAMAN PERSETUJUAN................................................................................ii
HALAMAN PENGESAHAN................................................................................iii
MOTTO.................................................................................................................vii
PERSEMBAHAN.................................................................................................viii
KATA PENGANTAR............................................................................................ix
DAFTAR ISI...........................................................................................................xi
DAFTAR GAMBAR............................................................................................xiv
DAFTAR TABEL.................................................................................................xvi
ABSTRAK...........................................................................................................xvii
BAB 1 PENDAHULUAN.....................................................................................1
xi
2.2.2 Error detection..........................................................................17
xii
4.2.2 Pengujian Komunikasi Modul Nrf24L01.................................73
5.1 Kesimpulan.................................................................................100
5.2 Saran...........................................................................................100
DAFTAR PUSTAKA..........................................................................................102
LAMPIRAN.........................................................................................................105
xiii
DAFTAR GAMBAR
Gambar 2.1 Struktur Jaringan Sensor Nirkabel..........................................17
xiv
Gambar 4. 10 Sketch Troughput.................................................................58
DAFTAR TABEL
xv
Tabel 2.1 Penelitian terdahulu.....................................................................11
xvi
Iqbal Cahya Kurniawan
1600022043
ABSTRAK
Jaringan sensor nirkabel adalah suatu jaringan nirkabel yang terdiri dari
kumpulan node sensor yang tersebar di suatu area tertentu (sensor field). Tiap
node sensor memiliki kemampuan untuk mengumpulkan data dan berkomunikasi
dengan node sensor lainnya. Pada proses komunikasi nirkabel ini menggunakan
modul nrf24l01 terdapat banyak kendala salah satunya packet loss. Packet loss
merupakan kegagalan suatu transmisi dalam proses pengiriman yang ditunjukan
ke alamat (receiver). Hal ini menyebabkan hilangnya beberapa data dalam proses
pengiriman.
Dengan kendala tersebut ada metode yang dapat meminimalisir terjadinya
packet lossi yaitu metode error detection. Metode error detection adalah metode
yang secara sistem diatur untuk mendeteksi data yang mengalami packet loss.
Tetapi untuk proses mendeteksi terdapat proses matematika yaitu menggunakan
algoritma cyclic redundancy check (CRC). Sistem akan menghitung dengan
algoritma CRC pada bagian transmitter dan receiver. Lalu akan dikomparasi oleh
hasil CRC tersebut. Selain itu untuk mengetahui faktor-faktor lain penyebab
packet loss atau connection loss menggunakan quality of service. Parameter yang
digunakan adalah jitter, packet loss, delay, throughput.
Hasil pengujian dari error detection menghasilkan sistem dapat mendeteksi
error sebesar 30 % dari total pengujian sebanyak 120 kali dan 70 % data berhasil
diterima sesuai dengan data yang dikirimkan. Pengujian quality of service
dilakukan dengan jarak 50 – 300 cm, dengan nilai rata-rata delay sebesar 773.16
ms, Troughput sebesar 777.43 Kbps, Jitter 40.41 ms, packet loss 30%.
Kata Kunci: Jaringan sensor nirkabel, Modul nrf24l01, Error detection, Cyclic
redundancy check (CRC), Quality of service.
xvii
BAB 1
PENDAHULUAN
Nomor 4 Tahun 1997 tentang Penyandang cacat (UU PC) yaitu setiap orang yang
memiliki kelainan fisik dan/atau mental yang dapat menganggu atau merupakan
dan merugikan negara sebanyak 1 hingga 7 persen dari produk domestik bruto
(Mustadi, 2012).
bagi negeri ini. Berdasar dari angka yang ditetapkan oleh WHO (World Health
gelombang radio sehingga node-node pada jaringan dapat saling terhubung dan
jaringan sensor wireless terhadap tiga jenis modul transceiver yang berbeda, yaitu
1
2
paket dan memiliki konsumsi RAM paling rendah yaitu 32.00% dari kapasitas
RAM pada Arduino uno. Namun, transmisi data pada modul nrf24l01 pada
sebesar 2.38% pada jarak 16 meter dengan kondisi field terbuka (Shobrina,
Perangkat yang digunakan sebagai media transmisi secara nirkabel yang ada
pada wireless sensor network dapat dikatakan sebagai modul transceiver. Modul
Modul transceiver tersebut harus dipilih sesuai dengan sistem yang akan dibuat
agar pengiriman dan penerimaan data dapat akurat dan dioperasikan pada
network (WSN) yang dibutuhkan untuk bekerja dalam rentang waktu yang lama
memiliki kebutuhan delay yang berbeda juga (Arrosyid and Sunarno, 2009).
diakibatkan oleh beberapa faktor seperti terjadinya tabrakan data (collision) saat
proses transmisi, adanya noise pada jaringan, atau faktor perangkat transceiver
3
yang tidak reliable. Kegagalan penerimaan data dalam jaringan disebut dengan
packet loss. Oleh karena itu dibutuhkan adanya rekayasa penanganan kesalahan
diharapkan. QoS bertujuan untuk memberikan layanan yang lebih baik pada
layanan pada sebuah aplikasi pada jaringan dapat diketahui dari beberapa
parameter untuk menentukannya yaitu delay, jitter, dan troughput (Asri et al.,
2018).
dan pertukaran tempat antara datu satu dengan yang lain dapat dihindari dengan
metode error detection yang diterapkan pada sistem komunikasi. Banyak sekali
Primananda, 2019).
yang berjudul “Sistem Komunikasi Nirkabel Berbasis Sensor Nrf24l01 Pada Alat
nirkabel pada sarung tangan pintar pengendali kursi roda sangatlah penting karena
tidak terjadinya sinkronisasi antara sarung tangan pintar dan kursi roda. Oleh
karena itu peeliti menggunakan metode error detection agar sistem dapat secara
otomatis medeteksi data yang dikirim dan data yang diterima mengalami corrupt
check (CRC). Selain peneliti juga ini menganalisis quality of service (QoS) dari
komunikasi nirkabel pada alat seperti delay, jitter, throughput, packet loss.
1. Rentan terjadinya packet loss atau kegagalan pengiriman data pada proses
Arduino nano
4. Pengujian dilakukan pada alat sarung tangan pintar dan kursi roda yang sudah
jadi.
throughput, jitter.
Nrf24L01?
Dari rumusan masalah yang dikemukakan maka tujuan dari penelitian ini
1. Dapat merancang dan membuat sistem elektronis pada sarung tangan yang
dapat mengontrol kursi roda dan dapat melakukan komunikasi nirkabel dengan
baik.
6
redundancy check (CRC) pada komunikasi nirkabel antara kursi roda dan
sarung tangan.
1. Bagi IPTEK, untuk menghasilkan alat sarung tangan pintar pengendali kursi
judul “Analisis Qos ( Quality Of Service ) Pada Jaringan Internet ( Studi Kasus :
Upt Loka Uji Teknik Penambangan Jampang Kulon – Lipi )”. Pada penelitian ini
Jampang Kulon - LIPI, secara organisasi berada di bawah dan bertanggung jawab
kepada Kepala Pusat Penelitian Geoteknologi, Deputi Ilmu Bumi, Institut Ilmu
baik jaringan dan upaya untuk mendefinisikan karakteristik dan sifat layanan.
Dalam Protokol Internet (IP), IP QoS mengacu pada kinerja paket -Package IP
yang melewati satu atau lebih jaringan. QoS dirancang untuk membantu pengguna
mendapatkan kinerja aplikasi berbasis jaringan yang andal. QoS mengacu pada
kemampuan jaringan untuk memberikan layanan yang lebih baik pada lalu lintas
bervariasi karena beberapa masalah, seperti masalah bandwidth, latensi dan jitter,
yang dapat membuat efek besar untuk banyak aplikasi. Fitur Quality of Service
(QoS) dapat membuat bandwidth, latensi dan jitter diprediksi dan disesuaikan
7
8
sistem ini menggunakan beberapa komponen utama yaitu Arduino Uno, Modul
Nrf24L01, Sensor pH. Kemudian bagian komunikasi data pada sistem ini
node sensor telah aktif. Algoritma fungsi request data dan response digunakan
oleh node koordinator untuk mengirimkan data ke node sensor lalu node sensor
penelitian ini yaitu untuk melihat akurasi pengiriman data pada setiap node sensor
dengan 10 kali per jam. Hasil nya dalam 10 kali percobaan komunikasi wireless
mengalami Request Time Out (RTO) sebanyak 5 data dan keakuratan pengiriman
di daerah pedesaan. Penelitian membuat sebuah alat yang pengukur tegangan dan
arus dengan menggunakan sensor arus dan tegangan. Hasil pembacaan tersebut
X-Beee Pro. Kemudian dari gateway dikoneksikan dengan jaringan GPRS ke web
server. Setelah itu disampan pada database lalu dikirim kan ke setiap handphone
pelanggan melalui koneksi GPRS. Hasil penelitian yaitu pengiriman data yang
berasal dari pembacaan sensor tegangan dan sensor arus berhasil dengan baik
Pada penelitian terdahulu yang dilakukan oleh (Rochim et al., 2014) dengan
judul “Perancangan Jaringan Sensor Nirkabel (Jsn) Untuk Memantau Suhu Dan
Sensor DHT 11 yang berfungsi untuk membaca suhu dan kelembaban pada
ruangan akan ditempatkan pada beberapa titik, dimana setiap titik itu juga terdapat
node sensor yaitu modul Nrf24L01 untuk komunikasi ke node sensor utama.
Kemudian pemantauan tersebut dapat di lihat pada web server. Pengujian jarak
terjauh komunikasi node sensor pada setiap cabang ke node sensor utama
data dari 10 data yang akan dikirim pada jarak 93 meter gagal terkirim, kemudian
3 data dari 10 data yang akan dikirim pada jarak 94 meter gagal terkirim.
10
Pada penelitian terdahulu yang dilakukan oleh (Asri et al., 2018) dengan
sensor network atau jaringan sensor nirkabel adalah konektivitas dari node sensor
dalam jaringannya. Konektivitas dari node sensor tergantung pada posisi node
sensor. Algoritma Genetika merupakan sutu metode yang memiliki sifat yang
implementasi dan analisis pada performa jaringan sensor nirkabel yang peletakan
menganalisa hasil uji dari coverage area sensor api 5 channel. Dan untuk
dari analisis tersebut menunjukkan nilai dari quality of service delay sebesar 7,66
s. Nilai dari jitter adalah 1,01 dan nilai dari throughput sebesar 77,01. Analisis
dari hasil uji sensor api 5 channel adalah sensor tersebut dapat meng-cover dengan
jarak lebih dari 100 cm dengan volume api sedang atau besar. Hasil uji dari sistem
menambahkan fitur bagian masukan jari-jari dari sensor dan luas ruangan sesuai
pada Tabel 2.1 dibawah ini dimuat perbandingan yang akan menjadi bahan
Metode
No Nama Peneliti Judul Penelitian Hasil Penelitian
Penelitian
Penambangan yaitu
Lipi ) et
loss,delay,jitter
Kentang broadcast,
wireless
Aeroponik secara algoritma
mengalami
Wireless fungsi request
Request Time
data response,
Out (RTO)
algoritma
sebanyak 5 data
fungsi
dan keakuratan
interrupt dan
pengiriman data
interrupt
sebesar 99,93%.
response
dapat diterima
pada handphone
13
pelanggan.
sensor mengambil
kemudian 3 data
akan dikirim
pada jarak 94
meter gagal
14
terkirim.
sebesar 77,01.
Analisis dari
api 5 channel
adalah sensor
tersebut dapat
meng-cover
dengan jarak
cm dengan
volume api
sedang atau
15
besar.
Secara umum Jaringan Sensor Network yang terdiri dari sejumlah node
coordinator dari node sensor secara langsung melalui node-node lain sebagai
terpenting pada JSN, karena dari node sensor inilah informasi data sensor akan
2014)
Sebuah JSN dapat terdiri dari 2 buah node, yaitu node client dan node
server. Setiap node mampu mengirimkan data ke node lainnya secara single-hop
atau sekali pengiriman. Selain itu node server dan node client terhubung dengan
PC dan keduanya berfungsi sebagai sensing device atau node sensor. Pada
penelitian yang lain digunakan empat node, yang saling terhubung dengan
suhu dengan data yang dapat dikirimkan ke PC yang terhubung dengan node
master. Sementara data pengukuran suhu yang didapat dari node-node slave,
harus dikirimkan ke node master untuk kemudian ditampilkan di PC. Dalam hal
ini, pengiriman dilakukan satu kali (single hop) pada node slave1, dan dilakukan
dua kali (multi hop) pada node slave2 dan node slave3.(Ardiyanto and Sumiharto,
2012)
17
Error detection terjadi pada proses transmisi sebuah data yang proses
transmisinya tidak berjalan dengan semestinya. Error detection merupak proses
pendeteksina kesalahan yang dilakukan ketika data pada proses transmisi.
Kesalahan yang dimaksud disini adalah terjadi perubahan 1 bit atau lebih dari
satu bit yang seharusnya tidak terjadi.
data digital, tetapi tidak bisa memperbaiki kesalahan apabila terdeteksi. Teknik ini
digunakan di dalam proses pengiriman data. Pada saat pengiriman data, terkadang
data yang yang diterima oleh penerima tidak sesuai dengan data yang dikirimkan.
Kondisi ini terjadi karena adanya kerusakan data pada saat proses pengiriman
data, disebabkan adanya gangguan yang biasanya terjadi pada media komunikasi.
Dengan adanya kerusakan data yang mungkin terjadi, maka untuk mendeteksi
kerusakan data tersebut digunakan suatu cara untuk menghitung suatu nilai
terhadap data tersebut. Salah satu cara yang digunakan adalah CRC (Cyclic
Pada intinya prinsip kerja CRC adalah, kita menganggap suatu file yang
kita proses sebagai suatu string yang besar, yang terdiri dari bit-bit. Dan kita
operasikan suatu bilangan polynomial yang sangat besar. Untuk menghitung nilai
CRC, kita membagi bilangan polynomial sebagai representasi dari file, dengan
suatu bilangan polynomial kecil yang sudah terdefinisi untuk jenis varian CRC
tertentu. Nilai CRC adalah sisa hasil bagi tersebut yang biasa disebut dengan
checksum. Setiap pembagian pasti menghasilkan suatu sisa hasil bagi (meskipun
bernilai 0), tetapi ada perbedaan dalam melakukan pembagian pada perhitungan
CRC. Secara umum (prinsip aljabar biasa), pembagian dapat kita lakukan dengan
menghasilkan suatu sisa hasil bagi (yang lebih kecil dari bilangan pembagi). Dari
nilai hasil bagi, sisa hasil bagi dan bilangan pembagi kita bias mendapat bilangan
yang dibagi dengan mengalikan bilangan pembagi dengan hasil bagi dan
didapat. Tentu saja hal ini juga akan berpengaruh pada proses pembagian yang
menjadi dasar utama dalam melakukan perhitungan CRC. Operasi dalam CRC
juga hanya melibatkan nilai 0 dan 1, karena secara umum kita beroperasi dalam
level bit.
pertama diperlukan adalah suatu bilangan polinom yang akan menjadi pembagi
dari data yang akan diolah yang disebut divisor. Dan kita juga menghitung lebar
suatu divisor, yang merupakan posisi bit tertinggi. Misalkan kita sebut lebar
divisor adalah appended, maka jika kita mempunyai divisor 1001, maka
appended tersebut adalah 3. Bit tertinggi ini harus kita pastikan bernilai 1. Dengan
mengetahui appended secara tepat sangat penting, karena berpengaruh pada jenis
CRC yang dapat digunakan (CRC 16, CRC 32, dan lain-lain).
Data yang diolah mungkin saja hanya beberapa bit saja, lebih kecil dari
nilai poly yang akan digunakan. Hal ini akan menyebabkan kita tidak mengolah
semua nilai poly yang telah ditentukan. Untuk mengatasi hal ersebut, dalam
perhitungan dasar secara aljabar, kita menambahkan suatu string bit sepanjang W
20
pada data yang akan kita olah. Tujuannya untuk menjamin keseluruhan data dapat
mempunyai panjang bit pada appended adalah 4 dengan nilai 0000. Lalu
atas, kita mendapat hal penting yang perlu diperhatikan dalam perhitungan secara
21
aljabar ini adalah kita tidak perlu melakukan operasi XOR ketika bit tertinggi
bernilai 0, tapi kita hanya melakukan pergeseran (shift) sampai didapat bit
tertinggi yang bernilai 1. Hal ini akan sedikit mempermudah dan mempercepat
a ( x ) . xN =b ( x ) . p ( x ) +r ( x) (1)
Dengan Keterangan:
p (x) = Divisor.
Karena nilai CRC adalah sisa hasil bagi , maka untuk mengidentifikasi
a. Menghitung nilai CRC dari data asli, lalu kita cocokan degan nilai CRC
yang disimpan (di append dengan data). Data yang didapatkan karena nilai CRC
sepanjang N-1.
b. Data yang asli kita tambah dengan nilai CRC, lalu kita bagi dengan
baik jaringan dan merupakan suatu usaha untuk mendefinisikan karakteristik dan
sifat dari satu servis. QoS digunakan untuk mengukur sekumpulan atribut kinerja
2016). Model Monitoring QoS terdiri dari komponen monitoring application, QoS
1) Monitoring
Komponen ini berfungsi mengambil informasi lalu lintas paket data dari monitor,
2) QoS Monitoring
3) Monitor Application
pengukuran aliran paket data secara waktu nyata dan melaporkan hasilnya kepada
monitoring application.
adalah jumlah paket data yang dikirim (bit) dan laju kecepatan pengiriman paket
data untuk setiap detik. Parameter untuk delay dapat dilihat pada Tabel 2.2.
Jelek >450 ms 1
2) Jitter
Jitter merupakan variasi delay antar paket yang terjadi pada jaringan
Internet Protocol (IP). Semakin besar beban trafik yang ada pada jaringan, maka
dengan demikian nilai jitter akan semakin besar. Semakin besar nilai jitter maka
nilai QoS akan semakin turun dan apabila semakin kecil nilai jitter maka nilai
QoS akan semakin baik. Besarnya nilai jitter dapat diperoleh dari selisih waktu
tempuh suatu paket dengan paket sebelumnya dari sumber ke tujuan pengiriman
Sangat Bagus 0 ms 4
24
Bagus 0 ms s/d 75 ms 3
3) Throughput
sebenarnya. Pengukuran throughput dilakukan dalam satuan bits per second (bps)
Bagus 75 3
Sedang 50 2
Jelek <25 ms 1
(5)
4) Packet Loss
25
kondisi yang menunjukkan jumlah total paket yang hilang dapat terjadi karena
collision dan congestion pada jaringan dapat dilihat pada Tabel 2.5.
Sangat Bagus 0 4
Bagus 3 3
Sedang 15 2
Jelek >25 1
(6)
berfungsi sebgai transmitter ataupun reciever. Tra nsmitter terdiri dari sumber
data, sinyal coder, pemancar, dan antena, dan untuk reciever terdiri dari antena,
26
2018)
antarmuka SPO kecepatan tinggi untuk kontroler aplikasi. Modul Nrf 24L01
memiliki 8 buah PIN yaitu VCC (3,3 Volt), GND, CE, CSN, MOSI, MISO, SCK,
(Sumber: https://elektrokit.com )
chip ATmega328P. Dalam kemasan Arduino sudah disediakan berbagai port yang
dapat digunakan secara langsung melalui pin header female yang sudah ada pada
kompatibilitas yang dimiliki dari Arduino Uno R3 cukup banyak dan port serta
27
Spesifikasi Keterangan
Mikrokontroler ATmega328P
Pin Analog 6
Memori Flash 32 Kb
SRAM 2 Kb
EEPROM 1 Kb
LED Built In 13
Panjang 68,6 mm
Lebar 53,4 mm
Berat 25 g
Arduino Uno memiliki 14 pin yang dapat dijadikan input maupun output,
selain itu terdapat juga 6 pin analog input, crystal oscillator 16 MHz, socket jack
28
power, kepala ISP, tombol reset dan koneksi USB(Arduino, no date). Pada
pemrograman Arduino Uno R3 ini dapat langsung menggunakan kabel USB yang
dihubungkan antara Arduino Uno dengan PC. Bentuk dari Arduino R3 dapat
Sensor flex adalah sensor yang memiliki perubahan resistansi akibat adanya
Prinsip kerjanya sama seperti potensiometer. Sensor ini memiliki output berupa
resistansi. Dua pin kaki tersebut, jika salah satu pin diberikan tegangan sebesar +5
dataseheet, 2014) Prinsip kerja sensor flex ini mirip dengan variabel resistor.
pembagi tegangan. Output resistansi ini akan diberikan tegangan yang nantinya
2.2.11 Motor DC
memberikan beda tegangan pada kedua terminal tersebut, motor akan berputar
pada satu arah, dan bila polaritas dari tegangan tersebut dibalik maka arah putaran
motor akan terbalik pula. Polaritas dari tegangan yang diberikan pada dua
terminal menentukan arah putaran motor sedangkan besar dari beda tegangan
METODOLOGI PENELITIAN
flex yang berupa pembacaan nilai ADC dan untuk mengolah data yang akan
antara sarung tangan dan kursi roda melalui sinyal radio frekuensi.
kode-kode jari.
4. Kursi roda digunakan sebagai alat yang akan dikontrol atau digerakan.
30
31
alat yang akan dibuat, perkakas tersebut diantaranya adalah solder, tenol,
Dalam tahap ini, penulis akan melakukan perancangan sistem yang akan
dibuat. Dalam merancang sistem ini, peneliti merancang sistem dengan dua tahap
dapat berkomunikasi dengan baik. Setalah itu keluaran dari sensor flex yang
(ADC) melalui mikrokontroler yang peneliti gunakan. Pada penelitian ini peneliti
mikrokontroler yaitu Arduino Uno R3. Alasannya karena terdapat salah fitur
yang dapat mengkonversi nilai analog ke nilai digital yaitu Analog to Digital
Converter (ADC). Setelah nilai keluaran dari sensor flex dikonversikan oleh
Arduino Uno R3, kemudian data tersebut dikirim kan oleh modul Nrf24L01
dikirimkan ke Arduino Uno p ada kursi roda untuk diproses lalu akan
32
Proses pertama yaitu melakukan kode jari dengan cara melekukan jari yang
sensor flex akan dikonversi dan diproses oleh Arduino Uno R3 yang telah
tersambung dengan sumber tegangan, Data hasil prosesnya akan dikirim kan oleh
Setelah itu data akan diterima oleh modul Nrf24L01 (receiver) lalu
kode yang diberikan. Rangcangan perangkat keras kursi roda akan tampak pada
gambar 3.3.
yang akan diunduh kedalam board Arduino Uno, peneliti menggunakan software
Arduino IDE. Aplikasi ini berguna untuk membuat, membuka, dan mengedit
pemrograman Arduino IDE ini adalah Bahasa C. Berikut ini adalah diagram alir
dari sistem alat sarung tangan pengendali kursi roda (Sarpin) dan diagram alir
Kerangka berpikir yang dibagun peneliti yang pertama seperti pada gambar
3.3 yaitu ketika sistem ON maka pertama kali tangan akan melekukan jari-jarinya
sesuai kode-kode perintah yang sebelumnya diatur, lalu sistem akan mencocokan
lekukan-lekukan tersebut apakah cocok dengan kode-kode yang sudah diatur pada
program.jika tidak, sistem tidak merespon dan terjadi perobaan ulang pada
lekukan jari tangan. Jika sesuai, data yang berasal dari sistem akan dikirimkan
35
oleh modul Nrf24l01. Apabila kursi roda dapat merespon tandanya data dari
sistem sudah terkirim. Jika tidak, maka kembali ke percobaan penginputan kode-
Kerangka berpikir kedua yang dibangun oleh peneliti pada kursi roda dapat
terlihat pada Gambar 3.5 yaitu ketika sistem pada kursi roda ON, kursi roda masih
pada posisi diam. Lalu mengecek apakah kursi roda sudah terkoneksi dengan
sarung tangan, jika tidak maka akan kursi roda tetap diam. Jika iya, sistem akan
merespon apakah ada perintah yang masuk ke sistem. Setelah itu kursi roda akan
metode error detection dan algoritma CRC yang terdapat pada gambar 3.6 yaitu
ketika sistem mendapat kan input dari data flex sensor, data tersebut akan di
terjadi penjumlahan antara data flex sensor dan nilai CRC. Lalu nilai tersebut
packet loss yang terjadi. Jika packet yang dikirimkan dalam bentuk binary, data
37
yang dikirimkan binary digit (bit) per binary digit (bit). Hal ini dapat
terhadap packet yang diterima. Pengecekan ini memastikan bahwa data yang
diterima bukanlah bernilai 0, jika data yang diterima bukan 0 maka akan masuk
tahap berikutnya. Sebaliknya jika data yang diterima adalah 0 maka sistem akan
langsung memastikan data tersebut tergolong data error. Setelah dipastikan data
tersebut bukanlah 0, akan terjadi konversi ke dalam bentuk binary. Kemudian data
CRC selesai, sistem akan menghasil sebuah data hasil bagi dari perhitungan CRC
38
data yang diterima tidak mengalami error. Jika remainder bernilai 0 maka data
bernilai bukan 0 maka nilai yang diterima error. Perbedaan proses identifikasi
error pada bagian decision 1 dan decision 2 adalah nilai error pada decision 1
dapat dipastikan terjadi packet loss artinya pada saat sistem menerima packet
sudah berupa nilai 0, sedangkan nilai error pada decision 2 merupakan nilai yang
Setelah alat berhasil dibuat, maka alat tersebut akan diuji coba terlebih
dahulu. Pengujian sistem ini dilakukan untuk memastikan bahwa sistem yang
telah dibuat sesuai dengan apa yang diharapkan oleh peneliti. Tahapan pengujian
pengecekan terhadap koneksi antara Arduino Uno dengan sensor flex, modul
koneksi yang ada pada sistem ini sudah terpasang dengan baik. Kemudian
dilakukan juga pengujian terhadap kemasan dalam alat ini, seperti memastikan
sekrup, mur serta baut yang digunakan dalam alat ini sudah terpasang dengan kuat
dan tidak longgar sehingga nantinya saat pengambilan data alat ini sesuai yang
diinginkan.
39
Pada tahap ini Modul Nrf24L01 yang sudah terkoneksi dengan board
arduimo akan dilakukan pengujian seberapa jauh jarak modul tersebut dapat
(QoS) pada modul tersebut agakr mengetahui delay,jitter, throughput dan packet
Pada tahap ini sensor flex yang sudah terintegrasi dengan board arduino
akan dilakukan pengujian fleksibilitas dan kepekaan sensor flex terhadap lekukan
jari-jari. Indikasi sensor flex dapat membaca dengan baik yaitu dengan berkurang
Pada tahap ini motor dc pg45 yang sudah terintegrasi ke board arduino akan
berfungsi dengan baik yaitu apabila motor dapat bergerak atau berputar selaras
Pada pengujian tahap kedua ini merupakan pengujian yang berkaitan dengan
program yang sudah dibuat apakah berjalan dengan baik dan sesuai dengan apa
yang diharapkan, pengujian pada perangkat lunak ini terbagi menjadi beberapa
Pada tahap ini program yang sudah dituliskan didalam software Arduino
IDE akan dilakukan pengujian apakah program yang sudah dibuat ini sudah benar
dan tidak terdapat error yang dapat mengganggu kinerja dari sistem.
41
BAB 4
HASIL DAN PERMBAHASAN
mengetahui hasil dari perancangan yang telah dibuat pada bab sebelumnya.
keras dan pengujian perangkat lunak agar mendapat dara yang diharapkan saat
nirkabel berbasis modul nrf24l01 pada alat sarung tangan pintar pengendali kursi
roda, didapatkan hasil berupa alat berserta pendukung lainnya yang siap
digunakan. Perangkat keras ini dibagi menjadi dua bagian yaitu Bagian sarung
A. Sarung Tangan
hardware sarung tangan pada alat sistem komunikasi nirkabel berbasis modul
nrf24l01 pada alat sarung tangan pintar pengendali kursi roda dapat dilihat pada
Gambar 4.1.
42
modul nrf24l01 pada alat sarung tangan pintar pengendali kursi roda terdiri dari
Arduino nano, Sensor Flex dan Modul Nrf24l01 yang telah dirangkai seperti
gambar 4.2.
Pada gambar 4.1 dan 4.2 adalah gambar perangkat keras dan skematik dari
dihubungkan dengan sebuah rangkaian/mini sistem dan kabel jumper agar antar
menghubungkan port ground dan port tegangan untuk semua komponen baik
nrf24L01 dan sensor flex, kemudian dihubungkan pada port ground dan port
tegangan 3.3V pada board Arduino nano. Selanjutnya pada komponen nrf24L01
pada port CSN dan CE terhubung ke port 7 dan 8, kemudian pada port MOSI,
MISO, SCK terhubung ke port 11, 12, 13 pada board Arduino nano. Pada
komponen sensor flex pada kaki pertama terhubung dengan ground dan kaki
kedua terhubung dengan resistor 10k dan A0,A1,A2,A3,A4 pada analog input
pada Arduino nano serta pada kaki resistor 10k terhubung Vin pada Arduino
nano.
B. Kursi Roda
hardware kursi roda pada alat sistem komunikasi nirkabel berbasis modul
nrf24l01 pada alat sarung tangan pintar pengendali kursi roda dapat dilihat pada
Gambar 4.3.
44
mega dan port Vcc pada nrf24l01 dihubungkan port 3.3 V pada Arduino mega.
Kemudian port CSN dan CE pada nrf24l01 dihubungkan port 9 dan 10 pada
45
Arduino mega serta port MISO, MOSI, SCK pada nrf24l01 dihubungkan pada
port 50, 51, 52. Pada rangkaian H-brigde sama Arduino mega dan motor dc, port
IN1 dan IN2 pada H-brigde dihubungkan ke port 7 dan 8 pada Arduino mega, lalu
port IN3 dan IN4 pada H-brigde dihubungkan ke port 11 dan 12 pada Arduino
mega. Sedangkan pada port Vin 12v dihubungkan ke batteray 12v dan ground
pada h-brigde dihubungkan ke ground batteray dan Arduino mega. Pada Motor
DC pada wire 2 (cokelat) dan wire 4 (pink) di hubungkan ke port motor A pada
H-brigde, lalu wire 1 (kuning) dan wire 3 (cokelat) dihubungkan ke port motor
B pada H-brigde.
A. Flex Sensor
akibat adanya lekukan pada bagian sensor. Sensor ini mempunyai output berupa
pembacaan nilai resistansi seperti yang ditunjukan niali pada listing 4.1. Nilai
Hasil dari nilai resistansi pada sensor flex saat tidak ada dan adanya
Dari hasil diatas diperoleh nilai resistansi yang adanya lekukan pada
sensor dimana nilai resitansi yang didapat tidak stabil dan terus mengalami
47
perubahan nilai resistansinya karena dipengaruhi oleh lekukan dari sensor flex.
dihubungkan Vcc 3.3v dari Arduino nano dan Arduino mega lalu mengeksekusi
Pada tabel 4.2 merupakan nilai yang berasal dari sensor flex yang nantinya
receiver juga diberlakukan step yang sama seperti transmitter yaitu dengan
upload program ke board Arduino mega 2860 dapat dilihat di Gambar 4.9.
sama dengan data yang diterima oleh receiver. Hasil dari nilai komunikasi
transmitter dan receiver dengan range 50 cm, 100 cm, 150 cm, 200 cm, 250 cm,
yang memadai.
diujikan seperti yang sudah saya sebutkan di Bab 3 yaitu delay, throughput, Jitter,
packet loss. Pengujian ini dilakukan 10 kali dengan masing-masing jarak dengan
total pengujian sebanyak 240 kali. Hasil pengujian dari qualti of service (Qos)
sebagai berikut.
4.2.1.1 Delay
dibutuh oleh transceiver dalam melakukan satu kali proses transmisi dengan
menerapakan rumus (1). Proses perhitungan waktu dimulai ketika sensor mulai
receiver dengan metode pengambilan data yang sudah penulis jelaskan pada sub
bab 4.2. Berikut ini merupakan tabel hasil dari delay pada komunikasi transceiver.
32 264
33 11
34 13
35 16
36 151
37 260
38 11.6 116 86.2
39 64
40 16
41 93
42 15
43 34 261 29.41
44 14
45 91
46 263
47 94
48 47.6 14 21.01
49 88
50 256
51 25
52 97
53 14.8 29 67.56
54 260
55 34
56 99
57 255
58 16.4 3 60.97
59 -12
60 259
61 150 17
62 140
63 38.2 259 26.17
64 262
65 269
66 208
67 281
68 17 281 58.82
69 267
70 259
71 11 293 19.61
55
72 229
73 46
74 15
75 52
76 38
77 123
78 38,8 252 32.46
79 241
80 164
81 192
82 177
83 9.2 160 108.69
84 61
85 301
86 238
87 264
88 200 33.2 99 30.12
89 21
90 290
91 72
92 26
93 28.4 98 35.21
94 169
95 187
96 214
97 260
98 6.4 129 156.25
99 230
100 229
101 182
102 80
103 17.8 48 56.18
104 93
105 262
106 250 93
107 262
108 34 14 29.41
109 17
110 95
111 19.2 263 52.08
56
112 15
113 17
114 98
115 262
116 167
117 85
118 17.4 113 57.47
119 91
120 272
121 80
122 98
123 33.8 111 56.17
124 321
125 176
126 169
127 131
128 17.6 163 56.82
129 185
130 109
131 257
132 228
133 32.6 173 30.48
134 74
135 46
136 93
137 260
138 300 15.6 18 64.93
139 16
140 94
141 16
142 259
143 24.4 115 36.76
144 264
145 138
146 152
147 22
148 30.4 258 32.95
149 36
150 85
57
Dari pengujian yang ditunjukan tabel 4.4, penulis ingin bahwa dalam
proses perhitungan delay ini dihitung ketika receiver menerima data lalu sebelum
Misalkan receiver menerima data pertama dari transmitter pada kondisi delay
mulai melakukan proses perhitungan sampai data yang ke dua yang dikirimkan
oleh transmitter diterima oleh receiver. Delay yang terjadi pada pengiriman data
jarak 50 cm rata-rata delay yang diperoleh 145.88 ms. Pengiriman data pada jarak
100 cm diperoleh rata-rata delay 95.80 ms. Pengiriman data pada jarak 150 cm
rata-rata delay yang diperoleh 157.08 ms. Pengiriman data pada jarak 200 cm
rata-rata delay yang diperoleh 190.60 ms. Pengiriman data pada jarak 250 cm
rata-rata delay yang diperoleh 115.28 ms. Pengiriman data pada jarak 300 cm
rata-rata delay yang diperoleh 150.84 ms. Grafik rata-rata delay dapat dilihat pada
gambar 4.12.
157.08 150.84
145.88
150.00
115.28
95.80
100.00
50.00
0.00
50 100 150 200 250 300
Jarak (Cm)
dikategorikan sangat bagus. Hal ini disebabkan oleh beberapa faktor diantaranya
yaitu beban data yang dikirimkan membutuhkan waktu yang lebih lama. Sehingga
ukuran paket data yang ditransmisikan semakin besar, hal ini juga membuat
transmisi yang dibutuhkan juga semakin lama. Selain itu faktor obstacle yang
4.2.1.2 Throughput
rumus (4). Untuk mengetahui throughput pada komunikasi data antar node,
18 196
19 77
20 34
21 93
22 120
23 10.2 106 98.03
24 188
25 105
26 144
27 172
28 10.4 114 384.61
29 96
30 28
31 157
32 264
33 13.2 11 833.33
34 13
35 16
36 151
37 260
38 100 11.6 116 86.2
39 64
40 16
41 93
42 15
43 34 261 29.41
44 14
45 91
46 263
47 94
48 47.6 14 21.01
49 88
50 256
51 25
52 97
53 14.8 29 67.56
54 150 260
55 34
56 99
16.4 60.97
57 255
61
58 3
59 -12
60 259
61 17
62 140
63 38.2 259 26.17
64 262
65 269
66 208
67 281
68 17 281 58.82
69 267
70 259
71 293
72 229
73 11 46 19.61
74 15
75 52
76 38
77 123
78 38,8 252 32.46
79 241
80 164
81 192
82 177
83 9.2 160 108.69
84 61
85 301
86 238
200
87 264
88 33.2 99 30.12
89 21
90 290
91 72
92 26
93 28.4 98 35.21
94 169
95 187
96 214
6.4 156.25
97 260
62
98 129
99 230
100 229
101 182
102 80
103 17.8 48 56.18
104 93
105 262
106 93
107 262
108 34 14 29.41
109 17
110 95
111 263
112 15
113 250 19.2 17 52.08
114 98
115 262
116 167
117 85
118 17.4 113 57.47
119 91
120 272
121 80
122 98
123 33.8 111 56.17
124 321
125 176
126 169
127 131
128 17.6 163 56.82
129 185
130 109
131 257
300
132 228
133 32.6 173 30.48
134 74
135 46
136 93
15.6 64.93
137 260
63
138 18
139 16
140 94
141 16
142 259
143 24.4 115 36.76
144 264
145 138
146 152
147 22
148 30.4 258 32.95
149 36
150 85
throughput sangat berpangaruh dengan delay, delay yang merupakan rata-rata dari
delay dari pertama sampai data yang ke 5. Maka dari nilai troughput semakin
besar bersamaan dengan jumlah data yang diterima. Dapat diperhatikan bahwa
satuan detik (data rate). Pada jarak 50 cm pengiriman paket data diperoleh
kecepatan transmisi sebesar 90.38 bps. Jarak 100 cm pengiriman paket data
diperoleh kecepatan transmisi data sebesar 270.91 bps. Jarak 150 cm kecepatan
transmisi data yang didapatkan dari pengiriman paket data sebesar 45.62 Kpbs.
Kemudian pada jarak 200 cm kecepatan transmisi data yang diperoleh adalah
72.54 Kbps. Jarak 250 cm pengiriman data yang diperoleh dari kecepatan transmis
sebesar 251.31 bps. Dan pada jarak 300 cm kecepatan pengiriman data yang
64
diperoleh sebesar 44.38 bps. Grafik rata-rata throughput dapat dilihat pada
gambar 4.14.
200
150
90.39
100 72.54
46.62 44.38
50
0
0 50 100 150 200 250 300
Jarak ( cm)
bps. Berdasarkan tabel 2.4 dengan nilai rata-rata keseluruhan tersebut kualitas
kecepatan maksimal transmisi sebesar 270.91 bps dimana kecepatan transmisi ini
masih jauh dari kecepatan maksimal modul nrf24l01 yaitu 2 Mbps atau 2 x 103
4.2.1.3 Jitter
adalah untuk menganalisi variasi delay yang terjadi pada transceiver dari
pengolahan data pada sistem yang menyebabkan perbedaan delay dari suatu
65
rumus (2) (3). Untuk mengetahui jitter pada komunikasi data transceiver,
16 201
17 229
18 21.6 196 46.29
19 77
20 34
21 93
22 120
23 10.2 106 98.03
24 188
105
25
26 144
27 172
28 10.4 114 384.61
29 96
30 28
31 157
32 264
33 13.2 11 833.33
34 13
35 16
36 151
37 260
38 100 11.6 116 86.2
39 64
40 16
41 93
42 15
43 34 261 29.41
44 14
45 91
46 263
47 94
48 47.6 14 21.01
49 88
50 256
51 25
52 97
53 150 14.8 29 67.56
54 260
55 34
67
56 99
57 255
58 16.4 3 60.97
59 -12
60 259
61 17
62 140
63 38.2 259 26.17
64 262
65 269
66 208
67 281
68 17 281 58.82
69 267
70 259
71 293
72 229
73 11 46 19.61
74 15
75 52
76 38
77 123
78 38,8 252 32.46
79 241
80 164
81 192
82 177
83 9.2 160 108.69
84 61
85 301
200
86 238
87 264
88 33.2 99 30.12
89 21
90 290
91 72
92 26
93 28.4 98 35.21
94 169
95 187
68
96 214
97 260
98 6.4 129 156.25
99 230
100 229
101 182
102 80
103 17.8 48 56.18
104 93
105 262
106 93
107 262
108 34 14 29.41
109 17
110 95
111 263
112 15
113 19.2 17 52.08
250
114 98
115 262
116 167
117 85
118 17.4 113 57.47
119 91
272
120
121 80
122 98
123 33.8 111 56.17
124 321
176
125
126 169
127 131
128 17.6 163 56.82
129 185
300 109
130
131 257
132 32.6 228 30.48
133 173
69
134 74
46
135
93
136
137 260
138 15.6 18 64.93
139 16
94
140
141 16
142 259
143 24.4 115 36.76
144 264
138
145
146 152
147 22
148 30.4 258 32.95
149 36
150 85
Dari tabel 4.6 untuk nilai jitter dalam proses perhitunganya dari data
pertama hingga data yang ke 5 Karena jitter variasi delay maka delay yang
digunakan yaitu rata-rata delay dari delay setiap data pertama hingga delay data
ke lima. Selain variasi delay yang mempengaruhi besarnya jitter, jumlah data
bahwa jitter yang terjadi pada pengiriman data dengan jarak 50 cm diperoleh
18.88 ms. Lalu jitter pada 100 cm pengiriman data yang diperoleh 23.36 ms. Pada
jarak 150 cm pengiriman data yang diperoleh 19.48 ms. Kemudian jarak 200 cm
jitter yang diperoleh dari pengiriman data 19.30 ms. Jarak 250 cm pengiriman
data yang diperoleh sebesar 24.44 ms. Dan Jarak 300 cm jitter yang diperoleh dari
70
pengiriman data sebesar 24.12 ms. Grafik pengujian rata-rata jitter dapat dilihat
15
10
5
0
0 50 100 150 200 250 300 350
Jarak (cm)
Dari hasil analisis, nilai jitter pada pengujian di setiap 50 cm terdapat rata-
rata keseluruhan jitter sebesar 21.60 ms. Berdasarkan tabel 2.3 nilai rata-rata jitter
dipengaruhi oleh ukuran data yang dikirim. Dimana, semakin besar ukuran data
yang ditransmisikan, maka nilai jitter yang diperoleh juga semakin besar.
71
terjadi pada packet loss yang terjadi dalam suatu proses komunikasi data antara
transmitter dan receiver. Packet loss dihitung dengan rumus (5). Proses pengujian
jarak 50 cm, 100 cm, 150 cm, 200 cm, 250 cm, 300 cm. Hasil pengujian packet
Paket Data
Jarak Packet Loss
No Receive
(Cm) Transmitter (%)
r
1 Berhasil Berhasil
2 Berhasil Berhasil
3 Berhasil Berhasil
4 Berhasil Berhasil
5 Berhasil Berhasil
50 3
6 Berhasil Berhasil
7 Berhasil Berhasil
8 Berhasil Gagal
9 Berhasil Gagal
10 Berhasil Gagal
11 Berhasil Gagal
12 Berhasil Gagal
13 Berhasil Berhasil
14 Berhasil Berhasil
15 Berhasil Berhasil
100 2
16 Berhasil Berhasil
17 Berhasil Berhasil
18 Berhasil Berhasil
19 Berhasil Berhasil
20 Berhasil Berhasil
21 Berhasil Berhasil
22 150 Berhasil Berhasil 4
23 Berhasil Berhasil
72
Paket Data
Jarak Packet Loss
No Receive
(Cm) Transmitter (%)
r
24 Berhasil Gagal
25 Berhasil Gagal
26 Berhasil Gagal
27 Berhasil Gagal
28 Berhasil Berhasil
29 Berhasil Berhasil
30 Berhasil Berhasil
31 Berhasil Berhasil
32 Berhasil Berhasil
33 Berhasil Berhasil
34 Berhasil Berhasil
35 Berhasil Gagal
200 5
36 Berhasil Gagal
37 Berhasil Gagal
38 Berhasil Gagal
39 Berhasil Gagal
40 Berhasil Berhasil
41 Berhasil Berhasil
42 Berhasil Berhasil
43 Berhasil Berhasil
44 Berhasil Berhasil
45 Berhasil Berhasil
250 0
46 Berhasil Berhasil
47 Berhasil Berhasil
48 Berhasil Berhasil
49 Berhasil Berhasil
50 Berhasil Berhasil
51 Berhasil Gagal
52 Berhasil Gagal
53 Berhasil Gagal
54 Berhasil Gagal
55 Berhasil Berhasil
300 4
56 Berhasil Berhasil
57 Berhasil Berhasil
58 Berhasil Berhasil
59 Berhasil Berhasil
60 Berhasil Berhasil
73
komunikasi antara transmitter dan receiver dengan variasi jarak yang berbeda.
3%, lalu pada jarak 100 cm mendapatkan packet loss sebesar 2%, Jarak 150 cm
mendapatkan packet loss 4%, jarak 200 cm mendapatkan packet loss 5%, jarak
250 cm mendapatkan packet loss sebesar 0%, dan pada jarak 300 cm
3
3
2
2
1
0
0
50 100 150 200 250 300
Jarak Pengujian (CM)
ditunjukan pada gambar 4.17 mendapat rata-rata packet loss dari seluruh variasi
jarak adalah 3%. Berdasarkan tabel 2.5 dengan nilai rata-rata packet loss tersebut
baik dalam proses transmisi paket data dari transceiver, karena dalam proses
paket data yang dikirim oleh transmitter dapat diterima oleh receiver dengan baik
walaupun ada beberapa paket yang tidak dapat diterima oleh receiver disebabkan
beberapa faktor yaitu kerusakan paket data atau corrupt dan loss connection.
pendeteksian error pada data flex sensor yang dikirimkan oleh transmitter.
Pendeteksian error ini menggunakan metode error detection dan algorima Cyclic
Redundancy Check (CRC), Jika data dari flex sensor yang sudah dideteksi
terdapat error maka dengan metode automatic repeat request (ARQ) bagian
ulang. Pengujian ini dilakukan dengan range jarak 0 – 300 cm dengan total
detection pada automatic repeat request (ARQ) yang telat dibuat ini dapat bekerja
Skenario dari pengujian error detection adalah, data flex sensor dari
transmitter yang berupa integer dikonversikan string. Nilai yang berupa string
tersebut dikonversikan dari decimal to binary. Setelah nilai flex sensor sudah
algoritma cyclic redundancy check (CRC) dimana nilai flex sensor yang berupa
binary akan dibagi dengan divisor yaitu 10011. Hasil pembagian tersebut
menghasilkan nilai CRC yang berukuran kurang dari sama dengan 4 bit. Lalu nilai
75
CRC ini di gabungkan dengan nilai binary dari flex sensor, nilai ini disebut
receiver.
Pada receiver merupakan bagian decision terhadap nilai yang diterima dari
receiver disebut receiver frame. Skenarionya adalah nilai binary dari transmitter
algoritma CRC. Nilai receiver frame dibagi dengan divisor yang sama dengan
pada bagian transmitter lalu hasil dari pembagian tersebut berupa nilai CRC, Jika
hasil dari nilai CRC adalah 0 maka data yang diterima sesuai / Correct. Dan jika
hasil nilai CRC yang diterima selain 0 maka data yang diterima error / tidak
sesuai.
Pada gambar 4.18 dapat dilihat bahwa dalam proses konversi decimal to
merupakan proses aritmatika pada pemograman C++ atau C# yaitu jenis operator
76
sisa bagi atau sering disebut modulus. Makna dari operator modulus pada rumus
decTobinary yaitu memakai nilai sisa bagi dari semua pembagian antara n dan 2,
Pada gambar 4.19 merupakan output data yang berasala dari transmitter,
nilai dari data1 dan num merupakan nilai flex sensor, lalu di konversikan nilai
data1 yang berupa nilai decimal ke nilai binary. Dalam proses perhitungan
generator yang mempunyai berkapasitas 5 bit yaitu 10011. Nilai divisor atau
generator nilai tetap yang dijadikan sebagai pembagi. Lalu nilai yang dibagi
adalah nilai data1 (binary) + nilai dividen (appended). Nilai dividen (appended)
merupakan nilai yang ditambahkan ke paling belakang dari setiap nilai data1
77
(binary). Nilai dividen (appended) yaitu nilai divisor (bit) – 1, maksudnya jika
nilai divisor (bit) adalah 5 bit. Maka nilai dividen (appended) adalah 5 bit – 1 bit
yaitu 4 bit. Misalkan binary dari 588 yang dibagi dengan dividen (appended)
adalah 10010011000000, dari data binary tersebut nilai 0 merupakan nilai dividen
(appended). Hasil yang digunakan dari pembagian antara divisor dan nilai data 1
+ dividen (appended) adalah sisa bagi dan sisa bagi inilah yang disebut dengan
nilai CRC. Pada gambar 4.19 nilai CRC nya adalah 1110 dan 1101. Setelah itu
data yang dikirim oleh transmitter adalah penggabungan antara nilai CRC dan
niali data1 (binary), nilai ini oleh penulis disebut transmitter frame. Jika dilihat
pada gambar 4.19 data yang dikirimkan oleh transmitter bukan nilai binary tetapi
nilai decimal. Penulis memilih lebih mengirimkan nilai decimal karena alasan
teknis yang terjadi ketika uji coba pada proses transmisi data modul Nrf24L01.
nilai yang dikirimkan oleh transmitter pasti pada receiver bernilai 0. Pada kasus
pengiriman transmitter frame, jika data yang akan dikirim berupa binary maka
proses pengiriman bukan 1 packet data tetapi yang dikirim per bit dan ini akan
menyulitkan penulis mengidentifikasi mana data yang packet loss / error dan data
yang asli dari transmitter frame. Maka dari itu penulis memilih mengirimkan nilai
berupa decimal bukan nilai binary karena jika data yang dikirimkan berupa
decimal terdapat dua kemungkinan yaitu data correct atau data error. Data yang
decimal yang merupakan konversi binary to decimal dari nilai transmitter frame.
Pada gambar 4.20 nilai transmitter frame dalam bentuk decimal yang diterima
oleh receiver disebut nilai receiver frame. Nilai dari receiver frame dibagi dengan
divisor yang sama dengan transmitter yaitu 0011. Hasil dari pembagian, penulis
menyebutnya dengan remainder. Remainder sama hal nya dengan CRC perbedaan
nya yaitu remainder merupakan hasil akhir dari perhitungan algoritma CRC untuk
menentukan data yang diterima correct atau error. Pada gambar diatas merupakan
hasil yang correct artinya data yang dikirim sesuai dengan data yang diterima
Kemudian Pada gambar 4.21 merupakan salah satu data yang error, Penulis
mengidentifikasi selama ujicoba maupun pengambilan data, data error yang
teridentifikasi adalah bernilai 0, sehingga ketika mengalami perhitungan algoritma
CRC remainder yang dihasilkan adalah 0. Akan tetapi klasifikasi remainder 0 dari
nilai data 1 yang tidak terkirim atau mengalami packet loss adalah error. Berikut
ini hasil pengujian error detection dapat dilihat tabel 4.8.
Tabel 4. 8 Hasil Pengujian Error Detection
Transmitter Receiver
conversion Dec to Binary Data
Data
No Flex Status
Flex Transmit Receiver
Binary CRC Remainder Senso
Sensor Frame Frame r
1 364 101101100 0101 1011011000101 0 0 0 Error
2 354 101100010 0100 1011000100100 1011000100100 0 354 Berhasil
3 359 101100111 1011 1011001111011 1011001111011 0 359 Berhasil
4 361 101101001 1010 1011010011010 0 0 0 Error
5 364 101101100 0101 1011011000101 1011011000101 0 364 Berhasil
6 362 101101010 1111 1011010101111 1011010101111 0 362 Berhasil
7 363 101101011 1100 1011010111100 1011010111100 0 363 Berhasil
8 364 101101100 0101 1011011000101 1011011000101 0 364 Berhasil
9 360 101101000 1001 1011010001001 1011010001001 0 360 Berhasil
10 353 101100001 0001 1011000010001 0 0 0 Error
11 359 101100111 1011 1011001111011 0 0 0 Error
12 352 101100000 0010 1011000000010 0 0 0 Error
13 355 101100011 0111 1011000110111 1011000110111 0 355 Berhasil
80
Transmitter Receiver
Data conversion Dec to Binary Data
No Flex Status
Flex Transmit Receiver
Sensor Binary CRC Remainder Senso
Frame Frame
r
14 360 101101000 1001 1011010001001 1011010001001 0 360 Berhasil
15 358 101100110 1000 1011001101000 1011001101000 0 358 Berhasil
16 356 101100100 1110 1011001001110 0 0 0 Error
17 365 101101101 0110 1011011010110 1011011010110 0 365 Berhasil
18 364 101101100 0101 1011011000101 1011011000101 0 364 Berhasil
19 361 101101001 1010 1011010011010 1011010011010 0 361 Berhasil
20 353 101100001 0001 1011000010001 1011000010001 0 353 Berhasil
21 365 101101101 0110 1011011010110 0 0 0 Error
22 360 101101000 1001 1011010001001 1011010001001 0 360 Berhasil
23 358 101100110 1000 1011001101000 0 0 0 Error
24 360 101101000 1001 1011010001001 1011010001001 0 360 Berhasil
101001000
25 656 0110 10100100000110 0 0 0 Error
0
101100000
26 704 0100 10110000000100 10110000000100 0 704 Berhasil
0
100111011
27 630 1111 10011101101111 10011101101111 0 630 Berhasil
0
28 454 111000110 1100 1110001101100 1110001101100 0 454 Berhasil
29 358 101100110 1000 1011001101000 1011001101000 0 358 Berhasil
30 422 110100110 0001 1101001100001 0 0 0 Error
31 384 110000000 0001 1100000000001 1100000000001 0 384 Berhasil
101001000
32 656 0110 10100100000110 0 0 0 Error
0
101100000
33 704 0100 10110000000100 10110000000100 0 704 Berhasil
0
100111011
34 630 1111 10011101101111 10011101101111 0 630 Berhasil
0
35 454 111000110 1100 1110001101100 1110001101100 0 454 Berhasil
36 358 101100110 1000 1011001101000 1011001101000 0 358 Berhasil
37 422 110100110 0001 1101001100001 0 0 0 Error
38 459 111001011 1000 1110010111000 1110010111000 0 459 Berhasil
101000001
39 642 0101 10100000100101 10100000100101 0 642 Berhasil
0
101001110
40 668 0001 10100111000001 10100111000001 0 668 Berhasil
0
41 362 101101010 1111 1011010101111 0 0 0 Error
42 358 101100110 1000 1011001101000 1011001101000 0 358 Berhasil
43 360 101101000 1001 1011010001001 0 0 0 Error
44 364 101101100 0101 1011011000101 1011011000101 0 364 Berhasil
45 362 101101010 1111 1011010101111 1011010101111 0 362 Berhasil
46 356 101100100 1110 1011001001110 1011001001110 0 356 Berhasil
81
Transmitter Receiver
Data conversion Dec to Binary Data
No Flex Status
Flex Transmit Receiver
Sensor Binary CRC Remainder Senso
Frame Frame
r
47 358 101100110 1000 1011001101000 0 0 0 Error
48 351 101011111 1111 1010111111111 1010111111111 0 351 Berhasil
49 355 101100011 0111 1011000110111 1011000110111 0 355 Berhasil
50 360 101101000 1001 1011010001001 0 0 0 Error
51 352 101100000 0010 1011000000010 1011000000010 0 352 Berhasil
52 356 101100100 1110 1011001001110 1011001001110 0 356 Berhasil
53 356 101100100 1110 1011001001110 1011001001110 0 356 Berhasil
54 353 101100001 0001 1011000010001 0 0 0 Error
55 362 101101010 1111 1011010101111 0 0 0 Error
56 362 101101010 1111 1011010101111 1011010101111 0 362 Berhasil
57 363 101101011 1100 1011010111100 1011010111100 0 363 Berhasil
58 358 101100110 1000 1011001101000 1011001101000 0 358 Berhasil
59 363 101101011 1100 1011010111100 1011010111100 0 363 Berhasil
60 358 101100110 1000 1011001101000 1011001101000 0 358 Berhasil
61 357 101100101 1101 1011001011101 0 0 0 Error
62 358 101100110 1000 1011001101000 1011001101000 0 358 Berhasil
63 358 101100110 1000 1011001101000 1011001101000 0 358 Berhasil
64 360 101101000 1001 1011010001001 0 0 0 Error
65 355 101100011 0111 1011000110111 1011000110111 0 355 Berhasil
66 356 101100100 1110 1011001001110 1011001001110 0 356 Berhasil
67 355 101100011 0111 1011000110111 1011000110111 0 355 Berhasil
68 357 101100101 1101 1011001011101 1011001011101 0 357 Berhasil
69 357 101100101 1101 1011001011101 1011001011101 0 357 Berhasil
70 357 101100101 1101 1011001011101 0 0 0 Error
71 356 101100100 1110 1011001001110 0 0 0 Error
72 356 101100100 1110 1011001001110 0 0 0 Error
73 356 101100100 1110 1011001001110 0 0 0 Error
74 359 101100111 1011 1011001111011 1011001111011 0 359 Berhasil
75 350 101011110 1100 1010111101100 1010111101100 0 350 Berhasil
76 358 101100110 1000 1011001101000 1011001101000 0 358 Berhasil
77 356 101100100 1110 1011001001110 1011001001110 0 356 Berhasil
78 357 101100101 1101 1011001011101 1011001011101 0 357 Berhasil
79 363 101101011 1100 1011010111100 1011010111100 0 363 Berhasil
80 354 101100010 0100 1011000100100 1011000100100 0 354 Berhasil
81 357 101100101 1101 1011001011101 0 0 0 Error
82 356 101100100 1110 1011001001110 1011001001110 0 356 Berhasil
83 358 101100110 1000 1011001101000 1011001101000 0 358 Berhasil
84 355 101100011 0111 1011000110111 0 0 0 Error
82
Transmitter Receiver
Data conversion Dec to Binary Data
No Flex Status
Flex Transmit Receiver
Sensor Binary CRC Remainder Senso
Frame Frame
r
85 351 101011111 1111 1010111111111 1010111111111 0 351 Berhasil
86 356 101100100 1110 1011001001110 0 0 0 Error
87 356 101100100 1110 1011001001110 0 0 0 Error
88 351 101011111 1111 1010111111111 0 0 0 Error
89 359 101100111 1011 1011001111011 0 0 0 Error
90 356 101100100 1110 1011001001110 0 0 0 Error
91 357 101100101 1101 1011001011101 1011001011101 0 357 Berhasil
92 354 101100010 0100 1011000100100
93 351 101011111 1111 1010111111111 1010111111111 0 351 Berhasil
94 355 101100011 0111 1011000110111 1011000110111 0 355 Berhasil
95 355 101100011 0111 1011000110111 1011000110111 0 355 Berhasil
96 357 101100101 1101 1011001011101 0 0 0 Error
97 355 101100011 0111 1011000110111 1011000110111 0 355 Berhasil
98 356 101100100 1110 1011001001110 1011001001110 0 356 Berhasil
99 354 101100010 0100 1011000100100 1011000100100 0 354 Berhasil
100 359 101100111 1011 1011001111011 0 0 0 Error
101 357 101100101 1101 1011001011101 0 0 0 Error
102 355 101100011 0111 1011000110111 1011001101000 0 355 Berhasil
103 351 101011111 1111 1010111111111 0 0 0 Error
104 359 101100111 1011 1011001111011 0 0 0 Error
105 356 101100100 1110 1011001001110 0 0 0 Error
106 355 101100011 0111 1011000110111 1011001101000 0 355 Berhasil
107 354 101100010 0100 1011000100100 1011000100100 0 354 Berhasil
108 357 101100101 1101 1011001011101 0 0 0 Error
109 355 101100011 0111 1011000110111 1011001101000 0 355 Berhasil
110 354 101100010 0100 1011000100100 0 0 0 Error
111 353 101100001 0001 1011000010001 1011000010001 0 353 Berhasil
112 358 101100110 1000 1011001101000 1011001101000 0 358 Berhasil
113 359 101100111 1011 1011001111011 1011001111011 0 359 Berhasil
114 360 101101000 1001 1011010001001 1011010001001 0 360 Berhasil
115 354 101100010 0100 1011000100100 1011000100100 0 354 Berhasil
116 353 101100001 0001 1011000010001 0 0 0 Error
117 358 101100110 1000 1011001101000 1011001101000 0 358 Berhasil
118 355 101100011 0111 1011000110111 0 0 0 Error
119 351 101011111 1111 1010111111111 0 0 0 Error
120 359 101100111 1011 1011001111011 1011001111011 0 359 Berhasil
83
Dari tabel 4.8 diatas dapat dilihat bahwa dari 20 x kali percobaan dengan
diakibatkan oleh packetloss yang terjadi pada proses komunikasi nrf24L01. Dari
17 data yang error tersebut semuanya berniali 0 artinya receiver gagal menerima
atau mendeteksi data yang dikirim oleh transmitter. Berdasarkan hasi percobaan
120−42
¿ x 100 %=0,65 x 100 %=65 %
120
keberhasilannya yaitu sebesar 0,65 atau 65% dari total pengujian berjumlah 120
kali. Kemudian dari hasil 120 data keseluruhan , penulis membagi data tersebut
menjadi 20 data pada setiap 50 cm , hasil tersebut dapat dilihat sebagai berikut.
Transmitter Receiver
Data conversion Dec to Binary Data
No Status
Flex Transmit Receiver Flex
Binary CRC Remainder
Sensor Frame Frame Sensor
1 364 101101100 0101 1011011000101 0 0 0 Error
2 354 101100010 0100 1011000100100 1011000100100 0 354 Berhasil
3 359 101100111 1011 1011001111011 1011001111011 0 359 Berhasil
4 361 101101001 1010 1011010011010 0 0 0 Error
5 364 101101100 0101 1011011000101 1011011000101 0 364 Berhasil
6 362 101101010 1111 1011010101111 1011010101111 0 362 Berhasil
7 363 101101011 1100 1011010111100 1011010111100 0 363 Berhasil
8 364 101101100 101 1011011000101 1011011000101 0 364 Berhasil
9 360 101101000 1001 1011010001001 1011010001001 0 360 Berhasil
10 353 101100001 0001 1011000010001 0 0 0 Error
11 359 101100111 1011 1011001111011 0 0 0 Error
12 352 101100000 0010 1011000000010 0 0 0 Error
13 355 101100011 0111 1011000110111 1011000110111 0 355 Berhasil
14 360 101101000 1001 1011010001001 1011010001001 0 360 Berhasil
84
Transmitter Receiver
Data conversion Dec to Binary Data
No Status
Flex Transmit Receiver Flex
Binary CRC Remainder
Sensor Frame Frame Sensor
15 358 101100110 1000 1011001101000 1011001101000 0 358 Berhasil
16 356 101100100 1110 1011001001110 0 0 0 Error
17 365 101101101 0110 1011011010110 1011011010110 0 365 Berhasil
18 364 101101100 0101 1011011000101 1011011000101 0 364 Berhasil
19 361 101101001 1010 1011010011010 1011010011010 0 361 Berhasil
20 353 101100001 0001 1011000010001 1011000010001 0 353 Berhasil
kemudian peneliti menghitung tingkat keberhasilan dari data yang didapatkan dan
Jumlah Pengujian−PengujianGagal
Tingkat Keberhasilan= x 100 %
Jumlah Pengujian
20−6
¿ x 100 %=0,7 x 100 %=70 %
20
Berdasarkan dari 20 data yang berada pada tabel 4.9, penulis mendapat nilai
error sebesar 6 kali dari 20 kali percobaan. Dengan tingkat keberhasilan pada
Transmitter Receiver
N Data conversion Dec to Binary Data
Status
o Flex CR Transmit Receiver Remainde Flex
Binary
Sensor C Frame Frame r Senso
101100000 1011000000010 1011000000010 r Berhasi
6 704 0100 0 704
0 0 0 l
100111011 1001110110111 1001110110111 Berhasi
7 630 1111 0 630
0 1 1 l
Berhasi
8 454 111000110 1100 1110001101100 1110001101100 0 454
l
Berhasi
9 358 101100110 1000 1011001101000 1011001101000 0 358
l
10 422 110100110 0001 1101001100001 0 0 0 Error
Berhasi
11 384 110000000 0001 1100000000001 1100000000001 0 384
l
101001000 1010010000011
12 656 0110 0 0 0 Error
0 0
101100000 1011000000010 1011000000010 Berhasi
13 704 0100 0 704
0 0 0 l
100111011 1001110110111 1001110110111 Berhasi
14 630 1111 0 630
0 1 1 l
Berhasi
15 454 111000110 1100 1110001101100 1110001101100 0 454
l
Berhasi
16 358 101100110 1000 1011001101000 1011001101000 0 358
l
17 422 110100110 0001 1101001100001 0 0 0 Error
Berhasi
18 459 111001011 1000 1110010111000 1110010111000 0 459
l
101000001 1010000010010 1010000010010 Berhasi
19 642 0101 0 642
0 1 1 l
101001110 1010011100000 1010011100000 Berhasi
20 668 0001 0 668
0 1 1 l
Jumlah Pengujian−PengujianGagal
Tingkat Keberhasilan= x 100 %
Jumlah Pengujian
20−6
¿ x 100 %=0,7 x 100 %=70 %
20
Berdasarkan tabel 4.10 hasil pengujian pada jarak 100 cm memiliki tingkat
pengujian. Hasil ini sama dengan persentase keberhasilan pada jarak 50 cm.
Kemudian penulis akan menunjukan hasil pengujian pada jarak 150 cm sebagai
berikut.
Transmitter Receiver
Data conversion Dec to Binary Data
No St
Flex Transmit Receiver Remainde Flex
Binary CRC
Sensor Frame Frame r Sensor
1 362 101101010 1111 1011010101111 0 0 0 E
2 358 101100110 1000 1011001101000 1011001101000 0 358 Be
3 360 101101000 1001 1011010001001 0 0 0 E
4 364 101101100 101 1011011000101 1011011000101 0 364 Be
5 362 101101010 1111 1011010101111 1011010101111 0 362 Be
6 356 101100100 1110 1011001001110 1011001001110 0 356 Be
7 358 101100110 1000 1011001101000 0 0 0 E
8 351 101011111 1111 1010111111111 1010111111111 0 351 Be
9 355 101100011 111 1011000110111 1011000110111 0 355 Be
10 360 101101000 1001 1011010001001 0 0 0 E
11 352 101100000 10 1011000000010 1011000000010 0 352 Be
12 356 101100100 1110 1011001001110 1011001001110 0 356 Be
13 356 101100100 1110 1011001001110 1011001001110 0 356 Be
14 353 101100001 1 1011000010001 0 0 0 E
15 362 101101010 1111 1011010101111 0 0 0 E
16 362 101101010 1111 1011010101111 1011010101111 0 362 Be
17 363 101101011 1100 1011010111100 1011010111100 0 363 Be
18 358 101100110 1000 1011001101000 1011001101000 0 358 Be
19 363 101101011 1100 1011010111100 1011010111100 0 363 Be
20 358 101100110 1000 1011001101000 1011001101000 0 358 Be
Tabel 4. 11 Pengujian Jarak 150 Cm
87
Jumlah Pengujian−PengujianGagal
Tingkat Keberhasilan= x 100 %
Jumlah Pengujian
20−6
¿ x 100 %=0,7 x 100 %=70 %
20
Dapat dilihat dari tabel 4.11 pengujian pada jarak 150 cm memiliki tingkat
jumlah error yaitu 6 data. Selanjutnya penulis akan menunjukan hasil pengujian
Transmitter Receiver
Data conversion Dec to Binary Data
No Flex Flex Status
CR Transmit Receiver Remainde
Senso Binary Senso
C Frame Frame r
r r
10110010 101100101110
1 357 1101 0 0 0 Error
1 1
10110011 101100110100 101100110100 Berhasi
2 358 1000 0 358
0 0 0 l
10110011 101100110100 101100110100 Berhasi
3 358 1000 0 358
0 0 0 l
10110100 101101000100
4 360 1001 0 0 0 Error
0 1
10110001 101100011011 101100011011 Berhasi
5 355 111 0 355
1 1 1 l
10110010 101100100111 101100100111 Berhasi
6 356 1110 0 356
0 0 0 l
10110001 101100011011 101100011011 Berhasi
7 355 111 0 355
1 1 1 l
10110010 101100101110 101100101110 Berhasi
8 357 1101 0 357
1 1 1 l
10110010 101100101110 101100101110 Berhasi
9 357 1101 0 357
1 1 1 l
10 357 10110010 1101 101100101110 0 0 0 Error
88
1 1
10110010 101100100111
11 356 1110 0 0 0 Error
0 0
10110010 101100100111
12 356 1110 0 0 0 Error
0 0
10110010 101100100111
13 356 1110 0 0 0 Error
0 0
10110011 101100111101 101100111101 Berhasi
14 359 1011 0 359
1 1 1 l
10101111 101011110110 101011110110 Berhasi
15 350 1100 0 350
0 0 0 l
10110011 101100110100 101100110100 Berhasi
16 358 1000 0 358
0 0 0 l
10110010 101100100111 101100100111 Berhasi
17 356 1110 0 356
0 0 0 l
10110010 101100101110 101100101110 Berhasi
18 357 1101 0 357
1 1 1 l
10110101 101101011110 101101011110 Berhasi
19 363 1100 0 363
1 0 0 l
10110001 101100010010 101100010010 Berhasi
20 354 100 0 354
0 0 0 l
Jumlah Pengujian−PengujianGagal
Tingkat Keberhasilan= x 100 %
Jumlah Pengujian
20−6
¿ x 100 %=0,7 x 100 %=70 %
20
Dapat dilihat dari tabel 4.12 pengujian pada jarak 150 cm memiliki tingkat
jumlah error yaitu 6 data. Selanjutnya adalah hasil pengujian beserta tingkat
C Frame Frame
Sensor Sensor
1 357 101100101 1101 1011001011101 0 0 0 Error
2 356 101100100 1110 1011001001110 1011001001110 0 356 Berhasil
3 358 101100110 1000 1011001101000 1011001101000 0 358 Berhasil
4 355 101100011 111 1011000110111 0 0 0 Error
5 351 101011111 1111 1010111111111 1010111111111 0 351 Berhasil
6 356 101100100 1110 1011001001110 0 0 0 Error
7 356 101100100 1110 1011001001110 0 0 0 Error
8 351 101011111 1111 1010111111111 0 0 0 Error
9 359 101100111 1011 1011001111011 0 0 0 Error
10 356 101100100 1110 1011001001110 0 0 0 Error
11 357 101100101 1101 1011001011101 1011001011101 0 357 Berhasil
12 354 101100010 100 1011000100100 1011000100100 0 354 Berhasil
13 351 101011111 1111 1010111111111 1010111111111 0 351 Berhasil
14 355 101100011 111 1011000110111 1011000110111 0 355 Berhasil
15 355 101100011 111 1011000110111 1011000110111 0 355 Berhasil
16 357 101100101 1101 1011001011101 0 0 0 Error
17 355 101100011 111 1011000110111 1011000110111 0 355 Berhasil
18 356 101100100 1110 1011001001110 1011001001110 0 356 Berhasil
19 354 101100010 100 1011000100100 1011000100100 0 354 Berhasil
20 359 101100111 1011 1011001111011 0 0 0 Error
Jumlah Pengujian−PengujianGagal
Tingkat Keberhasilan= x 100 %
Jumlah Pengujian
20−9
¿ x 100 %=0,55 x 100 %=55 %
20
Pada tabel 4.13 dapat dilihat bahwa error yang didapatkan lebih besar dari
pengujian sebelumnya, error yang didapatkan sebesar 9 data. Dengan
meningkatnya jumlah error yang terdeteksi berpengaruh juga dengan persentase
keberhasilan yang didapat, persentasenya sebesar 55 %. Dengan persentase
tersebut merupakan persentase yang paling rendah dari pada persentase pengujian
sebelumnya. Terakhir, penulis ingin menunjukan hasil pengujian pada jarak 300
cm dan tingkat keberhasil pengujiannya sebagai berikut.
Jumlah Pengujian−PengujianGagal
Tingkat Keberhasilan= x 100 %
Jumlah Pengujian
20−9
¿ x 100 %=0,55 x 100 %=55 %
20
Pada tabel 4.14 dapat dilihat bahwa error yang didapatkan memiliki
kesamaan dengan pengujian pada jarak 250 cm yaitu 9 data dengan tingkat
persentase keberhasilan pengujian sebesar 55 %.
91
hasil dari CRC yang rumus perhitungannya sudah include ke program C++
dengan Hasil dari CRC dengan proses perhitungan manual. Tujuannya adalah
untuk membuktikan bahwa hasil data yang didapatkan perhitungan CRC pada
bagian error detection adalah benar. Pada contoh pertama saya mengambil nilai
data pada tabel 4.5 nomor 2 bagian transmitter yaitu nilai 354 dengan nilai biner
101100010 yang mempunyai hasil CRC adalah 0100. Hasil perhitungan algoritma
manual yang dikerjakan oleh penulis mempunyai hasil CRC adalah 0100, Maka
program memiliki nilai yang sama. Selanjutnya pada bagian receiver, pada bagian
92
0000. Berikut ini hasil perhitungan manual algoritma CRC bagian receiver.
perhitungan manual algoritma CRC adalah 0000, hasil ini membuktikan bahwa
Kemudian pada contoh yang ke 2, penulis mengambil nilai 360 pada baris
nomor 9 bagian transmitter pada tabel 4.5 dengan nilai CRC adalah 1001. Berikut
hasil perhitungannya.
93
Selanjutnya hasil dari perhitungan algoritma CRC pada bagain receiver yang
memiliki kesamaan dengan nilai remainder yang tertulis pada tabel 4.5 baris
nomor 9. Kemudian contoh ke 3 penulis mengambil data dengan nilai 704, nilai
tersebut terdapat pada tabel 4.5 dengan baris nomor 26. Berikut hasil
perhitungannya.
95
nilai tersebut memiliki kesamaan dengan nilai CRC yang berada pada tabel 4.5
pada baris 26 yaitu 0100. Selanjut perhitungan algoritma pada bagian receiver,
Pada gambar 4.27 mempunyai nilai remainder adalah 0000, artinya nilai
tersebut memilik kesamaan dengan nilai remainder yang ada pada tabel 4.5 baris
nomor 29. Selanjut contoh ke 4, penulis mengambil data 630 pada tabel 4.5 baris
nomor 34. Nilai 630 memiliki angka binary adalah 1001110110 dengan nilai CRC
Pada gambar 4.28 dapat dilihat bahwa nilai CRC yang dihasil adala 1111,
nilai tersebut memiliki kesamaan dengan nilai CRC yang berada pada tabel 4.5
pada baris 34 yaitu 1111. Selanjut perhitungan algoritma pada bagian receiver,
Pada gambar 4.29 mempunyai nilai remainder adalah 0000, artinya nilai
tersebut memilik kesamaan dengan nilai remainder yang ada pada tabel 4.5 baris
nomor 34. Selanjut contoh ke 4, penulis mengambil data 459 pada tabel 4.5 baris
nomor 38. Nilai 459 memiliki angka binary adalah 111001011 dengan nilai CRC
Pada gambar 4.30 dapat dilihat bahwa nilai CRC yang dihasil adala 1000,
nilai tersebut memiliki kesamaan dengan nilai CRC yang berada pada tabel 4.5
pada baris 38 yaitu 1000. Selanjut perhitungan algoritma pada bagian receiver,
Pada gambar 4.31 dapat dilihat bahwa hasil remainder yang didapatkan
adalah 0000, nilai tersebut memiliki kesamaan dengan nilai remainder yang ada
pada tabel 4.5 nomor 38.
BAB 5
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Setelah dilakukan penelitian dan pengolah data pada penelitian ini, penulis
733.16 ms, kemudian yang terakhir adalah jitter menghasilkan sebesar 40.41 ms.
redundancy check (CRC) pada pengambilan data sebanyak 120 kali menghasil
5.2 Saran
1. Transmitter
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define CSN_PIN 8
#define CE_PIN 7
#define led
//TX sarung tangan.
RF24 radio(CE_PIN,CSN_PIN);
//const byte alamat[][6]={ "00001","00002"}; //adres TX RX
const byte alamat [6]="00005";
boolean buttonState=0;
int data1,data2,data3,data4,data5;
const int adc1=A0;
const int adc2=A1;
const int adc3=A2;
const int adc4=A3;
const int adc5=A6;
void setup() {
pinMode(3,OUTPUT);
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(alamat);
radio.setPALevel(RF24_PA_MIN);
radio.stopListening();
}
107
void loop() {
//================mengirim data 1==================
radio.stopListening();
int satu=1;
radio.write(&satu, sizeof(satu));
delay(20);
radio.stopListening();
data1=analogRead(adc1);
radio.write(&data1, sizeof(data1));
Serial.print(" SENSOR 1 = ");
Serial.print(data1);
delay(20);
//================mengirim data 2==================
radio.stopListening();
int dua=2;
radio.write(&dua, sizeof(dua));
delay(20);
radio.stopListening();
data2=analogRead(adc2);
radio.write(&data2, sizeof(data2));
Serial.print(" SENSOR 2 = ");
Serial.print(data2);
delay(20);
//================mengirim data 3==================
radio.stopListening();
int tiga=3;
radio.write(&tiga, sizeof(tiga));
delay(20);
radio.stopListening();
data3=analogRead(adc3);
108
radio.write(&data3, sizeof(data3));
Serial.print(" SENSOR 3 = ");
Serial.print(data3);
delay(20);
//================mengirim data 4==================
radio.stopListening();
int empat=4;
radio.write(&empat, sizeof(empat));
delay(20);
radio.stopListening();
data4=analogRead(adc4);
radio.write(&data4, sizeof(data4));
Serial.print(" SENSOR 4 = ");
Serial.print(data4);
delay(20);
//================mengirim data 5==================
radio.stopListening();
int lima=5;
radio.write(&lima, sizeof(lima));
delay(20);
radio.stopListening();
data5=analogRead(adc5);
radio.write(&data5, sizeof(data5));
Serial.print(" SENSOR 5 = ");
Serial.println(data5);
delay(500);
109
2. Receiver
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
//penerima
#define led
RF24 radio(49,48);//pin CE, CSN
//const byte alamat[][6]={"00001","00002"}; //addres rx tx
const byte alamat [6]="00005";
boolean buttonState=0;
int data[12];
int data1,data2,data3,data4,data5;
int incoming;
//pin set motor
const int pin_forward1=2;
const int pin_reserve1=3;
const int pin_pwm1=4;
const int pin_forward2=5;
const int pin_reserve2=6;
const int pin_pwm2=7;
/*const int trigPin1 = 14;
const int echoPin1 = 15;
long duration1;
int distance1;*/
void setup() {
lcd.init();
lcd.init();
110
lcd.backlight();
lcd.begin(16,2);
lcd.setCursor(0,0);
lcd.print(" ''KUDA SARPIN''");
for(int i=0;i<1;i++){
pinMode(pin_forward1,OUTPUT);
pinMode(pin_forward2,OUTPUT);
pinMode(pin_reserve1,OUTPUT);
pinMode(pin_reserve2,OUTPUT);
pinMode(pin_pwm1,OUTPUT);
pinMode(pin_pwm2,OUTPUT);
// pinMode(trigPin1, OUTPUT);
//pinMode(echoPin1, INPUT);
Serial.begin(9600);
pinMode(3,OUTPUT);
Serial.begin(9600);
radio.begin();
// radio.openWritingPipe(alamat[0]); // tx
radio.openReadingPipe(0,alamat); //rx
radio.setPALevel(RF24_PA_MIN);
radio.startListening();
}
void loop() {
/* digitalWrite(trigPin1, LOW);
delayMicroseconds(20);
digitalWrite(trigPin1, HIGH);
111
delayMicroseconds(10);
digitalWrite(trigPin1, LOW);
duration1 = pulseIn(echoPin1, HIGH);
distance1= duration1*0.034/2;
Serial.print("SRF1 = ");Serial.println(distance1);*/
set_motor(0,data1, data2, data3,data4, data5);
if (radio.available()){
radio.startListening();
radio.read(&incoming, sizeof(incoming));
delay(20);
if (incoming==1){
radio.startListening();
radio.read(&data1, sizeof(data1));
}
delay(20);
radio.startListening();
radio.read(&incoming, sizeof(incoming));
delay(20);
if (incoming==2){
radio.startListening();
radio.read(&data2, sizeof(data2));
}
delay(20);
radio.startListening();
radio.read(&incoming, sizeof(incoming));
delay(20);
if (incoming==3){
radio.startListening();
radio.read(&data3, sizeof(data3));
}
delay(20);
112
radio.startListening();
radio.read(&incoming, sizeof(incoming));
delay(20);
if (incoming==4){
radio.startListening();
radio.read(&data4, sizeof(data4));
}
delay(20);
radio.startListening();
radio.read(&incoming, sizeof(incoming));
delay(20);
if (incoming==5){
radio.startListening();
radio.read(&data5, sizeof(data5));
}
delay(20);
Serial.print("data1 : ");Serial.print(data1);
Serial.print(" data2 : ");Serial.print(data2);
Serial.print(" data3 : ");Serial.print(data3);
Serial.print(" data4 : ");Serial.print(data4);
Serial.print(" data5 : ");Serial.println(data5);
//code here
/* lcd.clear();
lcd.setCursor(0,0);
lcd.print(" ''KUDA SARPIN''");
lcd.setCursor(0,1);
lcd.print(" CONNECT");*/
}else {
analogWrite(pin_pwm1,120);
113
analogWrite(pin_pwm2,120);
digitalWrite(pin_forward1,LOW);
digitalWrite(pin_forward2,LOW);
digitalWrite(pin_reserve1,LOW);
digitalWrite(pin_reserve2,LOW);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" ''KUDA SARPIN''");
lcd.setCursor(0,1);
lcd.print(" TIDAK KONEK");
delay(100);
// stop motor
// while (1){}
//kondisi radio tdk konek
}
}
lcd.setCursor(0,1);
lcd.print(" KONEK 'MAJU'");
}
//mundur
if( data4a > 895 ){//&& data5a > 910){
analogWrite(pin_pwm1,(180));
analogWrite(pin_pwm2,(180));
digitalWrite(pin_forward1,LOW);
digitalWrite(pin_forward2,LOW);
digitalWrite(pin_reserve1,HIGH);
digitalWrite(pin_reserve2,HIGH);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" ''KUDA SARPIN''");
lcd.setCursor(0,1);
lcd.print(" KONEK 'MUNDUR'");
}
//kiri
if(data1a > 890 && data2a > 880 && data3a > 870){
analogWrite(pin_pwm1,180);
analogWrite(pin_pwm2,180);
digitalWrite(pin_forward1,LOW);
digitalWrite(pin_forward2,HIGH);
digitalWrite(pin_reserve1,LOW);
digitalWrite(pin_reserve2,LOW);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" ''KUDA SARPIN''");
lcd.setCursor(0,1);
lcd.print(" KONEK 'KIRI'");
}
115
//kanan
if(data1a > 890 && data2a > 890 && data5a > 920){
analogWrite(pin_pwm1,180);
analogWrite(pin_pwm2,180);
digitalWrite(pin_forward1,HIGH);
digitalWrite(pin_forward2,LOW);
digitalWrite(pin_reserve1,LOW);
digitalWrite(pin_reserve2,LOW);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" ''KUDA SARPIN''");
lcd.setCursor(0,1);
lcd.print(" KONEK 'KANAN'");
}
//stop
if(data1a < 870 && data2a < 870 && data3a < 870 && data4a < 870 &&
data5a < 920){
analogWrite(pin_pwm1,120);
analogWrite(pin_pwm2,120);
digitalWrite(pin_forward1,LOW);
digitalWrite(pin_forward2,LOW);
digitalWrite(pin_reserve1,LOW);
digitalWrite(pin_reserve2,LOW);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" ''KUDA SARPIN''");
lcd.setCursor(0,1);
lcd.print(" KONEK 'STOP'");
}
/*if(distance1 <= 65 )
{
116
analogWrite(pin_pwm1,255);
analogWrite(pin_pwm2,255);
digitalWrite(pin_forward1,LOW);
digitalWrite(pin_forward2,LOW);
digitalWrite(pin_reserve1,LOW);
digitalWrite(pin_reserve2,LOW);
delay (100);
analogWrite(pin_pwm1,(140));
analogWrite(pin_pwm2,(140));
digitalWrite(pin_forward1,LOW);
digitalWrite(pin_forward2,LOW);
digitalWrite(pin_reserve1,HIGH);
digitalWrite(pin_reserve2,HIGH);
delay(1000);*/
//}
//delay(10);
}
117
1. Transmitter
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define CSN_PIN 8
#define CE_PIN 7
#define led
//TX sarung tangan.
RF24 radio(CE_PIN,CSN_PIN);
//const byte alamat[][6]={ "00001","00002"}; //adres TX RX
const byte alamat [6]="00005";
boolean buttonState=0;
int data1,data2,data3,data4,data5;
const int adc1=A0;
const int adc2=A1;
const int adc3=A2;
const int adc4=A3;
const int adc5=A6;
void setup() {
pinMode(3,OUTPUT);
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(alamat);
radio.setPALevel(RF24_PA_MIN);
radio.stopListening();
}
118
void loop() {
//================mengirim data 1==================
radio.stopListening();
int satu=1;
radio.write(&satu, sizeof(satu));
delay(20);
radio.stopListening();
data1=analogRead(adc1);
radio.write(&data1, sizeof(data1));
Serial.print(" SENSOR 1 = ");
Serial.print(data1);
delay(20);
//================mengirim data 2==================
radio.stopListening();
int dua=2;
radio.write(&dua, sizeof(dua));
delay(20);
radio.stopListening();
data2=analogRead(adc2);
radio.write(&data2, sizeof(data2));
Serial.print(" SENSOR 2 = ");
Serial.print(data2);
delay(20);
//================mengirim data 3==================
radio.stopListening();
int tiga=3;
radio.write(&tiga, sizeof(tiga));
delay(20);
radio.stopListening();
data3=analogRead(adc3);
119
radio.write(&data3, sizeof(data3));
Serial.print(" SENSOR 3 = ");
Serial.print(data3);
delay(20);
//================mengirim data 4==================
radio.stopListening();
int empat=4;
radio.write(&empat, sizeof(empat));
delay(20);
radio.stopListening();
data4=analogRead(adc4);
radio.write(&data4, sizeof(data4));
Serial.print(" SENSOR 4 = ");
Serial.print(data4);
delay(20);
//================mengirim data 5==================
radio.stopListening();
int lima=5;
radio.write(&lima, sizeof(lima));
delay(20);
radio.stopListening();
data5=analogRead(adc5);
radio.write(&data5, sizeof(data5));
Serial.print(" SENSOR 5 = ");
Serial.println(data5);
delay(500);
120
2. Receiver
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
//penerima
#define led
#define CSN_PIN 48
#define CE_PIN 49
struct dataStruct
{
int packetId;
char value[6];
uint32_t crc_Checksum;
}myData;
121
void setup() {
pinMode(3,OUTPUT);
Serial.begin(9600);
radio.begin();
// radio.openWritingPipe(alamat[0]); // tx
radio.openReadingPipe(0,alamat); //rx
radio.setPALevel(RF24_PA_MIN);
radio.startListening();
}
int data1,data2,data3,data4,data5;
int incoming;
void loop() {
if (radio.available())
{
myData.packetId = nextPacketId;
started_waiting_at = millis();
startTime = millis();
radio.startListening();
radio.read(&incoming, sizeof(incoming));
delay(20);
if (incoming==1){
radio.startListening();
radio.read(&data1, sizeof(data1));
}
delay(20);
radio.startListening();
radio.read(&incoming, sizeof(incoming));
122
delay(20);
if (incoming==2){
radio.startListening();
radio.read(&data2, sizeof(data2));
}
delay(20);
radio.startListening();
radio.read(&incoming, sizeof(incoming));
delay(20);
if (incoming==3){
radio.startListening();
radio.read(&data3, sizeof(data3));
}
delay(20);
radio.startListening();
radio.read(&incoming, sizeof(incoming));
delay(20);
if (incoming==4){
radio.startListening();
radio.read(&data4, sizeof(data4));
}
delay(20);
radio.startListening();
radio.read(&incoming, sizeof(incoming));
delay(20);
if (incoming==5){
radio.startListening();
radio.read(&data5, sizeof(data5));
}
delay(500);
123
Serial.print("data1 : ");Serial.print(data1);
Serial.print(" data2 : ");Serial.print(data2);
Serial.print(" data3 : ");Serial.print(data3);
Serial.print(" data4 : ");Serial.print(data4);
Serial.print(" data5 : ");Serial.println(data5);
Serial.println(" ");
cekdelay();
nextPacketId++;
jumlah_data++;
if(nextPacketId > 5)
{
nextPacketId=1;
jitter_TP();
}
//code here
Serial.println("====================================="
);
Serial.println(" ");
}else{
void cekdelay()
{
Serial.print("Lama Delay : ");
Serial.print(millis() - started_waiting_at);
Serial.println("mS."); Serial.println(" ");
delay(20);
}
void jitter_TP()
{
//=================Jitter=================
stopTime = millis();
lapse = stopTime - startTime;
Serial.print("Round Trip Time : ");
Serial.print(lapse);
Serial.println(" mS");
allDelay += lapse;
float avg = (allDelay / myData.packetId -1);
float jitter = avg / jumlah_data;
Serial.print("Jitter : ");
Serial.print(jitter);
Serial.println(" milisecond"); Serial.println(" ");
//==================Tp=======================
int bps = 14 * 1024 / lapse;
allAvg += bps;
float TP = allDelay / 10;
Serial.print("BPS : ");
Serial.println(bps);
125
Serial.print("Avg : ");
Serial.println(allAvg);
Serial.print("Throughput Avg : ");
Serial.print(TP);
Serial.println(" KB/s");
}
1. Transmitter
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define led
int Data_ke;
int Data;
126
void setup() {
pinMode(3,OUTPUT);
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(alamat);
radio.setPALevel(RF24_PA_MIN);
radio.stopListening();
}
void loop() {
//================mengirim data 1==================
radio.stopListening();
int satu=1;
radio.write(&satu, sizeof(satu));
delay(20);
CRC();
//kirim_CRC();
delay(500);
Void CRC ()
String decToBinary(int n)
{
char hasil[50], ds[20];
int binaryNum[32];
int i = 0;
while (n > 0) {
binaryNum[i] = n % 2;
n = n / 2;
i++;
127
}
int hg = 0;
for (int j = i - 1; j >= 0; j--){
//cout << binaryNum[j];
sprintf(hasil, "%d",binaryNum[j]);
ds[hg] = hasil[0];
hg++;
}
//cout << " =" << ds;
return ds;
}
void CRC()
{
int i,j,k,l,num,fs,des;
int bin[20];
int f[20],arayD[50];
int gs = 5;
int g[20]={1,0,0,1,1};
byte cRc;
data1=analogRead(adc1);
Serial.println(" ");
Serial.print("data1: ");
Serial.println(data1);
num = data1;
//Serial.println(" ");
Serial.print("num : "); Serial.println(num);
String data;
data = decToBinary(num);
Serial.print("Biner : ");
if (data1 >=512)
128
{
fs = 10;
for(int i=0; i<1; i++)
{
char k = data[i];
f[0] = atoi (&k);
arayD[0] = atoi(&k);
Serial.print(arayD[0]);
}
if(data1 <512)
{
fs = 9;
for(int i = 0; i <9; i++ )
{
char k = data[i];
f[i] = atoi (&k);
arayD[i] = atoi(&k);
Serial.print(arayD[i]);
}
}
Serial.println(" ");
129
//Get Generator
Serial.print("Generator : ");
Serial.println(gs);
//cout<<"\n Enter Generator size: ";
//cin>>gs;
Serial.print("generator : ");
for(int i=0; i<gs; i++)
{
Serial.print(g[i]);
}
Serial.println(" ");
//Append 0's
int rs=gs-1;
Serial.print("Number of 0's to be appended: "); Serial.println(rs);
for (int i=fs; i<fs+rs; i++)
{
f[i]=0;
}
int temp[20];
for(int i=0;i<20;i++)
{
temp[i]=f[i];
}
Serial.println(" ");
//Division
for(i=0;i<fs;i++)
{
j=0;
k=i;
//check whether it is divisible or not
if (temp[k]>=g[j])
{
for(j=0,k=i;j<gs;j++,k++)
{
if((temp[k]==1 && g[j]==1) || (temp[k]==0 && g[j]==0))
{
temp[k]=0;
}
else
{
temp[k]=1;
}
}
}
}
//CRC
int crc[15];
for(i=0,j=fs;i<rs;i++,j++)
{
crc[i]=temp[j];
}
131
//==================BinToDes======================
for(int i=0;i<fs+rs;i++)
{
int z, x, c;
z= i-((fs+rs)-1);
x= abs(z);
c=pow(2,x);
if(x>=2)
{
132
bin[i]= ((tf[i]*c)+1) ;
if(bin[i]==1) bin[i]=0;
}
if(x<2) bin[i]= (tf[i]*c);
//Serial.print("c: ");
//Serial.println(c);
//bin[i]= ((tf[i]*c)+1) ;
}
Serial.println(" ");
radio.stopListening();
radio.write(&des, sizeof(des));
Serial.print(" dec Transmitted Frame: = ");
Serial.println(des);
Serial.println(" "); Serial.println(" ");
}
3. Receiver
#include <SPI.h>
133
#include <nRF24L01.h>
#include <RF24.h>
//penerima
#define led
#define CSN_PIN 48
#define CE_PIN 49
void setup() {
pinMode(3,OUTPUT);
Serial.begin(9600);
Serial.println (" Receiviing Data . . .");
radio.begin();
// radio.openWritingPipe(alamat[0]); // tx
radio.openReadingPipe(0,alamat); //rx
radio.setPALevel(RF24_PA_MIN);
radio.startListening();
}
int data1,data2,data3,data4,data5,crc;
int codeword;
int incoming;
void loop() {
if (radio.available()){
134
radio.startListening();
radio.read(&incoming, sizeof(incoming));
delay(20);
if (incoming==1){
radio.startListening();
radio.read(&data1, sizeof(data1));
Remainder();
}
delay(20);
//=========================terimaCRC==================
delay(500);
//Serial.print("data1 : ");Serial.println(data1);
}else{
sprintf(hasil, "%d",binaryNum[j]);
ds[hg] = hasil[0];
hg++;
}
//cout << " =" << ds;
return ds;
}
void Remainder()
{
int i,j,k,l,num,fs,des;
int bin[20];
int f[20],arayD[50];
int temp[20];
int gs = 5;
int RS = gs-1;
int g[20]={1,0,0,1,1};
byte cRc;
//codeword=analogRead(data1);
Serial.println(" ");
Serial.print("data1: ");
Serial.println(data1);
num = data1;
//Serial.println(" ");
//Serial.print("num : "); Serial.println(num);
String data;
data = decToBinary(num);
Serial.print("Biner : ");
fs = 14;
for(int i=0; i<1; i++)
{
char k = data[i];
f[0] = atoi(&k);
arayD[0] = atoi(&k);
Serial.print(arayD[0]);
}
Serial.println("");
//Serial.print("Receiver side : ");
Serial.print("Received Frame: ");
for(int i=0; i<fs; i++)
{
Serial.print(arayD[i]);
}
//Division
for(int i=0; i<fs; i++)
{
j=0;
k=i;
if (temp[k]>=g[j])
{
for(j=0,k=i;j<gs;j++,k++)
{
if((temp[k]==1 && g[j]==1) || (temp[k]==0 && g[j]==0))
{
temp[k]=0;
}
else
{
temp[k]=1;
}
}
138
}
}
Serial.println("");
Serial.print("Reaminder: ");
int rrem[15];
for (i=fs-RS,j=0;i<fs;i++,j++)
{
rrem[j]= temp[i];
}
for(i=0;i<RS;i++)
{
Serial.print(rrem[i]);
}
int flag=0;
for(i=0;i<RS;i++)
{
if(rrem[i]!=0)
{
flag=1;
}
}
if(data1==0) flag=1;
Serial.println(" ");
if(flag==0)
{
Serial.println("DATA CORRECT");
139
}
else
{
Serial.println("DATA ERROR");
}
Serial.println(" "); //Serial.println(" ");
}