اطلاعیه

Collapse
No announcement yet.

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

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

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

    سلام
    با توجه به اینکه هر روز در سطح انجمن سوالات و تاپیک های زیادی در رابطه با نحوه برقراری ارتباط با ماژول های Simcom علل خصوص Sim900 و تولید جدید اون یعنی Sim800 را شاهد هستیم، برآن شدم تا در یک تاپیک جامع در مورد نکات لازم جهت راه اندازی و استفاده از ماژول Sim800 در یک مدار مبتنی بر میکروکنترلر توضیحاتی را در حد سواد خودم تشریح کنم.

    قبل از هر چیز باید بگم sim800 جایگزین Sim900 و Sim808 جایگزین Sim908 می باشد.

    در راستای این تاپیک من برد کاربردی Sim800 رو انتخاب کردم و آموزش رو بر مبنای اون پیش می برم.
    هدف از این کار این بود تا قبل یادگیری کامل اون وقتم رو با راه اندازی سخت افزار و PCB و مشکلات سخت افزاری موجود تلف نکنم. و در نهایت استفاده از این برد در مدارات بسیار راحت تر از خود ماژول است چون به راحتی تعویض میشه.

    تصویری از برد انتخاب شده برای شروع کار

    تشریح برخی مشخصات SIM800:
    ماژولSIM800C سری جدید ماژولهای شرکت Simcom می باشد که مناسب برای ارتباطات GSM بوده و دارایBluetooth نیز می باشد. بسته بندی این ماژول کاملا مشابه ماژول SIM900 بوده و از چهار باند فرکانسی 850/900/1800/1900MHZ پشتیبانی می کند.
    نام برند : SIMCOM
    مدل : SIM800C
    وزن : 2.47 گرم
    ابعاد : 17.6 - 15.7 - 2.3 میلی متر
    ولتاژ ورودی : 3.4 الی 4.4 ولت
    فرکانس : 1800MHz, 1900MHz, 850MHz, 900MHz
    نوع رابط : USB , Serial
    کد:
      [B]General features[/B]
    
    •Quad-band 850/900/1800/1900MHz
    •GPRS multi-slot class 12/10
    •GPRS mobile station class B
    •Compliant to GSM phase 2/2+
    –Class 4 (2 W @ 850/900MHz)
    –Class 1 (1 W @ 1800/1900MHz)
    •Dimensions: 17.6*15.7*2.3mm
    •Weight: 1.3g
    •Control via AT commands
    (3GPP TS 27.007, 27.005 and SIMCom enhanced AT Commands)
    •Supply voltage range 3.4 ~ 4.4V
    •Low power consumption
    •Operation temperature:-40℃~85℃
    
     
    [B]Specifications for GPRS Data[/B]
    •GPRS class 12: max. 85.6 kbps (downlink/uplink)
    •PBCCH support
    •Coding schemes CS 1, 2, 3, 4
    •PPP-stack
    •USSD
    
     
    [B]Specifications for SMS via GSM/GPRS[/B]
    •Point to point MO and MT
    •SMS cell broadcast
    •Text and PDU mode
     
    [B]Software features[/B]
    •0710 MUX protocol
    •Embedded TCP/UDP protocol
    •FTP/HTTP
    •MMS
    •POP3/SMTP
    •DTMF
    •Jamming Detection
    •Audio Record
    •SSL
    •TTS_CN (optional)
    
    [B]Specifications for voice[/B]
    •Tricodec
    –Half rate (HR)
    –Full rate (FR)
    –Enhanced Full rate (EFR)
    •AMR
    –Half rate (HR)
    –Full rate (FR)
    •Hands-free operation (Echo suppression)        
     
    [B]Interfaces[/B]
    77 SMT pins including
    •SIM Card Interfaces (Dual Standby)
    ---SIM card 1: 3V/ 1.8V
    ---SIM card 2: 3V/ 1.8V
    •Analog audio interface
    •RTC backup
    •I2C interface
    •USB interface
    •Serial interface
    •PCM
    •SD
    •GPIO
    •ADC
    •GSM Antenna pad
    آموزش ابتدا با ایجاد ارتباط مابین ماژول و PC شروع میشه و سپس با دستورات و جواب اون ها اشنا میشیم و در این راستا سعی می کنم نمونه کد و توابعی رو برای دریافت نتیجه دستورات قرار بدم تا بتونید با کمترین تغییرات در کامپایلرهای مختلف استفاده کنید.
    بیس برنامه ها و توابع به زبان C بوده و بر مبنای کامپایلر کدویژن می باشد.
    جدیدترین ویرایش توسط سوران آراسته; ۰۰:۱۲ ۱۳۹۵/۰۷/۱۱.
    چرا ناراحتی پاتریک!
    + امروز ی بچه دیدم سرچهارراه گل میفروخت
    - از دیدنش ناراحت شدی؟
    + نه
    پس چی ناراحتت کرده
    + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
    ------------------------------------------------------------------------------------------------------
    تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
    ------------------------------------------------------------------------------------------------------
    محصولات

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

    سعی کنید برای این اموزش بیسیک هم بذاید. یا اینکه نمونه کد بیسیک هم اگه باشه خیلی خوبه.دریک پیشنهاد اگه بتونید برای هرقسمت یه مثال از بیسیک و یه مثال از سی بیارید عالی میشه.
    eshop-hodhod.ir

    دیدگاه


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

      خب قبل از هر چیز برای شروع کار با ماژول به سه ابزار دیگه نیاز داریم.
      1. آداپتور 12 ولت 2 آمپر
      2. کابل USB
      3. سیم کارت

      در اولین قدم باید ارتباط مابین ماژول و PC رو برقرار کنیم تا از سالم بودن اون مطمئن بشیم.
      برای این کار آداپتور را به برق بزنید. در این حالت LED سبز رنگ روی برد باید روشن شود.


      در این حالت و بدون و جود سیم کارت اگر شستی PWR را فشار دهید و بعد از چند ثانیه رها کنید، LEDهای قرمز و زرد برای یک لحظه با هم روشن شده و سپس خاموش می شوند و تنها LED زرد رنگ شروع به چشمک زدن می کند که در این وضعیت در حال پیدا کردن شبکه می باشد و به دلیل عدم وجود سیم کارت قادر به پیدا کردن شبکه نمی باشد. در صورت وجود سیم کارت بعد از چند ثانیه ریتم چشمک زدن تغییر می کند و کند می شود. که به معنای پیدا کردن شبکه است.
      بعد از پیدا کردن شبکه توسط ماژول کابل USB مربوطه را وصل کنید. در این حالت یک پورت COM ایجاد می شود که از طریق آن می توان با نرم افزارهای مربوطه ارتباط برقرار کرد.
      نرم افزار مورد استفاده در این آموزش هایپرترمینال می باشد.
      ماژول های Simcom دارای قابلیت تشخیص باودریت به صورت اتوماتیک هستند و فقط کافیه برای شروع کار با ماژول یه "AT" رو برای ماژول بفرستید و Enter را بزنید.
      تا این قسمت با چگونگی ارتباط اشنا شدید. در قسمت بعد میریم سراغ دستورات مربوط به ماژول و ارسال و دریافت اطلاعات با آن ها.

      موفق باشید
      جدیدترین ویرایش توسط سوران آراسته; ۲۳:۴۳ ۱۳۹۵/۰۷/۱۲.
      چرا ناراحتی پاتریک!
      + امروز ی بچه دیدم سرچهارراه گل میفروخت
      - از دیدنش ناراحت شدی؟
      + نه
      پس چی ناراحتت کرده
      + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
      ------------------------------------------------------------------------------------------------------
      تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
      ------------------------------------------------------------------------------------------------------
      محصولات

      دیدگاه


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

        فرمت کلی پاسخ ماژول Sim800 به دستورات ارسالی به صورت زیر است:
        <CR><LF><response><CR><LF>
        که <CR> معادل Enter یا "\r" و <LF> معادل Line Feed یا "\n" می باشد.
        برای هر AT Command هم تصویری از ارسال و دریافت دیتا در هایپر ترمینال قرار داده می شود و هم نمونه کدی جهت دریافت دیتا با استفاده از میکروکنترلر ذکر می شود.
        نمونه کدها با استفاده از کامپایلر کدویژن و بر مبنای تراشه ATmega32 نوشته شده است.
        لینک دانلود نرم افزار هایپر ترمینال
        بخش های مشترک برنامه:
        کد:
        [C#]
        
        #include <mega32a.h>
        #include <delay.h>
        #include <alcd.h>
        #include <stdio.h>
        
        //******** Varisbles ********
        char sms_txt[10];
        char operator_name[10];
        char number_txt[14];
        char number[12]={"09387028108"};
        volatile char buffer[100];
        volatile int count = 0;
        //*****END Varisbles*********
        
        //******** Constants ********
        flash unsigned char DEL_ALL[19]={'A','T','+','C','M','G','D','A','=','"','D','E','L',' ','A','L','L','"'};
        #define   ENT        13
        #define   J_COT      34
        #define   LINE_FEED  10
        //*****END Constants*********
        
        //******** Functions ********
        void UsartConfig(void);
        //******END Functions********
        
        void main(void)
        {
        
        UsartConfig();
        
        lcd_init(16);
        
        lcd_putsf("sim800 test");
        delay_ms(1000);
        lcd_clear();
        
        while (1)
              {
              }
        }
        
        void UsartConfig(void)
        {
        // USART initialization
        // Communication Parameters: 8 Data, 1 Stop, No Parity
        // USART Receiver: On
        // USART Transmitter: On
        // USART Mode: Asynchronous
        // USART Baud Rate: 9600
        UCSRA=0x00;
        UCSRB=0x18;
        UCSRC=0x06;
        UBRRH=0x00;
        UBRRL=0x47;    
        }//UsartConfig[/C#]

        1. دستور AT

        این دستورات از دستورات پایه می باشد و صرفا جهت ارتباط اولیه و ست کردن باودریت کاربرد دارد. همچنین می توان جهت تشخیص خاموش و روشن بودن ماژول هم مورد استفاده قرار گیرد.
        نحوه ارسال کد به ماژول :
        AT\r

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

        Click image for larger version

Name:	SIM800_1.jpg
Views:	1
Size:	33.1 کیلو بایت
ID:	1124295



        کد مورد استفاده در میکروکنترلر:
        کد:
        [CPP]
        void AT_send(void)
        {
        
            lcd_putsf("SEND AT");
            printf("AT%c",ENT);
            for(count=0;buffer[count-2]!='O';count ++) buffer[count]=getchar(); 
            lcd_putsf("--> OK");
            delay_ms(1000);
            lcd_clear();
        }//AT_send
        [/CPP]
        2- دستور ATE
        وقتی کاراکتری رو در نرم افزار هایپر ترمینال برای ماژول می فرستید و همون رو مشاهده کنید این در اصل به دلیل روشن بودن حالت اکو ماژول است. حالت اکو یعنی اینکه به ازای ارسال هر کاراکتر ماژول عین اون رو به شما برمی گردونه.
        نحوه ارسال کد به ماژول:
        ATE0\r // Echo Off
        ATE1\r // Echo On

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

        Click image for larger version

Name:	SIM800_2.jpg
Views:	1
Size:	56.7 کیلو بایت
ID:	1124296
        کد مورد استفاده در میکروکنترلر:
        کد:
        [CPP]
        void ATE0_send(void)
        {
        
            lcd_putsf("SEND ATE0");
            printf("ATE0%c",ENT);
            for(count=0;buffer[count-2]!='O';count ++) buffer[count]=getchar(); 
            lcd_putsf("--> OK");
            delay_ms(1000);
            lcd_clear();
        }//ATE0_send
        [/CPP]
        3- دستور ATH
        از این دستور برای قطع تماس دریافتی استفاده می شود.

        نحوه ارسال کد به ماژول:

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

        Click image for larger version

Name:	SIM800_3.jpg
Views:	1
Size:	47.1 کیلو بایت
ID:	1124297
        کد مورد استفاده در میکروکنترلر:
        کد:
        [CPP]
        void ATH_send(void)
        {
        
            lcd_putsf("SEND ATH");
            printf("ATH%c",ENT);
            for(count=0;buffer[count-2]!='O';count ++) buffer[count]=getchar(); 
            lcd_putsf("--> OK");
            delay_ms(1000);
            lcd_clear();
        }//ATH_send
        [/CPP]
        چرا ناراحتی پاتریک!
        + امروز ی بچه دیدم سرچهارراه گل میفروخت
        - از دیدنش ناراحت شدی؟
        + نه
        پس چی ناراحتت کرده
        + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
        ------------------------------------------------------------------------------------------------------
        تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
        ------------------------------------------------------------------------------------------------------
        محصولات

        دیدگاه


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

          4- دستور ATD
          از این دستور برای برقراری تماس با شماره مورد نظر استفاده می شود.
          نحوه ارسال کد به ماژول:
          ATD<Number>;\r
          تصویر پاسخ ماژول به دستور:

          Click image for larger version

Name:	Sim800_4.jpg
Views:	1
Size:	38.0 کیلو بایت
ID:	1124302

          ماژول برای این دستور 5 پاسخ خواهد داشت که به صورت زیر هستند:
          1. NO DIALTONE: برای زمانی که امکان برقراری تماس میسر نیست.
          2. BUSY: شماره مورد نظر مشغول باشد.
          3. NO CARRIER: تماس گرفته می شود اما برای ایجاد برقراری ارتباط نمی تواند پایدار شود.
          4. NO ANSWER: شماره گرفته شده پاسخ نمی دهد.
          5. OK: که وقتی تماس به درستی برقرار شود برگشت داده می شود.

          کد مورد استفاده در میکروکنترلر:
          کد:
          [CPP]
          
          void ATATD_send(char *string)
          {
              lcd_putsf("CALL");
              printf("ATD%s;%c",string,ENT);
              for(count=0;buffer[count-2]!='O';count ++) buffer[count]=getchar(); 
              lcd_putsf("--> OK");
              delay_ms(1000);
              lcd_clear();
          }//ATATD_send
           [/CPP]

          1. دستور AT+CSPN

          با استفاده از این دستور می توانید نام اپراتور سیم کارت را دریافت کنید.
          نحوه ارسال کد به ماژول:
          AT+CSPN?\r
          تصویر پاسخ ماژول به دستور:

          Click image for larger version

Name:	Sim800_5.jpg
Views:	1
Size:	39.2 کیلو بایت
ID:	1124303

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

          کد:
          [CPP]
          
          void ATCSPN_send(void)
          {
          int count2 = 0,count_s = 0; //count_s for count the "
           
           
              lcd_putsf("Operator:");
              printf("AT+CSPN?%c",ENT);
              for(count=0;buffer[count-2]!='O';count ++) buffer[count]=getchar(); 
              lcd_putsf("--> OK");
              for(count=0,count2=0,count_s=0;buffer[count]!='\0';count ++)
              {
                  if(buffer[count]==J_COT) count_s ++;
                  if(count_s == 1)
                  {
                      if(buffer[count]!= J_COT)
                      {
                          operator_name[count2]=buffer[count];
                          count2 ++;
                      }
                  }
              }
              lcd_gotoxy(0,1);
              lcd_puts(operator_name);
              delay_ms(1000);
              lcd_clear();
          }//ATCSPN_send
          [/CPP]
          1. دستور AT+CMGF

          این دستور فرمت پیام کوتاه(SMS) را مشخص می کند که می تواند در 2 مد PDU یا TEXT باشد.
          نحوه ارسال کد به ماژول:
          AT+CMGF=0\r à PUD Mode
          AT+CMGF=1\r à TEXT Mode
          AT+CMGF=?\r
          تصویر پاسخ ماژول به دستور:

          Click image for larger version

Name:	Sim800_6.jpg
Views:	1
Size:	42.6 کیلو بایت
ID:	1124304

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

          کد:
          [CPP]
          void ATCMGF_send(void)
          {
           
              lcd_putsf("SEND CMGF");
              printf("AT+CMGF=1%c",ENT);
              for(count=0;buffer[count-2]!='O';count ++) buffer[count]=getchar(); 
              lcd_putsf("--> OK");
              delay_ms(1000);
              lcd_clear();
          }//ATCMGF_send
           
          [/CPP]
          چرا ناراحتی پاتریک!
          + امروز ی بچه دیدم سرچهارراه گل میفروخت
          - از دیدنش ناراحت شدی؟
          + نه
          پس چی ناراحتت کرده
          + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
          ------------------------------------------------------------------------------------------------------
          تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
          ------------------------------------------------------------------------------------------------------
          محصولات

          دیدگاه


            #6
            پاسخ : [آموزش]نحوه ارسال 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 می تواند یکی از گزینه های بالا باشد.

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

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


            Click image for larger version

Name:	DELALL.jpg
Views:	1
Size:	21.9 کیلو بایت
ID:	1124309

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

            کد:
            [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
            از این دستور برای خواندن پیام ها در ادرس مور نظر استفاده می شود.

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


            Click image for larger version

Name:	Untitled.jpg
Views:	1
Size:	23.7 کیلو بایت
ID:	1124312


            حال با استفاده از دستور زیر می توانیم پیامک موجود در خانه حافظه موردنظر را بخوانیم.
            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 ذخیره می کند.


            Click image for larger version

Name:	Untitled11.jpg
Views:	1
Size:	23.9 کیلو بایت
ID:	1124313

            جدیدترین ویرایش توسط سوران آراسته; ۱۷:۳۱ ۱۳۹۵/۰۹/۰۵.
            چرا ناراحتی پاتریک!
            + امروز ی بچه دیدم سرچهارراه گل میفروخت
            - از دیدنش ناراحت شدی؟
            + نه
            پس چی ناراحتت کرده
            + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
            ------------------------------------------------------------------------------------------------------
            تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
            ------------------------------------------------------------------------------------------------------
            محصولات

            دیدگاه


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

              باسلام..اگه میشه مطالب رو کامل کنید خیلی مفید بود.همچنین نحوه ارتباط ماژول با میکرو..خیلی ممنون

              دیدگاه


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

                خیلی سپاس از این پست لطفا بیشتر و کاملترش کنید .
                مولا علی (ع) میفرمایند : آسوده باش , آستین هارا بالا بزن , بر خدا توکل کن , آنگاه خدا را خواهی دید که زودتر از تو دست به کار شده است .

                دیدگاه


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

                  ممنون از پستتون
                  من میخوام بردش رو طراحی کنم ، درمورد اونم توضیح بدید

                  دیدگاه


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

                    سلام من برای تشخیص پیام جدید از دستور زیر استفاده کردم
                    کد:
                    //waiting for +CMTI: from sim900
                    char *pch;
                          while(pch==0) {
                          pch=strstr(rx_buffer,"+CMTI:");   
                          }
                    حالا چطور میتونم شماره پیام رو استخراج کنم؟ میدونم فرمتش به صورت زیر هستش
                    کد:
                    +CMTI: "SM",2
                    از دستور زیر میخوام استفاده کنم ارور میده
                    a=rx_buffer[pch+12]
                    اگر به جای pch از pch* استفاده کنم ارور نمیده اما null برمیگردونه.انواع حالت ها و حتی بدون 12 امتحان کردم اما باز هم null بر میگردونه ،در صورتی که وقتی از while بیرون میاد نباید null برگردونه
                    [آموزشی] کنترل رله با پیامک توسط sim800l
                    [آموزشی] راه اندازی سنسورهای DHT11 و DHT22 با کدویژن
                    [آموزشی] مدار عملی اتصال میکروفن خازنی به میکروکنترلر
                    [آموزشی] آموزش نحوه راه اندازی میکروهای fmd
                    صفحه اینستاگرام : ecdco_ir

                    دیدگاه


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

                      http://server4.eca.ir/eshop/000/sim800/Documents/ECA_SIM800C_Schematic.pdf
                      از این pdfاستفاده کن


                      دلیل: ادغام دو پست برای جلوگیری از اسپم
                      while (1)
                      {
                      buffer=getchar();
                      if(buffer=='+')
                      {
                      buffer=getchar();
                      if(buffer=='C')
                      {
                      buffer=getchar();
                      if(buffer=='M')
                      {
                      buffer=getchar();
                      if(buffer=='T')
                      {
                      buffer=getchar();
                      if(buffer=='I')
                      {
                      buffer=getchar();
                      if(buffer==':') cmti();
                      }
                      }
                      else if(buffer=='G')
                      {
                      buffer=getchar();
                      if(buffer=='R')
                      {
                      buffer=getchar();
                      if(buffer==':') cmgr();
                      }
                      }
                      }
                      }
                      }
                      }
                      }






                      جدیدترین ویرایش توسط pardazgam; ۱۳:۳۰ ۱۳۹۵/۰۹/۲۸.
                      صلوات برای سلامتی امام زمان(عج)

                      دیدگاه


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

                        ممنون اما تا حد امکان میخوام از تابع خودم استفاده کنم،اگر کسی میتونه راهنمایی کنه.
                        خیلی ممنون
                        [آموزشی] کنترل رله با پیامک توسط sim800l
                        [آموزشی] راه اندازی سنسورهای DHT11 و DHT22 با کدویژن
                        [آموزشی] مدار عملی اتصال میکروفن خازنی به میکروکنترلر
                        [آموزشی] آموزش نحوه راه اندازی میکروهای fmd
                        صفحه اینستاگرام : ecdco_ir

                        دیدگاه


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

                          سلام دوستان
                          متاسفانه درگیری کاری به سختی فرصت نوشتن پست جدیدرو میده. به زودی یه شماتیک برای استفاده عموم قرار میدم و همچنین سعی می کنم هر 3 روز یک پست جدید به این قسمت اضافه کنم.
                          از تاخیرهای پیش آمده عذر می خوام ...
                          چرا ناراحتی پاتریک!
                          + امروز ی بچه دیدم سرچهارراه گل میفروخت
                          - از دیدنش ناراحت شدی؟
                          + نه
                          پس چی ناراحتت کرده
                          + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
                          ------------------------------------------------------------------------------------------------------
                          تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
                          ------------------------------------------------------------------------------------------------------
                          محصولات

                          دیدگاه


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

                            سلام
                            من ماژول sim800به مگا 16 میبندم
                            وقتی می خوام به میکرو تغذیه بدم
                            باید از vbatو gndماژول استفاده کنم
                            که در این صورت ال سیدی 2*16کم رنک نشان میده کاراکتر هارا
                            از رگولاتور 5ولت هم استفاده کردم جواب نداد (یعنی میکرو دستوری به ماژول نمی فرسته )
                            زمین ها را هم برابر کردم هم نشد
                            لطفا اقای اراسته راهنمایی کنید.
                            صلوات برای سلامتی امام زمان(عج)

                            دیدگاه


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

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



                              12345678910111213141516171819202122232425262728293 031323334353637383940414243444546void 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
                              function path()
                              {
                              var args = arguments,
                              result = []
                              ;

                              for(var i = 0; i < args.length; i++)
                              result.push(args[i].replace('@', '/scripts/'));

                              return result
                              };

                              SyntaxHighlighter.autoloader.apply(null, path('cpp c @shBrushCpp.js'));
                              SyntaxHighlighter.config.stripBrs = true;
                              SyntaxHighlighter.all();
                              این تابع شماره تماس را در متغیر number_txt و متن دریافتی را در sms_txt ذخیره می کند.
                              سلام، اقا سوران اگه امکان داره در مورد این تابع و عملکردش بیشتر توضیح بدید، ممنون

                              دیدگاه

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