BAB 5 PENUTUP
5.2 Saran
Saran-saran yang dapat digunakan untuk pengembangan sistem ini lebih lanjut adalah sebagai berikut:
1. IC MT8870 yang digunakan sebagai dekoder DTMF tidak dapat mendeteksi penutupan telepon pengirim dan dengan menggunakan IC jenis MT8888 masalah ini dapat diatasi.
2. Perancangan ini menggunakan port LPT1 sehingga terminal keluaran dan masukan terbatas. Dengan keluaran dekoder DTMF sebanyak 4 bit, lampu yang dapat dikontrol adalah sebanyak 24 = 16 buah. Dengan memanfaatkan PPI (Programmable Pheripheral Interface) yang mempunyai terminal masukan dan keluaran yang lebih banyak hal ini dapat dilaksanakan. Untuk
keperluan khusus, lampu yang dikontrol dapat lebih banyak lagi dengan menggunakan multiplekser sesudah dekoder DTMF.
3. Perekaman akan menghasilkan sebuah file yang kontinu, hal ini kurang efektif bila rekaman yang masuk sangat banyak. Dengan modifikasi program, file
DAFTAR PUSTAKA
Brain, Marshall 2002 'How Telephones Work' viewed 29 Agustus 2004,
<http://electronics.howstuffworks.com>
Budiharto, Widodo 2004, Interfacing Komputer dan Mikrokontroler, Penerbit Elex Media Komputindo, Jakarta
Engdahl, Tomi 1996, ‘Simple Circuit and Program to Show How to Use PC Parallel Port Output Capabilities’, viewed 12 Mei 2004,
<http://www.hut.fi/misc/electronics/circuits>
Engdahl, Tomi 1998 'Telephone line audio interface circuits' viewed 23 Agustus 2004, <http://splat.foo.is/electronics/teleinterface.htm>
Engdahl, Tomi 2000 'Telephone ringing circuits' viewed 29 Agustus 2004,
<http://ourworld.compuserve.com/homepages/Bill_Bowden/page11.htm>
Harries, Ian 1996, ‘IBM-PC Parallel Printer Port Programming Considerations’, viewed 17 Mei 2004, <http://www.doc.ic.ac.uk/~ih/doc/par/doc.htm> Harries, Ian 1998, ‘Interfacing to the IBM-PC Parallel Printer Port’, viewed 17
Mei 2004, <http://www.doc.ic.ac.uk/~ih/doc/par/doc/intro.htm>
Kurniadi, Adi 2000, Pemrograman Microsoft Visual Basic 6, Penerbit Elex Media Komputindo, Jakarta
Malvino., Barmawi 1994, Prinsip-Prinsip Elektronika Jilid 1, Edisi Ketiga, Penerbit Erlangga, Jakarta
MITEL 1997, Aplication of the MT8870 Integrated DTMF Receiver
Nalwan, Agustinus 2004, Membuat Program Profesional secara Cepat dengan VB, Penerbit Elex Media Komputindo, Jakarta
Paul, 'DTMF Generator/Decoder' viewed 22 Agustus 2004,
<http://www.boondog.com//tutorials/dtmf/dtmf.htm>
Simanjuntak, Tiur LH 1993, Dasar-dasar Telekomunikasi, Penerbit Alumni, Bandung.
A B C D 4 3 2 1 D C B A Title 10 k 47 0u F/2 5V 3, 3 V PC8 17 1u F/1 20 V TIP RING 10 k +5 V 10 0k 10 0k 0.1 uF 0.1 uF 37 0k 3,5 79 M hz +5 V VDD 18 VSS 9 TOE 10 Q4 14 Q3 13 Q2 12 Q1 11 St/GT 17 11 11 IN-2 GS 3 Vref 4 IN+ 1 OSC 2 7 OSC 1 8 MT88 70 R elay C90 13 +5 V 5,6 k Relay C 90 13 12 V 5,6 k 1u F/2 5V
Lin e-in s oun dc ard Lin e-out sou nd card Grou nd
Relay
Relay C90 13 +1 2V Ke saklar gag ang telep on
5,6 k F N Jala-jala PLN 1 14 2 15 3 16 4 17 5 18 6 19 7 20 8 21 9 22 10 23 11 24 12 25 13 LPT1 Ko mpu ter DB25
8x R 5 ,6 k 8x C901 3 8x Dio da 8x R elay 8x Lamp u 1W /220 V
SKEMATIK LENGKAP RANGKAIAN PENGONTROL LAMPU LISTRIK
LAMPIRAN A. SKEMA RANGKAIAN LENGKAP
+12 V +12 V +12 V +12 V +12 V +12 V +12 V +12 V
LAMPIRAN C. LIST PROGRAM PENGGERAK
Public Declare Sub PortOut Lib "io.dll" (ByVal Port As Integer, ByVal Value As Byte)
Public Declare Function PortIn Lib "io.dll" (ByVal Port As Integer) As Byte
''Deklarasi "io.dll" untuk inisialisasi port LPT1 Public Declare Function DeleteFile Lib "kernel32.dll" Alias
"DeleteFileA" (ByVal lpFileName As String) As Long
''Deklarasi "kernel32.dll" untuk mengambil fungsi hapus file Function BitStatus(PortAddress, BitYouWant) As Integer
''fungsi mendeteksi data per bit pada port LPT1 If PortAddress = 888 Then
NumOfBits = 8
ElseIf PortAddress = 889 Then NumOfBits = 5
ElseIf PortAddress = 890 Then NumOfBits = 4
End If
ReDim PortBits(NumOfBits) As Integer PortNum = PortIn(PortAddress)
For i = 1 To NumOfBits
PortBits(i) = PortNum Mod 2 PortNum = Fix(PortNum / 2) Next i
BitStatus = PortBits(BitYouWant) End Function
Sub OutPort(PortAddress, OutNum)
''sub mengeluarkan data per bit ke port LPT1 PortState = PortIn(PortAddress)
PortNum = PortState + OutNum PortOut PortAddress, PortNum
If OutNum = 0 Then Call PortOut(PortAddress, 0) End Sub
Private Sub Command1_Click() FrmAbout.Show
End Sub
Private Sub Form_Load() ComboDelay.AddItem "1" ComboDelay.AddItem "5" ComboDelay.AddItem "10" ComboDelay.AddItem "15" ComboDelay.AddItem "20" ComboDelay.AddItem "25" ComboDelay.AddItem "30" ComboDelay.AddItem "35" ComboDelay.AddItem "40" ComboDelay.AddItem "45" ComboDelay.AddItem "60"
Call PortOut(890, 11) ''reset port Control (out) Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer() 'timer pendeteksi dering Dim DeteksiDering As Byte
DeteksiDering = BitStatus(889, 4) If DeteksiDering = 0 Then
Label3.Caption = "Mendeteksi Sinyal Dering..." Delay Timer6.Enabled = True Timer1.Enabled = False End If End Sub Sub Delay()
''fungsi untuk menghitung delay angkat untuk timer 2 Dim IntervalDelay As Long
IntervalDelay = ComboDelay * 1000 Timer2.Interval = IntervalDelay Timer2.Enabled = True
End Sub
Private Sub Timer2_Timer()
''timer pengaktif pengangkat telepon Timer6.Enabled = False
Timer3.Enabled = True Timer2.Enabled = False Call PortOut(890, 2)
''menghubungkan dekoder DTMF ke jalur telepon ''dan mengaktifkan relay pengangkat telepon End Sub
Private Sub Timer3_Timer() 'timer penjawab telepon TimerPass1.Enabled = True
Label3.Caption = "Penjawab Telepon Aktif!!!"
MMControl1.FileName = "C:\Romadhani\Program Tugas Akhir\Pembuka.wav" MMControl1.Command = "Open" MMControl1.DeviceType = "WaveAudio" MMControl1.Command = "Play" Timer4.Interval = 4500 Timer4.Enabled = True Timer3.Enabled = False End Sub
Private Sub Timer4_Timer() 'timer untuk proses merekam TimerTundaTutup.Interval = 10000 TimerTundaTutup.Enabled = True CommandPlay.Enabled = True MMControl1.Command = "Stop" MMControl1.Command = "Close" Call PortOut(890, 0)
''menukar posisi jalur ke line-in MMControl2.DeviceType = "WaveAudio" MMControl2.RecordMode = mciRecordInsert
MMControl2.FileName = "C:\Romadhani\Program Tugas Akhir\Rekaman.wav"
MMControl2.Command = "open" MMControl2.Command = "record"
Label3.Caption = "Sedang merekam pembicaraan" End Sub
Private Sub Timer5_Timer() ''timer pengontrolan lampu Dim VarKontrol As Byte
VarKontrol = PortIn(889) MMControl1.Command = "Stop" MMControl1.Command = "close"
Label3.Caption = "Pengontrolan Aktif" TimerTundaTutup.Interval = 10000 TimerTundaTutup.Enabled = True If VarKontrol = 63 Then
''jika tekan tanda bintang menghidupkan lampu TimerTundaTutup.Enabled = False
Timer7.Enabled = True Timer5.Enabled = False End If
If VarKontrol = 79 Then
''jika tekan tanda pagar mematikan lampu TimerTundaTutup.Enabled = False
Timer8.Enabled = True Timer5.Enabled = False End If
If VarKontrol = 47 Then
''jika tekan 0 telepon ditutup TimerTundaTutup.Enabled = False TimerTundaTutup.Interval = 1 TimerTundaTutup.Enabled = True End If
End Sub
Private Sub Timer6_Timer() 'timer pembatalan panggilan Dim VariabelBatal As Byte
VariabelBatal = BitStatus(889, 4)
If VariabelBatal = 1 Then 'gagang ditutup panggilan batal
Label3.Caption = "Panggilan batal atau telepon telah diangkat" Timer1.Enabled = True
Timer2.Enabled = False End If
End Sub
Private Sub Timer7_Timer() 'timer menghidupkan lampu Dim VariabelHidup As Byte
VariabelHidup = PortIn(889)
Label3.Caption = "Perintah menghidupkan lampu..." MMControl3.Command = "stop"
MMControl3.Command = "close" TimerTundaTutup.Interval = 10000 TimerTundaTutup.Enabled = True
If VariabelHidup = 159 Then
MMControl3.FileName = "C:\Romadhani\Program Tugas Akhir\Hidup1.wav"
Call HidupLampu(1, 1) End If
If VariabelHidup = 175 Then
MMControl3.FileName = "C:\Romadhani\Program Tugas Akhir\Hidup2.wav"
Call HidupLampu(2, 2) End If
If VariabelHidup = 191 Then
MMControl3.FileName = "C:\Romadhani\Program Tugas Akhir\Hidup3.wav"
Call HidupLampu(3, 4) End If
If VariabelHidup = 207 Then
MMControl3.FileName = "C:\Romadhani\Program Tugas Akhir\Hidup4.wav"
Call HidupLampu(4, 8) End If
If VariabelHidup = 223 Then
MMControl3.FileName = "C:\Romadhani\Program Tugas Akhir\Hidup5.wav"
Call HidupLampu(5, 16) End If
If VariabelHidup = 239 Then
MMControl3.FileName = "C:\Romadhani\Program Tugas Akhir\Hidup6.wav"
Call HidupLampu(6, 32) End If
If VariabelHidup = 255 Then
MMControl3.FileName = "C:\Romadhani\Program Tugas Akhir\Hidup7.wav"
Call HidupLampu(7, 64) End If
If VariabelHidup = 15 Then
MMControl3.FileName = "C:\Romadhani\Program Tugas Akhir\Hidup8.wav"
Call HidupLampu(8, 128) End If
If VariabelHidup = 31 Then
MMControl3.FileName = "C:\Romadhani\Program Tugas Akhir\hidupsemua.wav" Call PortOut(888, 255) Timer5.Enabled = True Timer7.Enabled = False CommandSemuaHidup.Enabled = False CommandSemuaMati.Enabled = True End If
If VariabelHidup = 79 Then
''jika tekan tanda pagar ke perintah mematikan Timer8.Enabled = True
Timer7.Enabled = False End If
End Sub
Private Sub Timer8_Timer() ''timer mematikan lampu Dim VariabelMati As Byte VariabelMati = PortIn(889)
Label3.Caption = "Perintah mematikan lampu..." MMControl3.Command = "stop"
MMControl3.Command = "close" TimerTundaTutup.Interval = 10000 TimerTundaTutup.Enabled = True If VariabelMati = 159 Then
MMControl3.FileName = "C:\Tugas Akhir Romadhani\Program Tugas Akhir\Mati1.wav"
Call MatiLampu(1, -1) End If
If VariabelMati = 175 Then
MMControl3.FileName = "C:\Tugas Akhir Romadhani\Program Tugas Akhir\Mati2.wav"
Call MatiLampu(2, -2) End If
If VariabelMati = 191 Then
MMControl3.FileName = "C:\Tugas Akhir Romadhani\Program Tugas Akhir\Mati3.wav"
Call MatiLampu(3, -4) End If
If VariabelMati = 207 Then
MMControl3.FileName = "C:\Tugas Akhir Romadhani\Program Tugas Akhir\Mati4.wav"
Call MatiLampu(4, -8) End If
If VariabelMati = 223 Then
MMControl3.FileName = "C:\Tugas Akhir Romadhani\Program Tugas Akhir\Mati5.wav"
Call MatiLampu(5, -16) End If
If VariabelMati = 239 Then
MMControl3.FileName = "C:\Tugas Akhir Romadhani\Program Tugas Akhir\Mati6.wav"
Call MatiLampu(6, -32) End If
If VariabelMati = 255 Then
MMControl3.FileName = "C:\Tugas Akhir Romadhani\Program Tugas Akhir\Mati7.wav"
Call MatiLampu(7, -64) End If
If VariabelMati = 15 Then
MMControl3.FileName = "C:\Tugas Akhir Romadhani\Program Tugas Akhir\Mati8.wav"
Call MatiLampu(8, -128) End If
If VariabelMati = 31 Then
MMControl3.FileName = "C:\Romadhani\Program Tugas Akhir\matisemua.wav" Call PortOut(888, 0) CommandSemuaHidup.Enabled = True CommandSemuaMati.Enabled = False Timer5.Enabled = True Timer7.Enabled = False End If If VariabelMati = 63 Then
''jika tekan tanda bintang ke perintah menghidupkan Timer7.Enabled = True
Timer8.Enabled = False End If
End Sub
Private Sub TimerPass1_Timer() If PortIn(889) = 159 Then TimerPass2.Enabled = True TimerPass1.Enabled = False End If
End Sub
Private Sub TimerPass2_Timer() If PortIn(889) = 175 Then TimerPass3.Enabled = True TimerPass2.Enabled = False End If
End Sub
Private Sub TimerPass3_Timer() If PortIn(889) = 191 Then TimerPass4.Enabled = True TimerPass3.Enabled = False End If
End Sub
Private Sub TimerPass4_Timer() If PortIn(889) = 207 Then TimerPass5.Enabled = True TimerPass4.Enabled = False End If
End Sub
Private Sub TimerPass5_Timer() If PortIn(889) = 223 Then Call PortOut(890, 2)
''kembalikan posisi jalur ke line-out Timer3.Enabled = False
Timer4.Enabled = False Timer5.Enabled = True
MMControl3.FileName = "C:\Romadhani\Program Tugas Akhir\hubungkontrol.wav" MMControl3.DeviceType = "WaveAudio" MMControl3.Command = "Open" MMControl3.Command = "Play" MMControl1.Command = "Stop" MMControl1.Command = "Close" MMControl2.Command = "Stop" MMControl2.Command = "Close" TimerPass5.Enabled = False End If End Sub
Private Sub TimerStatusLampu_Timer()
''timer untuk menampilkan status nyala lampu If BitStatus(888, 1) = 1 Then LabelA.ForeColor = &HFF0000 LabelA.Caption = "HIDUP" CmdHidup1.Enabled = False CmdMati1.Enabled = True CommandSemuaMati.Enabled = True Else LabelA.ForeColor = &HFF& LabelA.Caption = "MATI" CmdHidup1.Enabled = True CmdMati1.Enabled = False CommandSemuaHidup.Enabled = True End If If BitStatus(888, 2) = 1 Then LabelB.ForeColor = &HFF0000 LabelB.Caption = "HIDUP" CmdHidup2.Enabled = False CmdMati2.Enabled = True CommandSemuaMati.Enabled = True Else LabelB.ForeColor = &HFF& LabelB.Caption = "MATI" CmdHidup2.Enabled = True CmdMati2.Enabled = False CommandSemuaHidup.Enabled = True End If If BitStatus(888, 3) = 1 Then LabelC.ForeColor = &HFF0000 LabelC.Caption = "HIDUP" CmdHidup3.Enabled = False CmdMati3.Enabled = True CommandSemuaMati.Enabled = True Else LabelC.ForeColor = &HFF& LabelC.Caption = "MATI" CmdHidup3.Enabled = True CmdMati3.Enabled = False CommandSemuaHidup.Enabled = True End If
If BitStatus(888, 4) = 1 Then LabelD.ForeColor = &HFF0000 LabelD.Caption = "HIDUP" CmdHidup4.Enabled = False CmdMati4.Enabled = True CommandSemuaMati.Enabled = True Else LabelD.ForeColor = &HFF& LabelD.Caption = "MATI" CmdHidup4.Enabled = True CmdMati4.Enabled = False CommandSemuaHidup.Enabled = True End If If BitStatus(888, 5) = 1 Then LabelE.ForeColor = &HFF0000 LabelE.Caption = "HIDUP" CmdHidup5.Enabled = False CmdMati5.Enabled = True CommandSemuaMati.Enabled = True Else LabelE.ForeColor = &HFF& LabelE.Caption = "MATI" CmdHidup5.Enabled = True CmdMati5.Enabled = False CommandSemuaHidup.Enabled = True End If If BitStatus(888, 6) = 1 Then LabelF.ForeColor = &HFF0000 LabelF.Caption = "HIDUP" CmdHidup6.Enabled = False CmdMati6.Enabled = True CommandSemuaMati.Enabled = True Else LabelF.ForeColor = &HFF& LabelF.Caption = "MATI" CmdHidup6.Enabled = True CmdMati6.Enabled = False CommandSemuaHidup.Enabled = True End If If BitStatus(888, 7) = 1 Then LabelG.ForeColor = &HFF0000 LabelG.Caption = "HIDUP" CmdHidup7.Enabled = False CmdMati7.Enabled = True CommandSemuaMati.Enabled = True Else LabelG.ForeColor = &HFF& LabelG.Caption = "MATI" CmdHidup7.Enabled = True CmdMati7.Enabled = False CommandSemuaHidup.Enabled = True End If If BitStatus(888, 8) = 1 Then LabelH.ForeColor = &HFF0000 LabelH.Caption = "HIDUP" CmdHidup8.Enabled = False
CmdMati8.Enabled = True CommandSemuaMati.Enabled = True Else LabelH.ForeColor = &HFF& LabelH.Caption = "MATI" CmdHidup8.Enabled = True CmdMati8.Enabled = False CommandSemuaHidup.Enabled = True End If If PortIn(888) = 255 Then CommandSemuaHidup.Enabled = False End If If PortIn(888) = 0 Then CommandSemuaMati.Enabled = False End If End Sub
Sub HidupLampu(Bit, Data)
''Fungsi untuk menghidupkan lampu Call KirimSuara
If BitStatus(888, Bit) = 0 Then Call OutPort(888, Data)
Timer5.Enabled = True Timer7.Enabled = False Else Timer5.Enabled = True Timer7.Enabled = False End If End Sub
Sub MatiLampu(Bit, Data)
''Fungsi untuk mematikan lampu Call KirimSuara
If BitStatus(888, Bit) = 1 Then Call OutPort(888, Data)
Timer5.Enabled = True Timer8.Enabled = False Else Timer5.Enabled = True Timer8.Enabled = False End If End Sub Sub KirimSuara() MMControl3.Command = "Open" MMControl3.DeviceType = "WaveAudio" MMControl3.Command = "Play" End Sub
Private Sub TimerTundaTutup_Timer() ''timer pewaktu untuk menutup telepon Timer2.Enabled = False
Timer3.Enabled = False Timer4.Enabled = False Timer5.Enabled = False Timer6.Enabled = False
Timer7.Enabled = False Timer8.Enabled = False Timer1.Enabled = True
Label3.Caption = "Telepon ditutup" Call SimpanRekam Call PortOut(890, 11) TimerTundaTutup.Enabled = False End Sub Sub SimpanRekam() MMControl2.Command = "stop" MMControl2.Command = "save" MMControl2.Command = "close" Label5.ForeColor = &HFF0000
Label5.Caption = "Ada rekaman baru" Label3.Caption = "Telepon ditutup" End Sub
Private Sub CommandPlay_Click() ''command untuk memutar rekaman CommandStop.Enabled = True CommandHapus.Enabled = False
MMControl2.FileName = "C:\Romadhani\Program Tugas Akhir\Rekaman.wav"
MMControl2.Command = "Open"
MMControl2.DeviceType = "WaveAudio" MMControl2.Command = "Play"
CommandPlay.Enabled = False
Label5.Caption = "Sedang memutar rekaman..." End Sub
Private Sub CommandStop_Click()
''Command untuk menghentikan memutar rekaman CommandHapus.Enabled = True CommandPlay.Enabled = True MMControl2.Command = "stop" MMControl2.Command = "close" CommandStop.Enabled = False Label5.ForeColor = &H0&
Label5.Caption = "Tidak ada rekaman baru" End Sub
Private Sub CommandKeluar_Click() Dim KonfirmasiKeluar As Integer
KonfirmasiKeluar = MsgBox("Yakin ingin Keluar?", vbYesNo, "Keluar")
If KonfirmasiKeluar = 6 Then
Call PortOut(890, 11) ''reset port control End
End If End Sub
Private Sub CommandHapus_Click() ''command untuk menghapus rekaman Dim Hapus As Integer
Hapus = MsgBox("Yakin ingin Menghapus Rekaman?", vbYesNo, "Hapus Rekaman") If Hapus = 6 Then CommandStop.Enabled = False CommandPlay.Enabled = False CommandHapus.Enabled = False
X = DeleteFile("C:\Romadhani\Program Tugas Akhir\Rekaman.wav") If X = 1 Then
MsgBox "File Rekaman.wav telah dihapus!", , "Hapus Rekaman" Else
MsgBox "File tidak ada, penghapusan gagal.", , "Hapus Rekaman" End If
Label5.ForeColor = &HFF&
Label5.Caption = "Rekaman telah dihapus" End If
End Sub
Private Sub CmdHidup1_Click() If BitStatus(888, 1) = 0 Then Call OutPort(888, 1)
End If End Sub
Private Sub CmdHidup2_Click() If BitStatus(888, 2) = 0 Then Call OutPort(888, 2)
End If End Sub
Private Sub CmdHidup3_Click() If BitStatus(888, 3) = 0 Then Call OutPort(888, 4)
End If End Sub
Private Sub CmdHidup4_Click() If BitStatus(888, 4) = 0 Then Call OutPort(888, 8)
End If End Sub
Private Sub CmdHidup5_Click() If BitStatus(888, 5) = 0 Then Call OutPort(888, 16)
End If End Sub
Private Sub CmdHidup6_Click() If BitStatus(888, 6) = 0 Then Call OutPort(888, 32)
End If End Sub
Private Sub CmdHidup7_Click() If BitStatus(888, 7) = 0 Then Call OutPort(888, 64)
End If End Sub
Private Sub CmdHidup8_Click() If BitStatus(888, 8) = 0 Then Call OutPort(888, 128)
End If End Sub
Private Sub CmdMati1_Click() If BitStatus(888, 1) = 1 Then Call OutPort(888, -1)
End If End Sub
Private Sub CmdMati2_Click() If BitStatus(888, 2) = 1 Then Call OutPort(888, -2)
End If End Sub
Private Sub CmdMati3_Click() If BitStatus(888, 3) = 1 Then Call OutPort(888, -4)
End If End Sub
Private Sub CmdMati4_Click() If BitStatus(888, 4) = 1 Then Call OutPort(888, -8)
End If End Sub
Private Sub CmdMati5_Click() If BitStatus(888, 5) = 1 Then Call OutPort(888, -16)
End If End Sub
Private Sub CmdMati6_Click() If BitStatus(888, 6) = 1 Then Call OutPort(888, -32)
End If End Sub
Private Sub CmdMati7_Click() If BitStatus(888, 7) = 1 Then Call OutPort(888, -64)
End If End Sub
Private Sub CmdMati8_Click() If BitStatus(888, 8) = 1 Then Call OutPort(888, -128) End If
End Sub
Private Sub CommandSemuaHidup_Click() Call PortOut(888, 255)
CommandSemuaHidup.Enabled = False End Sub
Private Sub CommandSemuaMati_Click() Call PortOut(888, 0)
CommandSemuaMati.Enabled = False End Sub