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