Chủ Nhật, 26 tháng 2, 2012

Giao Tiếp Vi Điều Khiển Với Module Sim548



Sơ đồ nguyên lý giao tiếp giữa Vi Điều Khiển với Module Sim548:



Thao khảo thêm về: Module Sim548

Code Demo:

#include "Pic_GSM_demo.h"

#include ".\myLCD16x2.c"
#include 

#define Led0 PIN_C1
#define Led1 PIN_C2
#define GSM_PW PIN_E2
#define GSM_SENSE PIN_E1
#define TEXTMODE 5;
#define PDUMODE 0;

void GSM_init(void);
void GSM_start(void);
void GSM_sel_mess_mode(char mode);

void GSM_init(void)
{
   output_bit(GSM_PW,1);
   output_bit(Led1,1);
   output_float(GSM_SENSE);
}
void GSM_start(void)
{
//start up GSM module
   delay_ms(2000);
   lcd_init();
    
   lcd_putc("\fwww.elabvn.com\n");
   lcd_putc("Pic GSM rev 1.0");
   //printf("GSM demo \n \r");   
   output_bit(GSM_PW,0);
   output_bit(Led1,0);
   delay_ms(2000);
   output_bit(GSM_PW,1);
   output_bit(Led1,1);
   lcd_putc("\nGSM initializing");
   delay_ms(50000);

}

void GSM_sel_mess_mode(char mode)
{
   if(mode>0) //text mode
      {
         output_bit(Led1,0);
         printf("AT+CMGF=1");
         putc(13);//enter CR
          output_bit(Led1,1);
         delay_ms(1000);
         output_bit(Led1,0);

         }
   else //PDU mode
      {
         output_bit(Led1,0);
         printf("AT+CMGF=0");
         putc(13);//enter CR
         output_bit(Led1,1);
         delay_ms(1000);
         output_bit(Led1,0);
      }
  
}

void main()
{
   int1 gsm_ok;
   int cnt;
   int1 temp;
   char c;
   int i;

   
   GSM_init();
   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_CLOCK_DIV_2);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard
//Setup_Oscillator parameter not selected from Intr Oscillator Config tab

   // TODO: USER CODE!!
      GSM_start();
      GSM_sel_mess_mode(5);
   
      printf("ATE1"); //echo on
      putc(13);//enter CR
      delay_ms(1000);//
      
      printf("AT");
      putc(13);//enter CR
      output_bit(Led1,1);
      lcd_putc("\nGSM send message      ");
      delay_ms(1000);
      output_bit(Led1,0);
      printf("AT+CMGS=");
      putc(34);//"
      printf("0989703330");
      putc(34);//"
      
      putc(13);//enter CR
      delay_ms(1000);//cho ki tu ">"
      printf("SIM300 Ready");
      delay_ms(1000);//
      putc(0x1A);//CTRL+Z
       output_bit(Led1,1);
      delay_ms(2000);//
     
      lcd_putc("\nGSM sent done    ");
      while(1);
}



(Nguồn: anhduc_4share )

9 nhận xét:

  1. Có bạn. Bạn có thể tham khảo đoạn test code ở trên!

    Trả lờiXóa
  2. Bạn ơi cho mình xin "Pic_GSM_demo.h va .\myLCD16x2.c tham khảo được không

    Trả lờiXóa
  3. cho mình hỏi chân pin 3V nối ngay trước D1 1N4001 là nối với chân gì? thanks!

    Trả lờiXóa
  4. Chân đó có thể không cần nếu ta dùng Pin 3V ở bên cạnh, còn không thì có thể nối với nguồn 3V.
    Thân!

    Trả lờiXóa
  5. cho mình hỏi thêm. Chân 10 và 12 VCHG nối với nguồn 5V phải không? Thanks!

    Trả lờiXóa
  6. @Quốc Khánh Nguyễn: uhm, chân đó để xạc Pin thôi, không cần thiết phải sử dụng.
    Thân!

    Trả lờiXóa
  7. Minh lay 2 chan 29 va 31 Noi vao VDK ha ban!
    Ban cho the cho minh phan mo rong giua Sim 548 nay voi VDk PIC dc ko cam on ban send cho minh nha minhhaict100@gmail.com

    Trả lờiXóa
  8. bạn vui lòng share thư viện "Pic_GSM_demo.h" được không bạn?! email: khuong.tranquang@gmail.com

    Trả lờiXóa