Laporan Akhir M4

Laporan Akhir Modul IV

Kunci Kantor Menggunakan Password


1. Latar Belakang[KEMBALI]

Kunci memegang peran penting dalam sebuah sistem keamanan. Sistem keamanan pintu kantor yang ada sekarang ini sebagian besar masih menggunakan kunci mekanik konvensional. Kunci mekanik konvensional terdiri dari beberapa teknis kerja yaitu grendel, tuas, dan silinder. Kunci grendel adalah model kunci pintu tradisional yang bekerja tanpa membutuhkan anak kunci untuk membukanya, hanya cukup ditarik atau didorong secara manual menggunakan tangan. Kunci tuas adalah model kunci yang memiliki bentuk memanjang yang terdiri dari per dan lempengan bergerigi dengan jumlah gerigi sedikit dan sederhana. Sedangkan kunci silinder prinsip kerjanya hampir sama dengan kunci tuas hanya saja bentuk gerigi dibuat sedemikian rupa dan rumit. Lekukan pada gerigi tersebut berfungsi untuk memutar silinder pada slot sehingga bisa dibuka dan ditutup.
Saat ini sudah ada beberapa model kunci pintu kantor modern yang cara kerjanya secara digital yang diklaim lebih handal dan aman dibanding kunci konvensional. Saat ini ada beberapa model kunci pintu digital yang ada di pasar indonesia, yaitu model PIN, RFID, Sidik Jari, dan remote. PIN (Personal Identification Number) adalah sistem pengamanan yang menngunakan kombinasi angka untuk dapat mengakses keamanan terebut, untuk jenis RFID (Radio Frequency Identification) atau Identifikasi Frekuensi Radio adalah sebuah metode identifikasi dengan menggunakan sarana yang disebut label RFID atau transponder untuk menyimpan dan mengambil data jarak jauh. Pengguna harus memiliki kartu RFID yang sudah tercatat pada sistem dan mendekatkan pada batang kunci, hingga model kunci pintu dengan tingkat akurasi tinggi dengan identifikasi sidik jari serta kontrol kunci pintu menggunakan remote. Model kunci pintu ini memiliki berbagai mekanik kerja yang berbeda, diantaranya adalah model selot magnetik, pneumatik dan elektromekanik dengan variasi berbagai bentuk.
Berdasarkan hal tersebut, dapat dibuat pengaman pintu menggunakan verifikasi password menggunakan arduino dan selot kunci elektro-mekanik. Model ini terinspirasi dari kunci PIN yang sudah ada dengan penambahan layar penampil LCD dan menggunakan password yang terdiri dari kombinasi angka dan huruf menggunakan keypad matrix 4x4. 

2. Tujuan[KEMBALI]

a. Mengamankan ruangan kantor dengan password.
b. Mengamankan ruangan kantor dari orang yang terkena demam.

3.Landasan Teori[KEMBALI]

a. Arduino

Arduino adalah kit elektronik atau papan rangkaian elektronik open source yang di dalamnya terdapat komponen utama yaitu sebuah chip mikrokontroler dengan jenis AVR dari perusahaan Atmel. Arduino yang kita gunakan dalam praktikum ini adalah Arduino Uno yang menggunakan chip AVR ATmega 328P. Dalam memprogram Arduino, kita bisa menggunakan komunikasi serial agar Arduino dapat berhubungan dengan komputer ataupun perangkat lain.
Adapun spesifikasi dari Arduino Uno ini adalah sebagai berikut :

Microcontroller

Atmega328P

Operating Voltage

5V

Input Voltage (recommended)

7-12V

Input Voltage (limit)

6-20V

Digital I/O Pins

14 (of which 6 provide PWM output)

PWM Digital I/O Pins

6

Analog Input Pins

6

DC Current per I/O Pin

20mA

DC Current for 3.3V Pin

50Ma

Flash Memory

32KB of which 0.5KB used by bootloader

SRAM

2KB

EEPROM

1KB

Clock Speed

16MHz

Bagian-bagian Arduino UNO :
- Power USB : Digunakan untuk menghubungkan papan arduino dengan komputer lewat koneksi   USB.
- Power Jack : Supply atau sumber listrik untuk arduino dengan tipe jack. Input DC 5-12V.
- Crystal Oscillator : Kristal ini digunakan sebagai layaknya detak jantung pada arduino. Jumlah   cetak menunjukkan 16000 atau 16000 kHz, atau 16 MHz.
- Reset : Digunakan unttuk mengulang program arduino dari awal atau reset.
- Digital Pins I/O : Papan Arduino UNO memiliki 14 Digital Pin. Berfungsi untuk memberikan      nilai logika (0 atau 1). Pin berlabel “~” adalah pin-pin PWM (Pulse Width Modulation) yang   dapat digunakan untuk menghasilkan PWM.
- Analog Pins : Papan Arduino UNO memiliki 6 pin analog A0 sampai A5. Digunakan untuk          membaca sinyal atau sensor analog seperti sensor jarak jauh, suhu dsb, dan mengubahnya      menjadi nilai digital.
- LED Power Indicator : Lampu ini akan menyala dan menandakan Papan Arduino mendapatkan   supply listrik dengan baik.

