SKRIPSI
Disusun Oleh :
WAN BUDIMAN
NIM : 16220002
Disusun Oleh :
Wan Budiman
NIM : 16220002
Pada tanggal
DOSEN PEMBIMBING
i
WIRELESS PORTABLE BARCODE SCANNER
BERBASIS ARDUINO NANO
Disusun Oleh :
Wan Budiman
NIM : 16220002
Mengetahui
Ketua Prodi Teknik Elektro
ii
ABSTRAK
Wan Budiman, 2021. Wireless Portable Barcode Scanner Berbasis Arduino
Nano. Skripsi Jurusan Teknik Elektro, Fakultas Teknik & Informatika
Universitas Gajayana. Pembimbing: Achmad Setiawan,S.T.,MT.dan I
Nyoman Suspita, S.T.,M.M.
Tugas akhir ini merancang dan membuat prangkat barcode scanner yang
portable dan bisa digunakan dengan praktis. Dimana bisa mengirimkan data secara
nirkabel.
Wireless portable barcode scanner ini menggunakan board Arduino Nano
dimana terdapat Mikrokontroler ATmega328 yang berfungsi sebagai pengolah data
data dari barcode scanner, mengirimkan data secara wireless lewat modul
NRF24L01. Menggunakan software borland delphi d an MS.Acces sebagai media
penyimpanan data barcode sederhana. Dilengkapi dengan baterai kapasitas
10.000MAH yang digunakan sebagai Catudaya.
Dari hasil pengujian, perangkat Wireless Portable dapat melakukan proses
kirim data barcode dengan jarak ± 40 Meter. Dengan 10x pengujian kirim data
barcode yang sama. Data yang didapatkan sesuai dengan data yang di tampilkan
pada serial monitor di PC (Personal komputer).
iii
KATA PENGANTAR
Puji syukur atas kehadiran Allah SWT atas limpahan rahmat dan hidayah-
Nya sehingga penulis dapat menyelesaikan skripsi dengan judul “Wireless Portable
Barcode Scanner”. Skripsi ini merupakan salah satu syarat untuk memperoleh gelar
sarjana bagi setiap mahasiswa Jurusan Teknik Elektro pada Fakultas Teknik &
bantuan dan dukungan berbagai pihak. Karena itu, penulis mengucapkan terima
kasih kepada:
3. Kedua orang tua saya yang tidak lelah - lelahnya mengirimkan doa.
untuk itu penulis mengharapkan kritik dan saran yang sifatnya membangun demi
Penulis berharap semoga Skripsi ini berguna bagi penulis khususnya dan
Penulis.
iv
DAFTAR ISI
Halaman
v
2.2.1 Enhanced ShockBurst TM Timing................................................... 13
vi
A. Sinyal komunikasi serial memiliki beberapa elemen penting
diantaranya: .................................................................................................... 38
2.8.1 SPI Control Register (SPCR) Mode SPCR yang digunakan sebagai
berikut : ........................................................................................................ 41
2.8.2 SPI Status Register (SPSR) Dalam SPCR mode pengaturan yang
vii
3.4.3 Mekanisme Membedakan Asal Node yang Mengirimkan Data
Barcode : ........................................................................................................ 55
viii
DAFTAR GAMBAR
ix
Gambar 3.5 Perancangan Sistem Barcode Scanner Menggunakan Socket PS/2 .. 47
Gambar 3.10 Alur Pemrograman Wireless NRF Network Node 01 & Node 02 . 56
Gambar 4.2 Pengujian pada saat push button Tidak Ditekan (OFF) .................... 64
x
Gambar 4.18 Pengujian NRF Network sample data Barcode. .............................. 91
xi
DAFTAR TABEL
Tabel 2.3 Fungsi-fungsi dalam NRF24 (hanya yang umum digunakan) ............. 10
xii
BAB I
PENDAHULUAN
Dalam sistem penjualan umum nya saat ini tidak terpisahkan dengan
Contoh aplikasi sistem ini adalah sistem barcode scanner penjualan di toko Sardo
informasi teks yang sederhana dan murah. Tujuan pokok penggunaan teknologi
berisi data. Sebagai contoh, pegawai toko men-scanning barcode pada suatu
menggunakan kabel data USB tipe A, kemudian mencari informasi di database dan
barcode scanner yang ada saat ini dirasa kurang efektif. Perlu adanya sistem yang
portable dan praktis. dimana ruangan yang begitu luas dan tempat yang tinggi maka
kelamahan barcode yang ada saat ini terkendala dengan sumber energi nya yaitu
listrik, dimana biasanya langsung bersumber dari PC, serta terkendala saat
mengirimkan data dari hasil scanner ke PC, yang menggunakan socket kabel USB
tipe A atau PS/2. Maka dari itu pastinya membutuhkan kabel yang panjang sehingga
akan memakan biaya tambahan serta menghambat ruang gerak yang luas.
barcode scanner yang portable dan praktis. Yang bertujuan untuk mempermudah
1
2
dan mempercepat pengambilan data yang diperlukan. Maka saya sebagai penulis
Dari latar belakang di atas dapat dirumuskan permasalahan yang akan dibahas
yaitu:
(tanpa kabel).
karena keterbatasan pengetahuan, waktu dan biaya maka pembahasan dibatasi pada
poin-poin berikut:
RAM : 1 gigabyte (GB) for 32-bit atau 2 GB for 64-bit, Windows 10 : 64-
1.4 Tujuan
Tujuan dari Tugas Akhir ini adalah membuat dan merancang Sistem
pembaca data barcode scanner yang dapat mengirimkan data melalui jaringan
wireless yang terkoneksi dalam sebuah sistem wireless network. Sehingga untuk
1.5 Metodologi
2. Perancangan Hardware.
3. Perancangan Software.
4. Pengujian Alat.
Maka akan di lakukan uji coba dari sebuah barcode scanner mengirimkan
5. Penulisan Laporan .
4
Secara garis besar pembahasan dari tugas akhir ini terbagi dalam beberapa
bab yaitu :
BAB I : Pendahuluan
sistematika penulisan.
pembuatan alat.
sistem.
Membahas tentang pengujian yang dilakukan terhadap sistem atau alat yang
telah dibuat.
Berisi hasil ringkasan dari uraian keseluruhan tugas akhir, serta saran-saran
Dalam tugas akhir ini, menggunakan Modul NRF24L01. Oleh karena itu
pada bab ini akan terlebih dahulu membahas tentang wireless network
pengalamatan adress untuk bagian Host atau client. Prinsip kerja dari wireless
wireless disekitar modul NRF saat alamat (adress) yang sudah di atur benar, maka
otomatis modul NRF akan terhubung secara langsung baik dari host ke client
maupun dari client menuju host. Berikut cara kerja topologi jaringan wireless
Dari Gambar 2.7 terlihat Satu modul NRF24L01 yaitu sebagai host dapat
5
6
Berikut dibawah ini terlihat pada Gambar 2.8. Topologi Tree pada modul
NRF24L04.
Dari Gambar 2.8. terlihat bahwa NRF bisa saling terhubung dengan adanya
penyambung antara node 0111 dengn node yang lainnya menuju base 00 yaitu NRF
node 011 dan node 01 menjadi sebagai repeater. Repeater ini berasal dari bahasa
inggris yakni “repeat” yang berarti pengulangan atau lebih lengkapnya repeater
adalah alat yang berguna untuk mengulang dan meneruskan kembali signal. Alat
yang berfungsi untuk memperluas jangkauan sinyal wireless yang lemah dari
wireless utama.
7
untuk komunikasi jarak jauh atau nirkabel yang memanfaatkan gelombang RF 2.4
Tegangan operasional normal untuk mengakses Module ini yaitu 3.3Vdc, Module
berkomunikasi. Selain itu, Module ini juga memiliki fitur true ULP solution, yang
NRF24L01 adalah piranti Low Power Transceiver yang bekerja pada Band
2.4 sampai 2.4835 GHz dengan kecepatan transfer hingga 2Mbps. Secara umum
Sumber : www.scribd.com/document/370202121/Modul-NRF-1
Berikut adalah blok diagram dari NRF24L01 yang terdapat pada Gambar
• Current 9.0 mA
sebuah library khusus yang disebut RF24. Berikut ini fungsi-fungsi yang umum
No Sintaks Fungsi
1 RF24( CE, CSN) Constructor dengan penetapan letak
pin CE dan CSN pada Arduino
2 begin( ) Memulai operasi chip NRF24L01
3 openWritingPipe (uint64_t Open pipe untuk penulisan (Tx)
alamat)
4 openReadingPipe(uint8_t Open Pipe untuk pembacaan (Rx),
nomor, uint64_t alamat) nomor -> nomor pipe ( 1 - 5),
alamat-> alamat 40 bit
5 startListening( ) Mode Rx
6 stopListening( ) Mode Tx
7 available( ) Pengecekan data ada di buffer ata
8 read( *buff, uint8_t panjang) Pembacaan data dari buffer
9 write( *buff, uint8_t panjang) Penulisan data ke buffer untuk
dikirim
10 setChannel(uint8_t kanal) Set kanal dari 0 -127
Sumber : www.scribd.com/document/370202121/Modul-NRF-1
Ketika CSN diatur low, maka kondisi ini menandakan bahwa siap
mengambil intruksi. Setiap intruksi baru harus dimulai dengan transisi high ke low
pada CSN. Pada pararel intruksi SPI word diterapkan pada pin MOSI, status
register bergeser secara serial melalui pin MISO. Perintah SPI untuk pemindahan
lewat empat pin SPI. Parameter seperti frekuensi channel sebanyak 125 channel,
dan data rate (250kbps,1mbps, dan 2mbps) dapat dikonfigurasikan melalui Spi
interface.
Agar dua atau lebih modul dapat saling berkomunikasai, maka modul harus
berada di saluran yang sama. Saluran ini dapat digunakan pada frekuensi yang
berada di pita ISM 2,4 GHz atau lebih, bisa diantara 2,400 hingga 2,525 GHz (2400
hingga 2525 MHz). Setiap saluran memiliki bandwidth kurang dari 1MHz. sehigga
banyak cahnnel yang tersedia adalah 125 channel dengan jarak 1MHz. Jadi, modul
dapat menggunakan 125 saluran berbeda pada satu modul komunikasi yang bekerja
Proses writing bisa berakhir sebelum semua byte dalam register multi-byte
telah ditulis. Dalam hal ini MSByte yang tidak tertulis akan tetap tidak berubah-
ubah. Misalkan LSByte dari RX_ADDR_P0 dapat dimodifikasi dengan satu byte
ke register akan selalu terbaca ke MISO setelah trasisi high ke low pada CSN.
Keterangan :
Operasi SPI pada Gambar 2.13 Modul harus berada dalam kondisi standby
register.
dikontrol melalui antarmuka Data dan Kontrol. NRF24L01 dapat diatur ke mode
statis atau mode otomatis dimana mesin mengontrol status internal. Setiap
mode/urutan otomatis diakhiri dengan interupsi pada pin IRQ. Semua interupsi
2.2.2 MULTICEIVER
Multiceiver adalah fitur dalam NRF24L01, dimana 1 buah NRF dalam mode
Rx (Receiver) dapat melayani penerimaan data dari 6 buah NRF lain dalam mode
Tx(Transceiver) pada satu kanal frekuensi. Secara diagram terlihat pada Gambar
(yaitu PTX1 sampai PTX6) agar mempunyai saluran tersendiri (disebut pipe)
sedemikian rupa sehingga setiap PTX dapat dikenali dan dilayani oleh PRX secara
mandiri. Fitur multiceiver merupakan fitur yang digunakan dalam mode TX dan
RX yang berisi serangkaian enam pipe data pararel dengan masing-masing alamat
yang berbeda. Setiap pipe data memiliki alamat data yang berbeda.
diagram berikut:
15
b. Pipe 5 mempunyi 4 Byte atas yang sama ( Byte 1 sampai Byte 4) dan 1 Byte
open-source hardware yang berdasarkan pada perangkat keras dan perangkat lunak
digunakan untuk membuat perangkat lunak yang ditanamkan pada board Arduino.
Bahasa permrograman arduino mirip dengan bahasa pemrograman C++. Tapi untuk
(IDE) yang canggih. IDE adalah sebuah software yang sangat berperan untuk
memory microcontroller.
komponen inti atau otak dari Mikrokontroler Arduino Nano (versi Arduino Nano
3.xx). Keunggulan dari Arduino Nano ini adalah ukurannya yang kecil sehingga
1. VCC merupakan pin yang berfungsi sebagai pin masukan catu daya digital.
Arduino.
8. Output PWM 8 Bit merupakan pin yang berfungsi untuk data analogWrite().
10. LED merupakan pin yang berfungsi sebagai pin yag diset bernilai HIGH,
maka LED akan menyala, ketika pin diset bernilai LOW maka LED padam.
11. Input Analog (A0-A7) merupakan pin yang berfungsi sebagi pin yang dapat
2. 5 V Tegangan Operasi
Setiap pin beroperasi pada tegangan 5 Volt. Setiap pin mampu menerima atau
sebesar 20-30 KOhm. Sebagai tambahan, beberapa pin Input digital memiliki
➢ Komunikasi serial: pin 0 (RX) dan pin 1 (TX), digunakan untuk menerima
➢ External Interrupt: pin 2 dan pin 3, pin ini dapat dikonfigurasi untuk memicu
sebuah interrupt pada nilai rendah, sisi naik atau turun atau pada saat terjadi
perubahan nilai.
library.
➢ LED: pin 13, terdapat built-in LED yang terhubung ke pin digital 13. Ketika
pin bernilai HIGH maka LED menyala, sebaliknya ketika pin bernilai LOW
Arduino Nano memiliki 8 Input analog yang diberi label A0 sampai A7,
setiap pin menyediakan resolusi sebanyak 10 bit (1024 nilai yang berbeda). Secara
umum pin-pin diukur nilai tegangan dari ground (0V) hingga 5V, walaupun begitu
dimungkinkan untuk mengganti nilai batas atas dengan menggunakan pin AREF
memiliki fungsi khusus yaitu pin A4 (SDA) dan pin A5 (SCL) yang digunakan
untuk komunikasi Two Wire Interface (TWI) atau Inter Integrated Circuit (I2C)
Arduino Nano dapat diaktifkan melalui koneksi USB Mini-B, atau melalui
catu daya eksternal dengan tegangan belum teregulasi antara 6-20 Volt yang
dihubungkan melalui pin 30 atau pin VIN, atau melalui catu daya eksternal
dengan tegangan teregulasi 5 volt melalui pin 27 atau pin 5V. Sumber daya akan
secara otomatis dipilih dari sumber tegangan yang lebih tinggi. Chip FTDI
FT232L pada Arduino Nano akan aktif apabila memperoleh daya melalui USB,
ketika Arduino Nano diberikan daya dari luar (Non-USB) maka Chip FTDI tidak
aktif dan pin 3.3V pun tidak tersedia (tidak mengeluarkan tegangan), sedangkan
LED TX dan RX pun berkedip apabila pin digital 0 dan 1 berada pada posisi
HIGH.
➢ Pin Vin adalah pin untuk mengalirkan sumber tegangan keArduino Nano
➢ Pin 3V3 adalah pin yang meyediakan tegangan teregulasi sebesar 3,3 volt
atmega328. Maka peta memori Arduino Nano sama dengan peta memori pada
mikrokontroler ATmega328.
Flash Memory untuk menyimpan program. Memori flash dibagi kedalam dua
bagian, yaitu bagian program bootloader dan aplikasi seperti terlihat pada Gambar
2.18, Bootloader adalah program kecil yang bekerja pada saat sistem dimulai yang
lokasi untuk register umum, 64 lokasi untuk register I/O, 160 lokasi untuk register
I/O tambahan dan sisanya 2048 lokasi untuk data SRAM internal. Register umum
menempati alamat data terbawah, yaitu 0x0000 sampai 0x001F. Register I/O
23
menempati 64 alamat berikutnya mulai dari 0x0020 hingga 0x005F. Register I/O
tambahan menempati 160 alamat berikutnya mulai dari 0x0060 hingga 0x00FF.
Sisa alamat berikutnya mulai dari 0x0100 hingga 0x08FF digunakan untuk SRAM
internal. Peta memori data dari ATMega328 dapat dilihat pada Gambar 2.19.
Arduino Nano terdiri dari 1 KByte memori data EEPROM. Pada memori
EEPROM, data dapat ditulis / dibaca kembali dan ketika catu daya dimatikan, data
terakhir yang ditulis pada memori EEPROM masih tersimpan pada memori ini, atau
dengan kata lain memori EEPROM bersifat nonvolatile. Alamat EEPROM dimulai
Barcode pertama kali muncul dan diperkenalkan oleh dua orang mahasiswa
pada tahun 1948. Mereka mulai mematenkan inovasi barcode tersebut pada tahun
1949 dan permohonan tersebut baru dikabulkan pada tahun 1952. Namun baru
pada tahun 1996, penemuan mereka mulai digunakan dalam dunia komersial.
Barcode adalah Sebuah kode batang atau barcode adalah susunan garis
cetak vertikal hitam (bar) dan putih (spasi) dengan lebar garis yang berbeda, untuk
menyimpan data – data spesifik seperti kode produksi, nomor identitas dan lainnya,
barcode secara manual, biasanya dicantumkan juga angka - angka atau huruf-huruf
sederhana, pengambilan datanya dilakukan dengan lebih cepat dan lebih akurat.
toko-toko, perusahaan, rumah sakit, perpustakaan dan lain-lain. Port barcode bisa
Barcode satu dimensi biasanya dinamakan linear bar codes (kode berbentuk
baris).
pengenal identitas.
c. Kode 128 barcode full ASCI yang memiliki kerapatan sangat tinggi
serta panjang baris yang bervariasi. Digunakan untuk sistem shiping and
warehouse management.
linear bar codes (barcode satu dimensi) yaitu, Mampu memuat ratusan digit
karakter dan tampilannya juga berbeda dengan satu dimensi. Pada barcode dua
dimensi informasi atau data yang besar bisa disimpan dalam ruang yang kecil.
26
Dengan contoh yaitu PDF417 yang mampu menyimpan lebih dari 2000 karakter
pengiriman pelacakan.
buku.
6. ISSN bar Code: Bekerja berdasarkan nomor ISSN, digunakan pada majalah
di luar AS.
7. Code 128: Digunakan dalam preferensi untuk Code 39 karena lebih kompak.
10. Magnetic Ink Character Recognition (MICR) : Sebuah font khusus yang
11. OCR-A: Format pengenalan karakter optik yang digunakan pada sampul
14. PDF417: Suatu jenis Barcode 2-D barn yang dapat enCode sampai 1108 byte
informasi; dapat terkompresi seperti pada sebuah portabel file data (PDF).
1-reserved
3-Pharmaceuticals.
28
4-in-storecodeforretailers
5-Coupons
6-Standard UPCnumber
8-reserved
9-reserved
2. Guard Bars
Ada tiga guard bars yang ditempatkan diawal, ditengah, dan akhir barcode.
Guards bars bagian awal dan akhir di encode kan sebagai “bar-space-bar” atau
“01010”.
3. Manufacturer code
Kode perusahaan ini ada lima digit bilangan yang secara khusus
4. Product Code
Kode Produk ini terdiri dari 5 digit bilangan yang ditetapkan oleh
yang berbeda dan setiap ukuran yang berbeda memiliki kode produk yang unik.
5. Check Digit
Disebut sebagai digit shelfcheck. Check digit ini terletak dibagian luar
sebelah kanan barcode. Check digit ini merupakan suatu olds Programmer’s trick
untuk memvalidasi digit-digit lainya yang dibaca secara teliti Selanjutnya, masing-
masing batang pada barcode memiliki ketebalan yang berbeda. Ketebalan inilah
yang akan diterjemah kanpada suatu nilai. Demikian, karena ketebalan batang
29
barcode menentukan waktu lintasan bagi titik sinar pembaca yang dipancarkan oleh
alat pembaca.
memilki kontras yang tinggi terhadap celah antara yang menentukan cahaya.
Sisi- sisi batang barcode harus tegak dan lurus, serta tidak ada lubang atau noda
titik tengah permukaannya. Sementara itu, ukuran titik sinar pembaca juga tidak
boleh melebihi celah antara batang barcode. Saat ini, ukuran titik sinar yang
umum digunakan adalah 4 kali titik yang dihasilkan printer pada resolusi 300dpi.
Pada konsep digital, hanya ada 2 sinyal data yang dikenal dan bersifat boolean,
yaitu 0 atau 1. Ada arus listrik atau tidak ada (dengan besaran tegangan tertentu,
misalnya 5 volt dan 0 volt). Barcode menerapkannya pada batang-batang baris yang
terdiri dari warna hitam dan putih. Warna hitam mewakili bilangan 1 dan warna
putih mewakili bilangan 0. Warna hitam akan menyerap cahaya yang dipancarkan
oleh alat pembaca barcode, sedangkan warna putih akan memantulkan balik cahaya
yang berbeda. Ketebalan inilah yang akan diterjemahkan pada suatu nilai.
Saat ini terdapat beberapa jenis instrumen pembaca barcode, yaitu: pena,
laser, serta kamera. Pembaca berbentuk pena memiliki pemancar cahaya dan dioda
foto yang diletakkan bersebelahan pada ujung pena. Pena disentuhkan dan
intensitas cahaya yang dipantulkan dan mengubahnya menjadi sinyal listrik, lalu
permukaan barcode, tapi dapat dilakukan dari jarak yang relatif lebih jauh. Selain
sensor CCD (charge coupled device) untuk merekam foto barcode, baru
Suatu bilangan barcode tunggal sebenarnya terdiri dari tujuh unit. Satu unit
terdiri dari salah satu warna hitam atau putih. Sebuah unit yang berwarna
hitam ditunjukkan dengan sebuah bar, sedangkan yang berwarna putih ditunjukkan
dengan sebuah space (spasi). Cara lain penulisan barcode adalah dengan bilang “1”
untuk menyatakan black bar dan bilangan “0” untuk menyatakan white space.
Ada 4 jenis pembaca Barcode yang ditunjukkan pada tabel berikut ini. Tiap-
Jenis – jenis pembaca Barcode dapat dilihat pada tabel dibawah ini :
31
Sumber : www.olsera.com/id/pos
2.6.5 Interface
Menurut (Dwi Sutadi, 2003) Interface atau antar muka adalah rangkaian
yang bertugas menyesuaikan kerja dari peripheral yang sesuai dengan cara kerja
komputer itu sendiri. Rangkaian ini diperlukan karena besarnya (tegangan, arus,
daya dan kecepatan proses) piranti peripheral kebanyakan tidak sesuai dengan
peripheral input-output device, maka besaran ini harus disesuaikan dengan bantuan
sensor, catu daya, dan lain-lain diperlukan interface. Pengertian interface itu sendiri
Parallel Port merupakan salah satu Interface yang ada dari beberapa jenis
Interface. Parallel Port sudah disediakan dengan sistem serial port untuk
mempunyai kemampuan pengiriman 8 bit data sedangkan serial port hanya dapat
2. Interface Keyboard
saudara tua MCS51 tapi jauh lebih sederhana. Konektor yang umum digunakan
32
saat ini adalah tipe PS/2. Komunikasi pada keyboard adalah secara serial dan
➢ Keyboard mode
➢ RS232 mode
➢ USB mode
menggunakan PS/2 connector. Dibawah ini merupakan bentuk dan fungsi masing-
Fungsi pin Mini-DIN (PS/2) terdapat pada gambar 2.21 dibawah ini :
Dalam keyboard mode ini, barcode memiliki sistem pengiriman data yang
sama dengan keyboard. Sistem pengiriman data barcode ini adalah secara
pada pin clock barcode dan data barcode. Apabila barcode tersebut menerima data
dari buku yang terdapat label barcode yang di scanning maka barcode akan
mengirimkan sinyal clock dan data secara synchronous, yaitu pengiriman data yang
diawali dengan perubahan bit clock dari high ke low (falling edge). Seperti
Sumber : www.Honeyweel.com
Data keluaran barcode berupa scan code yang terdiri atas make code dan
break code yang memiliki nilai yang berbeda untuk setiap karakter (huruf dan
angka). Make code merupakan nilai dari suatu karakter. Sedangkan break code
adalah suatu nilai yang menandakan akhir dari sebuah karakter. Break code terdiri
dari dua byte, byte pertama selalu bernilai FOh, dan byte kedua merupakan nilai
Pembaca Barcode memiliki kinerja yang terbatas Dengan string biner, maka
Saat tombol pada keyboard ditekan, kode dikirim ke CPU host. Dengan bantuan
tabel pencarian ASCII, host dapat menentukan fungsi tombol yang ditekan. Kode
dapat dikenali oleh awalan E0h ke kode pembuatannya. Kode istirahat yang sesuai
untuk kunci terdiri dari awalan byte F0h, diikuti oleh kode pembuatan untuk kunci
itu. Sekali lagi, kunci diperpanjang adalah pengecualian untuk aturan ini dengan
byte F0h ditempatkan setelah byte E0h dari kode pembuatan awal. Kunci PAUSE
kode pembuatannya adalah panjang 8 byte dan dimulai dengan E1h dan bukan E0h.
Kedua, tidak ada kode istirahat. Kode pembuatan dan pemecahan untuk semua
Ada tiga set kode pemindaian yang didefinisikan tetapi hanya kode
pemindaian yang ditetapkan dua yang diakui sepenuhnya dan digunakan sebagai
Untuk lebih jelas mencantumkan kode tombol pada keyboard PS/2 standar,
dengan kode pemindaiannya (set code), terdapat pada lampiran no.4 datasheet tabel
dalam waktu terterntu. Oleh karena itu komunikasi serial lebih lambat dari pada
komunikasi paralel Dalam komunikasi serial dikenal 2 cara pengiriman yaitu secara
sinkron dan asinkron. salah satu metode komunikasi datanya dimana hanya satu bit
data yang dikirimkan melalui satu jalur pada suatu waktu tertentu. Terdapat dua jenis
(pengirim atau penerima) yang menghasilkan clock dan mengirimkan clock tersebut
bersama-sama dengan data. Contoh komunikasi serial sinkron padat dilihat pada
Dalam komunikasi serial sinkron, suatu blok bit ditransmisikan dalam suatu
deretan tanpa kode start dan stop. Frame diawali dengan suatu preamble yang disebut
flag, yang panjangnya 8 bit. Flag yang sama juga dipergunakan sebagai post amble.
Receiver mencari pola flag untuk menandai permulaan 18 frame, yang dikuti beberapa
bit-bit kontrol, bit-bit data, bit-bit kontrol lagi dan diakhiri dengan flag yang berfungsi
sebagai postamble.
37
(pengirim dan penerima) masing-masing menghasilkan clock namun hanya data yang
ditransmisikan, tanpa clock. Agar data yang dikirim sama dengan yang diterima, maka
frekuensi clock harus sama dan terdapat sinkronisasi. Setelah adanya sinkronisasi, maka
pengirim akan mengirimkan datanya sesuai clock pengirim dan penerima akan
membaca data sesuai dengan clock penerima. Contoh komunikasi serial asinkron dapat
Bila tidak ada frame yang ditransmisikan, jalur di antara transmitter dan
receiver dinyatakan dalam status idle. Definisi idle akuivalen terhadap elemen-elemen
pensinyalan untuk biner 1. Sehingga idle dapat berupa adanya tegangan negatif pada
jalur tersebut. Permulaan frame ditandai dengan suatu start bit dengan nilai biner 0,
yang diikuti 5 sampai 8 bit data termasuk bit paritas dan diakhiri dengan bit stop dengan
nilai biner 1.
38
diantaranya:
transmisi data per bit yang dinyatakan dalam satuan Bps (BitperSecond).
Komunikasi serial antara satu modul perangkat elektronik dengan modul lain dalam
penetapan baud rate antara keduanya harus sama, sehingga keduanya bisa
berkomunikasi.
transmisi data yang dikemas dalam bentuk karakter. Dalam satu karakter
diperbolehkan terdiri dari beberapa variasi jumlah bit. Dari sekian variasi yang
diperbolehkan diantaranya adalah terdiri dari 7 bit dan 8 bit (panjang data
karakternya saja). Kedua variasi ini adalah yang paling sering digunakan dalam
3. Bit Parity
Bit parity adalah bit yang digunakan sebagai alat pemeriksaan kesalahan
sederhana dalam proses transmisi data digital. Bit parity ini akan diletakkan setelah
susunan bit data. Bit parity ini ada tiga macam, yaitu : parity ganjil, parity genap
Berdasarkan arah proses komunikasi serial terdapat tiga metode, yaitu Full
1. Full-duplex.
Metode ini merupakan komunikasi antara kedua belah pihak dapat berbagi
informasi dan berkomunikasi secara bersamaan dan interaktif dan dalam waktu
menggunakan dua jalur komunikasi. Kekurangan dari metode ini adalah kecepatan
2. Half-Duplex
pengirim dan penerima dapat saling berbagi informasi dan berkomunikasi secara
interaktif, tetapi tidak dalam waktu yang bersamaan. Apabila keduanya mencoba
3. Simplex
bertukar informasi. Pada komunikasi ini sinyal-sinyal dikirim hanya satu arah
dalam waktu yang bersamaan. Karena melalui satu arah, komunikasi ini tidah
terjadi secara interaktif, informasi hanya disampaikan melalui satu titik tertentu.
40
perangkat periferal cepat jarak pendek. Hal ini juga dapat digunakan untuk
komunikasi antara dua mikrokontroler. Dengan koneksi SPI selalu ada perangkat
synchrounous kecepatan tinggi yang dimiliki oleh Atmega 328. Komunikasi SPI
membutuhkan 3 jalur yaitu MOSI, MISO, dan SCK. Melalui komunikasi ini19 data
master maka pin MOSI sebagai output tetapi jika dikonfigurasi sebagai
2. MISO : Master Input Slave Output artinya jika dikonfigurasi sebagai master
maka pin MISO sebagai input tetapi jika dikonfigurasi sebagai slave maka
3. CLK : Clock jika dikonfigurasi sebagai master maka pin CLK berlaku
sebagai output tetapi jika dikonfigurasi sebagai slave maka pin CLK berlaku
sebagai input. Untuk mengatur mode kerja komunikasi SPI ini dilakukan
2.8.1 SPI Control Register (SPCR) Mode SPCR yang digunakan sebagai
berikut :
komunikasi SPI aktif sedangkan jika bernilai 0 maka komunikasi SPI tidak
aktif.
bernilai 0 maka tekonfigurasi sebagai slave. Pengaturan bit MSTR ini tidak
akan bisa dilakukan jika pin SS dikonfigurasi sebagai input karena jika pin
otomatis dilakukan secara hardware yaitu dengan level tegangan pada SS.
c. Bit-1 SPR 1/0 (SPI Clock Rate Select) SPR1 dan SPR0 digunakan untuk
2.8.2 SPI Status Register (SPSR) Dalam SPCR mode pengaturan yang
proses pengiriman data sudah selesai maka SPIF akan bernilai 1 (High).
untuk menyimpan data yang akan dikirim atau diterima pada komunikasi
SPI.
BAB III
PERANCANGAN DAN PEMBUATAN ALAT
Pada bab ini dibahas mengenai perencangan dan pembuatan alat yang
meliputi perangkat keras (hardware) dan perangkat lunak (software) sebagai satu
TX
Modul
Board
Barcode Scanner Wireless
Arduino Nano NRF24L01
Modul
PC Board
Arduino Nano
Wireless
NRF24L01
(Personal Komputer)
42
43
2. Arduino Nano
Boar arduino nano Merupakan kontrol utama dari sistem untuk memproses
3. NRF24L01
berfungsi menerima perintah atau data yang dikirm oleh TX kemudian data
4. PC (Personal komputer)
Dalam proses baca(read) data barcode, tombol switch pada barcode ditekan
terlebih dahulu maka barcode scanner langsung memproses baca data yang di
scanning kemudian data dari barcode scanner akan di proses oleh Board Arduino
Nano untuk di kirimkan secara wireless (nirkabel) melalui Modul (NRF24L01 TX).
Ketika data yang sudah dikirimkan melalui Modul (NRF24L01 TX) dan
Berhasil di proses (kirim) maka Modul (NRF24L01 RX) akan langsung menerima
data dan membaca (read) dan tulis (write) kemudian data tersebut di tampilkan dan
sebagai komponen inti atau otak dari Mikrokontroler Arduino Nano (versi
Arduino Nano 3.xx). Keunggulan dari Arduino Nano ini adalah ukurannya yang
untuk komunikasi jarak jauh atau nirkabel yang memanfaatkan gelombang RF 2.4
Pada Modul ini menggunakan antarmuka SPI (Serial Parallel Interface) untuk
Berikut ini adalah penjelasan dari fungsi pin-pin Ardunino Nano yang
Sumber : Perancangan
46
Pada Tabel 3.2 Akan dijelaskan pengunaan pin pada Modul NRF24L01
Sumber : Perancangan
Barcode Scanner PS/2 ini digunakan sebagai input data barcode pada Board
Arduino Nano.
pada Gambar 3.5 dalam tugas akhir ini, 2 pin sebagai input Data dan Clock
Pada Table 3.3 Akan di jelaskan penggunaan pin pada socket PS2
Sumber : Perancangan
49
wireless NRF24L01 berbasis Arduino Nano di tunjukan Gambar 3.7. pada bagian
TX dan RX.
START
T
Y APAKAH ADA DATA
BARCODE
YANG DITERIMA DI RX
Baca Data Barcode
Simpan
Data.BarcodeTX
Tampilkan di PC
1. START
Program dimulai
#include <SPI.h>
#include <NRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
uint64_t addrTx = 0x0F0F0F0F01LL; // Alamat TX
struct data_s
{
char barcodetx[15];
};
data_s Data;
RF24 Radio(9,10); // CE = 9 CSN = 10
int SCAN_ENTER = 0x5a;
int SCAN_BREAK = 0xf0;
int breakActive = 0;
int clockPin = 3;
int dataPin = 2;
void setup()
{
Serial.begin(9600);
Radio.begin();
Radio.setChannel(100);
Radio.openWritingPipe( addrTx );
pinMode(dataPin, INPUT);
pinMode(clockPin, INPUT);
pinMode(ledPin, OUTPUT);
}
3. Apakah Scan Enter/di tekan ?
void loop()
51
{
dataValue = dataRead();
byte brikutnya.
if (dataValue == SCAN_BREAK) {
breakActive = 1;
}
4. Merubah Scan Code ke Char characters Berikut ini Cuplikan Programnya
Jika data yang dihasilkan Barcode Scanner sesuai dengan kode maka
Data.barcodetx[i] = buffer[i];
buffer[i] = 0;
i++; } }
Serial.print(Data.barcodetx[5]);
Serial.print(Data.barcodetx[6]);
Serial.print(Data.barcodetx[7]);
Serial.print(Data.barcodetx[8]);
Serial.print(Data.barcodetx[9]);
Serial.print(Data.barcodetx[10]);
Serial.print(Data.barcodetx[11]);
Serial.print(Data.barcodetx[12]);
Serial.println(" [send data to RX]");
bufferPos = 0;
delay(200);
#include <SPI.h>
#include <NRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
uint64_t addrRx = 0x0F0F0F0F01LL; // Alamat RX
struct data_s
{
char barcodetx[15];
};
data_s Data;
RF24 Radio(9,10); // CE = 9 CSN = 10
void setup()
{
Serial.begin(9600);
Radio.begin();
Radio.setChannel(100);
Radio.openReadingPipe(1, addrRx );
Radio.startListening();
delay(200);
}
Programnya :
if (Radio.available())
{ while (Radio.available())
{
3. Baca Data Barcode TX kemudian tampilkan di PC. Berikut ini cuplikan
53
Programnya :
Radio.read(&Data, sizeof(Data));
Serial.println(Data.barcodetx);
Serial.println("Data barcode");
delay(100);
54
barcode scanner sebagai alat scanning kode barcode yang digunakan agar bisa
Node 01
NRF 2
Barcode 1
Client 1
Transmitter
Node 00
NRF 1
Host
Receiver Data
PC
Node 02
NRF 3
Barcode 2
Client 2
Transmitter
Dari Gambar 3.9 di atas untuk Node 00 difungsikan sebagai host yang
menerima data dari client . Untuk Node 01 dan Node 02 difungsikan sebagai client
yang mengirimkan data ke host, dimana Node 01 dan Node 02 difungsikan menjadi
Dari Gambar 3.10 terlihat bahwa satu Modul NRF menjadi host dan 6
langsung ke Komputer Database. Sedangkan NRF2 (Node 01) dan NRF3 (Node
02) difungsikan sebagai client yang bertugas mengirimkan Data ke host secara
Barcode, yang fungsinya untuk menandakan dari mana Kode Barcode tersebut
START START
T T
Apakah Scan Apakah Scan
Enter Enter
Node 1 Node 2
Y Y
Baca Data Barcode 1 Baca Data Barcode 2
Simpan Simpan
Data.BarcodeTX 1 Data.BarcodeTX 2
TX 1 TX 2
Gambar 3.10 Alur Pemrograman Wireless NRF Network Node 01 & Node 02
Sumber : Perancangan
57
START
T
APAKAH ADA DATA
BARCODE 1 & 2
YANG DITERIMA DI RX
Node 00
Y
Baca data barcodeTX
Tampilkan di
komputer database
END
RX
Gambar 3.11 Alur Pemrograman Wireless NRF Network Node 00
Sumber : Perancangan
58
1. START
Program dimulai
programnya :
#include <RF24.h>
#include <RF24Network.h>
#include <SPI.h>
RF24 radio(9, 10); // nRF24L01 (CE,CSN)
RF24Network network(radio); // Include the
radio in the network
const uint16_t this_node01 = 00; // Address to RX
Node 00
struct data_s
{char barcodetx[25];};
data_s Data;
int SCAN_ENTER = 0x5a;
int SCAN_BREAK = 0xf0; // berhenti memindai
int breakActive = 0;
int clockPin = 3;
int dataPin = 2;
int clockValue = 0;
byte dataValue;
bytescanCodes[10]={0x45,0x16,0x1e,0x26,0x25,0x2e,0
x36,0x3d,0x3e,0x46};
char characters[10] = {'0', '1', '2', '3', '4',
'5', '6', '7', '8', '9'};
int quantityCodes = 13;
char buffer[64] = {};
int bufferPos = 0;
int bufferLength = 64;
void setup()
{Serial.begin(9600);
Serial.println("ready to send data");
SPI.begin();
radio.begin();
59
void loop()
{
dataValue = dataRead();
if (dataValue == SCAN_BREAK) {
breakActive = 1; }
Jika data yang dihasilkan Barcode Scanner sesuai dengan kode maka
Data.barcodetx[i] = buffer[i];
buffer[i] = 0;
i++; } }
6. Kirim Data.Barcode (TX1 & TX2) ke RX. Berikut ini cuplikan Programnya
network.update();
RF24NetworkHeader header(this_node01);
Serial.print("\nbarcodetx: ");
Serial.print(Data.barcodetx[0]);
Serial.print(Data.barcodetx[1]);
Serial.print(Data.barcodetx[2]);
Serial.print(Data.barcodetx[3]);
Serial.print(Data.barcodetx[4]);
Serial.print(Data.barcodetx[5]);
Serial.print(Data.barcodetx[6]);
Serial.print(Data.barcodetx[7]);
Serial.print(Data.barcodetx[8]);
Serial.print(Data.barcodetx[9]);
Serial.print(Data.barcodetx[10]);
Serial.print(Data.barcodetx[11]);
Serial.print(Data.barcodetx[12]);
Serial.print(Data.barcodetx[13]=' ');
Serial.print(Data.barcodetx[14]='N');
Serial.print(Data.barcodetx[15]='o');
Serial.print(Data.barcodetx[16]='d');
Serial.print(Data.barcodetx[17]='e');
Serial.print(Data.barcodetx[18]='1');
bufferPos = 0;
bool ok = network.write(header,&Data,
sizeof(Data)); // Send the data
delay(200);
61
1. Inisialisasi pin Arduino Nano RX node 00. Berikut ini cuplikan Programnya
#include <RF24.h>
#include <RF24Network.h>
#include <SPI.h>
RF24 radio(9, 10); // nRF24L01 (CE,CSN)
RF24Network network(radio); // Include the
radio in the network
const uint16_t this_node = 00;
struct data_s
{ char Kalimat[25];
};
data_s Data;
void setup()
{
Serial.begin(9600);
Serial.println("ready to receive data from tx");
SPI.begin();
radio.begin();
network.begin(100, this_node); //(channel, node
address)
radio.setDataRate(RF24_2MBPS); }
2. Data Barcode dari TX diterima. Berikut ini cuplikan Programnya :
network.update();
//====receiving====//
while ( network.available() ){ \
RF24NetworkHeader header;
mengetahui apakah dari sistem komunikasi data menggunakan transciever 2.4 GHz
atau Modul NRFL01 yang berbasis Arduino Nano bisa bekerja sesuai dengan
fungsinya yang telah di rencanakan, maka dapat dipastikan sistem dapat berfungsi
Nano dapat bekerja dengan fungsi Input/Output Arduino Nano. Blok pengujiannya
LED merah
Tombol/
Arduino Nano
swicth
LED kuning
62
63
4.1.1. Tujuan
Tujuan dari pengujian ini adalah untuk menguji fungsi input/output Arduino
Nano.
2. Project board
void setup()
{
pinMode (2, INPUT_PULLUP ); //pin D2 sebagai
input push button
pinMode (5, OUTPUT );//pin D5 sebagai output LED
MERAH
pinMode (6, OUTPUT );//pin D6 sebagai output LED
KUNING
}
void loop ()
{
if(digitalRead(2)==LOW){ //jika push button
ditekan,maka
digitalWrite (5, HIGH); //LED MERAH ON
digitalWrite (6, LOW); //LED KUNING OFF
}
else{ //jika push button
tidak ditekan,maka
digitalWrite (5, LOW); //LED MERAH OFF
digitalWrite(6, HIGH); //LED KUNING ON
} }
Arduino Nano.
64
Dari hasil pengujian yang dilakukan, didapatkan hasil seperti pada Gambar
Gambar 4.2 Pengujian pada saat push button Tidak Ditekan (OFF)
Sumber : Pengujian
No. Switch Pin D5 (V) LED Merah Pin D6(V) LED Kuning
1. ON 4.25 ON 0 OFF
2. OFF 0 OFF 4.30 ON
Sumber : Pengujian
4.1.5. Analisa
Arduino Nano dapat melakukan fungsi Input dan Output sesuai program
yang telah dibuat. Pada saat push button ON (ditekan) maka LED merah ON dengan
tegangan pada pin D5 4,25 V dan LED Kuning OFF dengan tegangan pada pin D6
0 V. Saat push button OFF (tidak ditekan) maka LED Merah OFF dengan tegangan
pada pin D5 0 V dan LED Kuning ON dengan tegangan pada pin D6 4,30 V.
66
Arduino Nano yang masing-masing pada bagian Arduino Nano di lengkapi dengan
TX
RX
Gambar 4.4 Pengujian Modul Wireless NRF24L01
Sumber : Pengujian
4.2.1 Tujuan
2. NRF24L01
• Untuk bagian Tx :
#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>
uint64_t pipe = 0xF0F0F0F0F01LL;
uint8_t CE = 9;
uint8_t CSN = 10;
int n = 0;
boolean Flag = false;
struct payload
{char Kata[25];};
payload Data;
RF24 Radio(CE, CSN);
void setup()
{ Serial.begin(9600);
Radio.begin();
Radio.setChannel(100); //set berbeda untuk tiap
pasangan node
Radio.openReadingPipe(1, pipe);
Radio.startListening();
}void loop(){
if ( Radio.available() )
{Radio.read(&Data, sizeof(Data) );
Serial.println(Data.Kata);}
if (Flag == true)
{Radio.stopListening(); delay(100);
Radio.openWritingPipe(pipe); delay(100);
Radio.write(&Data, sizeof(Data) ); delay(100);
Flag = false;
Radio.startListening();
delay(100);
}}void serialEvent()
{while (Serial.available() )
{char data = (char)Serial.read();
Data.Kata[n] = data; n++;
68
• Untuk bagian Rx :
#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>
uint64_t pipe = 0xF0F0F0F0F01LL;
uint8_t CE = 9;
uint8_t CSN = 10;
int n = 0;
boolean Flag = false;
struct payload
{char Kata[25];};
payload Data;
RF24 Radio(CE, CSN);
void setup()
{ Serial.begin(9600);
Radio.begin();
Radio.setChannel(100); //set berbeda untuk tiap
pasangan node
Radio.openReadingPipe(1, pipe);
Radio.startListening();
}void loop()
{if ( Radio.available() )
{ Radio.read(&Data, sizeof(Data) );
Serial.println(Data.Kata);}
if (Flag == true)
{Radio.stopListening(); delay(100);
Radio.openWritingPipe(pipe); delay(100);
Radio.write(&Data, sizeof(Data) ); delay(100);
Flag = false;
Radio.startListening();
delay(100);}}void serialEvent()
{while (Serial.available() ){
char data = (char)Serial.read();
Data.Kata[n] = data; n++;
if (data == '_') { Flag = true; n=0; }}}
4.2.5 Analisa
Merupakan serial monitor TX dan COM 3 merupakan serial monitor RX. Dari hasil
baik terlihat dari pesan “WAN BUDIMAN 16220002_ “ yang dikirimkan TX lalu
Arduino Nano. Dimana Barcode Scanner yang digunakan merupakan jenis Barcode
Nano dan Arduino Nano terhubung langsung ke PC. Pengujian ditunjukkan pada
Gambar 4.6.
PC
Tampilkan data barcode di Arduino Nano
Serial Monitor
4.3.1 Tujuan
Tujuan dari pengujian ini adalah untuk menguji komunikasi antara Barcode
Scanner dengan Arduino Nano serta antar Arduino dengan PC apakah bisa
2. Barcode Scanner
3. Serial Monitor
71
4.3.5 Analisa
Barcode Scanner PS2 untuk mendapatkan data Barcode berjalan dengan baik.
Terlihat dari tampilan di serial monitor yang sesuai dengan data Barcode yang di
Scan. Berikut merupakan Data Barcode Gambar 4.9. yang di ambil dan sesuai
TX
Modul
Board
Barcode Scanner Wireless
Arduino Nano NRF24L01
Modul
PC Board
Arduino Nano
Wireless
NRF24L01
(Personal Komputer)
RX
Gambar 4.10 Blok Diagram Sistem Keseluruhan
Sumber : Pengujian
4.4.1 Tujuan
Perancangan dan dapat bekerja dengan program yang telah dibuat, dengan
menggunakan Input-an Barcode Scanner PS2 dan Data Barcode yang di Scan
NRF24l01.
75
3. Barcode Scanner
• Untuk bagian Tx :
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
uint64_t addrTx = 0x0F0F0F0F01LL; // Alamat TX
struct data_s
{char barcodetx[15];};
data_s Data;
RF24 Radio(9,10); // CE = 9 CSN = 10
int SCAN_ENTER = 0x5a;
int SCAN_BREAK = 0xf0;
int breakActive = 0;
int clockPin = 3;
int dataPin = 2;
int clockValue = 0;
byte dataValue;
bytescanCodes[10]={0x45,0x16,0x1e,0x26,0x25,0x2e,0
x36,0x3d,0x3e,0x46};char characters[10]={'0', '1',
'2', '3', '4', '5', '6', '7', '8', '9'};int
quantityCodes = 13;
char buffer[64] = {};
int bufferPos = 0;
int bufferLength = 64;
void setup(){ Serial.begin(9600);
Radio.begin();
Radio.setChannel(100);
Radio.openWritingPipe( addrTx );
pinMode(dataPin, INPUT);
pinMode(clockPin, INPUT);
pinMode(ledPin, OUTPUT);
} void loop()
{
76
dataValue = dataRead();
if (dataValue == SCAN_BREAK)
{ breakActive = 1;}
for (int i = 0; i < quantityCodes; i++) {
byte temp = scanCodes[i];
if(temp == dataValue){
if(!breakActive == 1){
buffer[bufferPos]=characters[i];
bufferPos++;
}}}
if(dataValue == SCAN_ENTER){
Serial.print("\nbuffer: ");
int i=0;
if (buffer[i] != 0) {
while(buffer[i] != 0) {
Serial.print( buffer[i] );
Data.barcodetx[i] = buffer[i];
buffer[i] = 0;
i++;}}
Serial.println(" [Enter]");
bufferPos = 0;
digitalWrite(ledPin, HIGH);
delay(300);
digitalWrite(ledPin, LOW);
Radio.write( &Data, sizeof(Data) );
delay (100);
Serial.print("\nbarcodetx: ");
Serial.print(Data.barcodetx[0]);
Serial.print(Data.barcodetx[1]);
Serial.print(Data.barcodetx[2]);
Serial.print(Data.barcodetx[3]);
Serial.print(Data.barcodetx[4]);
Serial.print(Data.barcodetx[5]);
Serial.print(Data.barcodetx[6]);
Serial.print(Data.barcodetx[7]);
Serial.print(Data.barcodetx[8]);
Serial.print(Data.barcodetx[9]);
Serial.print(Data.barcodetx[10]);
Serial.print(Data.barcodetx[11]);
Serial.print(Data.barcodetx[12]);
Serial.println(" [send data to RX]");
bufferPos = 0;
delay(200);
}if(dataValue != SCAN_BREAK){
breakActive = 0;
} dataValue = 0; }
int dataRead() {
byte val = 0;
while (digitalRead(clockPin));
77
while (!digitalRead(clockPin));
while (digitalRead(clockPin));
for (int offset = 0; offset < 8; offset++) {
while (digitalRead(clockPin));
val |= digitalRead(dataPin) << offset;
while (!digitalRead(clockPin));}
while (digitalRead(clockPin)); // Wait
for LOW.while (!digitalRead(clockPin)); // Wait
for HIGH.
while (digitalRead(clockPin)); // Wait for
LOW.
while (!digitalRead(clockPin)); // Wait for
HIGH.
return val; }
• Untuk Bagian RX :
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
Arduino Nano.
scan.
Dari pengujian yang dilakukan, didapatkan hasil seperti Gambar 4.11 (untuk
Barcode Scanner dan Modul Wireless NRF2L01) dan Gambar 4.12. (untuk hasil
Data hasil pengujian pada Barcode Scanner terlihat pada Gambar 4.12.
dimana COM5 adalah (TX) dan COM3 (RX). (TX) adalah bagian Barcode Scanner
Data hasil pengujian menampilkan data barcode yang dikirim lewat modul
Wireless NRF24L01 dan di tampilkan lewat Borland Delphi terlihat pada Gambar
4.13.
dimana COM3 merupakan serial Monitor RX dan data barcode yang di tampilkan
81
di boarland delphi sama dengan data yang di tampilkan di serial monitor, dari hasil
pengujian, komuniksi antara barcode scanner dengan Arduino dan antara Modul
NRF24l01 berjalan dengan baik, terlihat data barcode yang dihasilkan dari barcode
scanner dapat dikirim melalui modul wireless NRF24l01 yang dikirimkan TX dan
diterima oleh RX. Dengan data Barcode yang benar dan akurat.
82
TX 1
BARCODE
Board Modul
SCANNER
Node 1 Arduino Nano NRF24L01
PC Board Modul
(Personal Komputer) Arduino Nano NRF24L01
RX
BARCODE
Board Modul
SCANNER
Node 2 Arduino Nano NRF24L01
TX2
Gambar 4.14 Blok Diagram Sistem NRF Network
Sumber : Pengujian
2. Modul NRF24L01
• Untuk bagian Tx 1 :
#include <RF24.h>
#include <RF24Network.h>
#include <SPI.h>
RF24 radio(9, 10); // nRF24L01 (CE,CSN)
RF24Network network(radio); // Include the radio
in the network
const uint16_t this_node01 = 00;// Address of this
node in Octal format
struct data_s
{char barcodetx[25];};
data_s Data;
int SCAN_ENTER = 0x5a;
int SCAN_BREAK = 0xf0;
int breakActive = 0;
int clockPin = 3;
int dataPin = 2;
int clockValue = 0;
byte dataValue;
bytescanCodes[10]={0x45,0x16,0x1e,0x26,0x25,0x2e,0x3
6,0x3d,0x3e,0x46};
char characters[10] = {'0', '1', '2', '3', '4', '5',
'6', '7', '8', '9'};
int quantityCodes = 13;
char buffer[64] = {};
int bufferPos = 0;
int bufferLength = 64;
void setup()
{Serial.begin(9600);
Serial.println("ready to send data");
SPI.begin();
radio.begin();
network.begin(100, this_node01); //(channel, node
address)
radio.setDataRate(RF24_2MBPS);
pinMode(dataPin, INPUT);
pinMode(clockPin,INPUT);
pinMode(ledPin , OUTPUT);
RF24NetworkHeader header(this_node01);
(Data.barcodetx[0]='T');
(Data.barcodetx[1]='X');
(Data.barcodetx[2]='1');
(Data.barcodetx[3]=' ');
(Data.barcodetx[4]='O');
84
(Data.barcodetx[5]='K');
(Data.barcodetx[6]='E');
Bool ok =network.write(header,&Data,sizeof(Data));
} void loop() {
dataValue = dataRead();
if (dataValue == SCAN_BREAK) {
breakActive = 1; }
for (int i = 0; i < quantityCodes; i++) {
byte temp = scanCodes[i];
if(temp == dataValue){
if(!breakActive == 1){
buffer[bufferPos]=
characters[i];
bufferPos++;
} } } if(dataValue == SCAN_ENTER){
Serial.print("\nbuffer: ");
// Read the buffer//baca buffer
int i=0;
if (buffer[i] != 0) {
while(buffer[i] != 0) {
Serial.print( buffer[i] );Data.barcodetx[i] =
buffer[i];buffer[i] = 0; i++;}}
Serial.println(" [Enter]");
bufferPos = 0;
// Blink the LED
digitalWrite(ledPin, HIGH);
delay(300);
digitalWrite(ledPin, LOW);
network.update();
RF24NetworkHeader header(this_node01);
Serial.print("\nbarcodetx: ");
Serial.print(Data.barcodetx[0]);
Serial.print(Data.barcodetx[1]);
Serial.print(Data.barcodetx[2]);
Serial.print(Data.barcodetx[3]);
Serial.print(Data.barcodetx[4]);
Serial.print(Data.barcodetx[5]);
Serial.print(Data.barcodetx[6]);
Serial.print(Data.barcodetx[7]);
Serial.print(Data.barcodetx[8]);
Serial.print(Data.barcodetx[9]);
Serial.print(Data.barcodetx[10]);
Serial.print(Data.barcodetx[11]);
Serial.print(Data.barcodetx[12]);
Serial.print(Data.barcodetx[13]=' ');
Serial.print(Data.barcodetx[14]='N');
Serial.print(Data.barcodetx[15]='o');
Serial.print(Data.barcodetx[16]='d');
Serial.print(Data.barcodetx[17]='e');
85
Serial.print(Data.barcodetx[18]='1');
bufferPos = 0;
bool ok = network.write(header,&Data, sizeof(Data));
// Send the data
delay(200); }
// Reset the SCAN_BREAK state if the byte was
a normal one//setel ulag status scan_break jika byte
kembali normal
if(dataValue != SCAN_BREAK){
breakActive = 0; }
dataValue = 0;
}
int dataRead() {
byte val = 0;
while (digitalRead(clockPin));
while (!digitalRead(clockPin));
while (digitalRead(clockPin));
for (int offset = 0; offset < 8; offset++) {
while (digitalRead(clockPin));
val |= digitalRead(dataPin) << offset;
while (!digitalRead(clockPin));}
while (digitalRead(clockPin));
while (!digitalRead(clockPin));
while (digitalRead(clockPin));
while (!digitalRead(clockPin));
return val;}
• Untuk Bagian Tx 2 :
#include <RF24.h>
#include <RF24Network.h>
#include <SPI.h>
RF24 radio(9, 10); // nRF24L01 (CE,CSN)
RF24Network network(radio);// Include the radio in
the network
const uint16_t this_node02 = 00;
struct data_s
{ char barcodetx[25]; };
data_s Data;
int SCAN_ENTER = 0x5a;
int SCAN_BREAK = 0xf0;
int breakActive = 0;
int clockPin = 3;
int dataPin = 2;
int clockValue = 0;
byte dataValue;
bytescanCodes[10]={0x45,0x16,0x1e,0x26,0x25,0x2e,0
x36,0x3d,0x3e,0x46;
char characters[10] = {'0', '1', '2', '3', '4',
'5', '6', '7', '8', '9'};
86
digitalWrite(ledPin, HIGH);
delay(300);
digitalWrite(ledPin, LOW
network.update();
RF24NetworkHeader header(this_node02);
Serial.print("\nbarcodetx: ");
Serial.print(Data.barcodetx[0]);
Serial.print(Data.barcodetx[1]);
Serial.print(Data.barcodetx[2]);
Serial.print(Data.barcodetx[3]);
Serial.print(Data.barcodetx[4]);
Serial.print(Data.barcodetx[5]);
Serial.print(Data.barcodetx[6]);
Serial.print(Data.barcodetx[7]);
Serial.print(Data.barcodetx[8]);
Serial.print(Data.barcodetx[9]);
Serial.print(Data.barcodetx[10]);
Serial.print(Data.barcodetx[11]);
Serial.print(Data.barcodetx[12]);
Serial.print(Data.barcodetx[13]=' ');
Serial.print(Data.barcodetx[14]='N');
Serial.print(Data.barcodetx[15]='o');
Serial.print(Data.barcodetx[16]='d');
Serial.print(Data.barcodetx[17]='e');
Serial.print(Data.barcodetx[18]='2');
bufferPos = 0;
bool ok =network.write(header,&Data,sizeof(Data));
delay(200);
}
if(dataValue != SCAN_BREAK){
breakActive = 0;}
dataValue = 0; }
int dataRead() {
byte val = 0;
while (digitalRead(clockPin));
while (!digitalRead(clockPin));
while (digitalRead(clockPin));
for (int offset = 0; offset < 8; offset++) {
while (digitalRead(clockPin));
val |= digitalRead(dataPin) << offset;
while (!digitalRead(clockPin));
} while (digitalRead(clockPin));
while (!digitalRead(clockPin));
while (digitalRead(clockPin));
while (!digitalRead(clockPin));
return val;
}
88
#include <RF24.h>
#include <RF24Network.h>
#include <SPI.h>
RF24 radio(9, 10); // nRF24L01 (CE,CSN)
RF24Network network(radio); // Include the radio
in the network
const uint16_t this_node = 00;
struct data_s
{
char Kalimat[25];
};
data_s Data;
void setup()
{
Serial.begin(9600);
Serial.println("ready to receive data from tx");
SPI.begin();
radio.begin();
network.begin(100, this_node); //(channel, node
address)
radio.setDataRate(RF24_2MBPS);
}
void loop()
{
network.update(); // Check the network regularly
//====receiving====//
while ( network.available() )
{
RF24NetworkHeader header;
data_s Data;
network.read(header,&Data,sizeof(Data));
Serial.println(Data.Kalimat);
}
}
89
Dari pengujian yang dilakukan, didapatkan hasil seperti Gambar 4.15 (untuk
barcode scanner dan Modul Wireless NRF2L01) dan Gambar 4.17. (untuk hasil
Data hasil Pengujian pada Barcode Scanner terlihat pada Gambar 4.17.
dimana COM3 (RX) node 00. Sedangkan (TX) adalah bagian Barcode Scanner
yang mengambil data yaitu (TX 1 yang berarti bagian node 01 = Barcode Scanner
Barcode ke RX.
Berikut adalah Data Barcode yang di ambil sebagai sample untuk pengujian
NRF Network menggunakan lebih dari satu Barcode Scanner terlihat pada gambar
4.18.
Scanner
Dari pengujian yang dilakukan, didapatkan hasil seperti Gambar 4.19 (untuk
Barcode Scanner dan Modul Wireless NRF2L01) dan Gambar 4.20. (untuk hasil
Gambar 4.21.
ditampilkan di Borland Dephi lalu Data Barcode disimpan di Database yang telah
disediakan terlihat pada Gambar 4.22. Data Barcode digunakan untuk menyimpan
Terlihat pada gambar 4.23 Pada akhir Data Barcode terdapat kode Node 1
dan Node 2. Pada bagian Node 1 berarti Data Barcode di scanning oleh Barcode
Scanner 1 dan Node 2 berarti Data Barcode di scanning oleh Barcode scanner yang
ke 2.
Terlihat pada Gambar 4.20 dan Gambar 4.21 menunjukkan pengujian yang
komunikasi NRF Network bisa bekerja dengan baik, antara Barcode Scanner
dengan Arduino Nano dan Modul wireless NRF2401 berjalan dengan lancar,
terlihat Data Barcode yang dihasilkan dari Barcode Scanner dapat dikirim melalui
NRF Network program jadi lebih simple dan pengiriman data yang cepat serta Data
Hasil pengujian pengiriman data barcode dari node transmitter menuju node
receiver dengan menggunakan modul NRF24l01 tanpa antena external dapat dilihat
Sumber : Pengujian
pula 5x kesesuaian data antara input dan output kode barcode dengan
persentase100%.
Dari jumlah pengujian 6 s.d. 10 dengan jarak lebih dari 40 meter, data yang
diterima tidak sesuai atau tidak ada data yang diterima di PC.
Dari pengujian pada tabel 4.2 diatas dapat disimpulkan bahwa sistem
hanya dapat melakukan kirim dan terima data maksimal jarak 40 Meter.
97
Sumber : Pengujian
Dari 5x jumlah pengujian, Dari hasil pegujian diatas terlihat bahwa data
NRF24L01 yang bisa dikirim hanya 40% karena adanya penghalang maka NRF
tidak bisa maksimal mengirimkan data. Untuk hasil error 60% atau data yang
dikirim kan tidak bisa ditampilkan di serial monitor pada PC (Personal Komputer)
sebagai berikut :
NRF24L01.
MS.Acces.
98
99
5.2 Saran
Arduino Nano” Dalam melakukan penyusunan skripsi mulai pembuatan alat dapat
beroperasi, penyusun mendapatkan hasil yang baik dan memuaskan namun walau
alat masih terdapat banyak kelemahan yang perlu dilakukan perbaikan agar kinerja
sistem lebih optimal, diantaranya mampu membaca data barcode 2D dan 3D yang
bilangan karakter nya lebih banyak serta jarak pengiriman data yang lebih jauh dan
Untuk itu perlu adanya repeater sebagai penghubung atau penguat jaringan
karna saat ad penghalang maka sinyal wireless pada NRF tidak bisa terhubung
dengan baik maka dari itu peru adanya node yang berfungsi manjadi repeater
Datasheet NRF24L01.
100
101
LAMPIRAN