• Tidak ada hasil yang ditemukan

BAB V: KESIMPULAN DAN SARAN

5.2. Saran

BAB V

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Kesimpulan yang dapat diambil dari aplikasi pengendali dan pemantau penyiram taman pada sistem otomasi rumah menggunakan layanan SMS adalah :

1. Sistem pengendali dan pemantau penyiram taman pada sistem otomasi rumah menggunakan layanan SMS sudah berhasil dibuat dan dapat bekerja dengan baik. 2. Proses penerimaan dan pengiriman SMS dapat ditangani dengan baik oleh PC 3. Mikrokontroler dapat menjalankan instruksi yang diberikan dari PC.

5.2 Saran

Saran-saran bagi pengembangan aplikasi ini selanjutnya adalah :

1. Pengembangan pengendali dan pemantau penyiram taman pada sistem otomasi rumah menggunakan layanan SMS dapat ditambahkan sensor untuk mengatur ketersediaan air untuk pompa.

58

DAFTAR PUSTAKA

[1]. Rianto, Yan, “IMT-2000: Komunikasi di Mana Saja, Kapan Saja”, Elektro Indonesia, No.21, Mei/Juni 1998.

[2]. _______.Arsitektur-dan-Teknologi-SMS.

http://www.wahanaponsel.com/articles/latest_news (diakses oktober 2009)

[3]. _____ . Rumah PintarKu ,Sistem Otomasi Rumah [SOR] Ku ,Home Automation -Ku . http://www.rumahpintar.com (diakses September 2009)

[4]. _____. Tutorials GSM. http://www.iec.org/online/tutorials/gsm (diakses September 2009)

[5]. ETSI, 1996, Technical Realization of the Short Message Service (SMS) Pont-to-Pont (PP) (GSM 03.40). http://www.mobilecity.cz/doc/GSM_03.40_5.3.0.pdf (DiaksesSeptember 2009)

[6]. Gupta, P., 2003. Short Message Service: What, How and Where? http://www.wirelessdevnet.com/channels/sms/features/sms.html ( diakses September 2009)

[7]. ____. SMS. http://www.ittelkom.ac.id (diakses september 2009)

[8]. _______ . Komunikasi Serial RS232. http://www.ittelkom.ac.id (diakses september 2009)

[9]. Wardhana, Lingga. 2006. Belajar Sendiri Mikrokontoler AVR ATMega8535 Simulasi, Hardware, dan Aplikasi. Penerbit Andi: Yogyakarta.

[10]. Muhadkly, 2007. ”SMS Gateway Menggunakan Gammu”. www.ilmukomputer.com (diakses April 2010)

[11]. __________ http://en.wikipedia.org/wiki/XAMPP

[12]. _______ . Sensor-sensor yang lain. http://ym-eib.blogspot.com (diakses Januari 2010)

[13]. ________. www.my-siemens.com (diakses Januari 2010)

L- 1 -

Listing Program Utama Pada Visual Basic 6.0

Form1(Form Utama) Private Sub Form_Load() Skin1.ApplySkin hWnd

SkinLabel1.Caption = "INTERFACE PENGENDALI DAN PEMANTAU PENYIRAM TAMAN PADA SISTEM OTOMASI RUMAH MENGGUNAKAN LAYANAN SMS" SkinLabel2.Caption = "Jam/Tanggal"

SkinLabel4.Caption = "<<<<<<<<<<<<<Yustinus Atmadya Gilang Pramana<<<<<<<<<<<<<<<"

Text1.Text = Format(Now, "hh:mm:ss")

Text2.Text = Format(Now, "DDDD, d MM yyyy") End Sub

Private Sub mnAbout_Click() frmAbout.Show

Form1.Hide End Sub

Private Sub mnExit_Click() End

End Sub

Private Sub mnformRecord_Click() Form5.Show

Form1.Hide End Sub

Private Sub mnFormSMS_Click() Form2.Show

Form1.Hide End Sub

Private Sub mnFormUser_Click() Form3.Show

Form1.Hide End Sub

Private Sub mnFormFormat_Click() Form4.Show

Form1.Hide End Sub

Private Sub mnProgram_Click()

