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.
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.
kalau bikin perintah kirim sms aja yg sederhananya gmna ya?
ReplyDeletehp saya 3220 tapi kenapa rx/txnya ketika dihubungkan dengan mikro tidak berjalan ya?
ReplyDeletesalam mas...
ReplyDeletemas aku lagi coba sms gateway untuk alat pengaman rumah menggunakan switch magnet, mikrokontroler atmega 32 dan modem wavecom, jadi apabila switch magnet terbuka akan membunyikan buzzer dan langsung mengirim perintah ke modem wavecom untuk mengirim sms. kira2 bisa gk ya make coding mas diatas?yang diedit dibagian mana aja ya mas? mohon bantuanya, terimakasih
ok mas...terimakasih.
Deletenanti saya coba dulu,
oh ia untuk konfigurasi pin nya gmana ya mas??
saya kan pake kabel serial, jadi port D nya dipake gk ya mas?? atau langsung colok aj ke port serial di mikro atau ada settingan lain mas?
thanks mas
oh ia mas , saya tes modem ke hyperterminal, saya da setting baudratenya...tapi ketika saya ketik AT di hyperterminal tersebut modem tidak merespon apa2,..itu biasanya kenapa ya mas?
Deletesaya waktu pake wavecom, perintahnya langsung aja,
Deletega pake
while(getchar()!='K'){};
while(getchar()!=0x0A){};
trus buat ambil karakter langsung pake desimalnya aja, kaya buat ctrl+z ->putchar(26);
jadi gampang hafalnya, hhe
mas kalo pake program itu, apa gag ngirim sms terus menerus ketika kondisi sensor aktif,
Deletesoalnya kan pasti looping terus,...
seharusnya kan sms nya sekali aja kan yaa,
berarti saya harus buka serial cable-nya mas,trus saya pasang kaya pin kabel gitu baru saya sambungkan ke port D nya?benar gak mas?
ReplyDeleteuntuk yang masalah hyperterminal, saya sebelumnya da coba,dan bisa mas.tapi pas saya coba kedua kalinya eh malah gak merespon apa2?
ada perubahan setingan program gak mas kalo saya langsung ke port D? karena sebelumnya saya pake port serial dari mikro.
Deletemakasi banyak ya mas
oh gitu ya mas...oke deh mas.makasi banyak ya mas,
Deletetapi mas kemarin saya liat susunan kabel serial nya, kan ada 4 kabel,
yang kabel no 2 n 3 kan txD dan RxD (di cross ke Tx Rx Mikro)
trus no 5 kan Ground ( saya sambung ke negatif mikro)
dan satu lagi yg no 7, nah yang no 7 ini disambung kemana ya mas?
mohon maaf mas jadi banyak pertanyaan, terimakasih mas atas petunjuknya
ok deh mas...
Deletedi codevision nya, ada setingan untuk port D nya gak mas?
port D nya dibuat output semua ya mas?
maKASIH mas
mas ridla...saya da coba ikutin petunjuk mas di atas..tapi mengapa alat saya belum bisa connect juga ya?padahal saya sudah tambahin IC max232 tapi tetap aja belum bisa terkoneksi.
Deletepas sensor pintu terbuka, modem belum bisa ngirim sms.baudratenya sudah saya setting di 115200, tapi belum juga koneksi, mengapa ya mas?mohon masukannya.trimakasih
mas, kalo pin Tx Rx nya k510i itu yan mana yaa ?
ReplyDeleteapakah pake yang DTMS dan DFMS itu ya ma ?
support ATcommand gag ya ??
mm gt yaaa,
Deletejadi usb.nya bukan yang CTMS dan CFMS itu ya mas ??
oiya mas, saya ngukur tegangan di Tx J300i keluarnya 3 volt,
Deletebrarti saya harus pakai rangkaian konverter 3 volt to 5.5 volt pakai ic max3232 ya mas biar bisa diterima sama Rx nya mikro,
trim mas,...
Oke thanks mas,
Deletehehe
mas tolong dibuatkan gambar dong connection dari kabel data sonyericsson ke RX TX nya microcontroller. agak bingung nih
ReplyDeletemas aq mau belajar yang buat pengaman b\motor itu gmna ya kalau boleh aq minta petunjuknya,,,
ReplyDeleteputra di malang
mas ridla, kalo boleh, minta source code buat ngontrol lampu rumah yaa,
ReplyDeletegalangromadhon@gmail.com
trims ya mas,
hehe
saya pake hape SE kok gag bisa yaa,
ReplyDeleteatau perlu di pull-up dulu ya dari Hapenya ,.??
mas mau tanya klo tipe hp ericsson s868 support at cmd gk yah??
ReplyDeletepadahal spek mirip ma ericsson t10s
mas kalau at command buat ngecek sms masuk & baca isi smsnya gimana ya? makasih
ReplyDeletemas ridla...saya da coba ikutin petunjuk mas di atas..tapi mengapa alat saya belum bisa connect juga ya?padahal saya sudah tambahin IC max232 tapi tetap aja belum bisa terkoneksi.
ReplyDeletepas sensor pintu terbuka, modem belum bisa ngirim sms.baudratenya sudah saya setting di 115200, tapi belum juga koneksi, mengapa ya mas?mohon masukannya.trimakasih
mas mau tanya itu kabel data nya emg ada ato harus bikin sendri yah???
ReplyDeleteaq juga ada T630 nya nih mau coba juga..
hehe
lebih tepatnya dibongkar sih mas,masalahnya konektor headset bawaannya itu cuma buat mic sma speaker aja pinnya,jadi saya rubah biar kabel headsetnya itu bisa konek ke rx tx sama ground.
Deleteapa itu nantinya bisa dilangsungkan ke port D RXD dan TXD trus ground juga?
Deletemas kalo pake format PDU,cek[a]=getchar(); gmn yah ??
ReplyDeleteterimakasih
nah itu dia mas batasan masalahnya ane ga pernah nyoba PDU,harus dikonversi dulu ribet.
Deletehasil keluaran PDU nya harus di konversi dlu ke teks d codingnya?? atau gmn yah hehe... aq pake at+cnmi mas...
ReplyDeleteklo saya sih mas tinggal dirubah aja formatnya pake at commad ga dikonversi pake perintah AT+CMGF = 1
Deletepermisi gan,,, hape yang pas buat komunikasinya ke mikro itu yang pas cuma SONY ERICSSON T630 DAN T610 aja ya gan?
ReplyDeletehape itu uda pasti support Text mode yah???? AT+cmgf=1????
aku pake SONY ERICSSON k700 ga bisa text mode gan,,, cuma bisa PDU mode....
bales ya gan.... thanks
iya gan udah pasti support.
Deleteiya at+cmgf=1 buat set text mode.
nah klo itu ane ga tau gan,agan harus nyoba ngerubah manual gan.ane lagi ga ngepelajarinnya gan.
mas saya nyoba coding di atas...nah ketika saya download ke mikro malah otomatis ngirim "format salah" terus...kenapa ya mas???
ReplyDeleteposisi array yang dibandinginnya kali mas yang salah atau coba aja keluarn pake lcd 16x2 atau ke terminal tampilin dulu hasil dari smsnya.
Deletemisi gan,,, komunikasi antara MCU sama T630 itu perlu konverter kagag? butuh max232?
ReplyDeletega usah gan udah TTL.
Deletebales pliss gan
ReplyDeleteiya gan... itu perintah
ReplyDeletewhile (getchar()=!'K'){};
berarti kita kudu kasih inputan 'K' dulu donk gan? supaya bisa berlanjut???
ngg itu K disana tuh balesan dari HPnya sendiri klo kita ketik perintah AT Command dia bakal bales OK kemudian diikuti hasil dari AT Command yang kita ketik itu.
Deletekalo beda tipe hp apanya yang dirubah???
ReplyDeletemohon bantuan masih newbie
intinya sih asal support AT Command, ga ada masalah di programnya juga sama aja perintahnya.
Deletekalo receive SMS gimana ya?
ReplyDeleteprintf("AT+CMGF=1");
Deleteitu perintah biar format text hasilnya.
putchar(0x0D);
ini perintah buat enter.
jadi setiap kali kita ngasih perintah AT Command ke hp harus pake enter kayak di Command Prompt.
while(getchar()!= 'K'){};
while(getchar()!=0x0A){};
ini cuma ngcek aja klo perintah kita tuh diterima oleh hp, terus K disana adalah hasil balesan dari hp klo perintah kita tuh benar 'OK'
printf("AT+CMGL=");
putchar('"');
printf("all");
putchar('"');
putchar(0x0D);
perintah ini buat ngcek list sms untuk keseluruhan.
ada juga sih buat nerima hasil sms tuh pake AT+CMGR = 'all' atau AT+CMGR = 1 tergantung indexnya.
ini aku uda nyoba gan tapi kok gag berhasil yah buat baca isi sms yang diterima.. mikro ane gag ada efek sama sekali,,
ReplyDeleteini program ane gan
_______________
void terima(){
reload:
printf("ate0");
putchar(13);
delay_ms(300);
printf("at");
putchar(13);
delay_ms(300);
printf("at+cmgf=1");
putchar(13);
delay_ms(300);
printf("at+cpms=");
putchar('"');
printf("me");
putchar('"');
putchar(13);
delay_ms(1000);
printf("AT+CMGL=");
putchar('"');
printf("all");
putchar('"');
putchar(13);
while(getchar()!=0x0a);
while(getchar()!=0x0a);
a=0;
do{
a++;
cek[a]=getchar();
}while(cek[a]!=0x0a);
x=0;
for(a=0;a<15;a++)
{
putchar(cek[a]);
x++;
}
}
void cekperintah()
{
if (cek[1]=='p'||cek[1]=='P')
{
Putus=1;
}
else if(cek[1]=='k'||cek[1]=='K')
{
Sambung=1;
}
else if(cek[1]=='h'||cek[1]=='H')
{
Putus=0;
}
else if (cek[1]==' ')
{
printf("at");
putchar(13);
delay_ms(300);
printf("at+cmgf=1");
putchar(13);
delay_ms(300);
printf("at+cmgs=");
putchar('"');
printf("083830706614");
putchar('"');
putchar(13);
delay_ms(800);
printf("perintah kosong");
putchar(0x1A);
delay_ms(500);
}
else
{
printf("at");
putchar(13);
delay_ms(300);
printf("at+cmgf=1");
putchar(13);
delay_ms(300);
printf("at+cmgs=");
putchar('"');
printf("083830706614");
putchar('"');
putchar(13);
delay_ms(800);
printf("perintah salah");
putchar(0x1A);
delay_ms(500);
printf("at+cmgd=1");
putchar(13);
delay_ms(500);
printf("at+cmgd=1");
putchar(13);
delay_ms(500);
}
}
gan bisa bagi email gag? klo ane butuh sharing di email ya gan?
Deleteahmad_mufid00@yahoo.co.id
klo kirim sms bisa ga gan?
Deleteklo ga bisa berarti ada yg salah dikonektornya atau hpnya.
tapi klo bisa,coba tampilin nilai hasil smsnya gan k lcd 16x2.
nomernya agan brapa?
Deleteane newbie gan,,, mohon bantuannya yah gan
ReplyDeleteah anak polban pada jago2 juragan
ReplyDeleteada program yang buat modem wavecom ngk gan, yang pakai IC RS232, ane pengen coba buat nyalakan dan matikan lampu. kl ad tlong d kirim di email sya ya.. di nurulchamzahuye@gmail.com
ReplyDeletegan butuh pencerahan untuk memberikan delay pada sms gate way pengiriman diberikan delay
ReplyDeletegan kayak mna cara mencobanya gan ? kok ndk mw gue coba ndk mw gan ?
ReplyDeletetlng blas gan