146
Do Get 2 , Tmp
If Tmp = “,” Then Exit Do Msg11 = Msg11 + Chrtmp „variable speed over groung
Loop Do
Get 2 , Tmp If Tmp = “,” Then Exit Do
Msg12 = Msg12 + Chrtmp „variable tanggal
Loop If Msg10 = “” Or Msg10 = “ “ Then Msg10 = “0”
Perintah “GET” adalah perintah yang digunakan BASCOM untuk membaca satu karakter dari port RS232. Data yang didapatkan berupa karakter. Pembacaan
dilakukan dalam sebuah perulangan dimana pembacaan akan berakhir bagi variable
tersebut jika pembacaan “GET” menemukan karakter “,”. Karakter yang telah disusun dalam setiap variabel tersebut merupakan data yang sesuai dengan
urutan kalimat NMEA GPRMC. Variabel tersebut yaitu
Waktu, Msg12, Msg2, Msg4, Msg3, Msg7, Msg10.
4.2.5. Antarmuka Modem GSM untuk Pengiriman Data dan Kendali Dua Arah
Modem yang digunakan adalah modem keluaran Wavecom.Inc tipe Fastract
M1306B. Modem ini mendukung komunikasi AT-Command dengan keluaran serial RS232. Adanya perbedaan level komunikasi ini sehingga
dibutuhkan antarmuka agar dapat berkomunikasi dengan baik yaitu menggunakan IC MAX232 Gambar 28. Dapat dilihat pada IC tersebut kaki TX dan RX
komunikasi RS232 pada pin 7 dan 8 sedangkan input dan keluaran RX dan TX komunikasi RS232 level TTL pada pin 9 dan 10. Pin 7 dan 8 kemudian
dihubungkan dengan pin TX dan RX modem GSM secara null-modem atau TX dan RX saling disilangkan seolah-olah komunikasi dilakukan oleh dua peralatan
yang sama tanpa adanya sinyal kontrol.
147
Gambar 28. Rangkaian antarmuka modem GSM Gambar 28. menunjukkan rangkaian antarmuka mikrokontroler Tx PD.1
dan Rx PD.0 dengan Tx dan Rx Fastract M1306B dengan protocol komunikasi baud rate
9600. Untuk mengatur komunikasi pada kecepatan yang sama yaitu 9600 bps maka pada modem dan mikrokontroler harus diatur kecepatan
komunikasi yang sama. Default modem M1306B memiliki baudrate 115200 bps, tetapi dengan Kristal 4 MHz yang digunakan pada mikrokontroler kecepatan
komunikasi ini tidak mungkin dilakukan, oleh karena itu kecepatan modem harus diatur kembali. Pengaturan kembali kecepatan baud rate ini dilakukan
menggunakan AT-Command AT+CIFR=9600. Perintah tersebut bersifat sementara artinya konfigurasi kecepatan yang dilakukan belum disimpan di
memori EEPROM modem, dan jika catu daya dimatikan konfigurasi akan kembali ke 115200 bps. Penyimpanan setting kecepatan pada EEPROM dapat
menggunakan AT-Command
ATW. hubungan
antara modem
dan mikrokontroler dilakukan hanya menggunakan pin TX dan RX tanpa melibatkan
pin control sehingga konfigurasi kabel keduanya harus menggunakan konfigurasi null modem
, dimana konfigurasi ini menyilangan antara kabel TX dan RX.
Modul Pengirim Data
Modul pengiriman data berupa SMS ini akan aktif bila dalam file config.ini nilai variabel smsornot sama dengan satu baris ke-2 dalam file CONFIG.INI,
maka pada modul ini dilakukan pengecekan berapa nilai variable tersebut. Jika
148
nilainya sama dengan 1 maka akan dilakukan perintah SMS seperti pada kode berikut:
If Smsornot = 1 Then If Hitungsms Waktusms Then
Print AT+CMGS=;Chr34;Nomer;Chr34;Chr13;Chr10 Waitms 500
Print Waktu ; : ; Msg12 ; , ; Msg2 ; Msg4 ; , ; Msg3 ; Msg7 ; , ; Msg10 ; , ; Suhu
Print Chr26 ; Chr13 ; Chr10 Waitms 700
Hitungsms = 0 End If
End If
Setelah melakukan pengecekan konfigurasi dilakukan pengiriman atau tidak, perintah AT+CMGS adalah untuk mengirimkan SMS yang diikuti dengan nomor
penerima dan isi SMS kemudian diakhiri
CHR26
atau
CTRL-Z
. isi dari SMS diisi menggunakan perintah
PRINT
diikuti dengan format data yaitu variabel
WAKTU
,
MSG12
yang merupakan tanggal,
MSG2
dan
MSG4
merupakan latitude,
MSG3
dan
MSG7
merupakan longitude ,
MSG10
merupakan kecepatan yang diukur oleh GPS dan
SUHU
. Hasil uji coba di laboratorium menunjukan bahwa sukses tidaknya perintah ini
sangat bergantung pada kualitas sinyal GSM. Dari selang sinyal yang dikeluarkan oleh modem yaitu 0-19 poin didapatkan melalui perintah AT-COMMAND
AT+CSQ, minimal ada 5 poin yang dibutuhkan agar perintah pada modul ini sukses dilakukan pengiriman SMS. Sukses tidaknya perintah SMS ini dapat
dideteksi melalui respon yang diberikan oleh modem, jika sukses modem akan memberikan respon “OK”, jika tidak maka modem akan memberikan respon
“+ERROR”. Pada penelitian ini jika terjadi kegagalan pengiriman maka data
tersebut dilewatkan atau tidak dikirimkan kembali, dengan pertimbangan keefektifan perangkat lunak dan untuk mengetahui data sebenarnya dapat dilihat
pada data yang tersimpan di SDMMC card.
Kendali Dua Arah
Komunikasi dua arah pada implementasi drifter sangat penting dilakukan Ohlmann, 2005, Kendali dua arah yang dimaksud pada penelitian ini adalah
pengiriman SMS berkode tertentu yang tersimpan di memori buoy sehingga ketika
149
buoy menerima SMS tersebut, buoy akan melakukan hal yang kita perintahkan.
Beberapa hal yang diatur dalam kendali dua arah ini seperti pada Tabel 9. Langkah pertama untuk kendali dua arah yaitu menghidupkan vektor interupsi
komunikasi serial sehingga pada saat kapanpun SMS masuk perangkat lunak akan mengecek ke vektor interupsi tersebut. Untuk menghidupkan vektor interupsi ini
di BASCOM AVR seperti berikut:
Config Serialin = Buffered , Size = 40 Enable Interrupts
AT-Command tanda SMS masuk yaitu AT+CMTI sehingga setelah vektor interupsi terpenuhi maka tugas pertama dari rutin interupsi adalah mengecek
apakah isi dari interupsi tersebut karakter +CMTI. Rutin tersebut dibuat menjadi:
Sub Ada_sms Config Watchdog = 2048
Start Watchdog Getline Sret
Stop Watchdog I = Instrsret , : :
If I 0 Then Stemp = Leftsret , I
Select Case Stemp ANY MESSAGE FROM SOMEONE Case +CMTI: : Showsms Sret
Case Else ANY CALL FROM SOMEONE End Select
End If End Sub
Setiap karakter yang diterima di port RS232 akan ditampung pada variabel
sret
melalui perintah
getline
, kemudian di dalam variabel tersebut dicari karakter “:” dan karakter sebelumnya di tampung dalam variable I. jika variable I ini
adalah “+
CMTI
” maka tanda adanya SMS baru kemudian akan dilakukan proses pembacaan SMS, jika tidak proses kembali ke program utama. Langkah terakhir
adalah mencocokan isi SMS dengan kode SMS yang telah disepakati seperti pada Tabel 11. Berikut rutin pencocokan yang dilakukan pada penelitian ini:
Sub Showsmss As String I = Instrs , ,
I = I + 1 Stemp = Mids , I
Print AT+CMGR= ; Stemp Getline S
Do
150
Getline S Select Case S
Case CODE-1 : Print Phonenumber
Waitms 50 Print RESET
Print MIKROKONTROLER Print
Print Chr26
Config Watchdog = 2048 Start Watchdog
Wait 5 Stop Watchdog
Case CODE-2 : …
… Case OK : Exit Do
Case Else End Select
Loop Print AT+CMGD=1,4
Getline S Waitms 100
End Sub
Pertama mikrokontroler akan membaca isi SMS setelah pengecekan variable I adalah “+
CMTI
”, kemudian dengan perintah AT+CMGR isi SMS tersebut diambil menggunakan rutin
getline
dan disimpan dalam variabel
S
, hasil pembacaan isi SMS inilah yang kemudian dicocokan dengan menggunakan
perintah
case
. jika memenuhi
case
tertentu maka mikrokontroler akan melakukan perintah yang diinginkan Table 9. Setelah melakukan perintah tersebut
mikrokontoler kemudian melakukan perintah pengiriman SMS sebagai laporan bahwa perintah telah dilakukan. Terakhir SMS kemudian dihapus menggunakan
perintah AT+CMGD. Komunikasi ini sangat berguna dalam mengetahui kondisi atau merubah alur kerja dari drifter di laut.
4.2.6. File Konfigurasi Kerja Drifter CONFIG.INI