cdHelp.HelpFile = App.Path & "\File\HELP.HLP" cdHelp.HelpCommand = cdlHelpContents

cdHelp.ShowHelp End Sub

Private Sub Timer1_Timer()

Text1.Text = Format(Now, "hh:mm:ss") End Sub

Private Sub Timer2_Timer()

Text2.Text = Format(Now, "DDDD, d MM yyyy") End Sub

a = Left(SkinLabel4.Caption, 1) b = Len(SkinLabel4.Caption) c = Right(SkinLabel4.Caption, b - 1) SkinLabel4.Caption = c + a End Sub Form2 (FormSMS)

Dim jumlahinbox As Integer Private Sub Form_Load() Form1.Enabled = False End Sub

Private Sub Command1_Click() On Error Resume Next

jumlahinbox = DataEnvironment1.rsCommand1.RecordCount Text1.Text = jumlahinbox

Timer1.Enabled = True End Sub

Private Sub Command2_Click() On Error Resume Next

Timer1.Enabled = False MSComm1.PortOpen = False Form1.Enabled = True Form1.Show Form2.Hide End Sub

Private Sub Timer1_Timer() On Error Resume Next reset_teks DataEnvironment1.rsCommand1.Open jumlahinbox = DataEnvironment1.rsCommand1.RecordCount Text1.Text = jumlahinbox If jumlahinbox = 0 Then DataEnvironment1.rsCommand1.Close Else With DataEnvironment1.rsCommand1 .MoveFirst Text5.Text = !SenderNumber Text6.Text = !TextDecoded record End With Timer1.Enabled = False cek_nomor End If End Sub

Private Sub cek_nomor() On Error Resume Next Timer1.Enabled = False

Dim jumlahnomor As Integer Dim a As String

DataEnvironment2.rsCommand1.Open

jumlahnomor = DataEnvironment2.rsCommand1.RecordCount If jumlahnomor = 0 Then

Text2.Text = "Tidak Sesuai" End If DataEnvironment2.rsCommand1.MoveFirst With DataEnvironment2.rsCommand1 a = !user End With Do Until (jumlahnomor = 0) If Text5.Text = a Then Text2.Text = "Sesuai" cek_isi_sms Exit Do Else

Text2.Text = "Tidak Sesuai" jumlahnomor = jumlahnomor - 1 End If DataEnvironment2.rsCommand1.MoveNext If DataEnvironment2.rsCommand1.EOF Then GoTo SELESAI Else With DataEnvironment2.rsCommand1 a = !user End With End If Loop Exit Sub SELESAI: With DataEnvironment2.rsCommand1 a = !user End With If Text5.Text = a Then cek_isi_sms Else

Text2.Text = "Tidak Sesuai"

Text4.Text = "Nomor pengirim tidak dikenal " kirim_kesalahan_nomor delete DataEnvironment1.rsCommand1.Close Timer1.Enabled = True End If End Sub

Private Sub cek_isi_sms() On Error Resume Next Dim b As String

DataEnvironment3.rsCommand1.Open

jumlahformat = DataEnvironment3.rsCommand1.RecordCount If jumlahformat = 0 Then

Text3.Text = "Tidak Sesuai" End If DataEnvironment3.rsCommand1.MoveFirst With DataEnvironment3.rsCommand1 b = !Format End With Do Until (jumlahformat = 0) If Text6.Text = b Then Text3.Text = "Sesuai" perintah bukaport vb_to_mikro Exit Do Else

Text3.Text = "Tidak Sesuai" jumlahformat = jumlahformat - 1 End If DataEnvironment3.rsCommand1.MoveNext If DataEnvironment3.rsCommand1.EOF Then GoTo SELESAI Else With DataEnvironment3.rsCommand1 b = !Format End With End If Loop Exit Sub SELESAI: With DataEnvironment3.rsCommand1 b = !Format End With If Text6.Text = b Then Text3.Text = "Sesuai" Else

Text3.Text = "Tidak Sesuai"

Text4.Text = "format sms tidak dikenal " kirim_kesalahan_format delete DataEnvironment1.rsCommand1.Close Timer1.Enabled = True End If End Sub

Private Sub perintah()

