BAB II LANDASAN TEORI 2.1 Detektor asap (Smoke Detector) Detektor asap merupakan sebuah produk yang dirancang untuk sebuah bangunan (rumah atau gedung), yang bekerja untuk mendeteksi kumpulankumpulan asap. . Agar manusia dapat mengetahui lebih cepat jika terjadi suatu kebakaran, sehingga dapat meminimalisir kerugian-kerugian yang diakibatkan dari kebakaran tersebut. Detektor asap ini mempunyai beberapa sifat, diantaranya adalah: 1. Sangat sensitif terhadap asap. 2. Jika supply yang masuk salah polaritas, tidak akan rusak. 3. Dapat dihubungkan lebih dari satu detektor asap secara bersama-sama. Pada gambar 2.1 menunjukkan salah satu bentuk dari beberapa jenis detektor asap, yaitu Ionization Smoke Detector HC-202D. Gambar 2.1 Ionization Smoke Detector HC-202D 7 88 Detektor asap yang digunakan dalam alat yang dibuat adalah jenis detektor yang banyak dijual dipasaran, yaitu Ionization Smoke Detector (model : HC202D). Spesifikasi dari detektor asap tersebut adalah seperti tabel 2.1. Tabel 2.1. Spesifikasi Smoke Detector Model Ionization Smoke Detector HC-202D Tegangan nominal 12 volt (DC) Batasan tegangan masukan 8 volt s/d 10 volt (DC) Suhu normal ruangan -15˚C s/d 50˚C Ukuran 103 mm x 47 mm Berat 140 gram Detektor seperti ini cocok untuk instalasi di tempat-tempat seperti pintu masuk tangga rumah, koridor, aula/ruangan lift, ruang dalam rumah, dan lain lain. Skema rangkaian dalam pemasangan lebih dari satu detektor asap ditunjukkan pada gambar 2.2 yang terhubung pada adaptor. Gambar 2.2 Pemasangan Kawat Dengan LED 98 2.2 Mikrokontroler AVR Mikrokontroler AVR ( Alf and Vegard’s Risc processor) standar memiliki arsitektur 8 bit, dimana semua instruksi dikemas dalam kode 16 bit, dan sebagian besar instruksi dieksekusi dalam 1 (satu) siklus clock. AVR berteknologi RISC (Reduced Instruction Set Computing), sedangkan seri MCS 51 berteknologi CISC (Complex Instruction Set Compunting). AVR dapat dikelompokkan menjadi empat kelas,yaitu keluarga ATtiny, ATSOSxx, ATMega dan AT86RFxx. Pada dasarnya, yang membedakan masing-masing kelas adalah memori, peripheral, dan fungsinya. Dalam pemilihan jenis mikrokontroler yang akan digunakan, pertimbangan yang dipakai adalah sebagai berikut: 1. Harga mikrokontroler. 2. Ukuran memori mikrokontroler. 3. Fitur-fitur yang diperlukan (ADC, timer, komunikasi USART dll). 4. Kecepatan eksekusi instruksi. 5. Dukungan software yang dapat digunakan. 6. Kemudahan dalam pemrograman. 2.2.1 Fitur Mikrokontroler ATMega8535 Pada perancangan Sistem pelaporan otomatis ini digunakan AVR keluarga ATMega yaitu ATMega8535. Mikrokontroler ATMega8535 memiliki fitur yang cukup komplit dan memenuhi keseluruhan fitur yang diperlukan. Fitur-fitur yang dimiliki oleh ATMega 8535 adalah sebagai berikut : A. Saluran I/O sebanyak 32 buah , yaitu Port A, Port B, Port C dan Port D, yang masing-masing terdiri dari 8 pin. B. ADC (Analog to Digital Converter) 10 bit sebanyak 8 chanel. C. 130 instruksi andal yang umumnya hanya membutuhkan 1 siklus clock. D. Dua buah timer/counter 8 bit, satu buah timer counter 16 bit. E. Internal SRAM sebesar 512 Byte dan 512 Byte internal EEPROM F. Memori Flash sebesar 8 KB, yang memiliki fasilitas In-System Programming. 108 G. Unit interupsi internal dan eksternal. H. Programming lock, fasilitas untuk mengamankan kode program. I. EEPROM sebesar 512 byte yang dapat deprogram saat operasi. J. Antarmuka komparator analog. K. 4 Channel PWM. L. 32x8 bit general purpose register. M. Hampir mencapai 16 MIPS pada Kristal 16 MHz. N. Port USART programmable, TWI dan I2C untuk komunikasi serial. 2.2.2 Konfigurasi PIN ATMega8535 IC Mikrokontroler ATMega 8535, merupaka sebuah IC yang memiliki 40 pin/kaki dan memiliki fungsi-fungsi yang berbeda-beda. Konfigurasi pin ATMega8535 terlihat pada gambar 2.3. Gambar 2.3 Konfigurasi pin ATMega8535 Gambar 2.3 ATMega 8535 118 Secara fungsional pin-pin ATMega8535 adalah sebagai berikut : A. VCC merupakan pin masukan poritif dari catu daya. Setiap peralatan elektronika digital memerlukan sumber tegangan yang umumnya sebesar 5V. B. GND sebagai pin ground. C. Port A ( PA0 – PA7 ) merupakan pin I/O dua arah dan dapat difungsikan juga sebagai pin masukkan ADC 8 chanel. D. Port B ( PB0 – PB7 ) merupakan pin I/O dua arah dan dapat difungsikan secara individu sebagai berikut: 1. PB7: SCK (SPI Bus Serial Clock) 2. PB6: MISO (Master Input Slave Output) 3. PB5: MOSI (Master Output Slave Input) 4. PB4: SS (Select Input) 5. PB3: AIN1 (Analog Comparator Negatif Input) OC0 (Output Compare Timer/Counter 0) 6. PB2: AIN0 (Analog Comparator Positif Input) INT2 (External Interrupt 2 Input) 7. PB1: T1 (Timer/Counter 1 External Counter Input) 8. PB0: T0 (Timer/Counter 0 External Counter Input) XCK (USART External Clock Input/Output) E. Port C (PC0 – PC7) merupakan pin I/O dua arah dan 4 bit diantaranya bisa difungsikan secara khusus, yaitu : 1. PD7: OC2 (Output Compare Timer/Counter 2) 2. PD6: ICPI (Timer/Counter 1 Input Capture) 3. PD5: OC1A (Output Compare A Timer/Counter 1) 4. PD4: OC1B (Output Compare B Timer/Counter 1) 5. PD3: INT1 (External Interrupt 1 Input) 6. PD2: INT0 (External Interrupt 0 Input) 7. PD1: TXD (USART Transmit) 8. PD0: RXD (USART Receive) 128 F. Port D (PD0 – PD7) merupakan pin I/O dua arah, juga dapat difungsikan secara individu sebagai berikut: 1. PC7: TOSC2 (Timer Oscilator 2) 2. PC6: TOSC1 (Timer Oscilator 1) 3. PC1: SDA (Serial Data Input/Output, I2C) 4. PC0: SCL (Serial Clock) G. Reset merupakan pin yang digunakan untuk mereset mikrokontroler. H. XTAL 1 dan XTAL 2 sebagai pin masukkan clock eksternal. Suatu mikrokontroler membutuhkan sumber detak agar dapat mengeksekusi instruksi yang ada di memori. I. AREF sebagai pin masukkan tegangan referensi. J. AVCC merupakan catu daya yang digunakan untuk masukkan analog ADC yang terhubung ke Port A. 2.2.3 Arsitektur ATMega8535 Mikrokontroler ATMega memiliki arsitektur Harvard, yaitu memisahkan memori untuk kode program dan memori untuk data, sehingga dapat memaksimalkan unjuk kerja dan paralelisme. Program 32 General Purpose Memory Working registers Program ALU Internal peripheral Counter SRAM Gambar 2.4 Blok arsitektur mikrokontroler AVR 138 ALU (Arithmetic Logic Unit ) adalah prosessor yang bertugas mengekseskusi kode program yang dirujuk oleh program counter. Program memori adalah memori Flash PEROM yang bertugas menyimpan program yang kita buat dalam bentuk kode-kode program yang telah di-compile berupa bilangan heksa atau biner. Program Counter (PC) adalah komponen yang berstugas menunjukkan ke ALU alamat program yang harus diterjemahkan kode programnya dan dieksekusi. 32 General Purpose Working Register (GPR) adalah register kerja yang mempunyai ruangan 8 bit yang bertugas sebagai tempat ALU mengeksekusi kode-kode program,setiap instruksi dalam ALU melibatkan GPR. Static Random Access Memory (SRAM) adalah memori yang bertugas menyimpan data sementara sama seperti RAM pada umumnya, mempunyai alamat dan ruangan data. Internal Peripheral adalah peralatan internal yang ada dalam mikrokontroler seperti saluran I/O, interupsi eksternal, timer/counter, USART dan lain-lain. Berbeda dengan keluarga MCS 51, AVR ATMega mempunyai osilator internal yang terbuat dari osilator RC yang frekuensi defaultnya 1 MHz, untuk mengubahnya maka harus dilakukan pengaturan fuse bit CKSEL dalam perangkat lunak downloader-nya. Tabel 2.2 CKSEL pada downloader Fuse bit CKSEL 0001 0010 0011 0100 Nominal frekuensi 1 2 4 8 2.2.4 USART Universal Synchronous Asynchronous Receiver and Transmitter (USART) merupakan salah satu mode komunikasi serial yang didukung oleh mikrokontroler ATMega8535 selain TWI dan I2C. USART memungkinkan proses pengiriman dan penerimaan data secara sinkron maupun asinkron, sehingga pasti kompatibel 14 8 dengan UART. Pengaturan mode komunikasi baik secara sinkron maupun asinkron pada ATMega8535 adalah sama, perbedaannya hanya pada sumber clock-nya saja. Untuk mengatur mode komunikasi secara serial, dilakukan pada registerregister UDR, UCSRA, UCSRB, UCSRC, UBRRH dan UBRRL. A. USART Data Register (UDR) Digunakan sebagai buffer untuk menyimpan data baik yang akan dikirimkan (TXB) maupun yang diterima(RXB). B. USART Control and Status Register A (UCSRA) USSRA Terdiri dari 8 bit, yaitu: C. 1. Bit 7 (RXC) digunakan untuk mengetahui proses penerimaan data. 2. Bit 6 (TXC) digunakan untuk mengetahui proses pengiriman data. 3. Bit 5 (UDRE) untuk mengetahui status isi register UDR. 4. Bit 4 (Framing Error) untuk mengetahui adanya frame error. 5. Bir 3 (Data OveRun) untuk mengetahui kondisi data overrun. 6. Bit 2 (Parity Error) untuk mengetahui terjadinya parity error. 7. Bit 1 (U2X) untuk membuat kecepatan transfer jadi 2 kali lipat. 8. Bit 0 (MPCM) digunakan pada mode komunikasi multi-prosesor. USART Control and Status Register B (UCSRB) USSRB Terdiri dari 8 bit, yaitu: 1. Bit 7 (RXCIE) digunakan untuk mengaktifkan interupsi Receive Complete Interupt. 2. Bit 6 (TXCIE) digunakan untuk mengaktifkan interupsi Transmit Complete Interrupt. 3. Bit 5 (UDRIE) untuk mengaktifkan interupsi UDR Empty Interrupt. 4. Bit 4 (RXEN) untuk mengaktifkan USART Receiver. 5. Bit 3 (TXEN) untuk mengaktifkan USART Transmitter. 6. Bit 2 (UCSZ2) ,bersama dengan UCSZ1 dan UCSZ0 pada register UCSRC menentukan ukuran data dalam satu frame. 15 8 7. Bit 1 (RX8) , RX8 adalah bit ke 9 dari data/karakter yang diterima jika menggunakan ukuran 9 bit. 8. Bit 0 (TX8), TX8 adalah bit ke 9 dari data/karakter yang dikirim jika menggunakan ukuran 9 bit. D. USART Control and Status Register C (UCSRC) USSRC Terdiri dari 8 bit, yaitu: 1. Bit 7 (URSEL) ,UCSRC dan UBBRH menempati lokasi register yang sama, bit URSEL bertugas menentukan register mana yang akan menempati. 2. Bit 6 (UMSEL) digunakan untuk menentukan mode komunikasi USART. 3. Bit 5 dan 4 (UMP1&0) untuk menentukan mode paritas. 4. Bit 3 (USBS) untuk menentukan jumlah stop bit dalam setiap frame. 5. Bit 2 dan 1 (UCSZ1 dan 0) bersama UCSZ2 di UCSRB menentukan ukuran data yang dipakai dalam komunikasi. 6. Bit 0 (UCPOL) untuk mengatur mode transisi clock pada pengambilan data yang diterima dan pengubahan data uang dikirimkan. E. USART Baud Rate Register (UBRRH-UBRRL) Merupakan register 16 bit terdiri dari 1 bit URSEL, 3 bit tidak terpakai, 4 bit UBRRH dan 8 bit UBRRL. 2.2.5 Analog to Digital Converter (ADC) Mikrokontroler ATMega8535 memiliki fasilitas Analog to Digital Converter built in dalam chipnya. Dengan adanya ADC internal ini, kita tidak direpotkan dengan kompleksitas hardware saat membutuhkan pengubahan sinyal dari analog ke digital. ADC ATMega8535 memiliki resolusi ADC 10 bit dengan 8 chanel input yang bekerja dengan teknik successive approximation. Rangkaian internal ADC ini memiliki catu daya tersendiri yaitu pin AVCC.Untuk mengatur mode dan cara kerja ADC dilakukan melalui register ADMUX, ADCSRA, ADCL, ADCH, SFIOR. A. ADC Multiplexer Selection Register (ADMUX) 168 ADMUX terdiri dari 8 bit, yaitu: 1. Bit 7 dan 6 (REFS1 dan REFS0) digunakan untuk menentukan tegangan referensi dari ADC.seperti terlihat dari tabel berikut: Tabel 2.3 Tegangan Referensi ADC 2. No. REFS1 REFS0 Tegangan Referensi 1 2 3 4 0 0 1 1 0 1 0 1 Pin AREF Pin AVCC, pin AREF diberi Tidak digunakan Internal 2.56 V,pin AREF diberi Bit 5 (ADLAR) digunakan untuk mengatur format penyimpanan data ADC pada register ADCH dan ADCL. 3. B. Bit 0 s.d 3 digunakan untuk menentukan pin masukan analog ADC. ADC Control dan Status Register A (ADCSRA) ADCSRA terdiri dari 8 bit,yaitu: 1. Bit 7 (ADEN) digunakan untuk mengaktifkan fasilitas ADC. 2. Bit 6 (ADSC) digunakan untuk memulai konversi. 3. Bit 5 (ADATE) digunakan untuk mengaktifkan pemicu proses konversi ADC sesuai bit ADTS pada register SFIOR. 4. Bit 4 (ADIF), bit ini akan bernilai ‘1’ bila proses konversi ADC selesai. 5. Bit 3 (ADIE) digunakan untuk mengaktifkan interupsi ADC. 6. Bit 0 s.d 2 (ADPS) digunakan untuk menentukan faktor pembagi frekuensi Kristal dan hasilnya digunakan untuk frekuensi clock ADC. C. ADC Data Register (ADCH-ADCL) Register ini digunakan untuk mengyimpan data 10 bit hasil konversi ADC. Disamping 3 register diatas, untuk keperluan pemakaian ADC perlu dilakukan setting pada register SFIOR bit 5 sampai bit 7 (ADTS0 s.d ADTS2). 17 8 2.3 Komunikasi Serial Komunikasi serial adalah salah satu metode komunikasi data di mana hanya satu bit data yang dikirimkan melalui seuntai kabel pada suatu waktu tertentu. Pada komputer pribadi, komunikasi serial digunakan misalnya pada standar komunikasi yang menghubungkan periferal eksternal seperti modem, printer dengan komputer. Pada PC umumnya memiliki dua jenis konektor, yaitu konektor dengan 9 pin (DB9) dan konektor dengan 25 pin (DB25). Gambar 2.5 Konfigurasi pin pada DB9 Tabel 2.4 Nama-nama pin DB 9 No. pin 1 2 3 4 5 6 7 8 9 Nama DCD RxD TxD DTR GND DSR RST CTS RI Arah In In Out Out In Out In In Keterangan Data Carrier Detect/Receiver Line Signal Receiver Data Transmitter Data Data Terminal Ready Data Set Ready Request To Send Clear To Send Ring Indicator Dalam proses transfer data secara serial, RS232 memerlukan sebuah DCE (Data Component Equipment) dan DTE (Data Terminal Equiment) pada masingmasing terminal. Pengiriman data dilakukan bit per bit. Kecepatan transfer data dikenal dengan istilah baudrate. Pada komunikasi serial, pada dasarnya yang dikirimkan adalah tegangan yang kemudian dibaca dalam bit. Untuk bit dengan logika 1, maka level tegangannya adalah -3 V sampai dengan -25 V, sedangkan 1818 8 untuk bit dengan logika 0, level tegangannya adalah 3 V sampai dengan 25 V. Komunikasi serial ada dua macam, yaitu : 1. Synchronous Merupakan tipe komunikasi dimana hanya ada satu pihak pengirim atau penerima) yang menghasilkan clock dan mengirimkan clock tersebut bersamasama dengan data. 2. Asynchronous komunikasi dimana kedua pihak (pengirim dan penerima) masing-masing menghasilkan clock, namun hanya data yang ditransmisikan (tanpa clock). Agar data yang dikirim sama dengan data yang diterima, maka kedua frekuensi clock harus sama dan harus terdapat sinkronisasi. Setelah adanya sinkronisasi, pengirim akan mengirimkan datanya sesuai dengan frekuensi clock pengirim dan penerima akan membaca data sesuai dengan frekuensi clock penerima. 2.4 Short Message service (SMS) Dalam sistem SMS, mekanisme utama yang dilakukan dalam sistem adalah melakukan pengiriman short message dari satu terminal ke terminal yang lain. Hal ini dapat dilakukan berkat adanya sebuah entitas dalam sistem SMS yang bernama Short Message Service Center (SMSC). SMSC merupakan sebuah perangkat yang melakukan tugas store and forward trafic short message seperti yang ditunjukan pada gambar berikut : Gambar 2.6 Mekanisme pengiriman SMS 19 8 Ada empat komponen utama yang memungkinkan terjadinya pengiriman dan penerimaan pesan SMS, yaitu : A. Base Transceiver Station (BTS) BTS adalah stasiun seluler yang menjembatani hubungan perangkat telepon selular dengan Mobile Switching Center (MSC) dan akhirnya dengan perangkat telepon selular lain berupa suara dan data. B. Mobile Switching Center (MSC) MSC merupakan perangkat yang melakukan fungsi pengendalian dan pengaturan jaringan selular. Secara otomatis, MSC melakukan koordinasi dan mengendalikan setup panggilan dan rute antar telepon selular di suatu area yang telah ditentukan. C. Short Message Service Center (SMSC) SMSC bertindak sebagai penyimpan dan penyampai pesan pendek (SMS). D. Gateway Mobile Switching Center (GMSC) GMSC adalah MSC yang memiliki kemampuan menerima pesan singkat dari SMSC. SMSC berkomunikasi dengan jaringan TCP/IP melalui GMSC. Pengiriman pesan SMS secara store and forward yaitu pengirim SMS memasukkan pesan SMS dan nomor tujuan dan kemudian mengirimkannya (store) ke server SMS (SMS Center) yang kemudian bertanggung jawab mengirimkan pesan SMS tersebut (forward) ke nomor telepon tujuan. Didalamnya termasuk penentuan atau pencarian rute tujuan akhir dari short message dari berbagai sumber seperti Voice Mail System (VMS), Web-based messaging, E-mail Integration, External Short Messaging Entities (ESME), dan lain-lain. 20 8 2.5 2.5.1 Bahasa Pemograman Bahasa C Penggunaan sebuah sistem mikrokontroler AVR mengunakan sebuah software yang digunakan untuk menulis program, kompilasi, simulasi dan download program ke IC mikrokontroler AVR. Software yang digunakan adalah CodeVision AVR dalam bahasa C, Codevision memilki IDE (integrated Development Environment) yang lengkap, di mana penulisan program, compile, linkdan download program ke chip AVR dapat dilakukan oleh CodeVision, selain itu CodeVision juga memiliki fasilitasterminal, yaitu digunakan untuk melakukan komunikasi serial dengan mikrokontroler yang sudah deprogram. Proses download ke Ic mikrokontroler dapat menggunakan sistem download secara ISP(InSystem Programming). 2.5.2 Header Di dalam fungsi header berisi include file (.hex), yaitu library (pustaka) yang akan digunakan dalam pemograman. File-file ini mempunyai cirri yaitu namanya diakhiri dengan ekstensi .h. Misalnya pada program #include <stdio.h> menyatakan pada kompiler agar membaca file bernama stdio.h saat pelaksanaan kompilasi. Bentuk umum #include: Contoh: #include <delay.h> #include <delay.h> #include <stdio.h> Prepocessor (#): Digunakan untuk memasukkan (include) text dari file lain, mendefinisikan macro yang dapat mengurangi beban kerja pemograman dan meningkatkan legibility source code (mudah dibaca). Bentuk dari (#include <nama file>) memberikan penjelasan pencarian file 21 8 dilakukan pada direktori khusus (direktori file). Bentuk lain dari header (#include “nama file”) mengisyaratkan bahwa pencarian file terlebih dahulu dilakukan pada direktori aktif tempat sumber program dan bila tidak ditemukan pencarian akan dilanjutkan pada direktori lainnya yang sesuai dengan perintah pada sistem operasi. 2.5.3 Tipe Data Umumnya data yang digunakan didalam bahasa pemograman komputer dibedakan menjadi data nilai numerik dan nilai karakter. Tujuan data menjadi efisien dan efektif digunakan bahasa-bahasa pemograman komputer yang membedakan data kedalam beberapa tipe. Dalam bahasa C tersedia lima tipe data dasar, yaitu tipe data interger (nilai numeric bulat yang dideklarasikan dengan int), floatingpoint (nilai numerik pecahan ketetapan tunggal yang dideklarasikan dengan float), double-precision (nilai numerik pecahan ketetapan ganda yang dideklarasikan dengan double). 22 8 Tabel 2.5 Tipe-tipe data dasar Tipe Ukuran (Bit) Range Bit 1 0,1 Char 8 -128 to 127 Unsigned Char 8 0 to 255 Signed Char 8 -128 to 127 Int 16 -32768 to 32767 Short int 16 -32768 to 32767 Unsigned int 16 0 to 65535 Signed int 16 -32768 to 32767 Long int 32 -2147483648 to 2147483647 Unsigned long int 32 0 to 4294967295 Signed long int 32 -2147483648 to 2147483647 Float 32 ±1.175e-38 to ±3.402e38 double 32 ±1.175e-38 to ±3.402e38 Karakter (dideklarasikan dengan char), dan kosong (dideklarasikan dengan void). Int,float, double dan char dapat dikombinasikan dengan pengubah (modifier) signed, unsigned, long dan short. Hasil dari kombinasi tipe data ini dapat dilihat pada tabel. 23 8 2.5.4 SMS PDU PDU Sebagai Bahasa SMS dan Bagian – Bagiannya : Data yang mengalir ke atau dari SMS-Center harus berbentuk PDU (Protocol Data Unit). PDU berisi bilangan-bilangan heksadesimal yang mencerminkan bahasa I/O. PDU terdiri atas beberapa Header. Header untuk kirim SMS ke SMS-Center berbeda dengan SMS yang diterima dari SMS-Center. Maksud dari bilangan heksadesimal adalah bilangan yang terdiri atas 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. PDU untuk mengirim SMS terdiri atas : 1. Nomor SMS-Center Header pertama ini terbagi atas tiga subheader, yaitu : • Jumlah pasangan heksadesimal SMS-Center dalam bilangan heksa. Daftar SMS Center yang ada di Indonesia diperlihatkan dalam tabel dibawah ini. • National/International Code • Untuk National, kode subheader-nya yaitu 81 • Untuk International, kode subheader-nya yaitu 91 • No SMS-Centernya sendiri, dalam pasangan heksa dibalikbalik. Jika tertinggal satu angka heksa yang tidak memiliki pasangan, angka tersebut akan dipasangkan dengan huruf F didepannya. 24 8 Tabel 2. 6 Nomor SMS-Center Operator Seluler Di Indonesia No Operator Seluller SMS-Center Kode PDU 1 Telkomsel 62811000000 07912618010000F 2 Satelindo 62816125 059126181652 3 Exelcom 6218445009 07912618485400F 4 Indosat-M3 62855000000 07912658050000F 5 Starone 62811000000 079126180100 2. Tipe SMS • Untuk SEND tipe SMS = 1. Jadi bilangan heksanya adalah 01 3. Nomor Referensi SMS • Nomor referensi ini dibiarkan dulu 0, jadi bilangan heksanya adalah 00. Nanti akan diberikan sebuah nomor referensi otomatis oleh ponsel/alat SMS-gateway. 4. Nomor Ponsel Penerima • Sama seperti cara menulis PDU Header untuk SMS – Center, header ini juga terbagi atas tiga bagian, sebagai berikut : • • Jumlah bilangan desimal nomor ponsel yang dituju dalam bilangan heksa. • • National/International Code. • - Untuk Nasional, kode subheader-nya 81 • - Untuk Internasional, kode subheader-nya 91 • • Nomor ponsel yang dituju, dalam pasangan heksa dibalik-balik. 25 8 Jika tertinggal satu angka heksa yang tidak memilikipasangan, angka tersebut dipasangkan dengan huruf F didepannya. Contoh : Untuk nomor ponsel yang dituju = 628x32x7333x dapat ditulis dengan cara sebagai berikut : 628132x7333x diubah menjadi : 1. 0C : ada 12 angka 2. 91 3. 26-18-23-7x-33-x3 Digabung menjadi : 0C9126x8237x33x3 (x ialah samaran nomer) Bentuk SMS, antara lain : • 00 : dikirim sebagai SMS • 01 : dikirim sebagai telex • 02 : dikirim sebagai fax Dalam hal ini, untuk mengirim dalam bentuk SMS tentu saja dipakai 00 5. Skema Encoding Data I/O Ada dua skema, yaitu : 1. Skema 7 bit : ditandai dengan angka 00 2. Skema 8 bit : ditandai dengan angka lebih besar dari 0 Kebanyakan ponsel/SMS Gateway yang ada dipasaran sekarang menggunakan skema 7 bit sehingga digunakan 00. 26 8 6. Jangka Waktu Sebelum SMS Expired Agar SMS pasti terkirim sampai ke ponsel penerima, sebaiknya tidak diberi batasan waktu validnya. Isi SMS Header ini terdiri atas dua subheader, yaitu : a. Panjang isi (jumlah huruf dari isi) Misalnya untuk kata “hello” : ada 5 huruf : 05 b. Isi SMS berupa pasangan bilangan heksa Untuk ponsel/SMS Gateway berskema encoding 7 bit, jika mengetikan suatu huruf dari keypad-nya, berarti kita telah membuat 7 angka I/O berturutan.Ada dua langkah untuk mengkonversikan isi SMS, yaitu : 1. Mengubahnya menjadi kode 7 bit. 2. Langkah kedua: mengubah kode 7 bit menjadi 8 bit yang diwakili oleh pasangan heksa. Oleh karena total 7 bit x 5 huruf = 35 bit, sedangkan yang kita perlukan adalah 8 bit x 5 huruf = 40 bit, maka diperlukan 5 bit dummy yang diisi dengan bilangan 0. Setiap 8 bit mewakili suatu pasangan heksa. Tiap 4 bit. mewakili satu angka heksa, tentu saja karena secara logika 24 = 16. Dengan demikian kata “hello” hasil konversinya menjadi E8329BFD06 Ke delapan header diatas digabungkan agar membentuk suatu format PDU yang siap dikirim. Misal untuk mengirimkan kata hello ke ponsel nomor 6285882707228 lewat SMS-Center Exelcom, tanpa membatasi jangka waktu valid, maka header PDU lengkapnya: 27 8 07912618485400F901000C9126x8237x33x3000005E8329BFD06 2.5.5 Pernyataan Bahasa C 2.5.5.1 Percabangan Perintah if dan if…else….dilakukan untuk melakukan operasi percabangan bersyarat. Pernyataan if mempunyai bentuk umum : if (kondisi) { //pernyataan }; Contoh: if (a<0x08){ PORTC=0x50; }; Dalam contoh ini PORTC akan dikirim data 0x50 jika nilai a lebih kecil 0x08. Bentuk ini menyatakan , Jika kondisi yang diseleksi adalah benar (bernilai logika = 1), maka pernyataan yang mengikutinya akan diproses. Sebaliknya, jika kondisi yang diseleksi adalah tidak benar (bernilai logika = 0), maka pernyataan yang mengikutinya tidak akan diproses. Mengenai kodisi harus ditulis diantara tanda kurung, sedangkan pernyataan dapat berupa sebuah pernyataan tunggal, pernyataan majemuk atau pernyataan kosong. Sedangkan Pernyataan if-else memiliki bentuk : if (kondisi) { //pernyataan a } 28 8 else { //pernyataan b }; Artinya adalah pernyataan a akan dijalankan jika kondisi terpenuhi dan pernyataan b akan dijalankan jika kondisi tidak terpenuhi. dijalankan. Masingmasing pernyataan-a dan pernyataan-b dapat berupa sebuah pernyataan tunggal, pernyataan majemuk ataupun pernyataan kosong. Perintah percabangan if….else..dapat digantikan dengan perintah switch. Dalam pernyataan switch, sebuah variabel secara berurutan diuji oleh beberapa konstanta bilangan bulat atau konstanta karakter. Sintaks perintah switch dapat ditulis sebagai berikut: Switch(variabel) { case konstanta_1: statement; break; case konstanta_2: statement; break; case konstanta_3: statement; break; default: statement; } 2.5.5.2 Looping (Pengulangan) Looping adalah perulangan satu atau beberapa perintah sampai mencapai keadaan tertentu. Ada tiga perintah looping, yaitu: for …., dan do..while…. sintaks loop for dapat dituliskan sebagai berikut: 29 8 for (untuk pengulangan yang melakukan proses increment) for(nama_variabel=nilai_awal;syarat_loop;nama_variabel++) } statement_yang_diulang; } // untuk pengulangan yang melakukan proses decrement. syarat_loop adalah pernyataan yang menyatakan syarat berhentinya pengulangan; biasanya berkaitan dengan variabel kontrol, nama_variabel++ dan nama_variabel--, menyatakan proses increment dan proses decrement pada variabel kontrol. Sedangkan perintah while dapat melakukan looping apabila persyaratannya benar. Sintaks perintah while dapat dituliskan sebagai berikut: nama_variabel=nilai_awal; while(syarat_loop) { Statement_yang_akan_diulang: Nama_variabel++; } Perintah while terlebih dahulu melakukan pengujian persyaratan sebelum melakukan looping. Perulangan yang belum diketahui berapa kali akan diulangi maka dapat menggunakan while atau do while.Pada pernyatan while, pemeriksaan terhadap loop dilakukan di bagian awal (sebelum tubuh loop). Pernyataan while akan diulangi terus menerus selama kondisi bernilai benar, jika kondisinya salah maka perulangan dianggap selesai. nama_variabel=nilai_awal; while(syarat_loop) 30 8 { Statement_yang_akan_diulang: Nama_variabel++; } While(syarat_loop)