Elektrotekno.com Ana Sayfa || Programlanabilir Cihaz ve Elemanlar


PIC<-->GSM modül haberleşmesi AT sorunu

Kayıt: 19 Ekm 2007
Mesajlar: 168
Konum: İzmir,Tekirdağ
Offline
ozerdenizege
Tarih: 17 05 2009 16:47

Merhaba arkadaşlar,

pic 16f877 ile gsm modülü seri kanaldan at komutları ile haberleştirmek istiyoruz. pic i CCs PIC C ile programladık. Fakat deneme aşamasında "at" gönderdiğimizde geri "ok" döndüğünü bir türlü göremedik. at gönderirken

printf("AT"), printf("AT\n\r") denedik olmadı.

daha sonra printf("at") ardından putc(CR) ;//int const CR=0x0d

denedik fakat hiçbirinde ok geri dönmedi. Hyperteminalden baktığımızda AT gönderildeiğini görebiliyoruz. Fakat sanırım bi şekilde bu modüle gitmiyor. Normalde hyperteminalde AT yazıp enter a basınca direkt ok dönüyor. Acaba buradaki enter karakterini mi gönderemiyoruz. Araştırdiğima göre enterin ascii kodu 0x0d imiş onu da gönderdim olmadı.

Bu tarz bi uygulama yapan ya da konuyla ilgili arkadaşkar varsa acil yardımlarınızı bekliyorum.

edit:

Sanırım kodlar üzerinden konuşmak daha mantıklı olacak CCS C kodları şöyle:

#include <16f877.h>

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000)
#define use_portb_lcd TRUE
#include <lcd.c>

#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1)


char komut[50];