With DataEnvironment1.rsCommand1 Text6.Text = !TextDecoded

If Text6.Text = "Nyala1" Then Text7.Text = "Pengendalian" ElseIf Text6.Text = "Nyala2" Then Text7.Text = "Pengendalian" ElseIf Text6.Text = "Nyala3" Then Text7.Text = "Pengendalian" ElseIf Text6.Text = "Pantau" Then Text7.Text = "Pemantauan" End If

End Sub

Private Sub bukaport() MSComm1.CommPort = 6 MSComm1.Settings = "9600,N,8,1" MSComm1.InputLen = 1 MSComm1.DTREnable = True MSComm1.RTSEnable = True MSComm1.RThreshold = 1 MSComm1.SThreshold = 0 MSComm1.PortOpen = True End Sub

Private Sub vb_to_mikro()

With DataEnvironment1.rsCommand1 Text6.Text = !TextDecoded

End With

If Text6.Text = "Nyala1" Then MSComm1.Output = "1"

ElseIf Text6.Text = "Nyala2" Then MSComm1.Output = "2"

ElseIf Text6.Text = "Nyala3" Then MSComm1.Output = "3"

ElseIf Text6.Text = "Pantau" Then MSComm1.Output = "4"

End If End Sub

Private Sub MSComm1_OnComm() Dim strInput As String

Select Case MSComm1.CommEvent Case comEvReceive

'Do

'If MSComm1.CommEvent = comEvRecieve Then If MSComm1.InBufferCount = 1 Then

strInput = CStr(MSComm1.Input) Text12.Text = strInput

'Loop Until strInput = Chr$(10)

'Text12.Text = Left(Text12.Text, Len(Text12.Text) - 2) 'End Select

If Text12.Text = "a" Then

Text8.Text = "pompa 10 detik" Text9.Text = "sensor on"

ElseIf Text12.Text = "b" Then Text8.Text = "pompa 15 detik" Text9.Text = "sensor on" ElseIf Text12.Text = "c" Then Text8.Text = "pompa 20 detik" Text9.Text = "sensor on" ElseIf Text12.Text = "d" Then Text8.Text = "pompa mati" Text9.Text = "sensor off" ElseIf Text12.Text = "e" Then Text8.Text = "pompa siap" Text9.Text = "sensor off" ElseIf Text12.Text = "f" Then Text8.Text = "pompa belum siap" Text9.Text = "sensor off"

End If End If Text12.Text = Text12.Text Text8.Text = Text8.Text Text9.Text = Text9.Text kirim_kendali End Select End Sub

Private Sub kirim_kendali()

With DataEnvironment1.rsCommand1 Text6.Text = !TextDecoded

End With

If Text6.Text = "Nyala1" Then kirim_kendali1

ElseIf Text6.Text = "Nyala2" Then kirim_kendali1

ElseIf Text6.Text = "Nyala3" Then kirim_kendali1

ElseIf Text6.Text = "Pantau" Then kirim_pantau End If delete DataEnvironment1.rsCommand1.Close Timer1.Enabled = True End Sub

Private Sub delete() Dim b As String Dim Hapus As String

With DataEnvironment1.rsCommand1 b = !ID

End With

Hapus = "DELETE FROM inbox WHERE ID ='" & b & "'" DataEnvironment1.Connection1.Execute Hapus, adCmdText End Sub

Private Sub kirim_kesalahan_nomor() Dim kirim As String

kirim = "INSERT INTO outbox (DestinationNumber,TextDecoded) VALUES" + "('" & Text5.Text & "','nomor tidak dikenal ')"

DataEnvironment1.Connection1.Execute kirim, adCmdText End Sub

Private Sub kirim_kesalahan_format() Dim kirim As String

kirim = "INSERT INTO outbox (DestinationNumber,TextDecoded) VALUES" + "('" & Text5.Text & "','Format sms tidak dikenal ')"

DataEnvironment1.Connection1.Execute kirim, adCmdText End Sub

Private Sub kirim_kendali1() Dim kirim As String

kirim = "INSERT INTO outbox (DestinationNumber,TextDecoded) VALUES" + "('" & Text5.Text & "','" & Text8.Text & " " & Text9.Text & "')"

DataEnvironment1.Connection1.Execute kirim, adCmdText End Sub

Private Sub kirim_pantau() Dim kirim As String

kirim = "INSERT INTO outbox (DestinationNumber,TextDecoded) VALUES" + "('" & Text5.Text & "','" & Text8.Text & " " & Text9.Text & "')"

DataEnvironment1.Connection1.Execute kirim, adCmdText End Sub

Private Sub record() On Error Resume Next Dim No As Integer

Dim Date_and_Time As String

DataEnvironment4.rsCommand1.Open No = DataEnvironment4.rsCommand1.RecordCount No = No + 1 Date_and_Time = CStr(Now) DataEnvironment4.rsCommand1.AddNew DataEnvironment4.rsCommand1.Fields("No") = No DataEnvironment4.rsCommand1.Fields("tanggal") = Date_and_Time DataEnvironment4.rsCommand1.Fields("user") = Text5.Text DataEnvironment4.rsCommand1.Fields("format") = Text6.Text DataEnvironment4.rsCommand1.Update End Sub

Private Sub reset_teks() Text1.Text = "" Text2.Text = "" Text3.Text = "" Text4.Text = "" Text5.Text = "" Text6.Text = "" Text7.Text = "" Text8.Text = "" Text9.Text = ""

Text12.Text = "" End Sub

Form3( Form User) Private Sub Form_Load()

Label2.Caption = "Jam/Tanggal :" Text1.Text = Format(Now, "hh:mm:ss")

Text2.Text = Format(Now, "DDDD, d MM yyyy") End Sub

Private Sub Timer1_Timer()

Text1.Text = Format(Now, "hh:mm:ss") End Sub

Private Sub Timer2_Timer()

Text2.Text = Format(Now, "DDDD, d MM yyyy") End Sub

Private Sub RecAwal_Click()

DataEnvironment2.rsCommand1.MoveFirst End Sub

Private Sub RecSebelum_Click() With DataEnvironment2.rsCommand1 .MovePrevious

If .BOF Then .MoveFirst

MsgBox "Awal Record, Data User.", vbOKOnly, "informasi" End If

End With End Sub

Private Sub RecSesudah_Click() With DataEnvironment2.rsCommand1 .MoveNext

If .EOF Then .MoveLast

MsgBox "Akhir Record, Data User.", vbOKOnly, "informasi" End If

End With End Sub

Private Sub RecAkhir_Click()

DataEnvironment2.rsCommand1.MoveLast End Sub

Private Sub Tambah_Click()

On Error GoTo HandleError 'error untuk penanganan kesalahan If Tambah.Caption = "Tambah" Then

DataEnvironment2.rsCommand1.AddNew 'kosongkan field untuk record data baru nonaktifkontrol 'tombol-tombol pengerak record dimatikan

Simpan.Enabled = True 'aktifkan tombol simpan txtuser.Locked = False 'buka text user

Else

DataEnvironment2.rsCommand1.CancelUpdate 'batalkan proses penambahan data txtuser.Locked = True 'kunci text user

aktiftombol 'semua tombol penggerak record diaktifkan Tambah.Caption = "Tambah" 'ubah tulisan batal menjadi tambah Simpan.Enabled = False 'disable command simpan

DataEnvironment2.rsCommand1.MoveLast 'pindah ke record akhir End If

Tambah_Click_Exit: Exit Sub

HandleError: 'penyaringan kesalahan

MsgBox "Proses Tidak bisa dikerjakan", vbInformation, "Perhatian" On Error GoTo 0 'matikan fungsi penyaringan kesalahan /error End Sub

Private Sub Simpan_Click()

On Error GoTo HandleError 'error untuk penanganan kesalahan DataEnvironment2.rsCommand1.Update 'simpan record

txtuser.Locked = True 'kunci text user

aktiftombol 'semua tombol penggerak record diaktifkan Simpan.Enabled = False 'tombol simpan dinonaktifkan

Tambah.Caption = "Tambah" 'ubah kembali tulisan menjadi tambah dari batal Simpan_Click_Exit:

Exit Sub

HandleError: 'penyaringan kesalahan Dim strMessage As String

