giúp e code Pic với sim 548 với!!!

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • hieuthai2011
    Thành viên tích cực
    • Aug 2011
    • 227

    #1

    giúp e code Pic với sim 548 với!!!

    e test thử module kêt nối sim 548 thì ok nó gửi về các lệnh

    +CMTI: "folder",n
    (tin nhắn thứ n trong thư mục "folder")
    AT + CMGR = 1
    +GMGR: "REC UNREAD","+841692885482",,"08/08/01,14:32:42+28"
    làm thế nào để mình xử lý các lệnh này trong PIc 16f877a.
    e đã làm nhưng mãi ko nhận được tín hiêu
    cứ vào hàm xuly_sms mà làm nhưg ko biết nó làm gì ở đó mà ko so sánh được mong được sự giúp đở
    #include <16f877a.h>
    #device PIC16F877A*=16 ADC=10
    #include <string.h>
    #fuses nowdt,hs,noput,noprotect,nodebug,nobrownout,nolvp, nocpd,nowrt
    #use delay(clock=12000000)
    #use fast_io(b)
    #byte porta=0x05
    #byte portb=0x06
    #byte portc=0x07
    #byte portd=0x08
    #bit b1=portb.0
    #bit b2=portb.1
    #bit b3=portb.2
    #bit b4=portb.3
    #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)
    char chuoi[90],noidung_sms[20],tu_khoa[20];
    int8 dem,k,new_sms,z,vitri,x,y,i;
    /*********** Khai bao ngat nhan noi tiep ***********/
    #INT_RDA
    void ngat()
    {
    chuoi[dem]=getc();
    if(chuoi[dem]=='\r')
    {
    z++;
    if(z==2)new_sms=1;
    }
    dem++;
    }
    void xuly();
    void xuly_sms();
    void gsm_config();
    void xoa();
    void trang_thai();
    void main()
    {
    set_tris_a(0b000001);
    set_tris_b(0b00000000);
    set_tris_d(0b00000000);
    portb=0;
    portd=0;
    enable_interrupts(global);//Cho phep ngat toan cuc
    enable_interrupts(int_rda);//Cho phep ngat nhan noi tiep
    setup_adc(ADC_clock_internal); // thiet lap tan so lay mau ADC
    setup_adc_ports(AN0); // ngo vao A0
    set_adc_channel(0); // chan doc gia tri adc bang read_adc()
    gsm_config();//goi chuong trinh con cau hinh Module GSM
    new_sms=0;
    z=0;
    while(1)
    {
    if(new_sms==1)
    {
    xoa();
    puts("at+cmgr=1");
    delay_ms(500);
    xuly_sms();
    xuly();
    delay_ms(200);
    puts("at+cmgd=1");
    delay_ms(500);
    xoa();
    delay_ms(500);
    }
    }}
    void gsm_config()
    {
    delay_ms(2000);
    printf("at\r\n");
    delay_ms(500);
    printf("at\r\n");
    delay_ms(500);
    printf("at\r\n");
    delay_ms(500);
    printf("at\r\n");
    delay_ms(500);
    printf("ate0\r\n");
    delay_ms(500);
    printf("at+cmgf=1\r\n");
    delay_ms(500);
    printf("at+cmgd=1\r\n");
    delay_ms(500);
    xoa();
    delay_ms(500);
    portd=3;delay_ms(1000);portd=0;delay_ms(1000); //2 led sang //cau hinh xong
    }
    //+++++++++++++++ xoa +++++++++++++++++//
    void xoa()
    {
    new_sms=0;
    z=0;
    dem=0;
    y=0;
    vitri=0;
    for(i=0;i<=90;i++) //Xoa chuoi[]
    {chuoi[i]=0;}
    for(i=0;i<=20;i++) //Xoa noidung_sms[]
    {noidung_sms[i]=0;}
    }
    //+++++++++++++++++++++ xu ly tin nhan ++++++++++++++//
    void xuly_sms()
    {
    y=0;
    k=0;
    for(i=0;i<=strlen(chuoi);i++)
    {
    if(chuoi[i]=='\n')
    {
    k++;
    if(k==2)vitri=i+1 ;
    }
    }
    for(x=vitri;x<strlen(chuoi)-8;x++)
    {noidung_sms[y]=chuoi[x];
    y++ ; // lay noi dung
    }
    }
    //+++++++++++++++ XU LY va DIEU KHIEN +++++++++++++++++++//
    void xuly()
    {
    strcpy(tu_khoa,"On1");
    if(strcmp(tu_khoa,noidung_sms)==0)
    {
    b1=1;
    printf("AT+CMGS=\"01674577163\"\r\n");
    delay_ms(500);
    printf("den 1 da mo");
    delay_ms(500);
    putc(26); // ctrl +Z
    delay_ms(500);
    }
    strcpy(tu_khoa,"Off1");
    if(strcmp(tu_khoa,noidung_sms)==0)
    {
    printf("AT+CMGS=\"01674577163\"\r\n");
    delay_ms(500);
    printf("den 1 da tat");
    delay_ms(500);
    putc(26); // ctrl +Z
    delay_ms(500);
    }
    }
    email
    nick: bangbigboy_bigboy
    sdt :01203380789
  • caovanhuong
    Thành viên tích cực
    • Oct 2008
    • 1800

    #2
    Nguyên văn bởi hieuthai2011 Xem bài viết
    e test thử module kêt nối sim 548 thì ok nó gửi về các lệnh

    +CMTI: "folder",n
    (tin nhắn thứ n trong thư mục "folder")
    AT + CMGR = 1
    +GMGR: "REC UNREAD","+841692885482",,"08/08/01,14:32:42+28"
    làm thế nào để mình xử lý các lệnh này trong PIc 16f877a.
    e đã làm nhưng mãi ko nhận được tín hiêu
    cứ vào hàm xuly_sms mà làm nhưg ko biết nó làm gì ở đó mà ko so sánh được mong được sự giúp đở
    #include <16f877a.h>
    #device PIC16F877A*=16 ADC=10
    #include <string.h>
    #fuses nowdt,hs,noput,noprotect,nodebug,nobrownout,nolvp, nocpd,nowrt
    #use delay(clock=12000000)
    #use fast_io(b)
    #byte porta=0x05
    #byte portb=0x06
    #byte portc=0x07
    #byte portd=0x08
    #bit b1=portb.0
    #bit b2=portb.1
    #bit b3=portb.2
    #bit b4=portb.3
    #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)
    char chuoi[90],noidung_sms[20],tu_khoa[20];
    int8 dem,k,new_sms,z,vitri,x,y,i;
    /*********** Khai bao ngat nhan noi tiep ***********/
    #INT_RDA
    void ngat()
    {
    chuoi[dem]=getc();
    if(chuoi[dem]=='\r')
    {
    z++;
    if(z==2)new_sms=1;
    }
    dem++;
    }
    void xuly();
    void xuly_sms();
    void gsm_config();
    void xoa();
    void trang_thai();
    void main()
    {
    set_tris_a(0b000001);
    set_tris_b(0b00000000);
    set_tris_d(0b00000000);
    portb=0;
    portd=0;
    enable_interrupts(global);//Cho phep ngat toan cuc
    enable_interrupts(int_rda);//Cho phep ngat nhan noi tiep
    setup_adc(ADC_clock_internal); // thiet lap tan so lay mau ADC
    setup_adc_ports(AN0); // ngo vao A0
    set_adc_channel(0); // chan doc gia tri adc bang read_adc()
    gsm_config();//goi chuong trinh con cau hinh Module GSM
    new_sms=0;
    z=0;
    while(1)
    {
    if(new_sms==1)
    {
    xoa();
    puts("at+cmgr=1");
    delay_ms(500);
    xuly_sms();
    xuly();
    delay_ms(200);
    puts("at+cmgd=1");
    delay_ms(500);
    xoa();
    delay_ms(500);
    }
    }}
    void gsm_config()
    {
    delay_ms(2000);
    printf("at\r\n");
    delay_ms(500);
    printf("at\r\n");
    delay_ms(500);
    printf("at\r\n");
    delay_ms(500);
    printf("at\r\n");
    delay_ms(500);
    printf("ate0\r\n");
    delay_ms(500);
    printf("at+cmgf=1\r\n");
    delay_ms(500);
    printf("at+cmgd=1\r\n");
    delay_ms(500);
    xoa();
    delay_ms(500);
    portd=3;delay_ms(1000);portd=0;delay_ms(1000); //2 led sang //cau hinh xong
    }
    //+++++++++++++++ xoa +++++++++++++++++//
    void xoa()
    {
    new_sms=0;
    z=0;
    dem=0;
    y=0;
    vitri=0;
    for(i=0;i<=90;i++) //Xoa chuoi[]
    {chuoi[i]=0;}
    for(i=0;i<=20;i++) //Xoa noidung_sms[]
    {noidung_sms[i]=0;}
    }
    //+++++++++++++++++++++ xu ly tin nhan ++++++++++++++//
    void xuly_sms()
    {
    y=0;
    k=0;
    for(i=0;i<=strlen(chuoi);i++)
    {
    if(chuoi[i]=='\n')
    {
    k++;
    if(k==2)vitri=i+1 ;
    }
    }
    for(x=vitri;x<strlen(chuoi)-8;x++)
    {noidung_sms[y]=chuoi[x];
    y++ ; // lay noi dung
    }
    }
    //+++++++++++++++ XU LY va DIEU KHIEN +++++++++++++++++++//
    void xuly()
    {
    strcpy(tu_khoa,"On1");
    if(strcmp(tu_khoa,noidung_sms)==0)
    {
    b1=1;
    printf("AT+CMGS=\"01674577163\"\r\n");
    delay_ms(500);
    printf("den 1 da mo");
    delay_ms(500);
    putc(26); // ctrl +Z
    delay_ms(500);
    }
    strcpy(tu_khoa,"Off1");
    if(strcmp(tu_khoa,noidung_sms)==0)
    {
    printf("AT+CMGS=\"01674577163\"\r\n");
    delay_ms(500);
    printf("den 1 da tat");
    delay_ms(500);
    putc(26); // ctrl +Z
    delay_ms(500);
    }
    }
    cái này chắc là test bằng máy tính. bạn kiểm tra lại thử khi giao tiếp PIC với SIM548 thì PIC có nhận được dử liệu từ SIM548 không. thêm 1 lệnh cho led sáng khi xảy ra ngắt nối tiếp coi, khi gửi tin nhắn led có sáng không.

    Comment

    • hieuthai2011
      Thành viên tích cực
      • Aug 2011
      • 227

      #3
      hiện tại e đang gặp rắc rối chỗ nhận dử liệu bị sai khi e cho cho nó hiện LCD!!! a coi giúp e, e sửa mãi mà vấn thế!!!hjc
      email
      nick: bangbigboy_bigboy
      sdt :01203380789

      Comment

      • caovanhuong
        Thành viên tích cực
        • Oct 2008
        • 1800

        #4
        Nguyên văn bởi hieuthai2011 Xem bài viết
        hiện tại e đang gặp rắc rối chỗ nhận dử liệu bị sai khi e cho cho nó hiện LCD!!! a coi giúp e, e sửa mãi mà vấn thế!!!hjc
        bạn xem khi gửi gử liệu từ SIM xuống thì vdk có xảy ra ngắt không.

        Comment

        • hieuthai2011
          Thành viên tích cực
          • Aug 2011
          • 227

          #5
          có khi ngắt có khi ko ngắt.mà nếu ngắt thì nó ko xư lý được dữ liệu trong đó e cho nó hiện LCD thì ko hiện e dùng dao động 12MHZ được ko a hay phải dùng 11,0592 MHZ vậy a !!! hic nó chạy ko ổn định !!!
          email
          nick: bangbigboy_bigboy
          sdt :01203380789

          Comment

          • caovanhuong
            Thành viên tích cực
            • Oct 2008
            • 1800

            #6
            Nguyên văn bởi hieuthai2011 Xem bài viết
            có khi ngắt có khi ko ngắt.mà nếu ngắt thì nó ko xư lý được dữ liệu trong đó e cho nó hiện LCD thì ko hiện e dùng dao động 12MHZ được ko a hay phải dùng 11,0592 MHZ vậy a !!! hic nó chạy ko ổn định !!!
            sao lại lúc thì có ngắt, lúc thì không là sao? phải có ngắt thì dữ liệu mới nhận được, sau đó nó lưu vào 1 chuỗi tạm. sau khi ngận xong dữ liệu hoàn tất rồi mới cho hiển thi ra LCD. lấy con trở 1K nối từ chân RX của PIC16F877A nối với Vcc thử coi.

            Comment

            • hieuthai2011
              Thành viên tích cực
              • Aug 2011
              • 227

              #7
              E truyền dữ liệu xuống con pic có khi nó nhận có khi nó ko nhận được a ak !!! dử liệu nhận về từ máy tính mún cho nó hiện lên LCD làm thế nào vậy a!! hướng dẫn e cách viết chỗ này với !!!! hjc cái dử liệu nhận về của e lúc nào cũng sai hết e nhắn ON mấy thì cũng trả về off1!!hjc !!
              email
              nick: bangbigboy_bigboy
              sdt :01203380789

              Comment

              • tdm
                Thành viên tích cực
                • Sep 2005
                • 349

                #8
                Nguyên văn bởi hieuthai2011 Xem bài viết
                E truyền dữ liệu xuống con pic có khi nó nhận có khi nó ko nhận được a ak !!! dử liệu nhận về từ máy tính mún cho nó hiện lên LCD làm thế nào vậy a!! hướng dẫn e cách viết chỗ này với !!!! hjc cái dử liệu nhận về của e lúc nào cũng sai hết e nhắn ON mấy thì cũng trả về off1!!hjc !!
                #INT_RDA
                void ngat()
                {
                chuoi[dem]=getc();
                if(chuoi[dem]=='\r')
                {
                z++;
                if(z==2)
                {
                new_sms=1;
                // tại đây bạn có thể cho một pin nào đó tác động để biết rằng dữ liệu đã nhận xong
                //hoặc lấy dữ liệu trong mảng chuoi hiển thị ra lcd xem nó nhận được cái gì
                }
                }
                dem++;
                }
                thường thì người ta cấu hình Module GSM xong mới cho phép các ngắt hoạt động.
                |

                Comment

                • hieuthai2011
                  Thành viên tích cực
                  • Aug 2011
                  • 227

                  #9
                  dạ e cảm ơn 2 a nhiều !!!e đã tìm ra được nguyên nhân đso là do sự bất đồng điện áp giữa module và máy tính e bị rò điện !! giờ thì cũng OK rùi!!hj !!
                  email
                  nick: bangbigboy_bigboy
                  sdt :01203380789

                  Comment

                  • probaby
                    Thành viên mới
                    • Jul 2009
                    • 5

                    #10
                    anh em có ai làm module sim 548c + giao tiếp pic chưa? cho minh hỏi kinh nghiệm với!

                    Comment

                    • hieuthai2011
                      Thành viên tích cực
                      • Aug 2011
                      • 227

                      #11
                      Nguyên văn bởi probaby Xem bài viết
                      anh em có ai làm module sim 548c + giao tiếp pic chưa? cho minh hỏi kinh nghiệm với!
                      bạn cần gì thì phải hỏi vấn đề này coi như đã được giải quyết rùi bạn ak !!!
                      email
                      nick: bangbigboy_bigboy
                      sdt :01203380789

                      Comment

                      • probaby
                        Thành viên mới
                        • Jul 2009
                        • 5

                        #12
                        bạn nào có sơ đồ nguyên lý của sim 548c + pic không? mà mạch gps ak.

                        Comment

                        • romen12bt
                          Thành viên mới
                          • Apr 2011
                          • 3

                          #13
                          Chào bạn hienthai2011 Mình sắp sửa làm cái đồ án về Pic 16f877a voi Modunl Som 548c Bạn cho mình tài liệu Mạch Nguyên lý,mạch in và code Kham thảo với Cám Ơn Bạn Nhiều lắm.Anh chị nào có tài liệu tương tự Cho em Xin với Em rất là cám ơn Mọi người
                          Anh chi cu send tài liệu về minhhaict100@gmail.com Em ngày nào cũng check mail mong rằng sẽ sớm nhận đươc tin nhắn phản hồi

                          Comment

                          • dinhnam123
                            Thành viên tích cực
                            • Oct 2009
                            • 102

                            #14
                            Nguyên văn bởi hieuthai2011 Xem bài viết
                            e test thử module kêt nối sim 548 thì ok nó gửi về các lệnh

                            +CMTI: "folder",n
                            (tin nhắn thứ n trong thư mục "folder")
                            AT + CMGR = 1
                            +GMGR: "REC UNREAD","+841692885482",,"08/08/01,14:32:42+28"
                            làm thế nào để mình xử lý các lệnh này trong PIc 16f877a.
                            e đã làm nhưng mãi ko nhận được tín hiêu
                            cứ vào hàm xuly_sms mà làm nhưg ko biết nó làm gì ở đó mà ko so sánh được mong được sự giúp đở
                            #include <16f877a.h>
                            #device PIC16F877A*=16 ADC=10
                            #include <string.h>
                            #fuses nowdt,hs,noput,noprotect,nodebug,nobrownout,nolvp, nocpd,nowrt
                            #use delay(clock=12000000)
                            #use fast_io(b)
                            #byte porta=0x05
                            #byte portb=0x06
                            #byte portc=0x07
                            #byte portd=0x08
                            #bit b1=portb.0
                            #bit b2=portb.1
                            #bit b3=portb.2
                            #bit b4=portb.3
                            #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)
                            char chuoi[90],noidung_sms[20],tu_khoa[20];
                            int8 dem,k,new_sms,z,vitri,x,y,i;
                            /*********** Khai bao ngat nhan noi tiep ***********/
                            #INT_RDA
                            void ngat()
                            {
                            chuoi[dem]=getc();
                            if(chuoi[dem]=='\r')
                            {
                            z++;
                            if(z==2)new_sms=1;
                            }
                            dem++;
                            }
                            void xuly();
                            void xuly_sms();
                            void gsm_config();
                            void xoa();
                            void trang_thai();
                            void main()
                            {
                            set_tris_a(0b000001);
                            set_tris_b(0b00000000);
                            set_tris_d(0b00000000);
                            portb=0;
                            portd=0;
                            enable_interrupts(global);//Cho phep ngat toan cuc
                            enable_interrupts(int_rda);//Cho phep ngat nhan noi tiep
                            setup_adc(ADC_clock_internal); // thiet lap tan so lay mau ADC
                            setup_adc_ports(AN0); // ngo vao A0
                            set_adc_channel(0); // chan doc gia tri adc bang read_adc()
                            gsm_config();//goi chuong trinh con cau hinh Module GSM
                            new_sms=0;
                            z=0;
                            while(1)
                            {
                            if(new_sms==1)
                            {
                            xoa();
                            puts("at+cmgr=1");
                            delay_ms(500);
                            xuly_sms();
                            xuly();
                            delay_ms(200);
                            puts("at+cmgd=1");
                            delay_ms(500);
                            xoa();
                            delay_ms(500);
                            }
                            }}
                            void gsm_config()
                            {
                            delay_ms(2000);
                            printf("at\r\n");
                            delay_ms(500);
                            printf("at\r\n");
                            delay_ms(500);
                            printf("at\r\n");
                            delay_ms(500);
                            printf("at\r\n");
                            delay_ms(500);
                            printf("ate0\r\n");
                            delay_ms(500);
                            printf("at+cmgf=1\r\n");
                            delay_ms(500);
                            printf("at+cmgd=1\r\n");
                            delay_ms(500);
                            xoa();
                            delay_ms(500);
                            portd=3;delay_ms(1000);portd=0;delay_ms(1000); //2 led sang //cau hinh xong
                            }
                            //+++++++++++++++ xoa +++++++++++++++++//
                            void xoa()
                            {
                            new_sms=0;
                            z=0;
                            dem=0;
                            y=0;
                            vitri=0;
                            for(i=0;i<=90;i++) //Xoa chuoi[]
                            {chuoi[i]=0;}
                            for(i=0;i<=20;i++) //Xoa noidung_sms[]
                            {noidung_sms[i]=0;}
                            }
                            //+++++++++++++++++++++ xu ly tin nhan ++++++++++++++//
                            void xuly_sms()
                            {
                            y=0;
                            k=0;
                            for(i=0;i<=strlen(chuoi);i++)
                            {
                            if(chuoi[i]=='\n')
                            {
                            k++;
                            if(k==2)vitri=i+1 ;
                            }
                            }
                            for(x=vitri;x<strlen(chuoi)-8;x++)
                            {noidung_sms[y]=chuoi[x];
                            y++ ; // lay noi dung
                            }
                            }
                            //+++++++++++++++ XU LY va DIEU KHIEN +++++++++++++++++++//
                            void xuly()
                            {
                            strcpy(tu_khoa,"On1");
                            if(strcmp(tu_khoa,noidung_sms)==0)
                            {
                            b1=1;
                            printf("AT+CMGS=\"01674577163\"\r\n");
                            delay_ms(500);
                            printf("den 1 da mo");
                            delay_ms(500);
                            putc(26); // ctrl +Z
                            delay_ms(500);
                            }
                            strcpy(tu_khoa,"Off1");
                            if(strcmp(tu_khoa,noidung_sms)==0)
                            {
                            printf("AT+CMGS=\"01674577163\"\r\n");
                            delay_ms(500);
                            printf("den 1 da tat");
                            delay_ms(500);
                            putc(26); // ctrl +Z
                            delay_ms(500);
                            }
                            }
                            bạn nên test từ phần mềm trên máy tíh trước , sau đó mới auto từ chip . như thế sẽ hiệu quả hơn!^^
                            |

                            Comment

                            Về tác giả

                            Collapse

                            hieuthai2011 Tìm hiểu thêm về hieuthai2011

                            Bài viết mới nhất

                            Collapse

                            Đang tải...