b. Pulse Width Modulation 

PWM (Pulse Width Modulation) adalah salah satu teknik modulasi dengan mengubah lebar pulsa (duty cylce) dengan nilai amplitudo dan frekuensi yang tetap. Satu siklus pulsa merupakan kondisi high kemudian berada di zona transisi ke kondisi low. Lebar pulsa PWM berbanding lurus dengan amplitudo sinyal asli yang belum termodulasi. Duty Cycle adalah perbandingan antara waktu ON (lebar pulsa High) dengan perioda. Duty Cycle biasanya dinyatakan dalam bentuk persen (%).
Duty Cycle = tON / ttotal
tON = Waktu ON atau Waktu dimana tegangan keluaran berada pada posisi tinggi (high atau 1)
tOFF = Waktu OFF atau Waktu dimana tegangan keluaran berada pada posisi rendah(low atau 0)
ttotal = Waktu satu siklus atau penjumlahan antara tON dengan tOFF atau disebut juga dengan “periode satu gelombang”.

Pada board Arduino Uno, pin yang bisa dimanfaatkan untuk PWM adalah pin yang diberi tanda tilde (~), yaitu pin 3, 5, 6, 9, 10, dan pin 11. Pin-pin tersebut merupakan pin yang bisa difungsikan untuk input analog atau output analog. Oleh sebab itu, jika akan menggunakan PWM pada pin ini, bisa dilakukan dengan perintah analogWrite(); 
PWM pada arduino bekerja pada frekuensi 500Hz, artinya 500 siklus/ketukan dalam satu detik. Untuk setiap siklus, kita bisa memberi nilai dari 0 hingga 255. Ketika kita memberikan angka 0, berarti pada pin tersebut tidak akan pernah bernilai 5 volt (pin selalu bernilai 0 volt). Sedangkan jika kita memberikan nilai 255, maka sepanjang siklus akan bernilai 5 volt (tidak pernah 0 volt). Jika kita memberikan nilai 127 (kita anggap setengah dari 0 hingga 255, atau 50% dari 255), maka setengah siklus akan bernilai 5 volt, dan setengah siklus lagi akan bernilai 0 volt. Sedangkan jika jika memberikan 25% dari 255 (1/4 * 255 atau 64), maka 1/4 siklus akan bernilai 5 volt, dan 3/4 sisanya akan bernilai 0 volt, dan ini akan terjadi 500 kali dalam 1 detik.

c. Analog to Digital Converter

ADC atau Analog to Digital Converter merupakan salah satu perangkat elektronika yang digunakan sebagai penghubung dalam pemrosesan sinyal analog oleh sistem digital. Fungsi utama dari fitur ini adalah mengubah sinyal masukan yang masih dalam bentuk sinyal analog menjadi sinyal digital dengan bentuk kode-kode digital. Ada 2 faktor yang perlu diperhatikan pada proses kerja ADC yaitu kecepatan sampling dan resolusi.

Kecepatan sampling menyatakan seberapa sering perangkat mampu mengkonversi sinyal analog ke dalam bentuk sinyal digital dalam selang waktu yang tertentu. Biasa dinyatakan dalam sample per second (SPS). Sementara Resolusi menyatakan tingkat ketelitian yang dimilliki. Pada Arduino, resolusi yang dimiliki adalah 10 bit atau rentang nilai digital antara 0 - 1023. Dan pada Arduino tegangan referensi yang digunakan adalah 5 dengan tegangan 0 - 5 volt. Pada Arduino, menggunakan pin analog input yang diawali dengan kode A( A0- A5 padaArduino Uno). Fungsi untuk mengambil data sinyal input analog menggunakan analogRead(pin);

d. Komunikasi

Universal Asynchronous Receiver Transmitter (UART)
UART (Universal Asynchronous Receiver-Transmitter) adalah bagian perangkat keras komputer yang menerjemahkan antara bit-bit paralel data dan bit-bit serial. UART biasanya berupa sirkuit terintegrasi yang digunakan untuk komunikasi serial pada komputer atau port serial perangkat periperal.
Cara Kerja Komunikasi UART
Data dikirimkan secara paralel dari data bus ke UART1. Pada UART1 ditambahkan start bit, parity bit, dan stop bit kemudian dimuat dalam satu paket data. Paket data ditransmisikan secara serial dari Tx UART1 ke Rx UART2. UART2 mengkonversikan data dan menghapus bit tambahan, kemudian di transfer secara parallel ke data bus penerima.