Dim errDBError As ADODB.Error

For Each errDBError In DataEnvironment1.Connection1.Errors strMessage = strMessage & errDBError.Description & vbCrLf Next

MsgBox strMessage, vbExclamation, "Data Kembar" On Error GoTo 0 'matikan fungsi penyaringan kesalahan/error End Sub

Private Sub Hapus_Click()

On Error GoTo HandleError 'error untuk penanganan kesalahan With DataEnvironment2.rsCommand1

.delete 'menghapus record yang aktif .MoveNext 'pindah ke record selanjutnya If .EOF Then 'jika data terakhir yang dihapus

.MovePrevious 'maju 1 record ke arah record pertama

If .BOF Then 'jika nilai BOF dan EOF benar,recordest kosong MsgBox "Data Kosong", vbInformation, "Perhatian" 'tampilkan nonaktifkontrol 'tombol-tombol penggerak record dinonaktifkan End If

End If End With Hapus_Click_Exit:

Exit Sub HandleError:

MsgBox "Data Tidak Dapat diProses", vbInformation, "Perhatian" On Error GoTo 0 'matikan fungsi penyaringan

End Sub

Private Sub Keluar_Click() Form1.Show

Form3.Hide End Sub

Private Sub nonaktifkontrol() RecAwal.Enabled = False RecSebelum.Enabled = False RecSesudah.Enabled = False RecAkhir.Enabled = False Hapus.Enabled = False End Sub

Private Sub aktiftombol() RecAwal.Enabled = True RecSebelum.Enabled = True RecSesudah.Enabled = True RecAkhir.Enabled = True Hapus.Enabled = True End Sub

Form4 (Form Record) Private Sub Form_Load()

Label2.Caption = "Jam/Tanggal :" Text1.Text = Format(Now, "hh:mm:ss")

Text2.Text = Format(Now, "DDDD, d MM yyyy") End Sub

Private Sub Timer1_Timer()

Text1.Text = Format(Now, "hh:mm:ss") End Sub

Private Sub Timer2_Timer()

Text2.Text = Format(Now, "DDDD, d MM yyyy") End Sub

Private Sub RecAwal_Click()

DataEnvironment3.rsCommand1.MoveFirst End Sub

Private Sub RecSebelum_Click() With DataEnvironment3.rsCommand1 .MovePrevious

If .BOF Then .MoveFirst

MsgBox "Awal Record, Data Format.", vbOKOnly, "informasi" End If

End With End Sub

Private Sub RecSesudah_Click() With DataEnvironment3.rsCommand1 .MoveNext

If .EOF Then .MoveLast

MsgBox "Akhir Record, Data Format.", vbOKOnly, "informasi" End If

End With End Sub

Private Sub RecAkhir_Click()

DataEnvironment3.rsCommand1.MoveLast End Sub

Private Sub Tambah_Click()

On Error GoTo HandleError 'error untuk penanganan kesalahan If Tambah.Caption = "Tambah" Then

DataEnvironment3.rsCommand1.AddNew 'kosongkan field untuk record data baru nonaktifkontrol 'tombol-tombol pengerak record dimatikan

Tambah.Caption = "Batal" 'mengganti tulisan tambah menjadi batal Simpan.Enabled = True 'aktifkan tombol simpan

txtformat.Locked = False 'buka text user Else

DataEnvironment3.rsCommand1.CancelUpdate 'batalkan proses penambahan data txtformat.Locked = True 'kunci text user

aktiftombol 'semua tombol penggerak record diaktifkan Tambah.Caption = "Tambah" 'ubah tulisan batal menjadi tambah Simpan.Enabled = False 'disable command simpan

DataEnvironment3.rsCommand1.MoveLast 'pindah ke record akhir End If

Tambah_Click_Exit: Exit Sub

HandleError: 'penyaringan kesalahan

MsgBox "Proses Tidak bisa dikerjakan", vbInformation, "Perhatian" On Error GoTo 0 'matikan fungsi penyaringan kesalahan /error End Sub

Private Sub Simpan_Click()

On Error GoTo HandleError 'error untuk penanganan kesalahan DataEnvironment3.rsCommand1.Update 'simpan record

