Subscribe! Follow me! Add me Facebook! Plus me Google!
Showing posts with label AT Command. Show all posts
Showing posts with label AT Command. Show all posts

Monday, May 7, 2012

AT Command dengan Microcontroller (Code Vision AVR / CVAVR)


             Disini akan diuraikan bagaimana cara pembacaan at command menggunakan Codevision AVR, mulai dari perintah - perintah AT command yang sering dipakai sampai pembuatan dan pemrograman AT Command pada Codevision AVR.

Berikut adalah pengecekan perintah - perintah AT Command yang digunakan :
1. AT , perintah yang dipakai untuk memerintah apakah AT Command sudah terkoneksi
2. AT+CMGF , untuk jenis format yang dipakai apakah berupa teks atau PDU.
3. AT+CMGL , untuk membuka daftar SMS pada SIM card.
4. AT+CMGR , untuk membaca SMS.
5. AT+CMGD , untuk menghapus SMS.
6. AT+CPMS , untuk mengatur memori yang digunakan apakah HP atau SIM card.
7. AT+CBC , untuk mengecek batere HP.
8. AT+CUSD , untuk mengecek pulsa.



Berikut komponen yang digunakan :
1. Sistem minimim mikrokontroler AT Mega16 tanpa RS232.
2. LCD 16x2
3. HP Sony Ericsson T630 (bisa juga untuk seri T610)
4. Headset Sony Ericsson.
4. USB to serial (jika ingin mencoba apakah AT command pada HP berhasil atau tidak)

Berikut langkah - langkah pembuatannya :
1. Persiapkan semua komponen diatas, tanpa itu semua kemungkinan kesalahan bisa terjadi.
2. Buat posisi pin headsetnya hanya RX,TX,GND yang dipakai.





Pin
Name
Description
1
ATMS
Audio to mobile
2
AFMS/RTS
Audio from mobile/RTS (connected to GND in cable?)
3
CTS/ONREQ
CTS/Mobile Station On REQuest (connected to GND in cable?)
4
Data in
Data to mobile (Rx)
5
Data out
Data from mobile (Tx)
6
ACC in
Accessory control to mobile. Used as Rx in some models for flashing.
7
ACC out
Accessory control from mobile/handsfree sense. Used as Tx in some models for flashing
8
AGND
Audio signal ground + 0V reference
9
Flash
Flash memory voltage + Service (shorted to pin 11 in service cable)
10
DGND
Digital ground
11
Vcc
DC + for battery charging + External accessory powering



3. Buka Codevision AVR.
4. New Project.


5. Untuk program serialnya pilih option yang tertera sesuai gambar dibawah ini :


Berikut listing program untuk terima sms dan kemudian mengirim balik statusnya :


#include <mega16.h>
#include <delay.h>                
#include <stdio.h>
#include <lcd.h>
#asm
   .equ __lcd_port=0x15 ;PORTC
#endasm

unsigned char cek[100];
unsigned int a,i;
void main(void)

UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x47;
lcd_init(16);

