Thông báo

Collapse
No announcement yet.

Hỏi về giao tiếp AVR và module SIMCOM

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

  • #16
    Nguyên văn bởi quangtn82 Xem bài viết
    Bạn thử giảm tốc độ baud xuống xem, đôi khi giao tiếp ở tốc độ cao quá cũng là nguyên nhân gây ra lỗi
    không ăn thua a ah, lần trước e dùng 9600, bây giờ e giảm xuống 2400 mà cũng vẫn thế. A giúp e với? Cảm ơn anh.
    WS:
    Blog:

    Comment


    • #17
      Nguyên văn bởi quangtung112 Xem bài viết
      không ăn thua a ah, lần trước e dùng 9600, bây giờ e giảm xuống 2400 mà cũng vẫn thế. A giúp e với? Cảm ơn anh.
      Vậy phải kiểm tra lại bạn đã nối đúng chân chưa, đúng mức điện áp chưa. Thông thường tốc độ 9600 là đảm bảo không xảy ra lỗi do đường truyền rồi (Chú ý RX của VDK nối TX của SIM900, TX của VDK nối với RX của SIM900; Nếu board có sẵn Max232 thì VDK cũng phải dùng thêm Max232)

      Comment


      • #18
        Nguyên văn bởi quangtn82 Xem bài viết
        Vậy phải kiểm tra lại bạn đã nối đúng chân chưa, đúng mức điện áp chưa. Thông thường tốc độ 9600 là đảm bảo không xảy ra lỗi do đường truyền rồi (Chú ý RX của VDK nối TX của SIM900, TX của VDK nối với RX của SIM900; Nếu board có sẵn Max232 thì VDK cũng phải dùng thêm Max232)
        e kiểm tra lại rồi, các chân đều nối đúng cả. VĐK của e cũng có MAX232 rồi. đau đầu với vụ này quá.
        WS:
        Blog:

        Comment


        • #19
          Nguyên văn bởi quangtung112 Xem bài viết
          em chào các anh, board SIM900 của em khi cắm máy tính thì chạy ok, nhưng khi e giao tiếp với VĐK thì lại không được. Mong các anh giúp đỡ. Em dùng ATmega16 gửi lệnh "printf("ATD0946830790;\n"); cho nó nhưng không thể gọi được. Các anh biết lỗi gì thì giúp e với. Em cảm ơn.
          Bạn xem lại phần cứng theo như bạn quangtn82 gợi ý xem. các module SIM chưa qua max232 chỉ dùng điện áp 3,3V thôi.
          Thứ 2 lệnh printf("ATD0946830790;\n") của bạn chuẩn chưa. hình như ký tự cuối là \r chứ ko phải là \n hay sao. Bạn dùng hàm putchar() từng ký tự 1 rồi hãy dùng hàm printf(); tốc độ baud bạn set phù hợp với SIM chưa?
          Sống là để chiến đấu

          Comment


          • #20
            Nguyên văn bởi quangtung112 Xem bài viết
            e kiểm tra lại rồi, các chân đều nối đúng cả. VĐK của e cũng có MAX232 rồi. đau đầu với vụ này quá.
            Vậy thì cắm thử VDK vào máy tính xem nó đã gửi được chuỗi ký tự "ATD0946830790;\n" chưa, đôi khi có những lỗi hết sức ngớ ngẩn mà mình không ngờ tới.
            Bạn cũng kiểm tra lại xem đã set đúng tốc độ giao tiếp của SIM900 giống với AVR chưa. Có khi nào thay đổi trên VDK mà lại quên không thay đổi trên module SIM

            Comment


            • #21
              Nguyên văn bởi hitechvn Xem bài viết
              Bạn xem lại phần cứng theo như bạn quangtn82 gợi ý xem. các module SIM chưa qua max232 chỉ dùng điện áp 3,3V thôi.
              Thứ 2 lệnh printf("ATD0946830790;\n") của bạn chuẩn chưa. hình như ký tự cuối là \r chứ ko phải là \n hay sao. Bạn dùng hàm putchar() từng ký tự 1 rồi hãy dùng hàm printf(); tốc độ baud bạn set phù hợp với SIM chưa?
              Theo mình biết thì \n hay \r module đều nhận được hết (đấy là trên module của Wavecom, còn SIMCOM mình chỉ đọc tài liệu, chưa dùng thực tế bao giờ, có thể có sự khác biệt). Tốt nhất nên dùng cả \n\r

              Comment


              • #22
                Nguyên văn bởi quangtn82 Xem bài viết
                Vậy thì cắm thử VDK vào máy tính xem nó đã gửi được chuỗi ký tự "ATD0946830790;\n" chưa, đôi khi có những lỗi hết sức ngớ ngẩn mà mình không ngờ tới.
                Bạn cũng kiểm tra lại xem đã set đúng tốc độ giao tiếp của SIM900 giống với AVR chưa. Có khi nào thay đổi trên VDK mà lại quên không thay đổi trên module SIM
                em cắm VĐK vào máy tính thì gửi được chuỗi kia rồi, nhưng còn set tốc độ cho module SIM thì e ko biết set kiểu gì? e tưởng module SIM mặc định là 9600 rồi chứ? set như thế nào vậy a?
                WS:
                Blog:

                Comment


                • #23
                  Nguyên văn bởi hitechvn Xem bài viết
                  Bạn xem lại phần cứng theo như bạn quangtn82 gợi ý xem. các module SIM chưa qua max232 chỉ dùng điện áp 3,3V thôi.
                  Thứ 2 lệnh printf("ATD0946830790;\n") của bạn chuẩn chưa. hình như ký tự cuối là \r chứ ko phải là \n hay sao. Bạn dùng hàm putchar() từng ký tự 1 rồi hãy dùng hàm printf(); tốc độ baud bạn set phù hợp với SIM chưa?
                  e viết trong timer:
                  Code:
                  interrupt [TIM0_OVF] void timer0_ovf_isr(void){
                  // Place your code here
                  x++;
                  if(x==500)
                  {
                  putchar('A');
                  putchar('T');
                  putchar('D');
                  putchar('0');
                  putchar('9');
                  putchar('4');
                  putchar('6');
                  putchar('8');
                  putchar('3');
                  putchar('0');
                  putchar('7');
                  putchar('9');
                  putchar('0');
                  putchar(';');
                  putchar('\r');
                  putchar('\n');
                  //("ATD0946830790;\r\n");
                  x=0;PORTC=~PORTC;
                  }
                  
                  
                  }
                  mà vẫn thế, anh xem giúp e. e cảm ơn.
                  WS:
                  Blog:

                  Comment


                  • #24
                    Nguyên văn bởi quangtung112 Xem bài viết
                    em cắm VĐK vào máy tính thì gửi được chuỗi kia rồi, nhưng còn set tốc độ cho module SIM thì e ko biết set kiểu gì? e tưởng module SIM mặc định là 9600 rồi chứ? set như thế nào vậy a?
                    Hình như mặc định của nó là 115200 chứ không phải là 9600 đâu. Em dùng lệnh :"AT+IPR?" để xem tốc độ baud la bao nhiêu, "AT+IPR=9600" để set tốc độ baud 9600. Thêm nữa, em thử thay lệnh "ATD0946830790;\n" thành "ATD0946830790;\r" như hitechvn gợi ý xem

                    Comment


                    • #25
                      Nguyên văn bởi quangtn82 Xem bài viết
                      Hình như mặc định của nó là 115200 chứ không phải là 9600 đâu. Em dùng lệnh :"AT+IPR?" để xem tốc độ baud la bao nhiêu, "AT+IPR=9600" để set tốc độ baud 9600. Thêm nữa, em thử thay lệnh "ATD0946830790;\n" thành "ATD0946830790;\r" như hitechvn gợi ý xem
                      trời, a quả là cao thủ,thì ra là do e chưa set tốc độ cho module SIM.hihi. em làm được rồi. e cảm ơn anh. a cho e hỏi tiếp: khi em gửi tin nhắn thì có cấu trúc như sau:
                      Code:
                      AT+CMGF=1 1: Text Mode , 0 : PDU Mode (ringtone, logo,….)AT+CMGS=“+84905779933”
                      > (Gõ nội dung tin nhắn và kết thúc bằng Ctrl+Z)
                      vậy thì cái "ctrl+Z" m truyền cho module SIM như thế nào? cảm ơn a.hi
                      WS:
                      Blog:

                      Comment


                      • #26
                        Nguyên văn bởi quangtung112 Xem bài viết
                        em chào các anh, board SIM900 của em khi cắm máy tính thì chạy ok, nhưng khi e giao tiếp với VĐK thì lại không được. Mong các anh giúp đỡ. Em dùng ATmega16 gửi lệnh "printf("ATD0946830790;\n"); cho nó nhưng không thể gọi được. Các anh biết lỗi gì thì giúp e với. Em cảm ơn.
                        Bạn cho mình hỏi bạn mua board sim900 ở đâu vậy, mà giá cả bao nhiêu?

                        Comment


                        • #27
                          Nguyên văn bởi quangtung112 Xem bài viết
                          trời, a quả là cao thủ,thì ra là do e chưa set tốc độ cho module SIM.hihi. em làm được rồi. e cảm ơn anh. a cho e hỏi tiếp: khi em gửi tin nhắn thì có cấu trúc như sau:
                          Code:
                          AT+CMGF=1 1: Text Mode , 0 : PDU Mode (ringtone, logo,….)AT+CMGS=“+84905779933”
                          > (Gõ nội dung tin nhắn và kết thúc bằng Ctrl+Z)
                          vậy thì cái "ctrl+Z" m truyền cho module SIM như thế nào? cảm ơn a.hi
                          Bạn dùng timer để test giao tiếp với module SIM ah, bạn nên test trong hàm Main() để các công việc thực hiện lần lượt. Các dữ liệu trao đổi qua lại giữa VDK và module SIM. Bạn có hàm lưu cấu hình cài đăt cho module SIM chưa.
                          Ký tự "ctrl+Z" chính là ký tự 26 trong bảng ASCII. bạn chỉ cần putchar(26) là OK
                          Mình có hàm gửi tin nhắn bạn xem có dùng được không
                          int API_sendmsgtextff(flash unsigned char *msg,flash unsigned char *phonenum )
                          {

                          UART0_rx_reset( ); //Clear rx_buff
                          UART0_setSearchString(READY_); //Set "> " to be search string
                          UART0_putsf(AT_CMGS); //Send message
                          UART0_putsf(phonenum); //Send message
                          UART0_putsf(CR); //CR
                          UART0_rx_on(); //Receiver on
                          if( API_check_acknowledge()>0) //Wait for acknowledge = "> "
                          {
                          UART0_rx_reset(); //Clear rx_buff
                          UART0_setSearchString(OK_); //Set "OK" to be search string
                          UART0_putsf(msg);
                          UART0_putchar(26); // ki tu Ctrl+Z
                          UART0_rx_on(); //Receiver on
                          if( API_check_acknowledge()>0) //Acknowledge = OK
                          {
                          return 1;
                          }
                          if( API_check_acknowledge()>0) //Acknowledge = OK
                          {
                          return 1;
                          }
                          if( API_check_acknowledge() >0) //Acknowledge = OK
                          {
                          return 1;
                          }
                          else //Acknowledge != OK
                          {
                          return -2;
                          }
                          }
                          else //Acknowledge != "> "
                          {
                          return -1;
                          }
                          // }
                          }
                          Sống là để chiến đấu

                          Comment


                          • #28
                            Nguyên văn bởi quangtung112 Xem bài viết
                            e viết trong timer:
                            Code:
                            interrupt [TIM0_OVF] void timer0_ovf_isr(void){
                            // Place your code here
                            x++;
                            if(x==500)
                            {
                            putchar('A');
                            putchar('T');
                            putchar('D');
                            putchar('0');
                            putchar('9');
                            putchar('4');
                            putchar('6');
                            putchar('8');
                            putchar('3');
                            putchar('0');
                            putchar('7');
                            putchar('9');
                            putchar('0');
                            putchar(';');
                            putchar('\r');
                            putchar('\n');
                            //("ATD0946830790;\r\n");
                            x=0;PORTC=~PORTC;
                            }
                            
                            
                            }
                            mà vẫn thế, anh xem giúp e. e cảm ơn.

                            hic làm gì có kí tự này : putchar('\r');
                            putchar('\n');


                            chương trình dịch ko báo lỗi mới lạ
                            (^_^) hoangnv.3i@gmail.com

                            Comment


                            • #29
                              Tài liệu mà mình gửi các cậu đơn giản quá hay sao mà ko xem kỹ vậy.

                              1. CR = 0x0D , LF = 0x0A

                              2. thực hiện cuộc gọi : ATDxxxxxxxxxx;<CR>


                              3. chương trình cho VĐK:


                              putchar('A');
                              putchar('T');
                              putchar('D');
                              putchar('0');
                              putchar('9');
                              putchar('4');
                              putchar('6');
                              putchar('8');
                              putchar('3');
                              putchar('0');
                              putchar('7');
                              putchar('9');
                              putchar('0');
                              putchar(';');
                              putchar(0x0D);


                              đơn giản thế thôi:
                              Last edited by hoang_3i; 17-07-2012, 14:28.
                              (^_^) hoangnv.3i@gmail.com

                              Comment


                              • #30
                                Nguyên văn bởi ksclc07i Xem bài viết
                                Bạn cho mình hỏi bạn mua board sim900 ở đâu vậy, mà giá cả bao nhiêu?
                                mình biết chỗ này bán Hoàng Phát-Cửa hàng linh kiện điện tử
                                (^_^) hoangnv.3i@gmail.com

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X