txtformat.Locked = True 'kunci text user

aktiftombol 'semua tombol penggerak record diaktifkan Simpan.Enabled = False 'tombol simpan dinonaktifkan

Tambah.Caption = "Tambah" 'ubah kembali tulisan menjadi tambah dari batal Simpan_Click_Exit:

HandleError: 'penyaringan kesalahan Dim strMessage As String

Dim errDBError As ADODB.Error

For Each errDBError In DataEnvironment1.Connection1.Errors strMessage = strMessage & errDBError.Description & vbCrLf Next

MsgBox strMessage, vbExclamation, "Data Kembar" On Error GoTo 0 'matikan fungsi penyaringan kesalahan/error End Sub

Private Sub Hapus_Click()

On Error GoTo HandleError 'error untuk penanganan kesalahan With DataEnvironment3.rsCommand1

.delete 'menghapus record yang aktif .MoveNext 'pindah ke record selanjutnya If .EOF Then 'jika data terakhir yang dihapus

.MovePrevious 'maju 1 record ke arah record pertama

If .BOF Then 'jika nilai BOF dan EOF benar,recordest kosong MsgBox "Data Kosong", vbInformation, "Perhatian" 'tampilkan nonaktifkontrol 'tombol-tombol penggerak record dinonaktifkan End If End If End With Hapus_Click_Exit: Exit Sub HandleError:

MsgBox "Data Tidak Dapat diProses", vbInformation, "Perhatian" On Error GoTo 0 'matikan fungsi penyaringan

End Sub

Private Sub Keluar_Click() Form1.Show

Form4.Hide End Sub

Private Sub nonaktifkontrol() RecAwal.Enabled = False RecSebelum.Enabled = False RecSesudah.Enabled = False RecAkhir.Enabled = False Hapus.Enabled = False End Sub

Private Sub aktiftombol() RecAwal.Enabled = True RecSebelum.Enabled = True RecSesudah.Enabled = True RecAkhir.Enabled = True Hapus.Enabled = True End Sub

Form5 (Form Record) Private Sub Form_Load() Load Me

MSFlexGrid1.TextMatrix(0, 0) = "No"

MSFlexGrid1.TextMatrix(0, 1) = "Date And Time" MSFlexGrid1.TextMatrix(0, 2) = "User" MSFlexGrid1.TextMatrix(0, 3) = "Format" MSFlexGrid1.ColWidth(0) = 400 MSFlexGrid1.ColWidth(1) = 2000 MSFlexGrid1.ColWidth(2) = 1400 MSFlexGrid1.ColWidth(3) = 1000 For i = 0 To 3 MSFlexGrid1.Row = 0 MSFlexGrid1.Col = i MSFlexGrid1.CellFontBold = True MSFlexGrid1.ColAlignment(i) = 3 Next i Data End Sub

Private Sub Data() On Error Resume Next Dim number As Integer

DataEnvironment4.rsCommand1.Open

Do While Not DataEnvironment4.rsCommand1.EOF T = T + 1

MSFlexGrid1.TextMatrix(T, 0) = DataEnvironment4.rsCommand1.Fields("No") MSFlexGrid1.TextMatrix(T, 1) = DataEnvironment4.rsCommand1.Fields("tanggal") MSFlexGrid1.TextMatrix(T, 2) = DataEnvironment4.rsCommand1.Fields("User") MSFlexGrid1.TextMatrix(T, 3) = DataEnvironment4.rsCommand1.Fields("Format")

If Not DataEnvironment4.rsCommand1.EOF Then

DataEnvironment4.rsCommand1.MoveNext Loop

End Sub

Private Sub Command1_Click() Dim Hapus As String

Hapus = "DELETE * FROM record"

DataEnvironment4.Connection1.Execute Hapus, adCmdText Me.MSFlexGrid1.Clear

End Sub

Private Sub Command2_Click() Form5.Hide

Form1.Show End Sub

Form6 (Form About) Private Sub cmdOK_Click() Form1.Show

frmAbout.Hide End Sub

Private Sub Form_Load() Skin1.ApplySkin hWnd