Serial Peripheral Interface (SPI)
Serial Peripheral Interface ( SPI ) merupakan salah satu mode komunikasi serial synchrounous kecepatan tinggi yang dimiliki oleh ATmega 328. Komunikasi SPI membutuhkan 3 jalur yaituMOSI, MISO, dan SCK. Melalui komunikasi ini data dapat saling dikirimkan baik antara mikrokontroller maupun antara mikrokontroller dengan peripheral lain di luar mikrokontroler.
-MOSI : Master Output Slave Input Artinya jika dikonfigurasi sebagai master maka pin MOSI     sebagai output tetapi jika dikonfigurasi sebagai slave maka pin MOSI sebagai input.
-MISO : Master Input Slave Output Artinya jika dikonfigurasi sebagai master maka pin MISO     sebagai input tetapi jika dikonfigurasi sebagai slave maka pin MISO sebagai output.
-SCLK : Clock Jika dikonfigurasi sebagai master maka pin CLK berlaku sebagai output tetapi jika  dikonfigurasi sebagai slave maka pin CLK berlaku sebagai input.
-SS/CS : Slave Select/ Chip Select adalah jalur master memilih slave mana yang akan dikirimkan  data.
Cara Kerja Komunikasi SPI
Sinyal clock dialirkan dari master ke slave yang berfungsi untuk sinkronisasi. Master dapat memilih slave mana yang akan dikirimkan data melalui slave select, kemudian data dikirimkan dari master ke slave melalui MOSI. Jika master butuh respon data maka slave akan mentransfer data ke master melalui MISO.

Inter Integrated Circuit (I2C)
Inter Integrated Circuit atau sering disebut I2C adalah standar komunikasi serial dua arahmenggunakan dua saluran yang didisain khusus untuk mengirim maupun menerima data. Sistem I2C terdiri dari saluran SCL (Serial Clock) dan SDA (Serial Data) yang membawa informasi data antara I2C dengan pengontrolnya.
Pada I2C, data ditransfer dalam bentuk message yang terdiri dari kondisi start, Address Frame, R/W bit, ACK/NACK bit, Data Frame 1, Data Frame 2, dan kondisi Stop. Kondisi start dimana saat pada SDA beralih dari logika high ke low sebelum SCL.Kondisi stop dimana saat pada SDA beralih dari logika low ke high sebelum SCL. 
R/W bit berfungsi untuk menentukan apakah master mengirim data ke slave atau meminta data dari slave. (logika 0 = mengirim data ke slave, logika 1 = meminta data dari slave) ACK/NACK bit berfungsi sebagai pemberi kabar jika data frame ataupun address frame telahditerima receiver.

e. Sensor PIR

Pancaran infra merah masuk melalui lensa Fresnel dan mengenai sensor pyroelektrik, karena sinar infra merah mengandung energi panas maka sensor pyroelektrik akan menghasilkan arus listrik. Arus listrik inilah yang akan menimbulkan tegangan dan dibaca secara analog oleh sensor. Kemudian sinyal ini akan dikuatkan oleh penguat dan dibandingkan oleh komparator dengan tegangan referensi tertentu Untuk manusia sendiri memiliki suhu badan yang dapat menghasilkan pancaran infra merah dengan panjang gelombang antara 9-10 mikrometer (nilai standar 9,4 mikrometer), panjang gelombang tersebut dapat terdeteksi oleh sensor PIR. (Secara umum sensor PIR memang dirancang untuk mendeteksi manusia) dimana sensor ini membutuhkan tegangan masukan sebesar 5V DC. 

PIR sensor sendiri memiliki dua slot di dalamnya, setiap slot terbuat dari bahan khusus. PIR (Passive Infrared Receiver) merupakan sebuah sensor berbasiskan infrared. Di dalam sensor PIR ini terdapat bagian-bagian yang mempunyai perannya masing-masing, yaitu Fresnel Lens, IR Filter, Pyroelectric sensor, amplifier, dan comparator. 


(1) deteksi sudut 120 derajat.
(2) kisaran deteksi 7m.
(3) ukuran: 32x24mm.
(4) output sinyal switch TTL output sinyal tinggi (3.3 V), output sinyal rendah (0.4 V).
(5) waktu pemicu dapat disesuaikan 0,3 detik hingga 10 menit.
(6) umum digunakan dalam perangkat anti-pencurian dan peralatan lainnya.
(7) modul telah dipaksa untuk mengatur bekerja memicu dapat digunakan kembali.
(8) tegangan kerja 4,5 untuk 20V.

f. Sensor Sentuh

Sensor sentuh merupakan sebuah saklar yang cara penggunaanya dengan cara disentuh menggunakan jari. Ketika sensor ini disentuh maka sensor akan bernilai HIGH, mengapa? karena tubuh manusia terdapat aliran listrik sehingga sensor ini dapat bekerja. Sensor ini dapat kita gunakan untuk menyalakan lampu, motor, membuka pintu dan masih banyak lainnya. Sensor ini mempunya 3 buah pin yaitu pin SIG (signal/data), GND dan VCC.

Berdasarkan fungsinya, Sensor Sentuh dapat dibedakan menjadi dua jenis utama yaitu Sensor Kapasitif dan Sensor Resistif. Sensor Kapasitif atau Capacitive Sensor bekerja dengan mengukur kapasitansi sedangkan sensor Resistif bekerja dengan mengukur tekanan yang diberikan pada permukaannya.

g. Sensor LM35

