نمایش نتایج: از 1 به 2 از 2
Like Tree1 لایک
  • 1 Post By canopus

موضوع: پروژه کنترل وسایل با SMS به وسیله ماژول A6 GSM mini

  1. #1
    Junior Member
    تاریخ عضویت
    Nov 2016
    نوشته ها
    23

    پروژه کنترل وسایل با SMS به وسیله ماژول A6 GSM mini

    با عرض ادب خدمت تمامی دوستان
    پروژه کنترل وسایل با SMS به وسیله ماژول A6 GSM mini

    اقلام مورد نیاز
    برد اردینو
    شیلد LCD کارکتری 2*16 با ارتباط I2C
    ماژول A6 GSM mini
    ماژول رله 4 تایی

    نحوه اتصال LCD به برد اردینو
    SDA TO A3
    SCL TO A4
    VCC TO VCC
    GND TO GND

    نحوه اتصال A6 GSM mini به برد آردینو
    UTX TO D10
    URX TO D11
    PWR TO VCC
    VCC TO VCC
    GND TO GND

    نحوه اتصال ماژول رله به برد اردینو
    In1 to D3
    In2 to D4
    In3 to D5
    In4 to D6
    VCC TO VCC
    GND TO GND

    **در ابتدا سیم کارتی بدون PIN از هر اپراتوری (همراه اول ، ایرانسل ، رایتل ) درون شیلد سیمکارت ماژول A6 GSM mini قرار دهید**

    دستورالعمل استفاده

    بعد از عبور از مرحله لودینگ شما وضعیت رله ها رو میتونید روی LCD که به صورت A=0 (یعنی رله A خاموش) است رو ببنید

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

    دستگاه پاسخ شما رو با یک پیامک با عنوان " Admin phone is " خواهد داد

    با ارسال دستور A1 (حتما حروف بزرگ) رله یک (A) روشن و وضعیت رله به شما پیامک و روی LCD نمایش داده خواهد شد.
    با ارسال دستور A0 (حتما حروف بزرگ) رله یک (A) خاموش و وضعیت رله به شما پیامک و روی LCD نمایش داده خواهد شد.

    سایر رله های B و C و D رو همانند رله A میتونید خاموش یا روشن نمایید

    کد برنامه
    کد:
    #include <SoftwareSerial.h>
    SoftwareSerial GPRS(10, 11);
    #include <LiquidCrystal_I2C.h>
    LiquidCrystal_I2C lcd(0x3F, 16, 2);
    
    enum _parseState {
      PS_DETECT_MSG_TYPE,
    
      PS_IGNORING_COMMAND_ECHO,
    
      PS_READ_CMTI_STORAGE_TYPE,
      PS_READ_CMTI_ID,
    
      PS_READ_CMGR_STATUS,
      PS_READ_CMGR_NUMBER,
      PS_READ_CMGR_SOMETHING,
      PS_READ_CMGR_DATE,
      PS_READ_CMGR_CONTENT,
      PHONE
    };
    
    String ADMIN_PHONE="";
    String SMS_PHONE_NUMBER="";
    String TEMP_PHONE="";
    String x="";
    String y="";
    
    int AV;
    int BV;
    int CV;
    int DV;
    
    byte state = PS_DETECT_MSG_TYPE;
    
    char buffer[80];
    
    byte pos = 0;
    int lastReceivedSMSId = 0;
    boolean validSender = false;
    
    void resetBuffer() {
      memset(buffer, 0, sizeof(buffer));
      pos = 0;
    }
    void setup()
    {
      
      GPRS.begin(9600);
      Serial.begin(9600);
      //----lcd----//
      lcd.init();
      lcd.backlight();
      //----lcd----//
      //--------relay-------//
      pinMode(3, OUTPUT);
      pinMode(4, OUTPUT);
      pinMode(5, OUTPUT);
      pinMode(6, OUTPUT);
      digitalWrite(3, HIGH);
      digitalWrite(4, HIGH);
      digitalWrite(5, HIGH);
      digitalWrite(6, HIGH);
      //--------relay-------//
     Loading();
     GSM_CMGF_CMGD();
     lcd_Relay_v();
    }
    
    void loop()
    {
      while(GPRS.available()) {
        parseATText(GPRS.read());
      }
    }
    
        
    void parseATText(byte b) {
    
      buffer[pos++] = b;
    
      if ( pos >= sizeof(buffer) )
        resetBuffer(); 
    
     
      switch (state) {
      case PS_DETECT_MSG_TYPE: 
        {
          if ( b == '\n' )
            resetBuffer();
          else {        
            if ( pos == 3 && strcmp(buffer, "AT+") == 0 ) {
              state = PS_IGNORING_COMMAND_ECHO;
            }
            else if ( pos == 6 ) {
              
              
     if ( strcmp(buffer, "+CMTI:") == 0 ) {
                Serial.println("Received CMTI");
                state = PS_READ_CMTI_STORAGE_TYPE;
              }
              else if ( strcmp(buffer, "+CMGR:") == 0 ) {
                Serial.println("Received CMGR");            
                state = PS_READ_CMGR_STATUS;
              }
              resetBuffer();
            }
          }
        }
        break;
    
      case PS_IGNORING_COMMAND_ECHO:
        {
          if ( b == '\n' ) {
           
            state = PS_DETECT_MSG_TYPE;
            resetBuffer();
          }
        }
        break;
    
      case PS_READ_CMTI_STORAGE_TYPE:
        {
          if ( b == ',' ) {
            Serial.print("SMS storage is ");
            Serial.println(buffer);
            state = PS_READ_CMTI_ID;
            resetBuffer();
          }
        }
        break;
    
      case PS_READ_CMTI_ID:
        {
          if ( b == '\n' ) {
            lastReceivedSMSId = atoi(buffer);
            Serial.print("SMS id is ");
            Serial.println(lastReceivedSMSId);
    
            GPRS.print("AT+CMGR=");
            GPRS.println(lastReceivedSMSId);
           
            state = PS_DETECT_MSG_TYPE;
            resetBuffer();
          }
        }
        break;
    
      case PS_READ_CMGR_STATUS:
        {
          if ( b == ',' ) {
            Serial.print("CMGR status: ");
            Serial.println(buffer);
            state = PS_READ_CMGR_NUMBER;
            resetBuffer();
          }
        }
        break;
    
      case PS_READ_CMGR_NUMBER:
        {
          if ( b == ',' ) {
            Serial.print("CMGR number: ");
            Serial.println(buffer);
            TEMP_PHONE=buffer;
            SMS_PHONE_NUMBER=buffer;
    
           
            validSender = true;
    
            state = PS_READ_CMGR_SOMETHING;
            resetBuffer();
          }
        }
        break;
    
      case PS_READ_CMGR_SOMETHING:
        {
          if ( b == ',' ) {
            Serial.print("CMGR something: ");
            Serial.println(buffer);
            state = PS_READ_CMGR_DATE;
            resetBuffer();
          }
        }
        break;
    
      case PS_READ_CMGR_DATE:
        {
          if ( b == '\n' ) {
            Serial.print("CMGR date: ");
            Serial.println(buffer);
            state = PS_READ_CMGR_CONTENT;
            resetBuffer();
          }
        }
        break;
    
      case PS_READ_CMGR_CONTENT:
        {
          if ( b == '\n' ) {
            Serial.print("CMGR content: ");
            Serial.print(buffer);
    
            parseSMSContent();
    
            GPRS.print("AT+CMGD=");
            GPRS.println(lastReceivedSMSId);
           
    
            state = PS_DETECT_MSG_TYPE;
            resetBuffer();
          }
        }
        break;
      }
    }
    
    void parseSMSContent() {
      char* ptr = buffer;
      lcd_NEW_Message();
      while ( strlen(ptr) >=2 ) {
        if (ptr[0] == 'T') {
          if ( ptr[1] == '1' )
      ADMIN_PHONE = TEMP_PHONE;
      GPRS.println("AT+CMGS="+ ADMIN_PHONE);
      delay(1000);
      GPRS.println("Admin phone is");
      GPRS.println(ADMIN_PHONE);
      GPRS.println("Najmi ICT");
      delay(100);
      GPRS.println((char)26);// ASCII code of CTRL+Z
      delay(1000);
          }
        
        if (ptr[0] == 'A') {
          if (ptr[1] == '1')
             {
            if (ADMIN_PHONE == SMS_PHONE_NUMBER)
               {
                x= " A ";
                y= " ON";
                SEND_SMS();
                digitalWrite(3, LOW);
                AV=1;
               }
             }
          else if (  ADMIN_PHONE == SMS_PHONE_NUMBER )
    	           {
    	        if (ptr[1] == '0')
                   {
                   x= " A ";
                   y= " OFF";
                   SEND_SMS();
                   digitalWrite(3, HIGH);
                   AV=0;
                   }
        }
    	}
         
        if (ptr[0] == 'B') {
          if (ptr[1] == '1')
             {
            if (ADMIN_PHONE == SMS_PHONE_NUMBER)
               {
                x= " B ";
                y= " ON";
                SEND_SMS();
                digitalWrite(4, LOW);
                BV=1;
                }
             }
          else if (  ADMIN_PHONE == SMS_PHONE_NUMBER )
    	           {
    	        if (ptr[1] == '0')
                   {
                   x= " B ";
                   y= " OFF";
                   SEND_SMS();
                   digitalWrite(4, HIGH);
                   AV=0;
                   }
        }
    	}
          
        if (ptr[0] == 'C')
        {
          if (ptr[1] == '1')
             {
            if (ADMIN_PHONE == SMS_PHONE_NUMBER)
               {
                x= " C ";
                y= " ON";
                SEND_SMS();
                digitalWrite(5, LOW);
                CV=1;
               }
             }
          else if (  ADMIN_PHONE == SMS_PHONE_NUMBER )
    	           {
    	        if (ptr[1] == '0')
                   {
                   x= " C ";
                   y= " OFF";
                   SEND_SMS();
                   digitalWrite(5, HIGH);
                   AV=0;
                   }
        }
    	}
    
        if (ptr[0] == 'D') 
        {
          if (ptr[1] == '1')
             {
            if (ADMIN_PHONE == SMS_PHONE_NUMBER)
               {
                x= " D ";
                y= " ON";
                SEND_SMS();
                digitalWrite(6, LOW);
                DV=1;
               }
            }
          else if (  ADMIN_PHONE == SMS_PHONE_NUMBER )
    	           {
    	        if (ptr[1] == '0')
                   {
                   x= " D ";
                   y= " OFF";
                   SEND_SMS();
                   digitalWrite(6, HIGH);
                   AV=0;
                   }
        }
    	}
       
       lcd_Relay_v();
    
        ptr += 2;
      }
    }
    void SEND_SMS(){
      GPRS.println("AT+CMGS="+ADMIN_PHONE);
      delay(1000);
      GPRS.println("Relay"+x+""+y+"");
      GPRS.println("Najmi ICT");
      delay(100);
      GPRS.println((char)26);// ASCII code of CTRL+Z
      delay(1000);
    }
    void lcd_NEW_Message(){
        lcd.clear();
        lcd.setCursor( 0 , 0 );
        lcd.print("   New Message  ");
        lcd.setCursor( 0 , 1 );
        lcd.print(" * Najmi ICT *"); 
    }
    
    void lcd_Relay_v(){
       lcd.clear();
      lcd.setCursor( 0 , 0 );
        lcd.print("A=");
      lcd.setCursor( 2 , 0 );
        lcd.print(AV);
      lcd.setCursor( 5 , 0 );
        lcd.print("B=");
      lcd.setCursor( 7 , 0 );
        lcd.print(BV);
      lcd.setCursor( 0 , 1 );
        lcd.print("C=");
      lcd.setCursor( 2 , 1 );
        lcd.print(CV);
      lcd.setCursor( 5 , 1 );
        lcd.print("D=");
      lcd.setCursor( 7 , 1 );
        lcd.print(DV);  
    }
    void Loading(){
        lcd.setCursor( 0 , 0 );
        lcd.print(">   Loading:   <");
    for (int j = 0; j <= 15; j++)
        {
         lcd.setCursor( j , 1 );
         lcd.print((char)255);
         delay(1500);
        }
      lcd.clear(); 
      lcd.setCursor( 0 , 0 );
      lcd.print(".:::: Ready ::::.");
      lcd.setCursor( 0 , 1 );
      lcd.print(" Made by Najmi");
    }
    void GSM_CMGF_CMGD(){
      GPRS.println("AT+CMGf=1");
      delay(1000);
      for (int i = 1; i <= 15; i++) {
        GPRS.print("AT+CMGD=");
        GPRS.println(i);
        delay(200);
        while(GPRS.available()) 
          Serial.write(GPRS.read());
      }
    }
    ویرایش توسط canopus : 04-20-2018 در ساعت 07:35 PM
    لایک کردن

  2. #2
    Junior Member
    تاریخ عضویت
    Jan 2016
    نوشته ها
    1

    تعویض ماژول A6 GSM mini

    سلام مهندس جان میشه بجای ماژول A6 GSM mini از sim900 یا سیم800 بجاش استفاده کرد ؟ متاسفانه این ماژول توی بازار کم شده .. در ضمن اگه بشه تغییر کدها را با پینهای اون مازول ها بگین که دیگه معرفتو واسم تمام کردین . قربان دست شما . منتظر پاسخ می مانم . خدانگهدار.

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO