Gsm modül - Pic haberleşmesini başardım sonunda. bazı bilgiler ve kodlar

Başlatan ertsen, 10 Eylül 2012, 23:55:14

ertsen



Arkadaşlar merhaba,

Benim gibi internette arayıp istediği cevabı bulamayan arkadaşlara yardımcı olabilmek için kodları paylaşıyorum.

* sim908 evb board ile yapıyorum bu çalışmayı
* max232 entegresini pic-gsm modül arasına bağlıyoruz
*sonrası size kalıyor

Önemli bilgiler
-int_rda kesmesi içerisinde sadece veri alıyoruz (başka bir işlem yapmadım)
-sim908 normalde 57600 baud rate'i kullanıyor ancak ben bu hızda ilk başta haberleşemedim dolayısıyla pc ye bağlayarak bu hızı 9600 e düşürdüm
- gsm modüle gönderdiğiniz komuttan sonra, cevaptan önce gönderdiğiniz kod geliyor. Bu kodu iptal etmek için echo modunu disable yapmanız gerekiyor. Bunun için modülü açtıktan sonra ATE 0 komutu kullanmanız gerekiyor.
-Eğer gönderdiğiniz kodun cevabı"OK" olarak gelecekse, bu cevaptan önce ve sonra iki karakterlik iletişim karakterleri geliyor. Bu yüzden hex olarak çalıştım ilk önce. "OK" cevabı "0d 0a 4f 4b 0d 0a" şeklinde geliyor. 4f ="O" 4b="K"

*Programda bir kesme oluştuğunda kelime[] dizisine gelen cevap aktarılıyor. yalnız burada i değişkeninin global olduğuna dikkat edin. kesme bittikten sonrada "0a" karakterinden sonrasını "0d" karakterine kadar ekrana yazdırıyor .
*AT ve AT&K0 komutlarını deneme amaçlı kullandım. siz değiştirebilirsiniz tabiki.

İnşallah bir faydamız olmuştur.


[IMG]http://img31.imageshack.us/img31/5952/20120910233011.jpg[/img]

Uploaded with ImageShack.us
// --------------------------------------------------------------------------------------------------------------------------------
 #include <18F2550.h>
 #fuses  HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN      // dont change
 #use    delay(clock=48000000)                                    // dont change
 #build (reset=0x1000, interrupt=0x1008)                              // new addresses
 #org 0x0,0xfff {}                                             // reserved space            
 #include <lcd_flex.c>
 #use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1, bits=8)
 #define CTRLZ 0x1A
 // --------------------------------------------------------------------------------------------------------------------------------
 boolean kontrol=false;
 char   klavye[80]=" ";  // klavye isminde 80 üyeli bir dizi tanımlanıyor
 int i=0,t=0,degisim=0,kesme=0;
 
#int_rda   // RX ucuna veri gelince meydane gelen kesme
 void serihaberlesme_kesmesi (void)
 {
    disable_interrupts(int_rda); // int_rda kesmesini pasif yap
        degisim=1;
                 klavye[i]=getc();
                 i++;
      output_low(pin_c2); //c2 pinine led bağlı
  enable_interrupts(int_rda);
 return;
 }
 /********* ANA PROGRAM FONKSİYONU********/
 void main ( )
 {
    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'yi hazırla
    enable_interrupts(GLOBAL);  // Aktif edilen tüm kesmelere izin ver
 //!printf("ATE 0\r\n"); //!bu kodu sadece gsm modül ilk açıldığında bir defa aktif ediyorum. sonra pasifleştiriyorum.
 //!   delay_ms(20);
    
   while(1) // Sonsuz döngü
    {  
    
   enable_interrupts(int_rda);
    if (input(pin_A0)==0)
    {
            delay_ms(10);
        while(input(pin_A0)==0);
         i=0;
         output_high(pin_c2);
         delay_ms(200);
                 printf(lcd_putc,"\f");
                 printf("AT&K0\r\n");
      }
  
  if (input(pin_A1)==0)
 {
    delay_ms(20);
          while(input(pin_A1)==0);
 i=0;
 output_high(pin_c2);
 delay_ms(200);
            printf(lcd_putc,"\f");
            printf(lcd_putc,"\f");
          printf("AT\r\n");
     }
  
 if(degisim==1)
 {
 degisim=0;
  printf(lcd_putc,"\f");
 kontrol=false;
 if(klavye[1]==0x0a)
 t=2;
    while(kontrol==false)
    {
          printf(lcd_putc,"%c",klavye[t]);
          t++;
    if(klavye[t]==0x0d)
    kontrol=true;
   }
 }
 }
 }                                          // End of main

systran

valla, hocam uzun uğraşlar sonucu başarmışsın tebrikler, hasta olmasam beraber çözerdik ama kısmet değilmiş :D

serhat1990

Hocam bunu yapmak sıkıntı değilde gprs olayında biraz gerildik arkadaşla :)

Devamını dileriz :)

GPRS Kastıracak gibi baştan haberiniz olsun :)

baykoyu

hocam allah devamını getirsin devamı da GPRS olsun amin şimdiden onuda çöz allah aşkına öldük bittik yapacaz diye olmadı :)

ertsen

Arkadaşlar bende bu işlerde yeniyim. inşallah sıradaki hedefim gprs. şu anda banada sms kolay geliyor ama bir haftadır çektiğim sıkıntıyı ben bilirim. Systran kardeşim biran önce iyileşte gprs ye başlayalım beraber. Bak yardım bekleyen arkadaşlar var... Belki androidede başlarız...

serhat1990

GPRS Konusunda bence web siteler ile ilgili biraz bilgiye ihtiyaç var , bağlanmak sorun değil nete sorun gönderiyorsun data ama bu data nereye gider nerede saklanır sana tekrar bunu nasıl repeat eder gibi sorular uğraştırıcı.

kantirici

Arkadaşlar bu konuda forumda bir örnek verilmişti.İnceleyebilirsiz.

https://www.picproje.org/index.php/topic,40229.msg295814.html#msg295814

sım900 için isebu uygulama notu var fakat büyük ihtimal yukarıdaki modül içinde işe yarar. http://www.svtehs.com/simcom/docs/SIM900_AN_TCPIP_V100.pdf

baykoyu

sanrım bu işler için ilk olarak bi web site almaya ihtiyacımız var  ???

systran

Alıntı yapılan: ertsen - 11 Eylül 2012, 09:05:38
Arkadaşlar bende bu işlerde yeniyim. inşallah sıradaki hedefim gprs. şu anda banada sms kolay geliyor ama bir haftadır çektiğim sıkıntıyı ben bilirim. Systran kardeşim biran önce iyileşte gprs ye başlayalım beraber. Bak yardım bekleyen arkadaşlar var... Belki androidede başlarız...
inşallah zaten bi iyileşsem, "bir haftadır çektiğim sıkıntıyıda ben bilirim" :(

cinque


mustafa_cmbz

rs232 ile ilgili şemamatik kısımları paylaşabilirmisiniz acaba?

isikyasar


mustafa_cmbz

16f877 ile yaparsın hocam da ileride uygulama geliştirirken hafızası yetmeyebilir..

ertsen

rs232 ile ilgili şemayı paylaşayım paylaşmasında da, aslında zor bir bağlantı değil. 

[IMG]http://img805.imageshack.us/img805/7190/rs232pic.jpg[/img]

yine sorunuz olursa bildiğim kadarıyla yanıtlamaya çalışırım.


Alıntı yapılan: mustafa_cmbz - 02 Şubat 2013, 22:35:07
rs232 ile ilgili şemamatik kısımları paylaşabilirmisiniz acaba?

tyildizak