Sensor suhu LM35 adalah komponen elektronika yang memiliki fungsi untuk mengubah besaran suhu menjadi besaran listrik dalam bentuk tegangan. Sensor Suhu LM35 yang dipakai dalam penelitian ini berupa komponen elektronika elektronika yang diproduksi oleh National Semiconductor. LM35 memiliki keakuratan tinggi dan kemudahan perancangan jika dibandingkan dengan sensor suhu yang lain, LM35 juga mempunyai keluaran impedansi yang rendah dan linieritas yang tinggi sehingga dapat dengan mudah dihubungkan dengan rangkaian kendali khusus serta tidak memerlukan penyetelan lanjutan. Meskipun tegangan sensor ini dapat mencapai 30 volt akan tetapi yang diberikan kesensor adalah sebesar 5 volt, sehingga dapat digunakan dengan catu daya tunggal dengan ketentuan bahwa LM35 hanya membutuhkan arus sebesar 60 µA hal ini berarti LM35 mempunyai kemampuan menghasilkan panas self-heating dari sensor yang dapat menyebabkan kesalahan pembacaan yang rendah yaitu kurang dari 0,5 ºC pada suhu 25 ºC . 

Sensor suhu memiliki beberapa karakteristik, diantaranya:
- Memiliki sensitivitas suhu, dengan faktor skala linier antara tegangan dan suhu 10 mVolt/ºC,      sehingga dapat dikalibrasi langsung dalam celcius.
- Memiliki ketepatan atau akurasi kalibrasi yaitu 0,5ºC pada suhu 25 ºC
- Memiliki jangkauan maksimal operasi suhu antara -55 ºC sampai +150 ºC.
- Bekerja pada tegangan 4 sampai 30 volt.
- Memiliki arus rendah yaitu kurang dari 60 μA.
- Memiliki pemanasan sendiri yang rendah (low-heating) yaitu kurang dari 0,1 ºC pada udara      diam.
- Memiliki impedansi keluaran yang rendah yaitu 0,1 W untuk beban 1 mA.
- Memiliki ketidaklinieran hanya sekitar ± ¼ ºC.

h. Motor Servo

Motor Servo merupakan motor listrik dengan menggunakan sistem closed loop. Sistem tersebut digunakan untuk mengendalikan akselerasi dan kecepatan pada sebuah motor listrik dengan keakuratan yang tinggi. Selain itu, motor servo biasa digunakan untuk mengubah energi listrik menjadi mekanik melalui interaksi dari kedua medan magnet permanent.
Pada umumnya, motor servo terdiri dari tiga komponen utama yaitu :
• Motor 
• Sistem Kontrol
• Potensiometer atau encoder

Motor berfungsi sebagai penggerak roda gigi agar dapat memutar potensiometer dan poros output-nya secara bersamaan.
Jenis Motor Servo Berdasarkan Arusnya :
- Motor Servo AC 
Motor Servo AC merupakan jenis yang dapat menangani tegangan arus listrik yang tinggi atau beban berat. Motor servo AC sangat cocok diaplikasikan pada mesin-mesin industri yang bertujuan untuk dapat mengendalikannya.
- Motor Servo DC
Motor servo DC merupakan jenis yang hanya dapat menangani tegangan arus dan beban yang lebih kecil. Sehingga motor servo DC cocok diaplikasikan pada mesin-mesin kecil seperti mobil dan pesawat remote control.

i. Liquid Crystal Display (LCD)

Liquid Crystal Display (LCD) adalah sebuah peralatan elektronik yang berfungsi untuk menampilkan output sebuah sistem dengan cara membentuk suatu citra atau gambaran pada sebuah layar. Secara garis besar komponen penyusun LCD terdiri dari kristal cair (liquid crystal) yang diapit oleh 2 buah elektroda transparan dan 2 buah filter polarisasi (polarizing filter).
Gambar Penampang komponen penyusun LCD
Keterangan:
1. Film dengan polarizing filter vertical untuk memolarisasi cahaya yang masuk.
2. Glass substrate yang berisi kolom-kolom elektroda Indium tin oxide (ITO).
3. Twisted nematic liquid crystal (kristal cair dengan susunan terpilin).
4. Glass substrate yang berisi baris-baris elektroda Indium tin oxide (ITO).
5. Film dengan polarizing filter horizontal untuk memolarisasi cahaya yang masuk.
6. Reflektor cahaya untuk memantulkan cahaya yang masuk LCD kembali ke mata pengamat.

Sebuah citra dibentuk dengan mengombinasikan kondisi nyala dan mati dari pixel-pixel yang menyusun layar sebuah LCD. Pada umumnya LCD yang dijual di pasaran sudah memiliki integrated circuit tersendiri sehingga para pemakai dapat mengontrol tampilan LCD dengan mudah dengan menggunakan mikrokontroler untuk mengirimkan data melalui pin-pin input yang sudah tersedia.

Kaki-kaki yang terdapat di LCD

j. Light Emitting Diode (LED)