while (1)
    {                
    printf("ATE0");            // perintah agar tidak ada echo
    putchar(0x0D);             // enter    
    while(getchar()!= 'K'){};  // tunggu sampai menerima K / OK
    while(getchar()!=0x0A){};  // tunggu sampai newline / garis baru
    
    reload:      
      printf("AT+CPMS=");      // penempatan memori sms
      putchar('"');
      printf("ME");
      putchar('"');
      putchar(0x0D);             
      while(getchar()!= 'K'){};
      while(getchar()!=0x0A){};   
      printf("AT+CMGF=1");
      putchar(0x0D);             
      while(getchar()!= 'K'){};  
      while(getchar()!=0x0A){};
      printf("AT+CMGL=");      // perintah untuk melihat semua isi sms  
      putchar('"');
      printf("all");
      putchar('"');
      putchar(0x0D);         
      while(getchar()!=0x0A){};
      a=0;
      do{               
        a++;
        cek[a]=getchar();
      }while(cek[a]!=0x0A);   // isi cek[a] dengan no. HP dll selama bukan newline     
      
      if(cek[1]=='O')         // jika tidak ada sms
      {
        for(a=0;a<70;a++){cek[a]=' ';}   // pengosongan array         
        delay_ms(50);
        goto reload;
      }
         
      a=0;
      do{               
        a++;
        cek[a]=getchar();
      }while(cek[a]!=0x0A);  // isi cek[a] dengan isi sms selama bukan newline
                                                                                                     
      if(cek[1]=='R' && cek[2]=='I' && cek[3]=='D' && cek[4]=='L' && cek[5]=='A')  
      {    
        printf("AT+CMGD=1");     // perintah hapus sms di index 1
        putchar(0x0D);
        while(getchar()!='K'){}; 
        while(getchar()!=0x0A){};
        printf("AT+CMGD=1");
        putchar(0x0D);
        while(getchar()!='K'){}; 
        while(getchar()!=0x0A){};
        printf("AT+CMGF=1");
        putchar(0x0D);             
        while(getchar()!= 'K'){};  
        while(getchar()!=0x0A){};
        printf("AT+CMGS=");        // perintah kirim sms
        putchar('"');
        printf("08xxxxxxxxxx");    // no HP tujuan
        putchar('"');
        putchar(0x0D);   
        while(getchar()!=0x3E){};  // tunggu sampai muncul karakter ">"
        delay_ms(5);
        printf("AT Command berhasil");  
        putchar(0x1A);             // CTRL + Z
        while(getchar()!='K'){};   
      }  
       
      else  
      {              
        printf("AT+CMGD=1");
        putchar(0x0D);
        while(getchar()!='K'){}; 
        while(getchar()!=0x0A){};
        printf("AT+CMGD=1");
        putchar(0x0D);
        while(getchar()!='K'){}; 
        while(getchar()!=0x0A){};
        printf("AT+CMGF=1");
        putchar(0x0D);             
        while(getchar()!= 'K'){};  
        while(getchar()!=0x0A){};
        printf("AT+CMGS=");
        putchar('"');
        printf("08xxxxxxxxxx");    // no hp tujuan
        putchar('"');
        putchar(0x0D);   
        while(getchar()!=0x3E){};
        delay_ms(10);
        printf("Format Pesan Salah");
        putchar(0x1A);             
        while(getchar()!='K'){}; 
      }       
      delay_ms(50);           
    };
}

Keterangan : Jika pada alat tidak memakai LCD 16x2, program lcd untuk uji coba jangan dulu dihapus.

Saturday, March 17, 2012

Sistem Keamanan Sepeda Motor Menggunakan SMS

Alat ini dirancang agar dapat membunyikan alarm (suara) tanda bahaya dan mengirimkan pesan SMS tanda bahaya ke handphone pemilik kendaraan sepeda motor tersebut. Susunan perangkat keras sistem alarm motor ini menggunakan mikrokontroler ATMega16 yang berbasis SMS (Short Message Service).



Dibawah ini adalah gambar dari pin dari headset Sony Ericsson:

Gambar 3.5 Pin-pin headset Sony Ericsson T610


Dibawah ini adalah tabel dari pin-pin yang ada di pin out dan fungsi dari handphone Sony Ericsson T610:

Tabel 3.1 Pin-pin dari headset

Pin

Name

Description

1

ATMS

Audio to mobile

2

AFMS/RTS

Audio from mobile/RTS (connected to GND in cable?)

3

CTS/ONREQ

CTS/Mobile Station On REQuest (connected to GND in cable?)

4

Data in

Data to mobile (Rx)

5

Data out

Data from mobile (Tx)

6

ACC in

Accessory control to mobile. Used as Rx in some models for flashing.

7

ACC out

Accessory control from mobile/handsfree sense. Used as Tx in some models for flashing

8

AGND

Audio signal ground + 0V reference

9

Flash

Flash memory voltage + Service (shorted to pin 11 in service cable)

10

DGND

Digital ground

11

Vcc

DC + for battery charging + External accessory powering

Langkah pengujian

