اطلاعیه

Collapse
No announcement yet.

[آموزش]نحوه ارسال AT Command به Sim800 و استفاده از ماژول در پروژه های مبتنی بر میکروکنترلر

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #76
    پاسخ : [آموزش]نحوه ارسال AT Command به Sim800 و استفاده از ماژول در پروژه های مبتنی بر میکروکنترلر

    سلام و خسته نباشید به همه دوستان
    خواستم از زحماتتون تشکر کنم
    من دارم یک کتابخونه با استفاده از توابع شما برای SIM800C مینویسم. انشاالله تموم شد میگذارم انجمن

    دیدگاه


      #77
      پاسخ : [آموزش]نحوه ارسال AT Command به Sim800 و استفاده از ماژول در پروژه های مبتنی بر میکروکنترلر

      نوشته اصلی توسط سوران آراسته نمایش پست ها
      8- دستور AT+CMGDA
      از این دستور برای پاک کردن پیام ها استفاده می شود. در 6 حالت زیر دستور می تواند اجرا شود.
      "DEL READ" Delete all read messages
      "DEL UNREAD" Delete all unread messages
      "DEL SENT" Delete all sent SMS
      "DEL UNSENT" Delete all unsent SMS
      "DEL INBOX" Delete all received SMS
      "DEL ALL" Delete all SMS
      نحوه ارسال کد به ماژول:
      AT+CMGDA=<TYPE>\r
      که TYPE می تواند یکی از گزینه های بالا باشد.

      در این قسمت دستور حذف کلیه پیام ها جهت اشنایی کاربران به ماژول ارسال می شود.

      تصویر پاسخ ماژول به دستور:


      [ATTACH=CONFIG]9968[/ATTACH]

      کد مورد استفاده در میکروکنترلر:

      کد:
      [CPP]
      void ATCMGDA_send(void)
      {
      
          lcd_putsf("SEND DSMS");
          for(count=0;DEL_ALL[count]!='\0';count++) putchar(DEL_ALL[count]);
          putchar(ENT);
          for(count=0;buffer[count-2]!='O';count ++) buffer[count]=getchar(); 
          lcd_putsf("--> OK");
          delay_ms(1000);
          lcd_clear();
      }//ATCMGDA_send
      [/CPP]
      9- دستور AT+CMGR
      از این دستور برای خواندن پیام ها در ادرس مور نظر استفاده می شود.

      ادرس پیام کجاست و از کجا ان را پیدا کنیم؟
      وقتی ماژول پیامی رو دریافت کنه از طریق پورت سریال دستوری رو می فرسته که کاربر رو مطلع کنه از دریافت پیام جدید. این آدرس که از طریق اون می تونیم پیام جدید رو بخونیم در این متن قرار داره.


      [ATTACH=CONFIG]9972[/ATTACH]


      حال با استفاده از دستور زیر می توانیم پیامک موجود در خانه حافظه موردنظر را بخوانیم.
      AT+CMGR=X\r
      که در آن X ادرس خانه حافظه مورد نظر است.

      تابع مورد استفاده در میکروکنترلر:
      برای اینکه متن پیامک و کل دیتای دریافتی توسط این دستور را دریافت کنیم میتوانید از تابع زیر استفاده کنید.

      کد:
      [CPP]
      void ATCMGR_send(void)
      {
      int count2 = 0,count_s = 0; //count_s for count the "
         
      
          for(count = 0;buffer[count]!='\0';count ++)
          {
              buffer[count] ='\0';
          }
      
          lcd_putsf("CMGR ");
          printf("AT+CMGR=1%c",ENT);
          for(count=0;(buffer[count-2]!='O' && buffer[count]!=ENT);count ++) buffer[count]=getchar(); 
          lcd_putsf("--> OK");
          delay_ms(1000);
          lcd_clear();
          
          for(count=0,count2=0,count_s=0;buffer[count]!='\0';count ++)
          {
              if(buffer[count]==J_COT) count_s ++;
              if(count_s == 3)
              {
                  if(buffer[count]!= J_COT)
                  {
                      number_txt[count2]=buffer[count];
                      count2++;
                  }
              }
              if(count_s== 4) count2 = 0;
              if(count_s== 8)
              {
                  if(buffer[count]!= J_COT && buffer[count]!=ENT && buffer[count]!=LINE_FEED && buffer[count]!= 'O' && buffer[count]!='K')
                  {
                      sms_txt[count2]=buffer[count];
                      count2 ++;
                  }
              }
          }
          delay_ms(1000);
          lcd_clear();
          lcd_puts(number_txt);
          lcd_gotoxy(0,1);
          lcd_puts(sms_txt);
          delay_ms(1000);
          //lcd_clear();
      }//ATCMGR_send
      [/CPP]
      این تابع شماره تماس را در متغیر number_txt و متن دریافتی را در sms_txt ذخیره می کند.


      [ATTACH=CONFIG]9973[/ATTACH]

      این تنظیمات اولیشوبایدچکارکردمال
      من
      نمیشه
      تایپ
      کرد
      چرا؟؟؟؟

      دیدگاه


        #78
        پاسخ : [آموزش]نحوه ارسال AT Command به Sim800 و استفاده از ماژول در پروژه های مبتنی بر میکروکنترلر

        با سلام
        دوستان لطفا درمورد راه ندازی sim800l با میکروی atmeg64 , کد ویژن راهنمایی بفرمایید .چند روز وقت میزارم تنیجه نگرفتم.ممنونم

        دیدگاه


          #79
          پاسخ : [آموزش]نحوه ارسال AT Command به Sim800 و استفاده از ماژول در پروژه های مبتنی بر میکروکنترلر

          دیدگاه


            #80
            پاسخ : [آموزش]نحوه ارسال AT Command به Sim800 و استفاده از ماژول در پروژه های مبتنی بر میکروکنترلر

            با سلام
            دوستان چطور میتونم جواب های برگشتی از AT Command رو روی ال سی دی نمایش بدم؟
            مثلا وقتی ?AT+CSPN رو فرستادم جواب CSPN: "Irancell",0 + رو میگیرم الان کلمه Irancell رو میخوام به نمایش در بیارم
            لطفا یه نمونه کد به زبان بسکام بزارید تا بهتر متوجه بشم
            با تشکر از همه
            جدیدترین ویرایش توسط RahimEdison; ۰۳:۱۹ ۱۳۹۹/۰۶/۱۸.

            دیدگاه


              #81
              پاسخ : [آموزش]نحوه ارسال AT Command به Sim800 و استفاده از ماژول در پروژه های مبتنی بر میکروکنترلر

              نوشته اصلی توسط RahimEdison نمایش پست ها
              با سلام
              دوستان چطور میتونم جواب های برگشتی از AT Command رو روی ال سی دی نمایش بدم؟
              مثلا وقتی ?AT+CSPN رو فرستادم جواب CSPN: "Irancell",0 + رو میگیرم الان کلمه Irancell رو میخوام به نمایش در بیارم
              لطفا یه نمونه کد به زبان بسکام بزارید تا بهتر متوجه بشم
              با تشکر از همه
              FONT][/QUOTE]

              وقتی شما این مقدار CSPN: "Irancell",0 + رو گرفتیدودراقع یک رشته درداخله متغیر دارید.از ان به بعد کار با رشته است.به چندین روش میتونید این کار را انجام دهید.یه روشش اینه که شما بیاید از همون متغیری که رشته تون داخلشه به اندازه مورد نیاز از سمت چپ جدا کنید.با این کار مقادیر اضافی از سمت راست حذف میشه.در مرحله بعد بیاید از سمت چپ رشته باقی مونده از مرحله قبل،جدا کنید تا عبارت اضافی سمت راست حذف بشه .

              کد:
              $regfile = "m8def.dat"
              $crystal = 4000000
              
              dim s as string*50
              
              
              Config Lcdpin = Pin , rs = Portc.0 , e = Portc.1 , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
              
              
              [COLOR="#FF0000"]s="CSPN: "Irancell",0 +"
              s=left(s,16)    's is "CSPN: "Irancell"
              s=right(s,8)    'S is "Irancell"
              [/COLOR]
              do
              
              
              home
              lcd s
              home l
              lcd "   WWW.ECA.IR   "
              
              
               waitms 500
              loop





              اینم لینک برنامک میتونید دانلود کنید
              جدیدترین ویرایش توسط Namvar14; ۰۹:۰۹ ۱۳۹۹/۰۶/۱۸.
              eshop-hodhod.ir

              دیدگاه


                #82
                پاسخ : [آموزش]نحوه ارسال AT Command به Sim800 و استفاده از ماژول در پروژه های مبتنی بر میکروکنترلر

                نوشته اصلی توسط Namvar14 نمایش پست ها
                وقتی شما این مقدار CSPN: "Irancell",0 + رو گرفتیدودراقع یک رشته درداخله متغیر دارید.از ان به بعد کار با رشته است.به چندین روش میتونید این کار را انجام دهید.یه روشش اینه که شما بیاید از همون متغیری که رشته تون داخلشه به اندازه مورد نیاز از سمت چپ جدا کنید.با این کار مقادیر اضافی از سمت راست حذف میشه.در مرحله بعد بیاید از سمت چپ رشته باقی مونده از مرحله قبل،جدا کنید تا عبارت اضافی سمت راست حذف بشه .

                کد:
                $regfile = "m8def.dat"
                کد:
                [FONT=Yekan]$crystal = 4000000[/FONT]
                [FONT=Yekan]dim s as string*50[/FONT]
                
                [FONT=Yekan]Config Lcdpin = Pin , rs = Portc.0 , e = Portc.1 , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5[/FONT]
                
                [COLOR=#FF0000][FONT=Yekan]s="CSPN: "Irancell",0 +"
                s=left(s,16)    's is "CSPN: "Irancell"
                s=right(s,8)    'S is "Irancell"
                [/FONT][/COLOR]
                [FONT=Yekan]do[/FONT]
                
                [FONT=Yekan]home[/FONT]
                [FONT=Yekan]lcd s[/FONT]
                [FONT=Yekan]home l[/FONT]
                [FONT=Yekan]lcd "   WWW.ECA.IR   "[/FONT]
                
                [FONT=Yekan] waitms 500[/FONT]
                [FONT=Yekan]loop[/FONT]
                
                [FONT=Yekan][/FONT]


                اینم لینک برنامک میتونید دانلود کنید


                مهندس جان مشکل منم همینه که چطور جواب رو روی یک متغییر بریزم
                کد:
                [FONT=Yekan]$regfile = "M32DEF.DAT"[/FONT][FONT=Yekan]$crystal = 8000000[/FONT]
                [FONT=Yekan]$lib "glcdKS108.lib"[/FONT]
                [FONT=Yekan]$baud = 9600[/FONT]
                [FONT=Yekan]'----------------------------  LCD Graphic  ------------------------------------[/FONT]
                [FONT=Yekan]Config Graphlcd = 128 * 64sed , Dataport = Porta , Controlport = Portb _[/FONT]
                [FONT=Yekan] , Ce = 3 , Ce2 = 2 , Cd = 5 , Rd = 6 , Reset = 4 , Enable = 7[/FONT]
                [FONT=Yekan]'*******************************************************************************[/FONT]
                [FONT=Yekan]Dim Name_cspn As String * 50[/FONT]
                [FONT=Yekan]Config Portc.2 = Output[/FONT]
                [FONT=Yekan]Power_on_gsm Alias Portc.2[/FONT]
                [FONT=Yekan]Setfont Font8x8[/FONT]
                [FONT=Yekan]'*******************************************************************************[/FONT]
                [FONT=Yekan]Wait 2[/FONT]
                [FONT=Yekan]Power_on_gsm = 1[/FONT]
                [FONT=Yekan]Wait 1[/FONT]
                [FONT=Yekan]Power_on_gsm = 0[/FONT]
                [FONT=Yekan]Wait 16[/FONT]
                [FONT=Yekan]
                [/FONT]
                [FONT=Yekan]   Print "AT"[/FONT]
                [FONT=Yekan]   Lcdat 2 , 1 , "1) AT"[/FONT]
                [FONT=Yekan]   Wait 1[/FONT]
                [FONT=Yekan]   Print "AT+CSPN?"[/FONT]
                [FONT=Yekan]   Lcdat 2 , 1 , "2) AT+CSPN?"[/FONT]
                [FONT=Yekan]   Wait 1[/FONT]
                [FONT=Yekan]Do[/FONT]
                [FONT=Yekan]   ¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿[/FONT]
                [FONT=Yekan]   ¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿[/FONT]
                [FONT=Yekan]Loop[/FONT]
                
                [FONT=Yekan]$include "font8x8.font"[/FONT][FONT=Yekan][/FONT]


                جدیدترین ویرایش توسط RahimEdison; ۱۷:۳۷ ۱۳۹۹/۰۶/۱۸.

                دیدگاه


                  #83
                  پاسخ : [آموزش]نحوه ارسال AT Command به Sim800 و استفاده از ماژول در پروژه های مبتنی بر میکروکنترلر

                  این کد رو چطور قرار بدم؟
                  dim s as string*50
                  s="CSPN: "Irancell",0 +"
                  s=left(s,16) 's is "CSPN: "Irancell"
                  s=right(s,8) 'S is "Irancell"
                  نیازی به Var = Inkey() نداره؟

                  دیدگاه


                    #84
                    پاسخ : [آموزش]نحوه ارسال AT Command به Sim800 و استفاده از ماژول در پروژه های مبتنی بر میکروکنترلر

                    شما فرمودید که متغیر و دریافت کردید.
                    فرض و بر این میگیم که شما برنامه ای میخواهید که با اومدن اس ام اس برید و اس و دریافت کنید.
                    اول اینکه در بهترین حالت برای دریافت دیتا ی سریال از یک سیم کارت ،باید از روش وقفه اینتراپت استفاده کنیم.
                    در حالت اینتراپت اگه کسی به سیم کارتی که روی gsmنصب شده دیتا ارسال کرد(چه تماس ،چه زنگ بزنه.)در این حالت ماژول gsmدر بافرسریال اولین کارکترش میندازه.میکرو باید در وضعیت وقفه اینتراپتی() قرار بگیره.در این حالت دیگه نیاز به این نداریم که از پایه irماژول gsmبرای اینکه بفهمیم کسی تماس گرفته و یا ...استفاده کنیم.کافیه پیامک بیاد میکرو خودش میره و وقفه دریافت داده را اجرا میکنه.معمولا در این حالت احتمال خطا خیلی کم میشه.
                    و شما هر سری میری و داده رااز بافر دریافت میکنی.ودر متغیر دیگیر قرار میدهید.این شد کلیت کار.
                    در طرف دیگه شما باید ساختار اطلاعات دریافتی را بدانید یعنی بدونید که قالب داده های دریافتی از طرف ماژول به چه صورته.قالبش اینجوریه :"<CR><LF><response><CR><LF>"
                    این یعنی چی؟در هر پیامک یا تماسی که شما دریافت می کنید.ابتدا کارکترCRمیاد(کارکتر اینتر).بافراینو دریافت میکنه. بعد دومین کارکتر توسط بافر دیافت میشه که مقدارشLFهست.شما همینو هم دریافت میکنید.به محضی که دومینCRبیاد.درواقع به این معنیه که شما کل پیام و دریافت کردید.
                    حالا باید یه کاری بکنیم که کارکتر ها ی دریافتی بدون بدون در نظر گرفتن lfو crدر یک متغیر بریزیم.



                    کد:
                    $regfile = "m8def.dat"
                    $crystal =11059200
                    $baud = 9600
                    Enable interrupts
                    '-------------------------------
                    dim s as string*50
                    dim sms as string*150
                    dim b as byte
                    dim t as byte
                    dim count as byte:count=0
                    '-------------------------------
                    Config Lcdpin = Pin , rs = Portc.0 , e = Portc.1 , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
                    '-------------------------------
                    on urxc  RING
                    Enable urxc
                    print "AT+CMGF=1"         :waitms 500:reset watchdog
                    print  "ATE0"             :waitms 500
                    print "AT+IPR=9600"       :waitms 500
                    print "AT&W"              :waitms 500
                    print "AT+CMGDA=";chr(34);"DEL ALL";chr(34):waitms 500:reset watchdog
                    
                    '-------------------------------
                    do
                    
                    home
                    lcd s
                    home l
                    lcd "   www.ECA.IR   "
                     waitms 500
                    loop
                    
                    '------------------------------------------------
                    Ring:
                        b=udr
                        '-------
                        if b=13 then incr count  'tedad CR ha ro mishmarim
                        if count >1 then          'age CR haye daryaft shode  bishtar az 2ta shod yani payane daryaft
                        count=0
                        sms=s
                        s=""
                        end if
                        '--------
                        if b<>10 and b<>13 then s=s+chr(b)
                    return

                    در قطعه کد بالا هر وقت کارکتری میاد میکرو میره و زیر برنامه RINGو واجرا میکنه.دقت کنیدبرای هر کارکتر یک بار زیر برنامه اجرا میشه.بدین معنی نیست که مصلا بره زیر برنامه و تمام کارکتر هارو یک جا بگیره.
                    در داخل وقفه رینگ مقدار بافردر متغیرbریختیم.با شمارش تعدادCRهای دریافتی (if b=13 then incr count )تعین میکنیم که در چه مرحله ای از دریافت قرار داریم.
                    جدیدترین ویرایش توسط Namvar14; ۲۰:۴۴ ۱۳۹۹/۰۶/۱۸.
                    eshop-hodhod.ir

                    دیدگاه


                      #85
                      پاسخ : [آموزش]نحوه ارسال AT Command به Sim800 و استفاده از ماژول در پروژه های مبتنی بر میکروکنترلر

                      مشکل حل شد
                      جدیدترین ویرایش توسط RahimEdison; ۱۸:۰۱ ۱۳۹۹/۰۶/۱۹.

                      دیدگاه


                        #86
                        پاسخ : [آموزش]نحوه ارسال AT Command به Sim800 و استفاده از ماژول در پروژه های مبتنی بر میکروکنترلر

                        با سلام من ماژول سیم 800l رو با یک اداپتور 12 ولت 12 آمپر با استفاده از مازول کاهنده ولتاژ lm256 و آنتن خارجی وصل کردم و از طریق ارتباط سریال دستورات AT رو دریافت میکنم ولی اصلا ماژول به شبکه وصل نمیشه و هر یک ثانیه چراغ روشن و خاموش میشه از شما دوستان کسی راه حل رو می دونه ممنون

                        دیدگاه


                          #87
                          پاسخ : [آموزش]نحوه ارسال AT Command به Sim800 و استفاده از ماژول در پروژه های مبتنی بر میکروکنترلر

                          نوشته اصلی توسط reza_dabir نمایش پست ها
                          با سلام من ماژول سیم 800l رو با یک اداپتور 12 ولت 12 آمپر با استفاده از مازول کاهنده ولتاژ lm256 و آنتن خارجی وصل کردم و از طریق ارتباط سریال دستورات AT رو دریافت میکنم ولی اصلا ماژول به شبکه وصل نمیشه و هر یک ثانیه چراغ روشن و خاموش میشه از شما دوستان کسی راه حل رو می دونه ممنون
                          یه دونه خازن با ظرفیت 1500 میکروفاراد به بالا به خروجی رگولاتور اضافه کن درست میشه

                          دیدگاه


                            #88
                            پاسخ : [آموزش]نحوه ارسال AT Command به Sim800 و استفاده از ماژول در پروژه های مبتنی بر میکروکنترلر

                            نوشته اصلی توسط اشکان غفارزاده نمایش پست ها
                            یه دونه خازن با ظرفیت 1500 میکروفاراد به بالا به خروجی رگولاتور اضافه کن درست میشه
                            با سلام
                            مهندس جان بنده یک برنامه با آردوینو و سیم 800L و gps نوشتم و حالت دزدگیر خودرو هم کردمش . (64%) of dynamic memory و (68%) of program storage space پر شده وقتی راه اندازی میکنم یکی دو بار با تماس و اس ام اس کار میکنه ولی بعد از اون روی سریال مانیتور هیچ پیامی نمیاد یا مثلا تماس میگیرم شماره تماس رو میخونه و داخل مانیتور نشون میده و وقتی میخواد باقی عملیات رو انجام بده دیگه نه رو سریال مانیتور چیزی میاد و نه عملی انجام میشه بعد هم که تماس رو قطع میکنم و دوباره تماس میگیرم هیچ عکس العملی نشون نمیده ، لطفا میشه راهنمایی بفرمایید مشکل کجاست؟ ممنون

                            دلیل: ادغام دو پست برای جلوگیری از اسپم

                            نوشته اصلی توسط edris.noei نمایش پست ها
                            ویندوزم 7 هست. ولتاژ رو به 12 ولت تغییر دادم. برنامه هایی که شما معرفی کردید رو نصب کردم. ولی باز هم همونطور هست.


                            ------------------------------------------------------------------------------------------------------

                            الآن با یه مبدل 232 به USB امتحان کردم. مشکلی نبود. همه کدها درست دریافت میشد توی نرم افزار. ولی نمیدونم چرا با مبدل خودش اینطوری کار میکنه!
                            سلام دوست عزیز بنده همین مشکلات رو با سریال مانیتورو ماژول sim800l دارم . میخواستم بدونم شما مشکل رو پیدا و برطرف فرمودیید؟ لطفا راهنمایی کنید ممنون.

                            دلیل: ادغام دو پست برای جلوگیری از اسپم

                            نوشته اصلی توسط edris.noei نمایش پست ها
                            ویندوزم 7 هست. ولتاژ رو به 12 ولت تغییر دادم. برنامه هایی که شما معرفی کردید رو نصب کردم. ولی باز هم همونطور هست.


                            ------------------------------------------------------------------------------------------------------

                            الآن با یه مبدل 232 به USB امتحان کردم. مشکلی نبود. همه کدها درست دریافت میشد توی نرم افزار. ولی نمیدونم چرا با مبدل خودش اینطوری کار میکنه!
                            سلام دوست عزیز بنده همین مشکلات رو با سریال مانیتورو ماژول sim800l دارم . میخواستم بدونم شما مشکل رو پیدا و برطرف فرمودیید؟ لطفا راهنمایی کنید ممنون.

                            دلیل: ادغام دو پست برای جلوگیری از اسپم

                            نوشته اصلی توسط edris.noei نمایش پست ها
                            ویندوزم 7 هست. ولتاژ رو به 12 ولت تغییر دادم. برنامه هایی که شما معرفی کردید رو نصب کردم. ولی باز هم همونطور هست.


                            ------------------------------------------------------------------------------------------------------

                            الآن با یه مبدل 232 به USB امتحان کردم. مشکلی نبود. همه کدها درست دریافت میشد توی نرم افزار. ولی نمیدونم چرا با مبدل خودش اینطوری کار میکنه!
                            سلام دوست عزیز بنده همین مشکلات رو با سریال مانیتورو ماژول sim800l دارم . میخواستم بدونم شما مشکل رو پیدا و برطرف فرمودیید؟ لطفا راهنمایی کنید ممنون.

                            دلیل: ادغام دو پست برای جلوگیری از اسپم

                            نوشته اصلی توسط edris.noei نمایش پست ها
                            ویندوزم 7 هست. ولتاژ رو به 12 ولت تغییر دادم. برنامه هایی که شما معرفی کردید رو نصب کردم. ولی باز هم همونطور هست.

                            ------------------------------------------------------------------------------------------------------

                            الآن با یه مبدل 232 به USB امتحان کردم. مشکلی نبود. همه کدها درست دریافت میشد توی نرم افزار. ولی نمیدونم چرا با مبدل خودش اینطوری کار میکنه!
                            سلام دوست عزیز بنده همین مشکلات رو با سریال مانیتورو ماژول sim800l دارم . میخواستم بدونم شما مشکل رو پیدا و برطرف فرمودیید؟ لطفا راهنمایی کنید ممنون.

                            دلیل: ادغام دو پست برای جلوگیری از اسپم

                            سلامدوست عزیز بنده همین مشکلات رو با سریال مانیتورو ماژول sim800l دارم . میخواستمبدونم شما مشکل رو پیدا و برطرف فرمودیید؟ لطفا راهنمایی کنید ممنون.

                            دیدگاه

                            لطفا صبر کنید...
                            X