LED adalah suatu semikonduktor yang memancarkan cahaya, LED mempunyai kecenderungan polarisasi. LED mempunyai kutub positif dan negatif (p-n) dan hanya akan menyala bila diberikan arus maju. Ini dikarenakan LED terbuat dari bahan semikonduktor yang hanya akan mengizinkan arus listrik mengalir ke satu arah dan tidak ke arah sebaliknya. Bila LED diberikan arus terbalik, hanya akan ada sedikit arus yang melewati LED. Ini menyebabkan LED tidak akan mengeluarkan emisi cahaya.

k. Resistor

Resistor merupakan komponen pasif yang memiliki nilai resistansi tertentu dan berfungsi untuk menghambat jumlah arus listrik yang mengalir dalam suatu rangkaian. Resistor dapat diklasifikasikan menjadi beberapa jenis, diantaranya resistor nilai tetap (fixed resistor), resistor variabel (variabel resistor), thermistor, dan LDR.
Cara membaca nilai resistor :
Cara menghitung nilai resistansi resistor dengan gelang warna :
1. Masukan angka langsung dari kode warna gelang pertama.
2. Masukan angka langsung dari kode warna gelang kedua.
3. Masukan angka langsung dari kode warna gelang ketiga.
4. Masukkan jumlah nol dari kode warna gelang ke-4 atau pangkatkan angka tersebut dengan 10     (10^n).
5. Gelang terakhir merupakan nilai toleransi dari resistor.

l. Potensiometer

Potensiometer adalah salah satu jenis Resistor yang Nilai Resistansinya dapat diatur sesuai dengan kebutuhan Rangkaian Elektronika ataupun kebutuhan pemakainya. Potensiometer merupakan Keluarga Resistor yang tergolong dalam Kategori Variable Resistor. Secara struktur, Potensiometer terdiri dari 3 kaki Terminal dengan sebuah shaft atau tuas yang berfungsi sebagai pengaturnya. Gambar dibawah ini menunjukan Struktur Internal Potensiometer beserta bentuk dan Simbolnya.
Pada dasarnya bagian-bagian penting dalam Komponen Potensiometer adalah: 
- Penyapu atau disebut juga dengan Wiper
- Element Resistif 
- Terminal 

Berdasarkan bentuknya, Potensiometer dapat dibagi menjadi 3 macam, yaitu:
• Potensiometer Slider, yaitu Potensiometer yang nilai resistansinya dapat diatur dengan cara menggeserkan Wiper-nya dari kiri ke kanan atau dari bawah ke atas sesuai dengan pemasangannya. Biasanya menggunakan Ibu Jari untuk menggeser wiper-nya
• Potensiometer Rotary, yaitu Potensiometer yang nilai resistansinya dapat diatur dengan cara memutarkan Wiper-nya sepanjang lintasan yang melingkar. Biasanya menggunakan Ibu Jari untuk memutar wiper tersebut. Oleh karena itu, Potensiometer Rotary sering disebut juga dengan Thumbwheel Potentiometer. 
• Potensiometer Trimmer, yaitu Potensiometer yang bentuknya kecil dan harus menggunakan alat khusus seperti Obeng (screwdriver) untuk memutarnya. Potensiometer Trimmer ini biasanya dipasangkan di PCB dan jarang dilakukan pengaturannya. 

    Sebuah Potensiometer (POT) terdiri dari sebuah elemen resistif yang membentuk jalur (track) dengan terminal di kedua ujungnya. Sedangkan terminal lainnya (biasanya berada di tengah) adalah Penyapu (Wiper) yang dipergunakan untuk menentukan pergerakan pada jalur elemen resistif (Resistive). Pergerakan Penyapu (Wiper) pada Jalur Elemen Resistif inilah yang mengatur naik-turunnya Nilai Resistansi sebuah Potensiometer. 
    Elemen Resistif pada Potensiometer umumnya terbuat dari bahan campuran Metal (logam) dan Keramik ataupun Bahan Karbon (Carbon). Berdasarkan Track (jalur) elemen resistif-nya, Potensiometer dapat digolongkan menjadi 2 jenis yaitu Potensiometer Linear (Linear Potentiometer) dan Potensiometer Logaritmik (Logarithmic Potentiometer). 
    Dengan kemampuan yang dapat mengubah resistansi atau hambatan, Potensiometer sering digunakan dalam rangkaian atau peralatan Elektronika dengan fungsi-fungsi sebagai berikut:      
• Sebagai pengatur Volume pada berbagai peralatan Audio/Video seperti Amplifier, Tape Mobil,      DVD Player. 
• Sebagai Pengatur Tegangan pada Rangkaian Power Supply 
• Sebagai Pembagi Tegangan Aplikasi Switch TRIAC 
• Digunakan sebagai Joystick pada Tranduser
• Sebagai Pengendali Level Sinyal

m. Keypad