Dalam melakukan pengujian rangkaian sistem pengamanan sepeda motor dengan meggunakan ATMega16 Berbasis SMS (Short Message Service), terdapat beberapa langkah-langkah sebagai berikut:

1. Download program yang telah dibuat menggunakan ISP downloader.

2. Hubungkan mikrokontroler dengan handphone menggunakan kabel data (headset).

3. Berikan mikrokontoler tegangan sebesar 12 volt 5 Ampere. Tegangan yang dipakai adalah tegangan dari Accu (Aki).

4. Program yang telah dibuat dan di-download ke mikrokontroler dan semua rangkaian telah terhubung dengan baik tekanlah tombol on lalu lakukan pengiriman pesan “motor on” ke handphone yang terhubung pada rangkaian untuk mengaktifkan rangkaian jika tidak terjadi kesalahan maka handphone pada rangkaian akan mengirim pesan “” maka sistem tersebut sudah aktif.

5. Aktifkan kunci motor yang diibaratkan ada yang mencuri sesuai yang ditentukan pada program.

6. Alarm akan berbunyi dan handphone yang terhubung pada rangkaian akan mengirimkan pesan “” ke no tujuan (no pemilik) yang telah di setting pada program. Jika ingin mematikan alarm tersebut maka pemilik harus mengirim SMS “silent” ke no yang tersambung pada rangkaian maka alarm akan mati dan handphone rangkaian akan mengirim pesan “”.

7. Untuk kembali sistem awal maka pemilik harus mengirim pesan “motor off” dan handphone pada rangkaian akan membalas pesan “”.

8. SMS yang salah maka handphone pada rangkaian akan mengirim pesan ke handphone pemilik “”.


SMS yang diterima handphone rangkaian dari HP pengirim.


Tegangan yang digunakan adalah accu.

Rangkaian mikrokontroler yang disimpan dimotor beserta hanphonenya.



4.1 Program

Program adalah susunan instruksi (yang logis) untuk mikrokontroler yang ditulis atau disusun dalam bahasa pemograman (Bahasa C). Yang kemudian dikontrol dan dieksekusi atau diproses oleh mikrokontroler. Dibawah ini adalah potongan program yang digunakan:

................

while (1)

{

motor_off:

led=1;

delay_ms(80);

printf("AT+CMGF = 1"); // Format pesan yang digunakan

putchar(13); // ASCI code dari enter

delay_ms(1000);

printf("AT+CPMS ="); // mengecek memory telepon

putchar('"');

printf("ME");

putchar('"');

putchar(13);

delay_ms(1000);

printf("AT+CMGR = 1");// Perintah untuk membaca SMS yang baru.

putchar(13);

delay_ms(85);

for(i=25;i<=110;i++)

{

b[i]=getchar();

printf("%c",b[i]);

}

// Perintah untuk mengeksekusi kondisi yang sesuai.

if ((b[97]=='M' || b[97]=='m')&&(b[98]=='O' || b[98]=='o')&&(b[99]=='T' || b[99]=='t')&&(b[100]=='O' || b[100]=='o')&&(b[101]=='R' || b[101]=='r')&& b[102]==' ' &&(b[103]=='O' || b[103]=='o')&&(b[104]=='N' || b[104]=='n'))

{

kunci=1;

klakson=1;

sen=1;

delay_ms(90);

sen=0;

klakson=0;

delay_ms(90);

klakson=1;

sen=1;

delay_ms(90);

sen=0;

klakson=0;

kunci=0;

delay_ms(100);

printf("AT+CMGF = 0");

putchar(13);

delay_ms(800);

printf("AT+CMGD = 1"); //Perintah untuk menghapus pesan

putchar(13);

delay_ms(800);

printf("AT+CMGF = 1");

putchar(13);

delay_ms(800);

printf("AT+CMGS="); // Perintah untuk mengirim pesan.

putchar(34); // ASCI code dari tanda kutip

printf("085224490102"); // no tujuan

putchar(34);

putchar(13);

delay_ms(800);

printf(""); // Isi pesan yang dikirim

putchar(26);

delay_ms(810);

}

};

....................