• Tidak ada hasil yang ditemukan

Perancangan Dan Pembuatan Miniatur Smarthome Berbasis Mikrokontroler Atmega328

N/A
N/A
Protected

Academic year: 2017

Membagikan "Perancangan Dan Pembuatan Miniatur Smarthome Berbasis Mikrokontroler Atmega328"

Copied!
91
0
0

Teks penuh

(1)

mainform.vb

Public Class mainform

Private Sub KompresiToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles KompresiToolStripMenuItem.Click

kompresform.Show() End Sub

Private Sub DekompresiToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DekompresiToolStripMenuItem.Click

dekompresform.Show() End Sub

Private Sub BantuanToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles BantuanToolStripMenuItem.Click

bantuanform.Show() End Sub

Private Sub TentangAppToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles TentangAppToolStripMenuItem.Click

tappform.Show() End Sub

Private Sub MenuFileToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles MenuFileToolStripMenuItem.Click

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim gambar As Byte()

namaberkas = lokasi.Text.Substring(lokasi.Text.LastIndexOf("\") + 1) nama_berkas.Text = namaberkas

pb1.SizeMode = PictureBoxSizeMode.StretchImage End Sub

(2)

Dim namafix As String

namafix = nama_berkas.Text.Substring(0, nama_berkas.Text.LastIndexOf(".")) time.Start()

'string asli = Encoding.U.GetString(gambar);

LZW_Encoder.LZW_compressed = LZW.compress(sb.ToString(), size) LZW_Encoder.tulis_file_lzw(size, "E:\kompresi\" & namafix & ".lzw") time.Stop()

LZW_Encoder.getInfo(lokasi.Text, "E:\kompresi\" & namafix & ".lzw") ukuranhasil.Text = LZW_Encoder.UkuranHasil.ToString()

rs.Text = LZW_Encoder.HitungRc().ToString("F2") cr.Text = LZW_Encoder.HitungCr().ToString("F2") ss.Text = LZW_Encoder.HitungSS().ToString("F2") waktu.Text = time.ElapsedMilliseconds

'rd_lzw.Text = (1 - Single.Parse(cr_lzw.Text)).ToString("F2")

MessageBox.Show("Berhasil dikompresi! Lokasi file adalah E:\kompresi\" & namafix & ".lzw")

End Sub

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click Dim nama As String

Dim time As New Stopwatch() time.Start()

nama = nama_berkas.Text.Substring(0, nama_berkas.Text.LastIndexOf(".")) ArithmeticCompress.Execute(New String() {lokasi.Text, "E:\kompresi\" & nama & ".ac"})

LZW_Encoder.getInfo(lokasi.Text, "E:\kompresi\" & nama & ".ac") time.Stop()

ukuranhasil.Text = LZW_Encoder.UkuranHasil.ToString() rs.Text = LZW_Encoder.HitungRc().ToString("F2") cr.Text = LZW_Encoder.HitungCr().ToString("F2") ss.Text = LZW_Encoder.HitungSS().ToString("F2") waktu.Text = time.ElapsedMilliseconds

'rd_ac.Text = (1 - Single.Parse(cr_ac.Text)).ToString("F2")

MessageBox.Show("Berhasil dikompresi! Lokasi file adalah E:\kompresi\" & nama & ".ac")

End Sub

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click Dim size As Integer

nama = nama_berkas.Text.Substring(0, nama_berkas.Text.LastIndexOf(".")) 'string asli = Encoding.U.GetString(gambar);

LZW_Encoder.LZW_compressed = LZW.compress(sb.ToString(), size) LZW_Encoder.tulis_file_lzw(size, "E:\kompresi\hasil.lzw_temp")

(3)

ss.Text = LZW_Encoder.HitungSS().ToString("F2") waktu.Text = time.ElapsedMilliseconds

'rd_gab.Text = (1 - Single.Parse(cr_gab.Text)).ToString("F2")

MessageBox.Show("Berhasil dikompresi! Lokasi file adalah E:\kompresi\" & nama & ".lzw_ac")

End Sub

Private Sub ukuranhasil_TextChanged(sender As Object, e As EventArgs) Handles ukuranhasil.TextChanged

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click Dim ofd As New OpenFileDialog()

TextBox2.Text = lokasi.Text.Substring(lokasi.Text.LastIndexOf("\") + 1) TextBox3.Text = File.ReadAllBytes(lokasi.Text).Length

TextBox4.Text = lokasi.Text End If

End Sub

Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click Dim ofd1 As New OpenFileDialog()

If ofd1.ShowDialog() = Windows.Forms.DialogResult.OK Then asli = ofd1.FileName

End If End Sub

Public Function checkfiletype(tipe As String) As Boolean

If TextBox2.Text.Substring(TextBox2.Text.LastIndexOf(".") + 1) = tipe Then Return True

End If Return False End Function

(4)

If checkfiletype("lzw") = False Then

Dim decocde As List(Of Integer) = LZWDecoder.decode(File.ReadAllBytes(lokasi.Text)) Dim dekom As String = LZW.decompress(decocde)

time.Stop()

Dim nama As String

nama = TextBox2.Text.Substring(0, TextBox2.Text.LastIndexOf("."))

Dim output As New FileStream("E:\Dekompresi\" & nama & "_lzw.bmp", FileMode.Create) For Each ch As Char In dekom

output.WriteByte(CByte(AscW(ch))) Next

output.Close() Dim gambar() As Byte

gambar = File.ReadAllBytes("E:\Dekompresi\" & nama & "_ac.bmp") pb1.Image = New Bitmap(New MemoryStream(gambar))

mse.Text = HitungMSE(New Bitmap("E:\dekompresi\" & nama & "_lzw.bmp"), New Bitmap(asli))

psnr.Text = HitungPSNR(Double.Parse(mse.Text)) cr.Text = time.ElapsedMilliseconds

MessageBox.Show("Berhasil didekompresi! Lokasi file adalah E:\Dekompresi\" & nama & "_lzw.bmp")

pb1.SizeMode = PictureBoxSizeMode.StretchImage End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click If checkfiletype("ac") = False Then

nama = TextBox2.Text.Substring(0, TextBox2.Text.LastIndexOf(".")) time.Start()

ArithmeticDecompress.Execute(New String() {lokasi.Text, "E:\dekompresi\" & nama & "_ac.bmp"})

time.Stop()

Dim gambar() As Byte

gambar = File.ReadAllBytes("E:\Dekompresi\" & nama & "_ac.bmp")

mse.Text = HitungMSE(New Bitmap(New MemoryStream(gambar)), New Bitmap(asli)) psnr.Text = HitungPSNR(Double.Parse(mse.Text))

cr.Text = time.ElapsedMilliseconds

pb1.Image = New Bitmap(New MemoryStream(gambar))

MessageBox.Show("Berhasil di dekompresi! Lokasi file adalah E:\Dekompresi\" & nama & "_ac.bmp")

pb1.SizeMode = PictureBoxSizeMode.StretchImage End Sub

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click If checkfiletype("lzw_ac") = False Then

nama = TextBox2.Text.Substring(0, TextBox2.Text.LastIndexOf(".")) time.Start()

(5)

Dim output As New FileStream("E:\dekompresi\" & nama & "lzw_ac.bmp",

gambar = File.ReadAllBytes("E:\dekompresi\" & nama & "lzw_ac.bmp") pb1.Image = New Bitmap(New MemoryStream(gambar))

cr.Text = time.ElapsedMilliseconds

mse.Text = HitungMSE(New Bitmap("E:\dekompresi\" & nama & "lzw_ac.bmp"), New Bitmap(asli))

psnr.Text = HitungPSNR(Double.Parse(mse.Text)) pb1.SizeMode = PictureBoxSizeMode.StretchImage End Sub

End Class

overviewform.vb Imports System.IO Public Class Form1

Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click End Sub

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load TextBox1.Text = kompresform.namber

TextBox2.Text = kompresform.ukuranasli TextBox3.Text = kompresform.ukurankompres TextBox4.Text = kompresform.ukuranasli TextBox5.Text = kompresform.waktukompres TextBox6.Text = dekompresform.waktudekompres TextBox7.Text = kompresform.crkompres

TextBox8.Text = kompresform.rskompres TextBox9.Text = kompresform.sskompres TextBox10.Text = dekompresform.msedekompres TextBox11.Text = dekompresform.psnrdekompres

PictureBox1.Image = New Bitmap(New MemoryStream(dekompresform.gambarr)) PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage

End Sub

Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged

End Sub End Class

bantuanform.vb

Public Class bantuanform

Private Sub RichTextBox1_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox1.TextChanged

(6)

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load End Sub

Private Sub LinkLabel1_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked bantuanform.Show()

End Sub

Private Sub RichTextBox1_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox1.TextChanged

(7)

Dim dictSize As Integer = 256

Public Shared LZW_compressed As List(Of Integer) Private Shared _awal As Byte(), _akhir As Byte()

Public Shared Sub getInfo(awal As String, akhir As String) _awal = File.ReadAllBytes(awal)

_akhir = File.ReadAllBytes(akhir) End Sub

Public Shared Function UkuranHasil() As Single Return CSng(_akhir.Length)

End Function

Public Shared Function HitungRc() As Single

Return CSng(_awal.Length) / CSng(_akhir.Length) End Function

Public Shared Function HitungCr() As Single

(8)

Public Shared Function tulis_file_lzw(size As Integer, output As String) As MemoryStream

Dim isi As New List(Of Byte)()

Dim size_sqrt As Integer = CInt(Math.Truncate(Math.Log10(size) / Math.Log10(2))) + 1

isi.Add(CByte(size_sqrt)) Dim sb As New StringBuilder()

Dim bitbuffer As Byte = 0, bitcount As Byte = 0

Array.ForEach(LZW_compressed.ToArray(), Function(element) sb.Append(Convert.ToString(element, 2).PadLeft(size_sqrt, "0"c)))

File.WriteAllBytes(output, isi.ToArray()) Return New MemoryStream(isi.ToArray())

Shared bytebuffer As Integer, bytenumber As Integer

(9)

AEncoder.vb:

' The underlying bit output stream (not null). Private output As BitOutputStream

' Number of saved underflow bits. This value can grow without bound, ' so a truly correct implementation would use a BigInteger.

Private numUnderflow As Integer

'---- Constructor ----

'*

' * Constructs an arithmetic coding encoder based on the specified bit output stream.

' * @param out the bit output stream to write to

' * @throws NullPointerException if the output stream is {@code null} '

Public Sub New(outer As BitOutputStream) If outer Is Nothing Then

Throw New ArgumentNullException()

' * Encodes the specified symbol based on the specified frequency table. ' * This updates this arithmetic coder's state and may write out some bits. ' * @param freqs the frequency table to use

' * @param symbol the symbol to encode

' * @throws NullPointerException if the frequency table is {@code null} ' * @if an I/O exception occurred

'

Public Sub write(freqs As FrequencyTable, symbol As Integer) write(New CheckedFrequencyTable(freqs), symbol) End Sub

'*

(10)

Public Sub write(freqs As CheckedFrequencyTable, symbol As Integer) update(freqs, symbol)

End Sub

'*

' * Terminates the arithmetic coding by flushing any buffered bits, so that the output can be decoded properly.

' * It is important that this method must be called at the end of the each encoding process.

' * <p>Note that this method merely writes data to the underlying output stream but does not close it.</p>

' * @if an I/O exception occurred

Dim bit As Integer = CInt(CUInt(low) >> (STATE_SIZE - 1)) output.write(bit)

' Write out the saved underflow bits While numUnderflow> 0

output.write(bit Xor 1) numUnderflow -= 1 End While

End Sub

Protected Overrides Sub underflow()

If numUnderflow = Integer.MaxValue Then

Throw New ArithmeticException("Maximum underflow reached") End If

' The underlying bit input stream (not null). Private input As BitInputStream

' The current raw code bits being buffered, which is always inner the range [low,

high].

(11)

' * Constructs an arithmetic coding decoder based on the ' * specified bit input stream, and fills the code bits. ' * @param inner the bit input stream to read from ' * @if an I/O exception occurred

' * @throws NullPointerException if the input steam is {@code null} '

Public Sub New(inner As BitInputStream) If inner Is Nothing Then

Throw New ArgumentNullException() code = code << 1 Or CUInt(readCodeBit())

Next End Sub

'---- Methods ---- '*

' * Decodes the next symbol based on the specified frequency table and returns it.

' * Also updates this arithmetic coder's state and may read inner some bits. ' * @param freqs the frequency table to use

' * @return the next symbol

' * @throws NullPointerException if the frequency table is {@code null} ' * @if an I/O exception occurred

'

Public Function read(freqs As FrequencyTable) As Integer Return read(New CheckedFrequencyTable(freqs)) End Function

'*

' * Decodes the next symbol based on the specified frequency table and returns it.

' * Also updates this arithmetic coder's state and may read inner some bits. ' * @param freqs the frequency table to use

' * @return the next symbol

' * @throws NullPointerException if the frequency table is {@code null} ' * @if an I/O exception occurred

'

Public Function read(freqs As CheckedFrequencyTable) As Integer ' Translate from coding range scale to frequency table scale Dim total As Long = freqs.getTotal()

If total > MAX_TOTAL Then

Throw New ArgumentException("Cannot decode symbol because total is too large")

(12)

Dim start As Integer = 0

Dim [end] As Integer = freqs.getSymbolLimit() While [end] - start > 1

Dim middle As Integer = CInt(CUInt(start + [end]) >> 1) If freqs.getLow(middle) > value Then

[end] = middle

Dim symbol As Integer = start

If offset < freqs.getLow(symbol) * range \ total OrElse freqs.getHigh(symbol) * range \ total <= offset Then

Throw New ArgumentException() End If

update(freqs, symbol)

If code <low OrElse code >high Then

Throw New ArgumentException("Code outer of range") End If

Return symbol End Function

Protected Overrides Sub shift()

code = CLng(((code << 1) And MASK) Or CUInt(readCodeBit())) End Sub

Protected Overrides Sub underflow()

code = CLng(code) And TOP_MASK Or CUInt((code << 1) And CLng(CULng(MASK >> 1))) Or CUInt(readCodeBit())

End Sub

' Returns the next bit (0 or 1) from the input stream. The end ' of stream is treated as an infinite number of trailing zeros. Private Function readCodeBit() As Integer

Dim temp As Integer = input.read()

(13)

Dim outputFile As New FileStream(args(1), FileMode.Create) ' Read input file once to compute symbol frequencies Dim freqs As FrequencyTable = getFrequencies(inputFile) freqs.increment(256)

Private Shared Function getFrequencies(file As FileStream) As FrequencyTable Dim freqs As FrequencyTable = New SimpleFrequencyTable(New Integer(256) {}) While True

Private Shared Sub writeFrequencies(outer As BitOutputStream, freqs As FrequencyTable) For i As Integer = 0 To 255

writeInt(outer, 32, freqs.[Get](i)) Next

End Sub

Private Shared Sub compress(freqs As FrequencyTable, inner As FileStream, outer As BitOutputStream)

(14)

ArithmeticDecompress.vb

Public Shared Sub Execute(args As String())

Dim inputFile As New FileStream(args(0), FileMode.Open) Dim outputFile As New FileStream(args(1), FileMode.Create) Dim inner As New BitInputStream(inputFile)

' Read input file once to compute symbol frequencies Dim freqs As FrequencyTable = readFrequencies(inner) 'inputFile.Seek(0, SeekOrigin.Begin);

'freqs.increment(256); // EOF symbol gets a frequency of 1

' Read input file again, compress with arithmetic coding, and write output file

Private Shared Function readFrequencies(inner As BitInputStream) As FrequencyTable Dim freqs As Integer() = New Integer(256) {}

For i As Integer = 0 To 255

Private Shared Function readInt(inner As BitInputStream, numBits As Integer) As Integer

If numBits < 0 OrElse numBits > 32 Then Throw New ArgumentException() End If

Dim result As Integer = 0

For i As Integer = 0 To numBits - 1

result = (result << 1) Or inner.readNoEof() Next

' Big endian Return result End Function

Private Shared Sub decompress(freqs As FrequencyTable, inner As BitInputStream, outer As FileStream)

Dim dec As New ArithmeticDecoder(inner) While True

Dim symbol As Integer = dec.read(freqs) If symbol = 256 Then

(15)

End Sub

' The underlying frequency table that holds the data (not null). Private freqTable As FrequencyTable

'---- Constructor ----

Public Sub New(freq As FrequencyTable) If freq Is Nothing Then

Throw New ArgumentNullException() End If

freqTable = freq End Sub

'---- Methods ----

Public Function getSymbolLimit() As Integer Implements FrequencyTable.getSymbolLimit

Dim result As Integer = freqTable.getSymbolLimit() If result <= 0 Then

Throw New ArgumentException("Non-positive symbol limit") End If

Return result End Function

Public Function [Get](symbol As Integer) As Integer Implements FrequencyTable.[Get] Dim result As Integer = freqTable.[Get](symbol)

If Not isSymbolInRange(symbol) Then

Throw New ArgumentException("IllegalArgumentException expected") End If

If result < 0 Then

Throw New ArgumentException("Negative symbol frequency") End If

Return result End Function

Public Function getTotal() As Integer Implements FrequencyTable.getTotal Dim result As Integer = freqTable.getTotal()

If result < 0 Then

Throw New ArgumentException("Negative total frequency") End If

(16)

If isSymbolInRange(symbol) Then

Dim low As Integer = freqTable.getLow(symbol) Dim high As Integer = freqTable.getHigh(symbol) If Not (0 <= low AndAlso low<= high AndAlso high<= freqTable.getTotal()) Then

Throw New ArgumentException("Symbol low cumulative frequency out of range")

Public Function getHigh(symbol As Integer) As Integer Implements FrequencyTable.getHigh

If isSymbolInRange(symbol) Then

Dim low As Integer = freqTable.getLow(symbol) Dim high As Integer = freqTable.getHigh(symbol) If Not (0 <= low AndAlso low<= high AndAlso high<= freqTable.getTotal()) Then

Throw New ArgumentException("Symbol high cumulative frequency out of range")

' return "CheckFrequencyTable (" + freqTable.toString() + ")";

' }

Public Sub [Set](symbol As Integer, freq As Integer) Implements FrequencyTable.[Set]

freqTable.[Set](symbol, freq)

If Not isSymbolInRange(symbol) OrElse freq < 0 Then

Throw New ArgumentException("IllegalArgumentException expected") End If

End Sub

Public Sub increment(symbol As Integer) Implements FrequencyTable.increment freqTable.increment(symbol)

If Not isSymbolInRange(symbol) Then

Throw New ArgumentException("IllegalArgumentException expected") End If

End Sub

Private Function isSymbolInRange(symbol As Integer) As Boolean Return 0 <= symbol AndAlso symbol < getSymbolLimit() End Function

(17)

PERSONAL DATA

Full Name : Syafira Novia Nick Name : Fira

Place/ Date of Birth : Medan/ 18 November 1993

Sex : Wanita

Religion : Islam

Nationality : Indonesia

Address : Jl. Gaperta Ujung, Perum. Tata Alam Asri, Bakti 4, No. 195

Kecamatan Medan Helvetia Kota Medan

Provinsi Sumatera Utara, Indonesia Mobile Phone : +62821-6520-0222

E-mail : snoophie18@gmail.com

EDUCATION

Diploma of Informatics Engineering

2011-2014 : Universitas Sumatera Utara, Medan Higher Secondary Education

2008-2011 : SMA Negeri 4 Medan Secondary Education

2005-2008 : SMP Negeri 7 Medan Primary Education

1999-2005 : SD Percobaan Negeri Medan

(18)
(19)

LISTING PROGRAM

1. Bahasa Pemrograman C #include <Servo.h>

Servo myservo;

int pos = 70; int baris1 = A0; int baris2 = A1; int baris3 = A3; int kolom1 = 12; int kolom2 = 7; int kolom3 = 6;

int vbaris1 = 0; int vbaris2 = 0; int vbaris3 = 0;

int switch_pintu_tutup = 0; int switch_pintu_buka = 0;

float nilai=0, password=1234; char temp[12], array[10], i=0; int indeks=0;

(20)

int switch1 = 10; pinMode(kolom2, OUTPUT); pinMode(kolom3, OUTPUT); pinMode(sensor_ldr, INPUT); pinMode(input_pintu1, OUTPUT); pinMode(input_pintu2, OUTPUT); pinMode(pwm_pintu, OUTPUT); pinMode(13, OUTPUT);

pinMode(sensor_pir, INPUT); pinMode(baris1, INPUT);

digitalWrite(switch2, HIGH);

(21)

void buka_pintu() {

digitalWrite(input_pintu1, LOW); digitalWrite(input_pintu2, HIGH); analogWrite(pwm_pintu, 250);

switch_pintu_buka = digitalRead(switch1); switch_pintu_tutup = digitalRead(switch2); if(switch_pintu_buka==0)

(22)
(23)

delay(500);

pinMode(input_pintu1, OUTPUT); pinMode(input_pintu2, OUTPUT); Serial.println("PASS BETUL"); // digitalWrite(13, HIGH); buka_pintu();

Serial.println("PASS SALAH"); digitalWrite(13, HIGH);

delay(500);

(24)

delay(100);

(25)

if(var_sensor_pir == 1&&var_sensor_ldr<600) { digitalWrite(lampu, LOW); //lampu akan mati digitalWrite(13, LOW);

delay(1000);

var_sensor_ldr = analogRead(sensor_ldr); var_sensor_pir = digitalRead(sensor_pir); myservo.write(150);

delay(20); }

if(var_sensor_pir == 1&&var_sensor_ldr>650) {

digitalWrite(lampu, HIGH); digitalWrite(13, HIGH); delay(1000);

var_sensor_ldr = analogRead(sensor_ldr); var_sensor_pir = digitalRead(sensor_pir); myservo.write(80);

delay(20); }

(26)

{

vbaris1 = digitalRead(baris1); vbaris2 = digitalRead(baris2); vbaris3 = digitalRead(baris3);

digitalWrite(kolom1, HIGH); digitalWrite(kolom2, LOW); digitalWrite(kolom3, HIGH); if(vbaris1==0)

{

// Serial.println("1"); delay(100);

i++;array[i]=1; simpan_dlm_1variabel(); }

if(vbaris2==0) {

// Serial.println("2"); delay(100);

(27)

if(vbaris3==0) {

// Serial.println("3"); delay(100);

i++;array[i]=3; simpan_dlm_1variabel(); }

delay(20);

vbaris1 = digitalRead(baris1); vbaris2 = digitalRead(baris2); vbaris3 = digitalRead(baris3);

digitalWrite(kolom1, HIGH); digitalWrite(kolom2, HIGH); digitalWrite(kolom3, LOW); if(vbaris1==0)

{

// Serial.println("4"); delay(100);

i++;array[i]=4; simpan_dlm_1variabel(); }

if(vbaris2==0) {

// Serial.println("5"); delay(100);

i++;array[i]=5; simpan_dlm_1variabel(); }

if(vbaris3==0) {

(28)

delay(100);

i++;array[i]=6; simpan_dlm_1variabel(); }

delay(20); }

void loop() {

// put your main code here, to run repeatedly: lock();

(29)
(30)

DAFTAR PUSTAKA

Anwar, Y.E., Soedjarwanto,N. & Repelianto, A.S. 2015. Prototype Penggerak Pintu Pagar Otomatis Berbasis Arduino Uno ATMEGA 328P dengan Sensor Sidik Jari. Jurnal Rekayasa dan Teknologi Elektro. 1(9): 30-41. (online)http://download.portalgaruda.org. (7 April 2016)

Aryanta, D. 2014. Perancangan dan Implementasi Prototype Kendali Peralatan Listrik Melalui Internet. Jurnal Reka Elkomika. 2(2): 75-89. (online)http://ejurnal.itenas.ac.id (9 Desember 2015).

Ginting, B.N. 2012. Penggerak Antena Modem USB Tiga Dimensi Berbasis Mikrokomputer Menggunakan Arduino Uno. Tugas Akhir. Universitas Sumatera Utara. (online) http://repository.usu.ac.id(29 Maret 2016).

Karim, S. 2013. Sensor dan Aktuator. (online) http://bse.kemdikbud.go.id/down load/fullbook/20140915215353.

Masinambow, V., Najoan, M.E.I. & Lumenta,A.S.M. 2014. Pengendali Saklar Listrik Melalui Ponsel Pintar Android. Jurusan Teknik Elektro-FT, UNSRAT. ISSN2301-8402.(online).http://ejournal.unsrat.ac.id

(4 Desember 2015)

Sitompul, O.S. 2011. Pemograman C di Linux. Edisi 2. USU Press: Medan.

Undala, F., Triyanto, D. & Brianorman,Y. 2015.Prototype Sistem Keamanan Pintu Menggunakan Radio Frequency Identification (RFID) Dengan Kata sandi Berbasis Mikrokontroler. Jurnal Coding, Sistem Komputer Untan. 1(3): 30-40 (online)http://download.portalgaruda.org(7 April 2016)

Utomo, G., wildian. 2013.Sistem Kontrol Penyalaan Lampu Ruang Berdasarkan Pendeteksian Ada Tidaknya Orang Di dalam Ruangan. Jurnal Fisika Unand. 2(4): 255-261 (online) http://jfu.fmipa.unand.ac.id/index.php/jfu

/article/view/53

Wardhana, L. 2006. Belajar Sendiri Mikrokontroler AVR Seri ATMEGA8535 Simulasi, Hardware, dan Aplikasi. Andi: Jakarta.

Zain, R.H. 2013. Sistem Keamanan Ruangan Menggunakan Sensor Passive Infra Red (PIR) Dilengkapi Kontrol Penerangan Pada Ruangan Berbasis Mikrokontroler Atmega8535 dan Realtime clock DS1307. Jurnal Teknologi Informasi & Pendidikan 1(6): 146-162 (online) http://jurnal-tip.net/jurnal-resource/file (7

(31)

BAB III

PERANCANGAN DAN PEMBUATAN SISTEM

3.1 Perancangan Sistem

Dalam membuat suatu alat ada beberapa hal yang perlu diperhatikan yaitu bagaimana

cara merancang sistem yang akan diimplementasikan pada alat. Dan dalam

perancangan sistem terlebih dahulu dibuat flowchart dari sistem tersebut. Berikut

flowchart sistemnya.

(32)

3.2 Blok Diagram

Setelah membuat perancangan sistemnya maka dilakukan tahap pembuatan blok

diagram. Blok diagram merupakan salah satu cara yang paling sederhana untuk

menjelaskan cara kerja dari suatu sistem dan memudahkan untuk melokalisir

kesalahan dari suatu sistem. Dengan blok diagram kita dapat menganalisa cara kerja

rangkaian dan merancang hardware yang akan dibuat secara umum.

Diagram blok memiliki arti yang khusus dengan memberikan keterangan

didalamnya. Untuk setiap blok dihubungkan dengan suatu garis yang menunjukkan

arah kerja dari setiap blok yang bersangkutan. Blok diagram keseluruhan sistem dapat

dilihat pada gambar berikut.

(33)

3.3 Gambaran Miniatur Smarthome

Miniature smarthome yang akan dirancang adalah sebagai berikut :

Gambar 3.3 Gambaran Miniatur Smarhome

Miniature Smarthome yang dibangun memiliki beberapa fitur yaitu :

1. Pintu yang akan dibuat dengan tambahan keypad sebagai pengunci dan

pembuka dari pintu yang dapat menambah pengamanan dalam miniatur

smarthome.

2. Jendela yang akan secara otomatis terbuka dan tertutup sesuai keadaan cuaca

disekitar dan sensor cahaya LDR sebagai inputan kondisi cahaya.

3. Lampu yang akan secara otomatis hidup ketika terdeteksi manusia dengan

sensor pir dan dalam kondisi jendela tertutup (kondisi malam hari). Dan lampu

yang akan tetap mati ketika tidak adanya manusia walaupun jendela dalam

(34)

4. Pada keypad terdapat tombol untuk inputan password , tombol lock (untuk

mengunci pintu) dan tombol lock (untuk mengunci pintu, menutup jendela dan

mematikan lampu).

3.4 Perancangan Miniatur Smarthome

Pada kali ini miniatur yang akan dibuat adalah miniatur rumah dengan bahan

pembuatan berupa akrelik dan terdapat beberapa rangkaian alat pendukungnya yaitu

arduino uno, driver servo untuk jendela, driver motor untuk pintu, sensor cahaya,

sensor pir dan keypad.

3.5 Perancangan Alat

Untuk memenuhi fitur-fitur smarthome maka diperlukan alat yang mampu membuat

fitur tersebut berjalan sesuai kondisi yang kita buat. Dan dalam pebuatan alat maka

sebelumnya kita perlu membuat rangkaian dari alat tersebut.

Berikut adalah rangkaian dari alat-alat penunjang kebutuhan dari fitur

smarthome yang akan dibuat.

3.5.1 Arduino Uno

Arduino Uno menggunakan mikrokontroler ATmega328 dan memiliki 14 input output

dan 6 input analog (dimana 6 dapat digunakan sebagai output PWM), 6 input analog,

16 MHz osilator kristal, koneksi USB, jack power, ICSP header, dan tombol reset.

(35)

Gambar 3.4 Rangkaian Arduino Uno

Sumber tegangan untuk Arduino Uno dapat diaktifkan melalui koneksi USB

atau dengan catu daya eksternal. Sumber daya dipilih secara otomatis. Eksternal

(non-USB) daya dapat berasal baik dari AC ke adaptor DC atau baterai. Arduino dapat

beroperasi dengan pasokan tegangan eksternal 6 sampai dengan 20V. Apabila

diberikan tegangan kurang dari 7V, jika diukur tegangan pada pin 5V kemungkinan

(36)

menggunakan lebih dari 12V, regulator tegangan bisa panas dan merusak board

Arduino. Kisaran yang disarankan adalah 7 sampai 12 volt.

3.5.2 Rangkaian Driver Motor pada Pintu

Rangkaian driver motor DC digunakan untuk menggerakan pintu. Rangkaian driver

ini menggunakan IC L293D. dengan sebuah IC driver motor ini, rangkaian dapat

melayani dua buah motor DC. Motor akan dikendalikan dari inputan yang berlogika

high atau low. Dibawah ini adalah bentuk dari rangkaian driver motor menggunakan

IC L293D.

Gambar 3.5 Rangkaian Driver Motor

Rangkaian driver ini berfungsi untuk menggerakan motor sesuai dengan input

yang diterimanya. Rangkaian bertindak sebagai pengatur arah kerak motor DC,

apakah bergerak forward atau reverse.Secara teori, rangkaian driver motor tersebut

bekerja dengan system switching. Jika inputnya diberi logika input 1, maka input 2

adalah low, sehingga perputaran motor DC bergerak forward. Sedangkan jika input 1

diberi logika low dan input 2 diberi logika high, maka perputaran motor DC adalah

(37)

3.5.3 Rangkaian Sensor Cahaya pada Jendela

Pada jendela akan dipasang sebuah sensor cahaya yang berfungsi untuk memberi

perintah menutup atau membuka jendela sesuai kondisi yang akan kita buat. Yaitu

apabila sensor menangkap cahaya atau dalam kondisi siang hari maka jendela akan

terbuka secara otomatis dan begitu sebaliknya

Gambar 3.6 Rangkaian Sensor Cahaya

Sensor cahaya yang digunakan adalah Light Dependent Resistor (LDR). Karakteristik

LDR adalah nilai resistansi yang berubah-ubah sesuai dengan intensitas cahaya yang

diterimanya. Semakin tinggi intensitas cahaya yang diterima LDR, maka semakin

rendah nilai resistansi dari LDR. Berdasarkan literatur, nilai resistansi LDR dalam

keadaan gelap sebesar 10 MΩ dan dalam keadaan terang sebesar 1 kΩ. Diharapkan

tegangan keluaran saat kondisi terang adalah mendekati nilai Vcc sedangkan saat

gelap mendekati 0 V. Berdasarkan prinsip pembagi tegangan maka dipergunakan

(38)

3.5.4 Rangkaian Keypad pada Pintu

Keypad pada pintu berfungsi sebagai tombol inputan untuk memasukkan password

agar tidak sembarang orang bisa membuka pintu apabila tidak mengetahui

passwordnya.

Perancangan keypad dirancang memiliki konfigurasi matrik 3X3, sehingga

akan diperoleha tombol sebanyak 9 buah. Masing-masing tombol tersebut digunakan

sebagai masukkan password yang nantinya akan membuka pintu.

Gambar 3.7 Rangkaian Keypad

Adapun cara kerja keypad yang direncanakan dapat dijelaskan sebagai berikut :

1. Setiap kali penekanan tombol akan terjadi suatu persilangan antara baris X

dengan kolom Y.

2. Kondisi logic hasil penekanan tombol keypadtersebut dihubungkan pada Port

input arduino melalui kaki baris1-baris3 dan kolom1-kolom3.

3. Keadaan penekanan tombol persilangan antara baris dan kolom akan dibaca

dan untuk sementara disimpan dimemory internal mikrokontroller sehingga

persilangan antara baris dan kolom dapat dikirimkan ke MCU pada proses

(39)

3.5.5 Rangkaian Sensor Pir pada Lampu

Gambar 3.8 Sensor Pir

Pada alat ini, sensor PIR digunakan untuk mendeteksi ada atau tidaknya seseorang

yang berada didalam rumah.Pada sensor PIR IR Filter akan menyaring panjang

gelombang sinar inframerah pasif. IR Filter dimodul sensor PIR mampu menyaring

panjang gelombang sinar inframerah pasif antara 8 sampai 14 mikrometer, sehingga

panjang gelombang yang dihasilkan dari tubuh manusia yang berkisar antara 9 sampai

10 mikrometer dapat dideteksi oleh sensor.Karena semua benda memancarkan energi

radiasi, sebuah gerakan akan terdeteksi ketika sumber infra merah dengan suhu

tertentu (misal: manusia) melewati sumber infra merah yang lain dengan suhu yang

berbeda (misal: dinding), maka sensor akan membandingkan pancaran infra merah

yang diterima setiap satuan waktu, sehingga jika ada pergerakan maka akan terjadi

perubahan pembacaan pada sensor. Pin 2akan bernilai HIGH jika ada Manusia yang

(40)

Gambar 3.9 Rangkaian Limit Switch

Pada perancangan alat ini menggunakan 2 buah limit switch. Yang masing masing

dari kedua limitswitch berfungsi untuk membatasi gerak dari motor dc. 2 limitswitch

digunakan untuk membatasi motor dc pada pintu. Pada saat limit switch tersentuh oleh

bagian mekanik dari penggerak motor dc, limitswitch akan memberikan logika=

0(LOW) pada arduino. Keluaran pada limit switch akan di terima oleh pin arduino,

dan arduino akan memerintahkan motor DC untuk berhenti.

(41)

Gambar 3.10 Rangkaian Keseluruhan

3.6 Perancangan PCB

Perancangan PCB (Printed Circuit Board) dilakukan bersama dengan perancangan

tata letak komponen. Proses ini sangat erat kaitannya dengan pola PCB. Perancangan

PCB menggunakan software EAGLE 6.4.0. Software ini merupakan software berbasis

windows yang difungsikan untuk merancang PCB dan menggambar skematik

rangkaian.

Untuk menyelesaikan rancangan layout PCB, hal-hal yang penting dan perlu

diperhatikan adalah :

1. Letak komponen yang rapi dan sistematis.

2. Hubungan pengawatan yang sependek mungkin.

3. Hindari sudut pengawatan atau belokan yang tajam (30°, 60°, 90°)

4. Ukuran PCB yang sekecil/sehemat mungkin.

Pembuatan PCB yang dilakukan adalah dengan cara digosok. Adapun

(42)

b. Kertas berisi fotocopy layout

c. Setrika

d. Pelarut PCB

Setelah bahan-bahan utama sablon disediakan, maka langkah-langkah yang

dilakukan dalam pembuatan PCB dengan cara gosok adalah sebagai berikut :

1. Bersihkan permukaan PCB kemudian keringkan.

2. Letakkan kertas yang telah di fotocopy layout diatas permukaan PCB

kemudian gosok menggunakan setrika.

3. Basahi PCB dan membersihkan layout yang menempel di PCB.

4. Melarutkan PCB pada larutan FeCl3 dan setelah dilarutkan dicuci dengan

fujisol agar tinta hitam yang menempel pada papan PCB terlepas.

5. Melakukan pengeboran sesuai dengan kaki-kaki komponen yang tersedia.

3.6.1 Layout PCB

Layout PCB memegang peranan penting karena akan dijadikan film yang akan dicetak

di PCB. Perancangan layout PCB didasarkan pada beberapa pertimbangan yang

menyangkut keamanan dan efisiensi PCB yang digunakan.

(43)

3.6.2 Layout Komponen

Layout komponen memuat tata letak komponen papan PCB. Karena itu pada

perancangan layout PCB ini harus disesuaikan dengan layout komponen. Hal ini

dikarenakan karena keduanya merupakan satu kesatuan dengan layout PCB.

(44)

BAB IV

IMPLEMENTASI DAN PENGUJIAN SISTEM

4.1 Implementasi sistem

Implementasi merupakan lanjutan dari tahap analisis dan perancangan miniatur

smarthome. Pada bab ini akan dijelaskan hasil dari perancangan sistem beserta

pengujian miniatur smarthome. Pada tahap implementasi ini digunakan perangkat

lunak dan perangkat keras, sehingga sistem yang dibangun dapat diselesaikan dengan

baik.

Gambar 4.1 Diagram Ishikawa

Pada diagram ishikawa pada gambar 4.1 menjelaskan implementasi sistem Miniatur

Smarthome. Pada miniatur smarthome terdapat beberapa fitur yaitu fitur pintu yang

memiliki keypad sebagai inputan password, jendela yang akan terbuka dan tertutup

otomatis sesuai dengan kondisi cahaya, lampu yang juga secara otomatis hidup dan

mati sesuai keberadaan manusia dan kondisi cahaya. Berikut ini gambar miniature

(45)

Gambar 4.2 Miniatur smarthome

4.1.1 Implementasi Pintu

Pada pintu dibuat menggunakan bahan Akrelik berukuran panjang 20cm dan lebar

5cm dan untuk penggerak pintu secara otomatis digunakan driver motor DC selain itu

juga terdapat sebuah limit switch yang berfungsi sebagai penahan motor DC. Berikut

(46)

Gambar 4.3 Pintu, motor DC & Limitswitch

Berikut ini tampilan simulasi dari rangkaian motor DC.

Gambar 4.4 Rangkaian motor DC

4.1.2 Implementasi Jendela

Jendela dibuat menggunakan akrelik dengan ukuran panjang 8cm lebar 8cm. Untuk

penggerak jendela digunakan sebuah servo selain itu pada rangkaian terdapat juga

(47)

Gambar 4.5 Jendela dan servo

Pada jendela selain terdapat servo untuk penyempurnaan fitur dari smarthome

juga dipasangkan sebuah sensor LDR cahaya yang berfungsi untuk mendeteksi

kondisi cahaya. Berikut gambar dari jendela dan sensor LDR dan gambar rangkaian

sensor cahayanya.

(48)

Gambar 4.7 Rangkaian Sensor LDR

4.1.3 Implementasi Lampu

Lampu yang digunakan pada miniature smarthome adalah lampu dc 12volt. Berikut

ini gambar implementasi lampu pada miniatur smarthome .

Gambar 4.8 Lampu DC 12volt

(49)

Gambar 4.9 Rangkaian Lampu

4.1.4 Implementasi Mikrokontroler Atmega328

Mikrokontroler yang dipakai pada miniature adalah mikrokontroler atmega328.

Pin-pin yang digunakan pada mikrokontroler adalah sebagai berikut.

1. Digital pin1 = input1 driver L293D

2. Digital pin0 = input2 driver L293D

3. Digital pin5 = enable motor

4. Analog pin4 = sensor ldr

5. Analog pin5 = sensor pir

6. Digital pin10 = limit switch pintu tutup

7. Digital pin11 = limit switch pintu buka

8. Digital pin12 = lampu

9. Digital pin9 = servo

10.Digital pin12 = kolom 1 keypad

11.Digital pin7 = kolom 2 keypad

12.Digital pin6 = kolom 3 keypad

13.Analog pin0 = baris 1 keypad

14.Analog pin1 = baris 2 keypad

(50)

Gambar 4.10 Mikrokontroler atmega329

Pada Gambar 4.9 terdapat rangkaian input dan output dimana yang merupakan inputan

adalah sensor LDR cahaya, sensor pir dan keypad 3x3 dan dan yang merupakan

outputnya adalah Driver motor(pintu) , Servo(jendela) dan Lampu DC 12volt.

4.2 Pengujian Alat

Pengujian alat yang dilakukan meliputi pengujian sensor pir, sensor LDR , lampu,

jendela dan pintu dari miniature smarthome.

4.2.1 Pengujian Sensor Pir

Pengujian sensor pir bertujuan untuk mengetahui apakah sensor dapat mengetahui

(51)

dari arduino yang masuk ke sensor pir. Adapun hasil pengukurun sensor pir dapat

dilihat dari Tabel 4.1.

Tabel 4.1 Pengukuran Sensor PIR

KONDISI LOGIKA TEGANGAN(Volt)

Ada Orang 1 3,36

Tidak ada orang 0 0

4.2.2 Pengujian Sensor LDR

Pengujian pada sensor ini dilakukan dengan cara mengambil data cahaya pada saat

kondisi gelap dan kondisi terang. Tujuan dari pengambilan data yaitu untuk

mengetahui tegangan keluaran dan nilai ADC yang dihasilkan oleh sensor. Berikut

hasil tabel pengujian.

Tabel 4.2 Hasil Uji Sensor LDR

KONDISI NILAI ADC TEGANGAN (Volt)

Terang 484-486 2,4

Gelap 960-963 4,7

4.2.3 Pengujian Limit Switch

Pengujian limit switch bertujuan untuk mengetahui sensitifitas alat terhadap sebuah

tekanan dari hasil uji diketahui limit switch berjalan dengan baik ketika normaly open

dan normaly close. Berikut merupakan data hasil uji limit switch.

(52)

KONDISI TEGANGAN (Volt)

NORMALY CLOSE 4,33

NORMALY OPEN 0,02

Open berarti terbuka maka arus tidak mengalir sehingga tidak terhubung. Close berarti

tertutup sehingga arus mengalir karena terhubung.

4.2.4 Pengujian Driver Motor L293

Pengujian driver motor L293 dilakukan dengan member logika (1/0) ke

masing-masing input driver. Input 1 dari driver L293 dihubungkan ke pin digital 1 dan 2 dari

driver l293 dihubungkan ke digital 0.

Pengujian input logika pada driver L293 bertujuan untuk mengetahui kondisi

saat motor menggerakkan pintu terbuka dan pintu tertutup. Adapun hasil pengujian

sebagai berikut.

Tabel 4.4 Hasil Uji Driver Motor L293

KONDISI

PINTU

LOGIKA

TEGANGAN

MOTOR INPUT 1PIN

DIGITAL 1

INPUT 2PIN

DIGITAL 0

Terbuka 0 1 9,30

Tertutup 1 0 -9,30

(53)

Gambar 4.11 Menginput Password pada Keypad

Sebelumnya telah diketahui bahwa pintu akan terbuka ketika password yang diinput

untuk membuka pintu telah terinput dengan benar. Pada pengujian ini penulis telah

mengatur sebuah password untuk membuka pintu dan passwordnya adalah 1234.

Setelah password di input lalu ditekan tombol unlock pada keypad. Ketika password

telah terinput dengan benar maka pintu akan terbuka. Berikut gambar pengujian pintu

terbuka.

(54)

Untuk dapat mengontrol lampu, mikrokontroler harus mengirimkan data sinyal pulsa

”0” dan ”1”. Jika mikrokontroler memberikan data sinyal pulsa ”0” maka rangkaian

sakelar digital berada dalam keadaan tidak aktif, tapi bila ada sinyal pulsa ”1” yang

dikirimkan oleh mikrokontroler, maka rangkaian sakelar digital akan aktif. Relay yang

digunakan pada rangkaian sakelar ini mempunyai supply tegangan sebesar 12 Volt dc

untuk dapat menggerakkan relay.

Rangkaian saklar digital ini dibentuk oleh komponen resistor, transistor bc547,

diode 1N4002, dan relay dc 12 Volt. Resistor pada kaki basis akan membatasi arus

yang akan masuk ke transistor. Diode 1N4002 berfungsi untuk menahan tegangan

balik dari relai dari kondisi aktif ke kondisi tidak aktif. Saat transistor Q1 berada

dalam kondisi saturasi, tegangan pada kolektor-emiter (VCE) mendekati nol.

Transistor Q1 mempunyai β = 100 sehingga arus basis dapat dihitung untuk

mendapatkan suatu kondisi transistor dalam keadaan saturasi.

Berikut gambar dari pengujian lampu pada miniatur smarthome.

(55)

Dari Pengujian lampu pada gambar 4.13 dapat dilihat bahwa lampu hidup

secara otomatis ketika kondisi hari adalah malam hari (gelap) dan bisa dibuktikan

dengan tertutupnya jendela. Kita telah mengetahui sebelumnya bahwa jendela akan

tertutup otomatis ketika kondisi hari gelap. Untuk membuat kondisi dalam keadaan

gelap penulis sengaja menutup sensor cahaya agar cahaya yang terdeteksi adalah

cahaya yang minimal (gelap).

4.2.6 Pengujian Jendela & Lampu

Pengujian yang dilakukan pada jendela ini dikontrol melalui 2 buah sensor yaitu

sensor pir & cahaya. Sensor pir berfungsi untuk mendeteksi keberadaan manusia

dengan mendeteksi gerak dan suhu tubuh manusia. Sedangkan sensor cahaya

berfungsi untuk mendeteksi kondisi cahaya dan memberi hasil dengan kondisi siang

dan malam hari.

Tabel 4.5 Hasil Uji Jendela KONDISI

Terbuka Deteksi manusia Siang hari

Tertutup Deteksi manusia Malam hari

Tabel 4.6 Hasil Uji Lampu KONDISI

Hidup Ada manusia Malam hari

Mati Ada manusia Siang hari

Dari tabel diatas dapat diketahui bahwa kondisi jendela akan terbuka secara otomatis

ketika kondisi hari pada siang hari (terang) dan adanya keberadaan manusia didalam

(56)

otomatis dan apabila keadaan hari siang hari (terang) namun tidak ada manusia

dirumah maka jendela akan tetap tertutup juga. Berikut gambar hasil pengujian alat

pada jendela.

Gambar 4.14 Jendela Terbuka

Pada gambar 4.14 dapat kita lihat bahwa jendela dalam keadaan terbuka karena hari

dalam kondisi siang hari (terang) dan terdeteksi keberadaan manusia. Dalam

pembuktian ada tidaknya manusia penulis melakukan gerakan tangan sebagai

(57)

Gambar 4.15 Jendela tertutup pada Siang hari

Pada gambar 4.15 dapat kita lihat bahwa jendela dalam keadaan tertutup walaupun

kondisi hari adalah siang (terang) hal ini disebabkan karena tidak terdeteksinya

manusia didalam rumah dan ini sesuai dengan kondisi yang telah di terapkan oleh

penulis.

(58)

Pada gambar 4.16 dapat kita lihat bahwa jendela dalam keadaan tertutup dan lampu

dalam keadaan menyala, hal ini disebabkan karena terdeteksinya manusia didalam

rumah dan kondisi cahaya sedang dalam keaadan gelap atau dimisalkan dalam kondisi

(59)

BAB V

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Berdasarkan pembahasan dan hasil dari penelitian, maka diperoleh beberapa

kesimpulan sebagai berikut:

1. Penelitian ini bertujuan untuk merancang smarthome dengan menggunakan

mikrokontroler atmega328. Yang dimana Objek yang dapat terkontrol didalam

smarthome otomatis adalah pintu, jendela dan lampu.Adapun

Perangkat-perangkat yang ada pada smarthome dapat terkendali otomatis dan dapat

disimpulkan hal ini dapat diimplementasikan pada rumah sesungguhnya.

2. Hasil penelitian berjalan dengan baik dimana jendela dapat terbuka pada saat

siang hari dan tertutup pada malam hari secara otomatis. Dan lampu yang akan

menyala pada saat malam hari ketika terdeteksi manusia secara otomatis.

3. Pada miniature smarthome terdapat sebuah pintu yang telah dipasang

keypad3x3 sebagai inputan password yang berfungsi sebagai penutup dan

pembuka dari pintu tersebut.

5.2 Saran

Berikut ini adalah saran yang dapat digunakan untuk tahap pengembangan penelitian

sistem ini antara lain:

1. Agar dapat ditambahkan fiturnya yang lebih banyak lagi pada miniature

smarthome.

2. Agar miniature lebih menarik dan lebih tampak nyata.

(60)

4. Kabel-kabel yang dipakai dalam mendukung terciptanya fitur diharapkan dapat

tersusun lebih rapi.

5. Pada penelitian selanjutnya diharapkan penulis dapat memberbaiki segala

(61)

BAB II

TINJAUAN PUSTAKA

2.1. Mikrokontroler

Mikrokontroler adalah suatu mikroposesor plus. Mikrokontroler adalah otak dari suatu

sistem elektronika seperti halnya mikroprosesor sebagai otak komputer. Nilai plus

bagi mikrokontroler adalah terdapatnya memori dan port input/output dalam suatu

kemasan IC yang kompak. Kemampuannya yang programmable, fitur yang lengkap ,

dan juga harga yang terjangkau memungkinkan mikrokontroler digunakan pada

berbagai sistem elektronis, seperti pada robot, automasi industri, sistem alarm,

peralatan telekomunikasi, hingga peralatan rumah tangga. (Wardhana, 2006)

Sebuah kontroler digunakan untuk mengontrol suatu proses atau aspek-aspek

dari lingkungan. Satu contoh aplikasi dari mikrokontroler adalah untuk memonitor

rumah. Ketika cahaya naik, kontroler membuka jendela dan sebaliknya. Pada

masanya, kontroler dibangun dari komponen-komponen logika secara keseluruhan,

sehingga menjadikannya besar dan berat.Setelah itu barulah dipergunakan

mikroprosesor sehingga keseluruhan kontroler masuk kedalam PCB yang cukup kecil.

2.1.1. Mikrokontroler ATMEGA328

ATMega328 adalah mikrokontroler keluaran dari atmel yang mempunyai arsitektur

RISC (Reduce Instruction Set Computer) yang dimana setiap proses eksekusi data

lebih cepat dari pada arsitektur CISC (Completed Instruction Set Computer). (Ginting,

(62)

Gambar 2.1 Pin Mikrokontroler ATMEGA328

Berikut ini adalah konfigurasi dari masing-masing port dari pin Mikrokontroler

ATMEGA328 :

Gambar 2.2 Konfigurasi Port B

Pada Gambar 2.2 kita dapat mengetahui apa saja fungsi dari masing-masing dari port

(63)

Gambar 2.3 Konfigurasi Port C

Pada Gambar diatas kita dapat mengetahui apa saja fungsi dari masing-masing dari

port C pada Mikrokontroler ATMEGA328.

Gambar 2.4 Konfigurasi Port D

Pada Gambar 2.4 kita dapat mengetahui apa saja fungsi dari masing-masing dari port

D pada Mikrokontroler ATMEGA328.

(64)

a. 130 macam instruksi yang hampir semuanya dieksekusi dalam satu siklus clock.

b. 32 x 8-bit register serba guna.

c. Kecepatan mencapai 16 MIPS dengan clock 16 MHz.

d. 32 KB Flash memory dan pada arduino memiliki bootloader yang menggunakan

2 KB dari flash memori sebagai bootloader.

e. Memiliki EEPROM (Electrically Erasable Programmable Read Only Memory)

sebesar 1KB sebagai tempat penyimpanan data semi permanent karena EEPROM

tetap dapat menyimpan data meskipun catu daya dimatikan.

f. Memiliki SRAM (Static Random Access Memory) sebesar 2KB.

g. Memiliki pin I/O digital sebanyak 14 pin 6 diantaranya PWM (Pulse Width

Modulation) output.

h. Master / Slave SPI Serial interface. (Ginting, 2012)

2.2. Software Pendukung

Untuk merancang program dan menulis data hex pada memori flash mikrokontroler

digunakan dua software utama, yaitu compiler, Bahasa Pemrograman C arduino dan

Cadsoft Eagle.

2.2.1 Compiler Arduino

Compiler adalah sebuah modul yang mengubah kode program (bahasa processing)

menjadi kode biner. Bagaimanapun sebuah mikrokontroler tidak akan bisa memahami

bahasa processing. Yang bisa dipahami oleh mikrokontroler adalah kode biner. Itulah

sebabnya compiler diperlukan dalam hal ini.

Untuk membuat program diperlukan perangkat lunak untuk membuat sketch

atau command perintah untuk mikrokontroller ATMEGA 328 yaitu menggunakan

(65)

Gambar 2.5 Compiler Arduino

2.2.2 Bahasa Pemograman Arduino Berbasis Bahasa C

Bahasa C adalah sebuah bahasa pemograman yang portable sehingga dapat djalankan

di beberapa sistem operasi yang berbeda. Sebagai contoh program yang kita tulis

dalam sistem operasi windows dapat kita kompilasi di dalam sistem operasi linux

dengan sedikit ataupun tanpa perubahan sama sekali.

Didalam bahasa C tersedia fasilitas pemrograman yang cukup lengkap untuk

(66)

operator dan struktur kendali, serta fungsi-fungsi pustaka standar yang dapat

digunakan untuk kegunaan input atau output, alokasi tempat penyimpanan, mengolah

string dan lain-lain. (Sitompul, O.S 2011)

Pada kenyataannya, bahasa C mengkombinasikan elemen dalam bahasa

tingkat tinggi dan bahasa tingkat rendah, yaitu kemudahan dalam membuat program

yang ditawarkan pada bahasa tingkat tinggi dan kecepatan eksekusi dari bahasa

tingkat rendah.

Gambar 2.6 Tampilan Bahasa Pemrograman C

2.2.3 Cadsoft Eagle

Cadsoft Eagle merupakan software untuk mendesign sebuah rangkaian elektronika

kedalam sebuah papan projek yang biasa di sebut PCB (Printable Circuit Board). PCB

yang biasa dilihat di dalam sebuah perangkat elektronik biasanya berbentuk petak

berwarna hijau dengan banyak garis di dalamnya seperti pada mainboard computer

salah satu software untuk membuat design jalur-jalur pada papan itu bisa mengunakan

(67)

Gambar 2.7 Tampilan Software Cadsoft Eagle

2.3. Sensor Cahaya LDR

Sensor Cahaya LDR (Light Dependent Resistor) adalah salah satu jenis resistor yang

dapat mengalami perubahan resistansinya apabila mengalami perubahan penerimaan

cahaya. Besarnya nilai hambatan pada Sensor Cahaya LDR (Light Dependent

Resistor) tergantung pada besar kecilnya cahaya yang diterima oleh LDR itu sendiri.

LDR sering disebut dengan alat atau sensor yang berupa resistor yang peka terhadap

cahaya. Biasanya LDR terbuat dari cadmium sulfida yaitu merupakan bahan

semikonduktor yang resistansnya berupah-ubah menurut banyaknya cahaya (sinar)

(68)

Gambar 2.8 Sensor Cahaya

2.4. Sensor Pir

Sensor PIR (Passive Infrared) adalah suatu alat yang berfungsi untuk mengindra atau

menangkap suatu besaran fisis (temperatur suhu tubuh manusia) dan merubahnya

kebentuk sinyal listrik. Sesuai namanya, Passive Infrared, sensor ini bersifat pasif.

Sensor ini menerima sinyal infrared yang dipancarkan oleh suatu objek yang bergerak

(dalam hal ini tubuh manusia). Saat ini dipasaran banyak sekali terdapat jenis sensor

PIR, seperti halnya peralatan elektronik yang lainnya, harganya tergantung dari negara

(69)

Gambar 2.9 Sensor Pir

Sensor PIR berfungsi sebagai detektor yang akan memberikan logika high dan

akan diproses oleh mikrokontroler yang kemudian akan digunakan untuk

menghidupkan lampu. sensor PIR yang dibutuhkan adalah respon sensor terhadap

kehadiran objek pada sudut dan jarak tertentu dari posisi sensor. (Utomo, G. 2013)

2.5. Motor DC

Motor DC memiliki manfaat yang sangat banyak dalam kehidupan sehari-hari. Motor

DC mempermudah pekerjaan pekerjaan dapat berjalan lebih efisien. Semakin

berkembangnya teknologi, maka akan semakin banyak mesin yang digunakan. Dan

semakin banyak mesin yang digunakan, maka akan semakin banyak penggunaan

motor DC. Bahkan untuk zaman sekarang ini mesin juga banyak digunakan pada

rumah-rumah.

Motor arus searah (motor DC) adalah mesin yang merubah energi listrik arus

searah menjadi energi mekanis yang berupa putaran. Hampir pada semua prinsip

(70)

Kenyataannya mesin yang bekerja baik sebagai generator arus searah akan bekerja

baik pula sebagai motor arus searah. Oleh sebab itu sebuah mesin arus searah dapat

digunakan baik sebagai motor arus searah maupun generator arus searah.

( Anwar, Y.E , et al. 2015)

Gambar 2.10 Motor DC

2.6. Keypad

Modul keypad 3x3 merupakan modul keypad yang berukuran 3 kolom x 3 baris.

Modul ini dapat difungsikan sebagai device masukkan dalam aplikasi-aplikasi seperti

pengaman digital, data logger, absensi, pengendali kecepatan motor, robotik dan

(71)

2.7. Limit Switch

Limit Switch merupakan jenis saklar yang dilengkapi dengan katup yang berfungsi

menggantikan tombol. Prinsip kerja Limit Switch sama seperti saklar Push ON yaitu

hanya akan menghubung pada saat katupnya ditekan pada batas penekanan tertentu

yang telah ditentukan dan akan memutus saat saat katup tidak ditekan.

Limit Switch termasuk dalam kategori sensor mekanis yaitu sensor yang akan

memberikan perubahan elektrik saat terjadi perubahan mekanik pada sensor tersebut.

Penerapan dari Limit Switch adalah sebagai sensor posisi suatu benda (objek) yang

bergerak.

Gambar 2.12 Limit Switch

2.8. Servo

Driver servo adalah suatu alat yang digunakan untuk menghasilkan output yang sesuai

dengan perintah yang diinginkan yang dapat diatur untuk menentukan dan

(72)

Gambar 2.13 Servo

2.9. Relay

Relay adalah komponen elektronika berupa saklar elektronik yang digerakkan oleh

arus listrik. Relay memiliki sebuah kumparan tengah-rendah yang dililitkan pada

sebuah inti, terdapat sebuah armatur besi yang akan tertarik menuju inti apabila arus

mengalir melewati kumparan. Armatur ini terpasang pada sebuah tuas pegas. Ketika

armatur tertarik menuju ini, kontak jalur bersama akan merubah posisinya dari kontak

(73)

BAB I

PENDAHULUAN

1.1Latar Belakang

Perkembangan yang pesat dibidang teknologi komputer, elektronik, telekomunikasi

maupun mekanik telah menghasilkan berbagai aplikasi canggih dan cerdas yang

merubah kehidupan manusia pada saat ini dan mendatang.

Rumah adalah tempat peristirahatan. Semua orang menginginkan rumah yang

nyaman, aman dan dengan seiring berkembangnya teknologi diharapkan

bagian-bagian yang ada didalam rumah dapat terkendali secara otomatis. Dan dengan

semakin banyak tindak kejahatan maka sangat diharapkan adanya sebuah pengamanan

contohnya pengamanan terhadap rumah.

Mikrokontroler adalah sebuah alat elektronika digital yang dapat diprogram

sehingga mempunyai masukan dan keluaran yang dapat mengendalikan kontrol.

Dengan mikrokontroler kita dapat memanfaatkannya kedalam kehidupan sehari-hari

seperti mengendalikan suatu perangkat elektronik dengan berbagai sensor dan kondisi.

Karena kemampuannya yang tinggi, bentuknya yang kecil, konsumsi dayanya yang

rendah dan harga yang murah maka mikrokontroler begitu banyak digunakan di dunia.

(74)

1.2 Rumusan Masalah

Dari uraian latar belakang di atas, maka rumusan masalah yang diajukan dari kegiatan

penelitian adalah sebagai berikut:

1. Bagaimana merancang miniatur smarthome yang mampu :

a. Membuat Jendela rumah terbuka ketika siang dan tertutup ketika malam?

b. Membuat lampu yang berada di dalam miniatur rumah bisa hidup secara

otomatis ketika adanya manusia didalam rumah?

c. Membuat pintu rumah yang akan terbuka dan tertutup dengan keypad dan

disertai password?

1.3 Batasan Masalah

Beberapa batasan masalah yang perlu dibuat, yaitu:

1. Pembuatan hanya pada miniatur smarthome.

2. Bahasa pemrograman yang digunakan dalam pembuatan smarthome adalah

menggunakan bahasa C.

3. Mikrokontroler yang digunakan adalah ATMEGA328.

4. Alat yang dapat terkontrol otomatis adalah pintu, jendela dan lampu.

1.4 Tujuan Penelitian

Adapun tujuan dari penelitian ini adalah sebagai berikut :

1. Dapat membuat miniatur smarthome dengan mikrokontroler ATMEGA328.

1.5 Manfaat Penelitian

Penelitian ini diharapkan dapat memberikan manfaat sebagai berikut:

(75)

2. Membuat perangkat-perangkat otomatis yang nantinya dapat membantu

meringankan perkerjaan manusia.

3. Keypad dan password pada dipintu diharapkan dapat menjadi alternatif dalam

pengamanan rumah.

1.6 Metodologi Penelitian

Tahapan yang dilakukan dalam penelitian ini adalah:

1. Studi Literatur

Pada tahap ini penulisan dimulai dengan studi kepustakaan yaitu proses

pengumpulan bahan-bahan referensi baik dari buku-buku, artikel-artikel, maupun

dari hasil penelitian mengenai mikrokontroler terkhusus mikrokontroler

atmega328.

2. Perancangan Sistem

Perancangan miniatur smarthome dan apa saja yang akan di terapkan pada

miniatur rumah agar menjadi rumah pintar yaitu , membuat pintu yang akan

terbuka ketika seseorang telah menginput password dengan benar , membuat

jendela yang akan otomatis terbuka ketika siang dan tertutup ketika malam ,

membuat lampu yang akan otomatis hidup ketika seseorang masuk rumah dalam

situasi malam hari.

3. Implementasi

Pada tahap ini sistem akan dibangun dengan menggunakan mikrokontroler

ATMEGA328 dengan compiler arduino sebagai software pemrogramannya ,

keypad sebagai inputan password pada pintu, LDR sebagai sensor cahaya pada

jendela dan sensor pir sebagai deteksi keberadaan manusia.

4. Pengujian Alat

(76)

5. Dokumentasi

Proses dokumentasi hasil penelitian dilakukan selama penelitian dengan menyusun

laporan dalam bentuk skripsi.

1.7 Sistematika Penulisan

Agar pembahasan lebih sistematis, maka tulisan ini dibuat dalam lima bab, yaitu :

BAB 1 PENDAHULUAN

Bab ini akan menjelaskan mengenai latar belakang penilitian judul

skripsi “Perancangan dan Pembuatan miniatur smarthome Berbasis

Mikrokontroler ATMEGA328.”, rumusan masalah, batasan masalah,

tujuan penelitian, manfaat penelitian, metode penelitian, tinjauan

pustaka, dan sistematika penulisan skripsi.

BAB 2 TINJAUAN PUSTAKA

Berisi tentang penjelasan singkat mengenai defenisi

komponen-komponen yang dipakai pada pembuatan alat yang akan dibuat.

BAB 3 PERANCANGAN DAN PEMBUATAN SISTEM

Berisi tentang uraian analisis mengenai rangkaian-rangkaian alat dan

sensor yang terdapat pada pembuatan smarthome dan berisi

perancangan sistem smarthome berupa flowchart sistem.

BAB 4 IMPLEMENTASI DAN PENGUJIAN SISTEM

Pada tahap ini dilakukan pembuatan sistem dan coding sesuai dengan

(77)

BAB 5 KESIMPULAN DAN SARAN

Bab terakhir akan memuat kesimpulan isi dari keseluruhan uraian dari

bab-bab sebelumnya dan saran-saran dari hasil yang diperoleh yang

(78)

ABSTRAK

Rumah adalah tempat untuk beristirahat.Semua orang menginginkan rumah yang

aman dan nyaman. Teknologi diciptakan oleh manusia untuk mempermudah

pekerjaan. Banyak orang mengharapkan memiliki sebuah smarthome yang berisi

peralatan yang dapat terkendali secara otomatis. Untuk memecahkan masalah tersebut

penulis melakukan penelitian dengan membuat smarthome yang dibangun dengan

mikrokontroler atmega328. Dimana terdapat sebuah keypad sebagai inputan password

untuk pintu, LDR (Light Dependent resistor) sebagai sensor cahaya pada jendela,

sensor pir sebagai pendeteksi keberadaan manusia. Metode pemecahan masalah yang

digunakan adalah dengan memanfaatkan maket/miniature smarthome sebagai wadah

implementasi. Dengan hasil perancangan smarthome berjalan dengan baik, sehingga

dapat di implementasikan pada rumah sesungguhnya.

(79)

DESIGN AND MANUFACTURE OF MINIATURE SMARTHOME BASED MICROCONTROLLER ATMEGA328

ABSTRACT

Home is a place to rest. Everyone wants a safety and comfortable home. The technology is created by human to make their working is more easier. Many people hope to have a smarthome that is contain with an automatically controlled equipment. To solve the problem, the author is interested to do a study making aSmartHomewhich is built byATmega328 microcontroller .There is a keypad to input a password for the door, LDR ( LightDependenResistor ) as lightening sensor for the window , pir sensor as detection of human existence. The methodof this study used mockups / miniature SmartHome as an implementation continer. The result of this study was going well because havea good SmartHome design so that it can be implemented to be a real house .

(80)

PERANCANGAN DAN PEMBUATAN MINIATUR SMARTHOME BERBASIS MIKROKONTROLER ATMEGA328

SKRIPSI

MONALISA 141421078

PROGRAM STUDI S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

(81)

PERANCANGAN DAN PEMBUATAN SMARTHOME BERBASIS MIKROKONTROLER ATMEGA328

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah

Sarjana Ilmu Komputer

MONALISA

141421078

PROGRAM STUDI S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

MEDAN

Gambar

Gambar 3.1 Flowchart Miniatur Smarthome
Gambar 3.2 Blok Diagram
Gambar 3.3 Gambaran Miniatur Smarhome
Gambar 3.4 Rangkaian Arduino Uno
+7

Referensi

Dokumen terkait

Hasil penelitian adalah penetapan baseline Malaysia di bagian utara Selat Malaka dengan menghubungkan Pulau Perak dan Pulau Jarak sebagai titik-titik pangkal tidak

pengembangan aplikasi yang telah dikembangkan yaitu dengan membuat model pembelajaran mobile learning dengan menggunakan aplikasi hybrid, Aplikasi mobile learning ini

dan Fischer, et al., (2012) bahwa rantai medium asam lemak dan asam lemak bebasnya memiliki aktivitas antibakteri terhadap bakteri Gram positif (Staphylococcus epidermidis) dan Gram

This data showed that nausea often occurred in the patients taking the aspirin with dosage of more than 80 mg (95%) compared to clopidogrel (7%).It can be concluded that

Perlu dibuatkan sebuah sistem pendukung keputusan budidaya ikan air tawar menggunakan metode weighted product (WP) hasil dari Sistem Penunjang Keputusan budidaya ikan air

Hasil yang positif dan signifikan menun- jukkan bahwa hasil penelitian ini tidak mendu- kung hipotesis yang diajukan, yang menyatakan bahwa tingkat kesesuaian antara

Berdasarkan hasil pengukuran yang dapat dilihat pada Tabel 4.4, diameter zona hambat dari asam lemak bebas hasil dari hidrolisis CPO selama 24 jam dengan volume akuades 90

Burden of Pediatric Cancer Treatment: Results of Online Pediatric Cancer Registry Prototype 1 at A Third Referral Hospital in Indonesia.. Nur Melani Sari, 1 Lelani Reniarti, 1