Keypad adalah bagian penting dari suatu perangkat elektronika yang membutuhkan interaksi manusia. Keypad berfungsi sebagai interface antara perangkat (mesin) elektronik dengan manusia atau dikenal dengan istilah HMI (Human Machine Interface). Matrix keypad 4×4 merupakan salah satu contoh keypad yang dapat digunakan untuk berkomunikasi antara manusia dengan mikrokontroler. Konfigurasi keypad dengan susunan bentuk matrix ini bertujuan untuk penghematan port mikrokontroler karena jumlah key (tombol) yang dibutuhkan banyak pada suatu sistem dengan mikrokontroler. Konstruksi matrix keypad 4×4 untuk mikrokontroler dapat dibuat seperti pada gambar berikut:
Proses scaning untuk membaca penekanan tombol pada matrix keypad 4×4 untuk mikrokontroler diatas dilakukan secara bertahap kolom demi kolom dari kolom pertama sampai kolom ke 4 dan baris pertama hingga baris ke 4. Misal kita asumsikan keypad aktif LOW (semua line kolom dan baris dipasang resistor pull-up) dan dihubungkan ke port mikrokontrolr dengan jalur kolom adalah jalur input dan jalur baris adalah jalur output maka proses scaning matrix keypad 4×4 diatas dapat dituliskan sebagai berikut.
- Mengirimkan logika Low untuk kolom 1 (Col1) dan logika HIGH untuk kolom yang lain kemudian membaca data baris, misal tombol SW1 ditekan maka data baris pertama (Row1) akan LOW sehingga data baris yang dibaca adalah 0111, atau tombol yang ditekan tombol SW5 maka data pada baris ke 2 akan LOW sehingga data yang terbaca 1011, atau tombol SW9 yang ditekan sehingga data yang terbaca 1101, atau tombol SW13 yang ditekan maka data yang dibaca adalah 1110 dan atau tidak ada tombol pada kolom pertama yang di tekan maka data pembacaan baris akan 1111.
- Mengirimkan logika Low untuk kolom 2 (Col2) dan logika HIGH untuk kolom yang lain kemudian membaca data baris, misal tombol SW1 ditekan maka data baris pertama (Row1) akan LOW sehingga data baris yang dibaca adalah 0111, atau tombol yang ditekan tombol SW5 maka data pada baris ke 2 akan LOW sehingga data yang terbaca 1011, atau tombol SW9 yang ditekan sehingga data yang terbaca 1101, atau tombol SW13 yang ditekan maka data yang dibaca adalah 1110 dan atau tidak ada tombol pada kolom pertama yang di tekan maka data pembacaan baris akan 1111.
- Mengirimkan logika Low untuk kolom 3 (Col3) dan logika HIGH untuk kolom yang lain kemudian membaca data baris, misal tombol SW1 ditekan maka data baris pertama (Row1) akan LOW sehingga data baris yang dibaca adalah 0111, atau tombol yang ditekan tombol SW5 maka data pada baris ke 2 akan LOW sehingga data yang terbaca 1011, atau tombol SW9 yang ditekan sehingga data yang terbaca 1101, atau tombol SW13 yang ditekan maka data yang dibaca adalah 1110 dan atau tidak ada tombol pada kolom pertama yang di tekan maka data pembacaan baris akan 1111.
- Mengirimkan logika Low untuk kolom 4 (Col4) dan logika HIGH untuk kolom yang lain kemudian membaca data baris, misal tombol SW1 ditekan maka data baris pertama (Row1) akan LOW sehingga data baris yang dibaca adalah 0111, atau tombol yang ditekan tombol SW5 maka data pada baris ke 2 akan LOW sehingga data yang terbaca 1011, atau tombol SW9 yang ditekan sehingga data yang terbaca 1101, atau tombol SW13 yang ditekan maka data yang dibaca adalah 1110 dan atau tidak ada tombol pada kolom pertama yang di tekan maka data pembacaan baris akan 1111.

n. Push Button

Push button switch (saklar tombol tekan) adalah perangkat / saklar sederhana yang berfungsi untuk menghubungkan atau memutuskan aliran arus listrik dengan sistem kerja tekan unlock (tidak mengunci). Sistem kerja unlock disini berarti saklar akan bekerja sebagai device penghubung atau pemutus aliran arus listrik saat tombol ditekan, dan saat tombol tidak ditekan (dilepas), maka saklar akan kembali pada kondisi normal.
Sebagai device penghubung atau pemutus, push button switch hanya memiliki 2 kondisi, yaitu On dan Off (1 dan 0). Istilah On dan Off ini menjadi sangat penting karena semua perangkat listrik yang memerlukan sumber energi listrik pasti membutuhkan kondisi On dan Off.