SkinLabel1.Caption = "INTERFACE PENGENDALI DAN PEMANTAU PENYIRAM TAMAN PADA SISTEM OTOMASI RUMAH MENGGUNAKAN LAYANAN SMS" SkinLabel2.Caption = "(c)Copyright 2010..Universitas Sanata Dharma"

SkinLabel3.Caption = ":: Gil@ng Profile ::"

SkinLabel4.Caption = "Nama : Yustinus Atmadya Gilang Pramana " SkinLabel5.Caption = " TTL : Jakarta /03-08-1988 "

SkinLabel6.Caption = "NIM : 065114034"

SkinLabel7.Caption = "Motto : 1. Belajar untuk menjadi lebih baik dari kemarin & 2.nasi goreng &"

SkinLabel8.Caption = "Pengendali dan pemantau penyiram taman pada sistem otomasi rumah menggunakan layanan sms adalah program untuk mengendalikan secara otomatis melalui jaringan gsm dengan memanfaatkan fitur sms. Untuk menunjang program ini dibutuhkan beberapa apilkasi seperti gammu, XAMPP, VB6, mikrokontroler AtMega 8535"

Listing Program Mikrokontroler

// Project TA

// Yustinus Atmadya Gilang Pramana (065114034)

#include <mega8535.h> // menggunkana mikrokontroler ATMega 8535 #include <delay.h> // menggunkan fungsi delay

#include <stdio.h> // menngunakan fungsi stdio

#define Sensor PINA.0 // mendefinisikan sensor di PINA.0 unsigned char data_terima=0x00;

const long int osilator=11059200; // menggunkan kristal 11.0592 MHz unsigned long int UBRR;

void inisialisasi_UART(unsigned long int baud_rate); unsigned char TerimaByte(void);

void KirimByte (unsigned char data); //

void main(void) {

PORTA=0x00;

DDRA=0x00; // Port A sebagai input DDRC=0xFF;

PORTC=0x00; // Port C sebagai output

inisialisasi_UART(9600); // inisialisai baudrate 9600 bps while(1)

{

data_terima=TerimaByte();

if (data_terima=='1') // jika data yang diterima =1 {

PORTC.0=1; // PortC.0 logika high delay_ms(5000); // tunda 5000 ms if (Sensor==1) // jika sensor=1 {

delay_ms(2000); // tunda 2000 ms putchar('a'); // kirim karakter a

delay_ms(3000); // tunda 3000 ms PORTC.0=0;

}

else // selain itu {

putchar('d'); // kirim karakter d PORTC.0=0; // PortC.0 logika low }

}

else if (data_terima=='2') //jika data yang diterima =2 {

PORTC.0=1; // PortC.0 logika high delay_ms(5000); // tunda 5000 ms if (Sensor==1)

{

delay_ms(6000);

putchar('b'); // kirim karakter b delay_ms(4000);

PORTC.0=0; }

else {

putchar('d'); // kirim karakter d PORTC.0=0; // Portc.0 logika low }

}

else if (data_terima=='3') // jika data yang diterima =3 {

PORTC.0=1; // PortC.0 logika high delay_ms(5000); // tunda 5000 ms if (Sensor==1)

{

delay_ms(8000);

putchar('c'); // kirim karakter c delay_ms(7000);

PORTC.0=0; }

else {

putchar('d'); // kirim karakter d PORTC.0=0; // PortC.0 logika low }

}

else if (data_terima=='4') // jika data yang diterima=4 {

delay_ms(500); // tunda 500 ms if (PORTC.0 ==0 )

{

putchar('e'); // kirim karakter e }

else {

putchar('f'); // kirim karakter f }

delay_ms(500); PORTC.0=0;

PINA.0=0; };

}

void inisialisasi_UART(unsigned long int baud_rate) { UBRR=(osilator/(16*baud_rate))-1; UBRRL=UBRR; UBRRH=UBRR>>8; UCSRB=0x18; UCSRC=0x86; }

unsigned char TerimaByte(void) {

while(!(UCSRA&0x80)); // tunggu data yang datang return UDR; // terima data

}

void KirimByte (unsigned char data) {

while(!(UCSRA&0x20)); // tunggu data sebelumnya selesai dikirim UDR=data; // kirimkan data sekarang

Dokumen terkait