اطلاعیه

Collapse
No announcement yet.

مشکل در ارسال SMS با SIM900

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

    مشکل در ارسال SMS با SIM900

    باسلام خدمت دوستان محترم.

    من دیتاشیت ماژول رو مطالعه کردم و اون رو با پورت سریال PC راه انداختم و مشکلی نداشت، اما زمانی که میخام اون رو با میکرو راه بندازم یعنی قصد ارسال SMS رو دارم،
    همه ی مراحل درست اجرا میشه فقط زمانی که ماژول باید تائید نهایی (OK) رو بده ERROR میده، برنامم میذارم لطفا راهنمایی کنید مشکلش کجاست.
    اگر برنامه ای در این زمینه دارید ممنون میشم روی سایت قرار بدید.
    تشکر
    printf("AT+CMGS="
    putchar('"' printf("09353518205" putchar('"' putchar('\r'

    c = getchar();
    while(c != '>&#039 {c = getchar();} delay_ms(500);

    printf("Hello\r" delay_ms(500); putchar(0x1A);
    تقدیر تقویم انسانهای عادی ، تغییر تدبیر انسانهای عالیست.

    #2
    پاسخ : مشکل در ارسال SMS با SIM900

    نوشته اصلی توسط mohammad_6910
    باسلام خدمت دوستان محترم.

    من دیتاشیت ماژول رو مطالعه کردم و اون رو با پورت سریال PC راه انداختم و مشکلی نداشت، اما زمانی که میخام اون رو با میکرو راه بندازم یعنی قصد ارسال SMS رو دارم،
    همه ی مراحل درست اجرا میشه فقط زمانی که ماژول باید تائید نهایی (OK) رو بده ERROR میده، برنامم میذارم لطفا راهنمایی کنید مشکلش کجاست.
    اگر برنامه ای در این زمینه دارید ممنون میشم روی سایت قرار بدید.
    تشکر
    printf("AT+CMGS="
    putchar('"' printf("09353518205" putchar('"' putchar('\r'

    c = getchar();
    while(c != '>&#039 {c = getchar();} delay_ms(500);

    printf("Hello\r" delay_ms(500); putchar(0x1A);
    سلام
    در تاپیک http://www.eca.ir/forum2/index.php?topic=12353.960 ص 65
    پست های بنده (سورس و شرح اتصالات برای برد کاربردی صنعتی است)
    این سورس برای همه نوع کار میده

    دیدگاه


      #3
      پاسخ : مشکل در ارسال SMS با SIM900

      فقط حواستون باشه اون اتصالات واسه بردکاربردی صنعتی هست و اگه برد راه انداز ویا چیز دیگه ای باشه مقاومت و رگولاتور و خازن و... میخواد.. مواظب باشید نسوزه

      دیدگاه


        #4
        پاسخ : مشکل در ارسال SMS با SIM900

        نوشته اصلی توسط electronic_2222
        فقط حواستون باشه اون اتصالات واسه بردکاربردی صنعتی هست و اگه برد راه انداز ویا چیز دیگه ای باشه مقاومت و رگولاتور و خازن و... میخواد.. مواظب باشید نسوزه
        آقا ممنون از توجهتون، من تاپیک هارو خوندم اما متاسفانه مشکلم حل نشد، بردم راه اندازه، مشکل باودریت و تغذیه ندارم ، اما منظورتون رو از رگولاتور وخازن متوجه نشدم.
        باودریتم 9600، کریستالم 11.0592 وفیوزبیت هام رو خارجی تنظیم شده، راستی با نرم افزارا هم تست کردم اس ام اس رو میفرسته، این دیتاهارو از ماژول میگیرم:
        AT+CMGF=1

        OK
        AT+CSCS="GSM"

        OK
        AT+IPR=9600

        OK
        AT+CMGS="+989351051246"

        > Hello World
        ERROR>
        ERROR
        تقدیر تقویم انسانهای عادی ، تغییر تدبیر انسانهای عالیست.

        دیدگاه


          #5
          پاسخ : مشکل در ارسال SMS با SIM900

          نوشته اصلی توسط mohammad_6910
          آقا ممنون از توجهتون، من تاپیک هارو خوندم اما متاسفانه مشکلم حل نشد، بردم راه اندازه، مشکل باودریت و تغذیه ندارم ، اما منظورتون رو از رگولاتور وخازن متوجه نشدم.
          باودریتم 9600، کریستالم 11.0592 وفیوزبیت هام رو خارجی تنظیم شده، راستی با نرم افزارا هم تست کردم اس ام اس رو میفرسته، این دیتاهارو از ماژول میگیرم:
          AT+CMGF=1

          OK
          AT+CSCS="GSM"

          OK
          AT+IPR=9600

          OK
          AT+CMGS="+989351051246"

          > Hello World
          ERROR>
          ERROR
          داداش مشکلت برنامه است یا مدار؟

          برنامه این کار میده خودم تست کردم:
          کد:
          /*****************************************************
          This program was produced by the
          CodeWizardAVR V2.04.4a Advanced
          Automatic Program Generator
          © Copyright 1998-2009 Pavel Haiduc, HP InfoTech s.r.l.
          http://www.hpinfotech.com
          
          Project : 
          Version : 
          Date  : 2013/07/30
          Author : NeVaDa
          Company : 
          Comments: 
          
          
          Chip type        : ATmega32
          Program type      : Application
          AVR Core Clock frequency: 11.059200 MHz
          Memory model      : Small
          External RAM size    : 0
          Data Stack size     : 512
          *****************************************************/
          
          #include <mega32.h>
          
          // Alphanumeric LCD Module functions
          #asm
            .equ __lcd_port=0x1B ;PORTA
          #endasm
          #include <lcd.h>
          #include <delay.h>
          
          // Standard Input/Output functions
          
          #include <stdio.h>
          
          
          #define enter 0x0d
          #define ctrl_z 0x1a 
            
          char sms_text[100]="hello";
          
          
          // Declare your global variables here
          flash char at_cmgs[]= {'A','T','+','C','M','G','S','=','"','+','9','8','9','1','*','*','*','*','*','*','*','*','"','\r'};
           void wait_to_get(char ch)
            {
            while(ch != getchar()); 
            }
          void main(void)
          {
          // Declare your local variables here
          
          // Input/Output Ports initialization
          // Port A initialization
          // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
          // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 
          PORTA=0x00;
          DDRA=0xFF;
          
          // Port B initialization
          // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
          // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
          PORTB=0x00;
          DDRB=0x00;
          
          // Port C initialization
          // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
          // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
          PORTC=0x00;
          DDRC=0x00;
          
          // Port D initialization
          // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
          // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
          PORTD=0x00;
          DDRD=0x00;
          
          // Timer/Counter 0 initialization
          // Clock source: System Clock
          // Clock value: Timer 0 Stopped
          // Mode: Normal top=FFh
          // OC0 output: Disconnected
          TCCR0=0x00;
          TCNT0=0x00;
          OCR0=0x00;
          
          // Timer/Counter 1 initialization
          // Clock source: System Clock
          // Clock value: Timer1 Stopped
          // Mode: Normal top=FFFFh
          // OC1A output: Discon.
          // OC1B output: Discon.
          // Noise Canceler: Off
          // Input Capture on Falling Edge
          // Timer1 Overflow Interrupt: Off
          // Input Capture Interrupt: Off
          // Compare A Match Interrupt: Off
          // Compare B Match Interrupt: Off
          TCCR1A=0x00;
          TCCR1B=0x00;
          TCNT1H=0x00;
          TCNT1L=0x00;
          ICR1H=0x00;
          ICR1L=0x00;
          OCR1AH=0x00;
          OCR1AL=0x00;
          OCR1BH=0x00;
          OCR1BL=0x00;
          
          // Timer/Counter 2 initialization
          // Clock source: System Clock
          // Clock value: Timer2 Stopped
          // Mode: Normal top=FFh
          // OC2 output: Disconnected
          ASSR=0x00;
          TCCR2=0x00;
          TCNT2=0x00;
          OCR2=0x00;
          
          // External Interrupt(s) initialization
          // INT0: Off
          // INT1: Off
          // INT2: Off
          MCUCR=0x00;
          MCUCSR=0x00;
          
          // Timer(s)/Counter(s) Interrupt(s) initialization
          TIMSK=0x00;
          
          // 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=0x86;
          UBRRH=0x00;
          UBRRL=0x47;
          
          // Analog Comparator initialization
          // Analog Comparator: Off
          // Analog Comparator Input Capture by Timer/Counter 1: Off
          ACSR=0x80;
          SFIOR=0x00;
          
          // LCD module initialization
          lcd_init(16);
            // printf("%s%c",sms_text,Ctrlz); 
            lcd_putsf("Start");
            delay_ms(1000);
            lcd_clear();
          while (1)
             {
             // Place your code here
              putsf(at_cmgs);
               wait_to_get('>');
              printf("%s%c",sms_text);
              putchar(ctrl_z); 
              lcd_putsf("Massage Sent");
              delay_ms(1000);
              lcd_clear();
             };//EXT.CRYSTAL=11.0592
          }
          با میکرو

          دیدگاه


            #6
            پاسخ : مشکل در ارسال SMS با SIM900

            نوشته اصلی توسط electronic_2222
            داداش مشکلت برنامه است یا مدار؟

            برنامه این کار میده خودم تست کردم:
            کد:
            /*****************************************************
            This program was produced by the
            CodeWizardAVR V2.04.4a Advanced
            Automatic Program Generator
            © Copyright 1998-2009 Pavel Haiduc, HP InfoTech s.r.l.
            http://www.hpinfotech.com
            
            Project : 
            Version : 
            Date  : 2013/07/30
            Author : NeVaDa
            Company : 
            Comments: 
            
            
            Chip type        : ATmega32
            Program type      : Application
            AVR Core Clock frequency: 11.059200 MHz
            Memory model      : Small
            External RAM size    : 0
            Data Stack size     : 512
            *****************************************************/
            
            #include <mega32.h>
            
            // Alphanumeric LCD Module functions
            #asm
              .equ __lcd_port=0x1B ;PORTA
            #endasm
            #include <lcd.h>
            #include <delay.h>
            
            // Standard Input/Output functions
            
            #include <stdio.h>
            
            
            #define enter 0x0d
            #define ctrl_z 0x1a 
              
            char sms_text[100]="hello";
            
            
            // Declare your global variables here
            flash char at_cmgs[]= {'A','T','+','C','M','G','S','=','"','+','9','8','9','1','*','*','*','*','*','*','*','*','"','\r'};
             void wait_to_get(char ch)
              {
              while(ch != getchar()); 
              }
            void main(void)
            {
            // Declare your local variables here
            
            // Input/Output Ports initialization
            // Port A initialization
            // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
            // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 
            PORTA=0x00;
            DDRA=0xFF;
            
            // Port B initialization
            // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
            // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
            PORTB=0x00;
            DDRB=0x00;
            
            // Port C initialization
            // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
            // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
            PORTC=0x00;
            DDRC=0x00;
            
            // Port D initialization
            // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
            // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
            PORTD=0x00;
            DDRD=0x00;
            
            // Timer/Counter 0 initialization
            // Clock source: System Clock
            // Clock value: Timer 0 Stopped
            // Mode: Normal top=FFh
            // OC0 output: Disconnected
            TCCR0=0x00;
            TCNT0=0x00;
            OCR0=0x00;
            
            // Timer/Counter 1 initialization
            // Clock source: System Clock
            // Clock value: Timer1 Stopped
            // Mode: Normal top=FFFFh
            // OC1A output: Discon.
            // OC1B output: Discon.
            // Noise Canceler: Off
            // Input Capture on Falling Edge
            // Timer1 Overflow Interrupt: Off
            // Input Capture Interrupt: Off
            // Compare A Match Interrupt: Off
            // Compare B Match Interrupt: Off
            TCCR1A=0x00;
            TCCR1B=0x00;
            TCNT1H=0x00;
            TCNT1L=0x00;
            ICR1H=0x00;
            ICR1L=0x00;
            OCR1AH=0x00;
            OCR1AL=0x00;
            OCR1BH=0x00;
            OCR1BL=0x00;
            
            // Timer/Counter 2 initialization
            // Clock source: System Clock
            // Clock value: Timer2 Stopped
            // Mode: Normal top=FFh
            // OC2 output: Disconnected
            ASSR=0x00;
            TCCR2=0x00;
            TCNT2=0x00;
            OCR2=0x00;
            
            // External Interrupt(s) initialization
            // INT0: Off
            // INT1: Off
            // INT2: Off
            MCUCR=0x00;
            MCUCSR=0x00;
            
            // Timer(s)/Counter(s) Interrupt(s) initialization
            TIMSK=0x00;
            
            // 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=0x86;
            UBRRH=0x00;
            UBRRL=0x47;
            
            // Analog Comparator initialization
            // Analog Comparator: Off
            // Analog Comparator Input Capture by Timer/Counter 1: Off
            ACSR=0x80;
            SFIOR=0x00;
            
            // LCD module initialization
            lcd_init(16);
              // printf("%s%c",sms_text,Ctrlz); 
              lcd_putsf("Start");
              delay_ms(1000);
              lcd_clear();
            while (1)
               {
               // Place your code here
                putsf(at_cmgs);
                 wait_to_get('>');
                printf("%s%c",sms_text);
                putchar(ctrl_z); 
                lcd_putsf("Massage Sent");
                delay_ms(1000);
                lcd_clear();
               };//EXT.CRYSTAL=11.0592
            }
            با میکرو
            مهندس برنامه ی شمارم تست کردم همون جوابیو میده که برنامه ی خودم میده، یعنی همه ی مراحل خوب پیش میره فقط وقتی که میکرو ctrl+z رو میده اررور میده، برای Ctrl+z از putchar(13) استفاده کردم، مدارمم یکبار باز کردم ودوباره بستم، تغذیمم عوض کردم، اما باز همونه، لطفا اگر راهی به ذهنتون میرسه راهنمایی کنید.
            تقدیر تقویم انسانهای عادی ، تغییر تدبیر انسانهای عالیست.

            دیدگاه


              #7
              پاسخ : مشکل در ارسال SMS با SIM900

              مشکلم خداراشکر با عوض کردن سیم کارت حل شد، از همگی سپاسگزارم.
              اینم برنامه ای که ازش جواب گرفتم.
              /************************************************** ***
              This program was produced by the
              CodeWizardAVR V2.05.0 Professional
              Automatic Program Generator
              © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
              http://www.hpinfotech.com

              Project :
              Version :
              Date : 08/23/2013
              Author :
              Company :
              Comments:


              Chip type : ATmega32
              Program type : Application
              AVR Core Clock frequency: 8.000000 MHz
              Memory model : Small
              External RAM size : 0
              Data Stack size : 512
              ************************************************** ***/

              #include <mega32.h>
              #include <delay.h>
              #include <alcd.h>
              #include <stdio.h>
              #include <stdlib.h>
              #include <string.h>

              #define ctrl_z 0x1a
              #define enter 0x0d

              #define ADC_VREF_TYPE 0x00

              // Read the AD conversion result
              unsigned int read_adc(unsigned char adc_input)
              {
              ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
              // Delay needed for the stabilization of the ADC input voltage
              delay_us(10);
              // Start the AD conversion
              ADCSRA|=0x40;
              // Wait for the AD conversion to complete
              while ((ADCSRA & 0x10)==0);
              ADCSRA|=0x10;
              return ADCW;
              }

              void send_sms(void);

              char c;
              char s[20] ;
              bit m=0 , n=0;

              void main(void)
              {
              // Declare your local variables here

              // Input/Output Ports initialization
              // Port A initialization
              // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
              // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
              PORTA=0x00;
              DDRA=0x00;

              // Port B initialization
              // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
              // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
              PORTB=0x00;
              DDRB=0x00;

              // Port C initialization
              // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
              // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
              PORTC=0x00;
              DDRC=0x00;

              // Port D initialization
              // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
              // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
              PORTD=0x00;
              DDRD=0x00;

              // Timer/Counter 0 initialization
              // Clock source: System Clock
              // Clock value: Timer 0 Stopped
              // Mode: Normal top=0xFF
              // OC0 output: Disconnected
              TCCR0=0x00;
              TCNT0=0x00;
              OCR0=0x00;

              // Timer/Counter 1 initialization
              // Clock source: System Clock
              // Clock value: Timer1 Stopped
              // Mode: Normal top=0xFFFF
              // OC1A output: Discon.
              // OC1B output: Discon.
              // Noise Canceler: Off
              // Input Capture on Falling Edge
              // Timer1 Overflow Interrupt: Off
              // Input Capture Interrupt: Off
              // Compare A Match Interrupt: Off
              // Compare B Match Interrupt: Off
              TCCR1A=0x00;
              TCCR1B=0x00;
              TCNT1H=0x00;
              TCNT1L=0x00;
              ICR1H=0x00;
              ICR1L=0x00;
              OCR1AH=0x00;
              OCR1AL=0x00;
              OCR1BH=0x00;
              OCR1BL=0x00;

              // Timer/Counter 2 initialization
              // Clock source: System Clock
              // Clock value: Timer2 Stopped
              // Mode: Normal top=0xFF
              // OC2 output: Disconnected
              ASSR=0x00;
              TCCR2=0x00;
              TCNT2=0x00;
              OCR2=0x00;

              // External Interrupt(s) initialization
              // INT0: Off
              // INT1: Off
              // INT2: Off
              MCUCR=0x00;
              MCUCSR=0x00;

              // Timer(s)/Counter(s) Interrupt(s) initialization
              TIMSK=0x00;

              // 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=0x86;
              UBRRH=0x00;
              UBRRL=0x33;

              // Analog Comparator initialization
              // Analog Comparator: Off
              // Analog Comparator Input Capture by Timer/Counter 1: Off
              ACSR=0x80;
              SFIOR=0x00;

              // ADC initialization
              // ADC Clock frequency: 125.000 kHz
              // ADC Voltage Reference: AREF pin
              ADMUX=ADC_VREF_TYPE & 0xff;
              ADCSRA=0x86;

              // SPI initialization
              // SPI disabled
              SPCR=0x00;

              // TWI initialization
              // TWI disabled
              TWCR=0x00;

              // Alphanumeric LCD initialization
              // Connections specified in the
              // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
              // RS - PORTB Bit 0
              // RD - PORTB Bit 1
              // EN - PORTB Bit 2
              // D4 - PORTB Bit 4
              // D5 - PORTB Bit 5
              // D6 - PORTB Bit 6
              // D7 - PORTB Bit 7
              // Characters/line: 16
              lcd_init(16);
              m=0;
              while (1)
              {
              if(PIND.7==0 && m==0)
              { //n=0;
              printf("AT\r" delay_ms(1000);
              // printf("AT+IPR=9600\r" delay_ms(1000);
              // printf("AT+CSCS=\"GSM\"" putchar(13); delay_ms(1000);
              printf("AT+CMGF=1\r" delay_ms(1000);

              // while(n == 0)
              send_sms();

              }
              if(PIND.7==1) m=0;

              }
              }

              void send_sms(void)
              {
              m=1; n=1;

              printf("AT+CMGS=\"0912*******\"&quo t; putchar(13);

              c = getchar();
              while(c != '>&#039 {c = getchar();} delay_ms(1000);

              printf("GSM Modem Is Valid" putchar(ctrl_z); delay_ms(1000);
              // scanf("%s",s);

              // n = strcmp(s,"ERROR" delay_ms(1000);

              }
              تقدیر تقویم انسانهای عادی ، تغییر تدبیر انسانهای عالیست.

              دیدگاه


                #8
                پاسخ : مشکل در ارسال SMS با SIM900

                دوستانی که تجربه ای در زمینه ی sim900 دارن،خواهش میکنم به این تاپیک هم سری بزنن و مارو راهنمایی کنن.

                http://www.eca.ir/forum2/index.php?topic=82279.0

                دیدگاه


                  #9
                  پاسخ : مشکل در ارسال SMS با SIM900

                  خواهش می کنم یکی کمکم کنه! خیلی فوریه!
                  برنامه من از این قراره که وقتی minute یکی می شود پیامک ارسال کنه! از RTC هم استفاده کردم!
                  مشکل من اینه که تاخیر های زیاد توی تابع sms انقدر زیاده که برنامه ام رو برای حدود 15 ثانیه متوقف می کنه! راهی هست که اصلا این delay ها رو بردارم؟!!!
                  خواهش می کنم کمکم کنید!
                  کد:
                  while (1)
                     {
                     RTC(); 
                     if(minute!=1*count)
                      flag1=0;
                     if(minute==1*count && flag1!=1)
                      {
                      flag1=1;
                      count++;
                      sms();
                      }
                     }
                  }
                  void sms()
                    {
                    char enter=13;
                    char q=34;
                    char del[8]="DEl ALL";
                    char tel[12]="09120000000";
                    char cz=26;
                    printf("at+cmgf=1%1c",enter);
                    delay_ms(2000);
                    printf("at+cmgda=%1c%s%1c%1c",q,del,q,enter);
                    delay_ms(2000);
                    printf("at+cmgs=%1c%s%1c%1c",q,tel,q,enter);
                    delay_ms(4000);
                    printf("Ba salam\rTemperature=%d\rHumidity=%d\rWind Direction=%s\rWind Speed=%d%1c%1c",temperature(),humidity(),direct1,anemometer(),cz,enter);
                    delay_ms(8000);
                    }

                  دیدگاه


                    #10
                    پاسخ : مشکل در ارسال SMS با SIM900

                    خواهش می کنم یکی کمک کنه! :cry:

                    دیدگاه


                      #11
                      پاسخ : مشکل در ارسال SMS با SIM900

                      با سلام
                      کد:
                       printf("at+cmgf=1%1c",enter);
                      نیازی نیست هربار که می خواهی پیامکو ارسال کنی این دستور ارسال کنی شما ابتدای برنامه این کارو انجام بده وتازمانی که تغییر ندید تغییر پیدا نمی کنه

                      کد:
                      printf("at+cmgda=%1c%s%1c%1c",q,del,q,enter);
                      این دستور زمانی استفاده کن که پیامکو اومده باشد و برای اینکه حافضه پر نشه ازاین دستور استفاده برای پاک کردن و یا زمانی که ارسال می کنی وبعد از ارسال این کارو بکن
                      کد:
                      printf("at+cmgs=%1c%s%1c%1c",q,tel,q,enter);
                      بهتره از وقفه سریال استفاده کنی و زمانی این دستور فرستادی وقفه <اینو دریافت می کنه و دراین زمان متن پیامکو ارسال کن این حالتو اگه استفاده کنی دیگه نیازی به delayنیست

                      دیدگاه


                        #12
                        پاسخ : مشکل در ارسال SMS با SIM900

                        نوشته اصلی توسط 1morteza
                        با سلام
                        کد:
                         printf("at+cmgf=1%1c",enter);
                        نیازی نیست هربار که می خواهی پیامکو ارسال کنی این دستور ارسال کنی شما ابتدای برنامه این کارو انجام بده وتازمانی که تغییر ندید تغییر پیدا نمی کنه

                        کد:
                        printf("at+cmgda=%1c%s%1c%1c",q,del,q,enter);
                        این دستور زمانی استفاده کن که پیامکو اومده باشد و برای اینکه حافضه پر نشه ازاین دستور استفاده برای پاک کردن و یا زمانی که ارسال می کنی وبعد از ارسال این کارو بکن
                        کد:
                        printf("at+cmgs=%1c%s%1c%1c",q,tel,q,enter);
                        بهتره از وقفه سریال استفاده کنی و زمانی این دستور فرستادی وقفه <اینو دریافت می کنه و دراین زمان متن پیامکو ارسال کن این حالتو اگه استفاده کنی دیگه نیازی به delayنیست
                        دستت درد نکنه جواب دادی ولی یه سوالی!
                        دو تا کد اول رو با دیلی هاشون توی main بیرون while(1) بذارم؟
                        برای وقفه سریال یعنی اون موقعی که دارم توی کد ویزارد تیک rx, tx رو می زنم تیک اینتراپت رو بزنم؟
                        من توضیحات تون در مورد کد آخر رو متوجه نشدم! :cry:
                        کد:
                        printf("at+cmgs=%1c%s%1c%1c",q,tel,q,enter);
                        اینو بذارم توی وقفه سریال؟
                        اون وقت اینوکجا بذارم؟
                        کد:
                        printf("Ba salam\rTemperature=%d\rHumidity=%d\rWind Direction=%s\rWind Speed=%d%1c%1c",temperature(),humidity(),direct1,anemometer(),cz,enter);
                        آقا جان من جواب بده خیلی گیرم! :cry:

                        دیدگاه


                          #13
                          پاسخ : مشکل در ارسال SMS با SIM900

                          کد:
                          /*****************************************************
                          This program was produced by the
                          CodeWizardAVR V2.05.3 Standard
                          Automatic Program Generator
                          © Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
                          http://www.hpinfotech.com
                          
                          Project : 
                          Version : 
                          Date  : 7/17/2014
                          Author : PerTic@n
                          Company : If You Like This Software,Buy It
                          Comments: 
                          
                          
                          Chip type        : ATmega8
                          Program type      : Application
                          AVR Core Clock frequency: 8.000000 MHz
                          Memory model      : Small
                          External RAM size    : 0
                          Data Stack size     : 256
                          *****************************************************/
                          
                          #include <mega8.h>
                          
                          #ifndef RXB8
                          #define RXB8 1
                          #endif
                          
                          #ifndef TXB8
                          #define TXB8 0
                          #endif
                          
                          #ifndef UPE
                          #define UPE 2
                          #endif
                          
                          #ifndef DOR
                          #define DOR 3
                          #endif
                          
                          #ifndef FE
                          #define FE 4
                          #endif
                          
                          #ifndef UDRE
                          #define UDRE 5
                          #endif
                          
                          #ifndef RXC
                          #define RXC 7
                          #endif
                          
                          #define FRAMING_ERROR (1<<FE)
                          #define PARITY_ERROR (1<<UPE)
                          #define DATA_OVERRUN (1<<DOR)
                          #define DATA_REGISTER_EMPTY (1<<UDRE)
                          #define RX_COMPLETE (1<<RXC)
                          
                          // USART Receiver buffer
                          #define RX_BUFFER_SIZE 8
                          char rx_buffer[RX_BUFFER_SIZE];
                          
                          #if RX_BUFFER_SIZE <= 256
                          unsigned char rx_wr_index,rx_rd_index,rx_counter;
                          #else
                          unsigned int rx_wr_index,rx_rd_index,rx_counter;
                          #endif
                          
                          // This flag is set on USART Receiver buffer overflow
                          bit rx_buffer_overflow;
                          
                          // USART Receiver interrupt service routine
                          interrupt [USART_RXC] void usart_rx_isr(void)
                          {
                          char status,data;
                          status=UCSRA;
                          data=UDR;
                          if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
                            {
                            rx_buffer[rx_wr_index++]=data; 
                            
                            if(a==2){
                            if(data=='>')
                            a=3;
                            
                            }
                            
                          #if RX_BUFFER_SIZE == 256
                            // special case for receiver buffer size=256
                            if (++rx_counter == 0) rx_buffer_overflow=1;
                          #else
                            if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
                            if (++rx_counter == RX_BUFFER_SIZE)
                             {
                             rx_counter=0;
                             rx_buffer_overflow=1;
                             }
                          #endif
                            }
                          }
                          
                          #ifndef _DEBUG_TERMINAL_IO_
                          // Get a character from the USART Receiver buffer
                          #define _ALTERNATE_GETCHAR_
                          #pragma used+
                          char getchar(void)
                          {
                          char data;
                          while (rx_counter==0);
                          data=rx_buffer[rx_rd_index++];
                          #if RX_BUFFER_SIZE != 256
                          if (rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
                          #endif
                          #asm("cli")
                          --rx_counter;
                          #asm("sei")
                          return data;
                          }
                          #pragma used-
                          #endif
                          
                          // Standard Input/Output functions
                          #include <stdio.h>
                          
                          // Declare your global variables here
                          
                          void main(void)
                          {
                          // Declare your local variables here
                          
                          // Input/Output Ports initialization
                          // Port B initialization
                          // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                          // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                          PORTB=0xff;
                          DDRB=0x00;
                          
                          // Port C initialization
                          // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                          // State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                          PORTC=0x00;
                          DDRC=0x00;
                          
                          // Port D initialization
                          // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                          // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                          PORTD=0x00;
                          DDRD=0x00;
                          
                          // Timer/Counter 0 initialization
                          // Clock source: System Clock
                          // Clock value: Timer 0 Stopped
                          TCCR0=0x00;
                          TCNT0=0x00;
                          
                          // Timer/Counter 1 initialization
                          // Clock source: System Clock
                          // Clock value: Timer1 Stopped
                          // Mode: Normal top=0xFFFF
                          // OC1A output: Discon.
                          // OC1B output: Discon.
                          // Noise Canceler: Off
                          // Input Capture on Falling Edge
                          // Timer1 Overflow Interrupt: Off
                          // Input Capture Interrupt: Off
                          // Compare A Match Interrupt: Off
                          // Compare B Match Interrupt: Off
                          TCCR1A=0x00;
                          TCCR1B=0x00;
                          TCNT1H=0x00;
                          TCNT1L=0x00;
                          ICR1H=0x00;
                          ICR1L=0x00;
                          OCR1AH=0x00;
                          OCR1AL=0x00;
                          OCR1BH=0x00;
                          OCR1BL=0x00;
                          
                          // Timer/Counter 2 initialization
                          // Clock source: System Clock
                          // Clock value: Timer2 Stopped
                          // Mode: Normal top=0xFF
                          // OC2 output: Disconnected
                          ASSR=0x00;
                          TCCR2=0x00;
                          TCNT2=0x00;
                          OCR2=0x00;
                          
                          // External Interrupt(s) initialization
                          // INT0: Off
                          // INT1: Off
                          MCUCR=0x00;
                          
                          // Timer(s)/Counter(s) Interrupt(s) initialization
                          TIMSK=0x00;
                          
                          // 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=0x98;
                          UCSRC=0x86;
                          UBRRH=0x00;
                          UBRRL=0x33;
                          
                          // Analog Comparator initialization
                          // Analog Comparator: Off
                          // Analog Comparator Input Capture by Timer/Counter 1: Off
                          ACSR=0x80;
                          SFIOR=0x00;
                          
                          // ADC initialization
                          // ADC disabled
                          ADCSRA=0x00;
                          
                          // SPI initialization
                          // SPI disabled
                          SPCR=0x00;
                          
                          // TWI initialization
                          // TWI disabled
                          TWCR=0x00;
                          
                          // Global enable interrupts
                          #asm("sei")
                           printf("at+cmgs=%1c%s%1c%1c",q,tel,q,enter);
                          while (1)
                             {
                              if(PINB.0==0){
                              while(PINB.0==0); 
                              delay_m(20); 
                              a=1;
                              } 
                              
                              
                              if(a==1){
                              printf("at+cmgda=%1c%s%1c%1c",q,del,q,enter);
                              a=2;
                              }
                              
                              if(a==3){
                             printf("Ba salam\rTemperature=%d\rHumidity=%d\rWind Direction=%s\rWind Speed=%d%1c%1c",temperature(),humidity(),direct1,anemometer(),cz,enter);
                              a=0;
                              }
                          
                             }
                          }


                          دیدگاه


                            #14
                            پاسخ : مشکل در ارسال SMS با SIM900

                            کدم رو میشه نگاه کنید؟ من فقط قسمت هایی که احساس کردم شما نوشتید رو جای گذاری کردم و چیزی رو پاک نکردم. درسته همه چیش؟
                            کد:
                            /*****************************************************
                            This program was produced by the
                            CodeWizardAVR V2.05.0 Advanced
                            Automatic Program Generator
                            © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
                            http://www.hpinfotech.com
                            
                            Project : 
                            Version : 
                            Date  : 07/17/2014
                            Author : www.Eca.ir *** www.Webkade.ir
                            Company : 
                            Comments: 
                            
                            
                            Chip type        : ATmega16
                            Program type      : Application
                            AVR Core Clock frequency: 11.059200 MHz
                            Memory model      : Small
                            External RAM size    : 0
                            Data Stack size     : 256
                            *****************************************************/
                            
                            #include <mega16.h>
                            #include <delay.h>
                            #include <alcd.h>
                            char enter=13;
                            char q=34;
                            char del[8]="DEl ALL";
                            char tel[12]="09120000000";
                            char cz=26;
                            #ifndef RXB8
                            #define RXB8 1
                            #endif
                            
                            #ifndef TXB8
                            #define TXB8 0
                            #endif
                            
                            #ifndef UPE
                            #define UPE 2
                            #endif
                            
                            #ifndef DOR
                            #define DOR 3
                            #endif
                            
                            #ifndef FE
                            #define FE 4
                            #endif
                            
                            #ifndef UDRE
                            #define UDRE 5
                            #endif
                            
                            #ifndef RXC
                            #define RXC 7
                            #endif
                            
                            #define FRAMING_ERROR (1<<FE)
                            #define PARITY_ERROR (1<<UPE)
                            #define DATA_OVERRUN (1<<DOR)
                            #define DATA_REGISTER_EMPTY (1<<UDRE)
                            #define RX_COMPLETE (1<<RXC)
                            
                            // USART Receiver buffer
                            #define RX_BUFFER_SIZE 8
                            char rx_buffer[RX_BUFFER_SIZE];
                            
                            #if RX_BUFFER_SIZE <= 256
                            unsigned char rx_wr_index,rx_rd_index,rx_counter;
                            #else
                            unsigned int rx_wr_index,rx_rd_index,rx_counter;
                            #endif
                            
                            // This flag is set on USART Receiver buffer overflow
                            bit rx_buffer_overflow;
                            
                            // USART Receiver interrupt service routine
                            interrupt [USART_RXC] void usart_rx_isr(void)
                            {
                            char status,data;
                            status=UCSRA;
                            data=UDR;
                            if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
                              {
                              rx_buffer[rx_wr_index++]=data;
                               if(a==2)
                                {
                                if(data=='>')
                                a=3;
                              
                                }
                            #if RX_BUFFER_SIZE == 256
                              // special case for receiver buffer size=256
                              if (++rx_counter == 0)
                               {
                            #else
                              if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
                              if (++rx_counter == RX_BUFFER_SIZE)
                               {
                               rx_counter=0;
                            #endif
                               rx_buffer_overflow=1;
                               }
                              }
                            }
                            
                            #ifndef _DEBUG_TERMINAL_IO_
                            // Get a character from the USART Receiver buffer
                            #define _ALTERNATE_GETCHAR_
                            #pragma used+
                            char getchar(void)
                            {
                            char data;
                            while (rx_counter==0);
                            data=rx_buffer[rx_rd_index++];
                            #if RX_BUFFER_SIZE != 256
                            if (rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
                            #endif
                            #asm("cli")
                            --rx_counter;
                            #asm("sei")
                            return data;
                            }
                            #pragma used-
                            #endif
                            
                            // Standard Input/Output functions
                            #include <stdio.h>
                            
                            // Timer2 overflow interrupt service routine
                            interrupt [TIM2_OVF] void timer2_ovf_isr(void)
                            {
                            // Place your code here
                            
                            }
                            
                            #define ADC_VREF_TYPE 0x60
                            
                            // Read the 8 most significant bits
                            // of the AD conversion result
                            unsigned char read_adc(unsigned char adc_input)
                            {
                            ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
                            // Delay needed for the stabilization of the ADC input voltage
                            delay_us(10);
                            // Start the AD conversion
                            ADCSRA|=0x40;
                            // Wait for the AD conversion to complete
                            while ((ADCSRA & 0x10)==0);
                            ADCSRA|=0x10;
                            return ADCH;
                            }
                            
                            // Declare your global variables here
                            
                            void main(void)
                            {
                            // Declare your local variables here
                            
                            // Input/Output Ports initialization
                            // Port A initialization
                            // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                            // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                            PORTA=0x00;
                            DDRA=0x00;
                            
                            // Port B initialization
                            // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                            // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                            PORTB=0x00;
                            DDRB=0x00;
                            
                            // Port C initialization
                            // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                            // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                            PORTC=0x00;
                            DDRC=0x00;
                            
                            // Port D initialization
                            // Func7=In Func6=Out Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                            // State7=T State6=0 State5=T State4=T State3=T State2=T State1=T State0=T 
                            PORTD=0x00;
                            DDRD=0x40;
                            
                            // Timer/Counter 0 initialization
                            // Clock source: T0 pin Rising Edge
                            // Mode: Normal top=0xFF
                            // OC0 output: Disconnected
                            TCCR0=0x07;
                            TCNT0=0x00;
                            OCR0=0x00;
                            
                            // Timer/Counter 1 initialization
                            // Clock source: System Clock
                            // Clock value: Timer1 Stopped
                            // Mode: Normal top=0xFFFF
                            // OC1A output: Discon.
                            // OC1B output: Discon.
                            // Noise Canceler: Off
                            // Input Capture on Falling Edge
                            // Timer1 Overflow Interrupt: Off
                            // Input Capture Interrupt: Off
                            // Compare A Match Interrupt: Off
                            // Compare B Match Interrupt: Off
                            TCCR1A=0x00;
                            TCCR1B=0x00;
                            TCNT1H=0x00;
                            TCNT1L=0x00;
                            ICR1H=0x00;
                            ICR1L=0x00;
                            OCR1AH=0x00;
                            OCR1AL=0x00;
                            OCR1BH=0x00;
                            OCR1BL=0x00;
                            
                            // Timer/Counter 2 initialization
                            // Clock source: TOSC1 pin
                            // Clock value: PCK2/128
                            // Mode: Normal top=0xFF
                            // OC2 output: Disconnected
                            ASSR=0x08;
                            TCCR2=0x05;
                            TCNT2=0x00;
                            OCR2=0x00;
                            
                            // External Interrupt(s) initialization
                            // INT0: Off
                            // INT1: Off
                            // INT2: Off
                            MCUCR=0x00;
                            MCUCSR=0x00;
                            
                            // Timer(s)/Counter(s) Interrupt(s) initialization
                            TIMSK=0x40;
                            
                            // 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=0x98;
                            UCSRC=0x86;
                            UBRRH=0x00;
                            UBRRL=0x47;
                            
                            // Analog Comparator initialization
                            // Analog Comparator: Off
                            // Analog Comparator Input Capture by Timer/Counter 1: Off
                            ACSR=0x80;
                            SFIOR=0x00;
                            
                            // ADC initialization
                            // ADC Clock frequency: 691.200 kHz
                            // ADC Voltage Reference: AVCC pin
                            // ADC Auto Trigger Source: ADC Stopped
                            // Only the 8 most significant bits of
                            // the AD conversion result are used
                            ADMUX=ADC_VREF_TYPE & 0xff;
                            ADCSRA=0x84;
                            
                            // SPI initialization
                            // SPI disabled
                            SPCR=0x00;
                            
                            // TWI initialization
                            // TWI disabled
                            TWCR=0x00;
                            
                            // Alphanumeric LCD initialization
                            // Connections specified in the
                            // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
                            // RS - PORTC Bit 5
                            // RD - PORTC Bit 4
                            // EN - PORTC Bit 3
                            // D4 - PORTC Bit 2
                            // D5 - PORTC Bit 1
                            // D6 - PORTC Bit 0
                            // D7 - PORTD Bit 7
                            // Characters/line: 16
                            lcd_init(16);
                            
                            // Global enable interrupts
                            #asm("sei")
                            printf("at+cmgf=1%1c",enter);
                            printf("at+cmgs=%1c%s%1c%1c",q,tel,q,enter);
                            while (1)
                               {
                               if(PINB.0==0)
                                {
                                while(PINB.0==0); 
                                delay_m(20); 
                                a=1;
                                } 
                                
                                
                                if(a==1)
                                {
                                printf("at+cmgda=%1c%s%1c%1c",q,del,q,enter);
                                a=2;
                                }
                                
                                if(a==3)
                                {
                                printf("Ba salam\rTemperature=%d\rHumidity=%d\rWind Direction=%s\rWind Speed=%d%1c%1c",temperature(),humidity(),direct1,anemometer(),cz,enter);
                                a=0;
                                }
                            
                               }
                            }
                            بعد این خطوط چی میگه؟ پورت B0 ام اشغاله! کلا پروژه گنده اییه که فقط یه تیکه اش رو اینجا گذاشتم.
                            کد:
                            if(PINB.0==0)
                                {
                                while(PINB.0==0); 
                                delay_m(20); 
                                a=1;
                                }
                            ولی کلا نمی فهمم چیکار کردید! :cry: :cry: :cry: که بخوام توش دست ببرم.
                            برنامه ام با RTC کار می کنه سر 5 دقیقه باید پیامک بفرسته! اونو چه جوری اعمال کنم؟
                            میشه یه کوچولو توضیح بدید اگر هم سخته تونه یه جایی معرفی کنید خودم بخونم.
                            خیلی دعاتون می کنم.خیلی محتاجم! :cry:

                            دیدگاه


                              #15
                              پاسخ : مشکل در ارسال SMS با SIM900

                              این کد که من گذاشتم چیزی نداره

                              این پین ورودی برای ارسال smsاست می تونه همون حرفی که خودتون زدید باشه یعنی بیاد مقایسه کنه با دقیقه و smsارسال کنه
                              برنامه rtcهم که راحته از تایمر استفاده می کنید برنامشم توی نت پر

                              دیدگاه

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