Karena sistem kerjanya yang unlock dan langsung berhubungan dengan operator, push button switch menjadi device paling utama yang biasa digunakan untuk memulai dan mengakhiri kerja mesin di industri. Secanggih apapun sebuah mesin bisa dipastikan sistem kerjanya tidak terlepas dari keberadaan sebuah saklar seperti push button switch atau perangkat lain yang sejenis yang bekerja mengatur pengkondisian On dan Off.
Berdasarkan fungsi kerjanya yang menghubungkan dan memutuskan, push button switch mempunyai 2 tipe kontak yaitu NC (Normally Close) dan NO (Normally Open).
- NO (Normally Open), merupakan kontak terminal dimana kondisi normalnya terbuka (aliran arus listrik tidak mengalir). Dan ketika tombol saklar ditekan, kontak yang NO ini akan menjadi menutup (Close) dan mengalirkan atau menghubungkan arus listrik. Kontak NO digunakan sebagai penghubung atau menyalakan sistem circuit (Push Button ON).
- NC (Normally Close), merupakan kontak terminal dimana kondisi normalnya tertutup (mengalirkan arus litrik). Dan ketika tombol saklar push button ditekan, kontak NC ini akan menjadi membuka (Open), sehingga memutus aliran arus listrik. Kontak NC digunakan sebagai pemutus atau mematikan sistem circuit (Push Button Off).

4. Langkah Kerja[KEMBALI]

Alat ini merupakan alat untuk mengamankan ruangan kantor dengan password serta mengamankan dari orang yang terkena demam. Dalam alat ini terdapat beberapa tahapan untuk mendapatkan hasil dari input yang dimasukkan, yaitu:
a. Sistem keamanan pintu aktif, dimana sensor PIR aktif dan mendeteksi adanya pergerakan.
b. Setelah sensor PIR aktif maka LCD dan sensor suhu aktif.
c. Ketika suhu diatas , maka program tidak berjalan melainkan pada LCD menampilkan “Anda       Sakit, Silahkan Pulang”.
d. Namun, jika suhu dibawah , pada LCD menyatakan “Anda Sehat, Masukkan Password”,           dimana jika benar maka sensor sentuh aktif menandakan pintu terbuka, sedangkan jika tidak    atau salah memasukkan password maka akan terjadi error dan diminta untuk memasukkan       password kembali.

5. Gambar Rangkaian[KEMBALI]

Gambar Rangkaian Asli

Gambar Rangkaian Proteus

6. Video Percobaan[KEMBALI]

7. Prinsip Kerja Alat[KEMBALI]

Alat ini akan mulai bekerja saat sensor PIR mendeteksi adanya cahaya infrared dari tubuh manusia  (pergerakan manusia), maka LCD dan komponen lain akan aktif. Lalu jika sensor LM35 mendeteksi suhu tubuh dibawah 37.0°C ( suhu normal ) maka tampilan LCD menampilkan “Anda Sehat“ dan diminta memasukkan password. Ketika password benar maka LED indikator hijau hidup dan LCD menampilkan “Password Benar”. Setelah memasukkan password maka touch sensor akan menggerakkan motor servo berputar menandakan pintu dibuka. Sedangkan jika suhu tubuh lebih dari 37.0°C maka LCD menampilkan “Anda Sakit, Silahkan Pulang” dan LED indikator merah hidup. Jika berada dalam ruangan dan ingin keluar dapat dilakukan dengan cara menekan push button sehingga pintu dapat terbuka.

8. Flow Chart[KEMBALI]

9. Listing Program[KEMBALI]

Master 
//MASTER
#include <Keypad.h>
#include <Password.h>
#include <LiquidCrystal.h>
// #include <SoftwareSerial.h>
// SoftwareSerial pengganti(2,13);

LiquidCrystal lcd(10, A1, A2, A3, A4, A5);

//PIR
int pir = 13;
int nilai_pir;
// int LED = 6;
//inisialisasi pin lm35
byte lm35 = A0;
int nilai;
int LED = 11;
int LEDm = 12;

Password password = Password( "1" ); // ubah password di sini

const byte baris = 4; // jumlah baris
const byte kolom = 4; // jumlah kolom

char keys[baris][kolom] =
{
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};

// inialisasi pin untuk keypad
byte kolomPin[kolom] = {5, 4, 3, 2};
byte barisPin[baris] = {9, 8, 7, 6};

// membuat objek untuk pembacaan keypad
Keypad keypad = Keypad( makeKeymap(keys), barisPin, kolomPin, baris, kolom );

// ****************** PROGRAM DEFAUT/SETTING AWAL ******************* //

void setup()
{
// inialisasi baud rate serial monitor
Serial.begin(19200);
// pengganti.begin(9600);
// deklarasi jumlah baris & kolom LCD
lcd.begin(16, 2);
// inialisasi status I/O pin
pinMode(LED, OUTPUT);
pinMode(lm35, INPUT);
pinMode(pir, INPUT);
// deklarasi awal status relay
digitalWrite(LED, LOW); // kondisi awal selenoid menutup
// deklarasi variabel keypad event
keypad.addEventListener(keypadEvent);
// menulis pada lcd
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SMART DOOR");
lcd.setCursor(0, 1);
lcd.print("GRUP 6 Up&Uc");
delay(1500);
}

// *************************** PROGRAM PERULANGAN TERUS MENERUS ************************** //

