اطلاعیه

Collapse
No announcement yet.

فعال کردن رله خاص توسط اس ام اس دریافتی خاص

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

    فعال کردن رله خاص توسط اس ام اس دریافتی خاص

    سلام
    من یه برد آموزشی sim900 از فروشگاه eca خریدم و خواستم برنامه ای رو بنویسم که مثلا با دریافت sms ی که متنش rel1 هست, رله شماره یک رو فعال کنه
    برای شروع هم از برنامه های آماده که توی پکیج sim900 بود استفاده کردم ----- برنامه SMS Reciever
    ممکنه راهنمایی کنید که چطور باید این کار رو انجام بدم
    با سپاس

    این کدی هست که من تغییر دادم
    کد:
    /*****************************************************
    Project : SMS Reciever
    Version : 1.0
    Date  : 1392/07/20
    Author : Ali Imanifar
    Company : ECA
    Comments: This is a sample program for SIM900 Learning board produce by ECA
    
    
    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>
    #include <stdlib.h>
    #include <delay.h>
    #include <keypad.h>
    #include <SIM900.h>
    
    // Alphanumeric LCD functions
    #include <alcd.h>
    
    
    
    // Declare your global variables here
    char key=16;
    char str[50],sms[200],phone[30],s1[3]="X1",s2[3]="55";
    int i=0;
     
    
    // External Interrupt 0 service routine
    interrupt [EXT_INT0] void ext_int0_isr(void)
    {
    
     
    // Place your code here
      char str2[5];
      
      getstr(str);  
      str2[0] = str[12];
      str2[1] = 0;
      i = atoi(str2); 
      
      
      PORTD.6 = 1;
      delay_ms(700);
      PORTD.6 = 0;
      
      
      lcd_clear();
      lcd_gotoxy(0,0);
      lcd_puts("New Message");
      lcd_gotoxy(0,1);
      lcd_puts("Read:1 Skip:2");
      
      key = keyscan();
      while((key != 1) & (key != 2))
      {
        key = keyscan();
      }
      
      if(key == 1)
      {
        SMS_Recieve(sms,phone,i); 
        lcd_clear(); 
    //    lcd_show(phone,0);
    //    lcd_show(sms,1);
    if(strcmp(sms,s1))
    {
      lcd_puts("Re:S1 ");
    }
    if(strcmp(sms,s2))
    {
      lcd_puts("Re:S25 ");
    }
        while(keyscan() != 10);
        lcd_clear();
      }        
      else
      {
        lcd_clear();
        lcd_gotoxy(0,0);
        lcd_puts("Skipped");
        delay_ms(500);
        lcd_clear();
      } 
      
      lcd_gotoxy(0,0);
      lcd_puts("Read:1     ");
      lcd_gotoxy(0,1);
      lcd_puts("Delete:2    ");
    }
    
    // Standard Input/Output functions
    #include <stdio.h>
    
    
    
    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=Out Func2=Out Func1=Out Func0=Out 
    // State7=T State6=T State5=T State4=T State3=0 State2=0 State1=0 State0=0 
    PORTC=0x00;
    DDRC=0x0F;
    
    // Port D initialization
    // Func7=In Func6=Out Func5=Out Func4=In Func3=In Func2=In Func1=In Func0=In 
    // State7=T State6=0 State5=0 State4=T State3=T State2=T State1=T State0=T 
    PORTD=0x00;
    DDRD=0x60;
    
    // External Interrupt(s) initialization
    // INT0: On
    // INT0 Mode: Falling Edge
    // INT1: Off
    // INT2: Off
    GICR|=0x40;
    MCUCR=0x02;
    MCUCSR=0x00;
    GIFR=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=0x18;
    UCSRC=0x86;
    UBRRH=0x00;
    UBRRL=0x47;
    
    
    // Alphanumeric LCD initialization
    // Connections are specified in the
    // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
    // RS - PORTA Bit 0
    // RD - PORTA Bit 1
    // EN - PORTA Bit 2
    // D4 - PORTA Bit 4
    // D5 - PORTA Bit 5
    // D6 - PORTA Bit 6
    // D7 - PORTA Bit 7
    // Characters/line: 16
    lcd_init(16);
    // Global enable interrupts
    #asm("sei")
    
    
    lcd_clear();
    delay_ms(200);
    lcd_gotoxy(0,0);
    lcd_puts("Only GOD");
    lcd_gotoxy(0,1);
    lcd_puts("www.ECA.ir");
    delay_ms(3000);
    
    
    
    
    lcd_clear();
    lcd_gotoxy(0,0);
    lcd_puts("Power ON The");
    lcd_gotoxy(0,1);
    lcd_puts("SIM900? Y:1 N:2");
    
    i = 17;
    do
      i = keyscan();
    while ((i != 1) & (i != 2));
      
    
    if(i == 1) {
      lcd_clear();
      lcd_gotoxy(0,0);
      lcd_puts("Powering ON ...");
      
      SIM900_PWR_ON();
      
      lcd_gotoxy(0,1);
      lcd_puts("Powered ON");
    }
    else {
      lcd_clear();
      lcd_gotoxy(0,0);
      lcd_puts("Note:");
      lcd_show("You choose to powering on the SIM900 by yuor self so if the module is off please use the power button on the module to power it on",1);
      
      while(SIM900_Is_ON() == 0)
      {
        delay_ms(300);
        lcd_gotoxy(0,1);
        lcd_puts("Power ON SIM900 ");
      }
      
      delay_ms(2000);  
    }
    
    delay_ms(1000);
    
    
    
    
    i = SIM900_Init();
    lcd_clear();
    if(i==1)
    {
      lcd_gotoxy(0,0);
      lcd_puts("Sim900 Init");
    }
    else
    {
      lcd_gotoxy(0,0);
      lcd_puts("Not Init");
    }
    
    
    i = Net_Is_Register();
    if(i==1)
    {
      lcd_gotoxy(0,1);
      lcd_puts("Register Network");
    }
    else
    {
      lcd_gotoxy(0,1);
      lcd_puts("Not Register");
    }
    
    
    
    
    
    
      lcd_gotoxy(0,0);
      lcd_puts("Read:1     ");
      lcd_gotoxy(0,1);
      lcd_puts("Delete:2    ");
    while (1)
    {
      // Place your code here 
       
      
      key = keyscan(); 
      
      if(key == 1)
      {
        delay_ms(200);
        lcd_clear();
        lcd_gotoxy(0,0);
        lcd_puts("SMS Number :");
        if(number_keyscan(str) == 1)
        {          
          i = atoi(str);
          if(SMS_Recieve(sms,phone,i) == 1)
          { 
            lcd_clear(); 
            lcd_show(phone,0);
            lcd_show(sms,1);
            while(keyscan() != 10);
            lcd_clear();
          }
          else
          {
            lcd_clear();
            lcd_gotoxy(0,0);
            lcd_puts("Not Found !");
            delay_ms(1500);
          }
        }
        else
        {
          lcd_clear();
          lcd_gotoxy(0,0);
          lcd_puts("Canceled!");
          delay_ms(1500);
        } 
        
        
        
        lcd_gotoxy(0,0);
        lcd_puts("Read:1     ");
        lcd_gotoxy(0,1);
        lcd_puts("Delete:2    ");
      }
      
      
      if(key == 2)
      {  
        sms_del:
        
        delay_ms(200);
        lcd_clear();
        lcd_gotoxy(0,0);
        lcd_puts("All:1  Inbox:2");
        lcd_gotoxy(0,1);
        lcd_puts("UnRead:3 Read:4");
        delay_ms(2000);
        lcd_clear();
        lcd_gotoxy(0,0);
        lcd_puts("Press 1..4");
        
        if(number_keyscan(str) == 1)
        {          
          i = atoi(str);
          
          switch(i)
          {
            case 1 :
            lcd_clear();
            lcd_gotoxy(0,0);
            lcd_puts("Deleting ...");
            if(SMS_Delete("ALL") == 1)
            {
              lcd_gotoxy(0,1);
              lcd_puts("ALL SMS Deleted"); 
              delay_ms(1500);
            } 
            else
            {
              lcd_gotoxy(0,1);
              lcd_puts("Deleting Failed!");
              delay_ms(1500);
            }
            break;
            
            case 2 : 
            lcd_clear();
            lcd_gotoxy(0,0);
            lcd_puts("Deleting ...");
            if(SMS_Delete("INBOX") == 1)
            { 
              lcd_gotoxy(0,1);
              lcd_puts("INBOX SMS Deleted");
              delay_ms(1500);
            }
            else
            {
              lcd_gotoxy(0,1);
              lcd_puts("Deleting Failed!");
              delay_ms(1500);
            }
            break;
            
            case 3 :
            lcd_clear();
            lcd_gotoxy(0,0);
            lcd_puts("Deleting ...");
            if(SMS_Delete("UNREAD"))
            {
              lcd_gotoxy(0,1);
              lcd_puts("UnRead SMS Deleted"); 
              delay_ms(1500); 
            }
            else
            {
              lcd_gotoxy(0,1);
              lcd_puts("Deleting Failed!");
              delay_ms(1500);
            }
            break;
            
            case 4 :
            lcd_clear();
            lcd_gotoxy(0,0);
            lcd_puts("Deleting ...");
            if(SMS_Delete("READ") == 1)
            {
              lcd_gotoxy(0,1);
              lcd_puts("Read SMS Deleted");
              delay_ms(1500);
            }
            else
            {
              lcd_gotoxy(0,1);
              lcd_puts("Deleting Failed!");
              delay_ms(1500);
            }
            break;
            
            default:
            lcd_clear();
            lcd_gotoxy(0,0);
            lcd_puts("Wrong Choice!"); 
            delay_ms(1500);
            goto sms_del;
          }
        }
        else
        {
          lcd_clear();
          lcd_gotoxy(0,0);
          lcd_puts("Canceled!");
          delay_ms(1500);
        } 
        
        
        lcd_gotoxy(0,0);
        lcd_puts("Read:1     ");
        lcd_gotoxy(0,1);
        lcd_puts("Delete:2    ");
      } 
        
    }
    }
لطفا صبر کنید...
X