Thông báo

Collapse
No announcement yet.

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

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • 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

  • #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


    • #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


      • #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


        • #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


          • #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


            • #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


              • #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


                • #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


                  • #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


                    • #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


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

                        Comment


                        • #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


                          • #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...
                            X