void loop()
{
digitalWrite(LED, LOW);
nilai_pir= digitalRead(pir);
if(nilai_pir = 1){
nilai = analogRead(lm35);
nilai = nilai/2.0479;
// Serial.println(nilai);  
if(nilai>=20 && nilai<=36){
// menulis pada lcd
lcd.setCursor(0, 0);
lcd.print(nilai);
lcd.println(" C Anda Sehat");
lcd.setCursor(0, 1);
lcd.print("Masukkan Password");
// membaca keypad
keypad.getKey();
delay(10);
lcd.clear();
}
if(nilai>37){
digitalWrite(LEDm, HIGH);
lcd.setCursor(0, 0);
lcd.println(nilai);
lcd.print(" C Anda sakit");
lcd.setCursor(0, 1);
lcd.print("silahkan pulang");
delay(5000);
lcd.clear();
}
}
else{
// menulis pada lcd
lcd.setCursor(0, 0);
lcd.print("Sepi");
lcd.println(nilai);
lcd.setCursor(0, 1);
lcd.print("mana orang?");
delay(5000);
lcd.clear();
}
}
// ********************* PROGRAM TOMBOL UNTUK ENTER DAN RESET ******************* //
void keypadEvent(KeypadEvent eKey)
{
switch (keypad.getState())
{
case PRESSED:
Serial.print("Enter: ");
Serial.println(eKey);
delay(1);
// Serial.write(254);
switch (eKey) {
case '#': Login(); delay(1); break; // tombol A untuk login

case '*': password.reset(); delay(10); break; // tombol B untuk reset

default: password.append(eKey); delay(10);
}
}
}
// ********************** PROGRAM LOGIN ************************* //

void Login()
{
// jika password benar
if (password.evaluate())
{  
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Password Benar");
digitalWrite(LED, HIGH);
Serial.println('1');
delay(500);
Serial.println('9');
}
// jika password tidak benar atau salah
else
{
// menulis pada lcd
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Password Salah");
// relay tidak aktif, solenoid tetap menutup
digitalWrite(LED, LOW);
Serial.println("0");
delay(200);
}
}

Slave
//SLAVE
#include <Servo.h>
#define sensor 5 // Pin Di gunakan untuk capactitive touch sensor

Servo myservo;
int pos;
int data = 0;
int LED = 6;
//BUTTON
const int buttonPin = 2; // deklarasi konstanta untuk button pada pin 2
int buttonState = 1; // deklarasi variabel untuk status button(ditekan atau tidak)

void setup()
{
  Serial.begin(19200);
  pinMode(LED, OUTPUT);
  pinMode(sensor, INPUT_PULLUP);
  pinMode(buttonPin,INPUT);

  myservo.attach(9);
  myservo.write(90);
  ;

}

void loop(){
  digitalWrite(LED, LOW);
  if (digitalRead(sensor) == HIGH) {
    while(digitalRead(sensor) == HIGH){}
    kunci();
  }
  if(digitalRead(buttonPin)==LOW){
    Serial.println("Berhasil Buka Dari Dalam");
        digitalWrite(LED, HIGH);
        for (pos = 90; pos >= 0; pos -= 1) { // goes from 0 degrees to 180 degrees
          myservo.write(pos);              // tell servo to go to position in variable 'pos'
          delay(10);                       // waits 15 ms for the servo to reach the position
        }
      delay(5000);
        for (pos = 0; pos <= 90; pos += 1) { // goes from 180 degrees to 0 degrees
          myservo.write(pos);              // tell servo to go to position in variable 'pos'
          delay(15);                       // waits 15 ms for the servo to reach the position
        }
  }
  if(digitalRead(buttonPin)==HIGH){
    Serial.println(buttonPin);
    
  }
  else{
    digitalWrite(LED, LOW);

  }
}
void kunci()
{
if(Serial.available()>0){
    data = Serial.read();
    if(data=='1'){
        Serial.println("Berhasil Buka Dari Luar");
        digitalWrite(LED, HIGH);
        for (pos = 90; pos >= 0; pos -= 1) { // goes from 0 degrees to 180 degrees
          myservo.write(pos);              // tell servo to go to position in variable 'pos'
          delay(15);                       // waits 15 ms for the servo to reach the position
        }
      delay(5000);
        for (pos = 0; pos <= 90; pos += 1) { // goes from 180 degrees to 0 degrees
          myservo.write(pos);              // tell servo to go to position in variable 'pos'
          delay(15);                       // waits 15 ms for the servo to reach the position
        }
      }
      
  }
else{
        Serial.println('tidak ada password');
        delay(1);
      }
}

10. Link Download[KEMBALI]

Download Rangkaian Proteus [disini]
Download Video Percobaan [disini]
Download Datasheet Arduino [disini]
Download Datasheet Sensor PIR [disini]
Download Datasheet Sensor Sentuh [disini]
Download Datasheet Sensor LM35 [disini]
Download Datasheet Motor Servo [disini]
Download Datasheet LCD [disini]
Download Datasheet LED [disini]
Download Datasheet Resistor [disini]
Download Datasheet Potensiometer [disini]
Download Datasheet Keypad [disini]
Download Datasheet Push Button [disini]

Tidak ada komentar:

Posting Komentar