void main ( )
{
setup_psp(PSP_DISABLED); // PSP birimi devre dışı
setup_spi(SPI_SS_DISABLED); // SPI birimi devre dışı
setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı
setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok
setup_adc(ADC_OFF); // ADC birimi devre dışı
setup_CCP1(CCP_OFF); // CCP1 birimi devre dışı
setup_CCP2(CCP_OFF); // CCP2 birimi devre dışı

lcd_init(); // LCD hazırlandı.
printf(lcd_putc,"\f%s"," AT GONDERILCEK");
delay_ms(2000);
printf("AT\r\n");

printf(lcd_putc,"\f%s"," AT GONDERILDI");
gets(komut);
printf(lcd_putc,"\f%s",komut);

Ben C# ile aynı modül üzerinden sms gönderme işlemi yaptırmıştım mesela orada AT+XXX\r\n gönderdiğimde seri porta istediğim işlemi yaptırabiliyordum modüle. Fakat burda at gönderip ok bile alamadım. Neden böyle bir sorun oldu anlamadım. Görüşlerinizi bekliyorum..


Reklamlar
Kayıt: 10 Ksm 2007
Mesajlar: 4

Offline
arifataman
Tarih: 17 05 2009 22:48

\n veya \r yi ayrı ayrı dene muhtemelen \r işini görecektir. \r yi AT komutundan önce koy. yani "\rAT" şeklinde çözebileceğini düşünüyorum. Bende uğraştım bu işle daha önce bu şekilde çözüldü problem.
Başa dön
Kayıt: 19 Ekm 2007
Mesajlar: 168
Konum: İzmir,Tekirdağ
Offline
ozerdenizege
Tarih: 18 05 2009 01:15

maalesef bu da olmadı denemediğin kombinasyon kalmadı zaten:(

gets(komut) a geldiğinde kilitleniyor program...
Başa dön
Kayıt: 11 Mar 2006
Mesajlar: 23
Konum: Bolu
Offline
canELK
Tarih: 18 05 2009 11:48

ilk başta devrende sorun vardır diye düşünmüştüm ama c# ile yaptığın programla "ok" u aldıysan sorun yazılımdadır tabii.
normalde "A" "T" 0x0a ve 0x0d gönderince "ok"u alabiliyordun diye hatırlıyorum. bence rs232yi aynı pic'e geri bağlayarak dataları gönderdiğine ve aldığına emin ol.
bir de at gönderdikten sonra lcdye birşey yazmadan "ok" u bekle.
Başa dön
Kayıt: 19 Ekm 2007
Mesajlar: 168
Konum: İzmir,Tekirdağ
Offline
ozerdenizege
Tarih: 18 05 2009 16:38

rs232 yi aynı pic e geri bağla derken rs in pc ye giden ucundaki tx rx i mi birleştiriyim??

bu kadar zor bşi olmamalı bu ya..

az önce if(kbhit()) ile gelen veri geldiğinde bi pini high yap dedim bunu da yapmadı bence alamıyor hyperterminalden gönderilen veriyi..

proteus simülasyonunda gayet düzgün çalışıyor...

edit: devrenin seri port çıkışında rx tx uçlarını birbirine bağladım.

while(1)
{
printf("AT")
if(kbhit())
printf(lcd_putc,"\f%s","asd")
}

yazdığımda lcd ekranda asd yi gördüm. Yani devre kendi içinde düzgün çalışıyor rx tx uçlarında sorun yok.

ama bilgisayardan deneme amaçlı hyperterminalden bşi gönderdiğimde aynı şey olmuyor.. Dolayısı ile modül bağlı iken de tabi ki... Sanırım hata devrede değil ..

görüşlerinizi bekliyorum arkadaşlar..

edit 2:

seri port ayarlarından akış kontrolünü Xon/Xoff yaptık(Eskiden bu sekem default olarak "Donanım" olarak seçili idi)..

Bu şekilde bilgisayardan PIC devresine bilgi gönderip lcd ekranda yazdırabiliyoruz..

Telit GM862 ile de akış kontrolü AT komutları ile ayarlanabiliyormuş. Buradan da çeşitli ayarlamalar yaptık ama sonuç yine olumsuz.. Daha önce GM862 ile seriden haberleşen var mı acaba??
Başa dön
Kayıt: 19 Ekm 2007
Mesajlar: 168
Konum: İzmir,Tekirdağ
Offline
ozerdenizege
Tarih: 22 05 2009 15:38

edit 3:

Telit GM862 modülünü içeren EZ10 ürününde rx tx uçları user guide de verilen ile ters bundan sonra kullanacak arkadaşlara duyrulur.. Sorun çözüldü.
Başa dön
Kayıt: 31 May 2009
Mesajlar: 7

Offline
alikemal
Tarih: 01 03 2012 17:14

Merhaba,

Aradan 2 yıl geçmiş ama bir sorum olacaktı.

Modülün hazır olduğunu anlamak için kbhit() fonksiyonunu mu kullanmıştınız?

Teşekkürler.
Başa dön



PIC<-->GSM modül haberleşmesi AT sorunu


Benzer Konular
- s7 300-WINCC Haberleşmesi,S7-300 plc eğitimi ve simatic eğitimi (türkçe)
- P-Mosfet sürme sorunu
- pıc18f4550 adc sorunu

- Sayıcı Resetleme Sorunu

- Yardım isteği - SCADA kaydetme sorunu
- s5 100u cpu 102 pc ile bağlanma sorunu acil
- PİC ile 220 lamba kontrolü sorunu
- 16F877A int kesmesi sorunu
- Yer Uydu Haberleşmesi (Sunum)

- Yer Uydu Haberleşmesi (Sunum)

- pic16f877 ile seviye kontrol "LCD sorunu"

Sitemize üyelik ve içeriğin indirilmesi tamamen ücretsizdir. Sitemizde paylaşılan tüm dokümanlar (Tezler, makaleler, ders notları, sınav soru cevaplar, projeler) paylaşımcıların bireysel çalışmaları olup telif hakları kendilerine aittir ya da açık bir şekilde kamusal alana yerleştirilmiş dokümanların birer kopyalarıdır. Kişilerin bireysel çalışmalarını sitemizde yüklemesinde, sitemizde paylaşıma teşvik eden puanlama sisteminin de etkisi büyüktür. Bunlara rağmen hala size ait olan ve burada bulunmasına izin vermediğiniz dokümanlar varsa iletişim bölümünden yöneticilere bildirmeniz durumunda derhal silineceklerdir.
Powered by phpBB | Translated by phpBB Turkiye | Ads by Google Adsense | Design by Crazy Bat based