SMS کنترلر ها در شرایطی که امکان اتصال به اینترنت وجود ندارد بسیار کاربردی می باشد . در این حالت تنها از طریق ارسال SMS می توانید یک خروجی روشن یا خاموش کنید . در این پروژه می خواهیم به نحوه ساخت SMS کنترلر با آردوینو بپردازیم . به طور کلی مودم های مخابراتی استاندارد از فریمور هایس پشتیبانی می کنند لذا به راحتی از طریق یک ارتباط UART و با استفاده از دستورات AT می توانید آن را کنترل کنید . ماژول های GSM هم از این قاعده مثتسنی نیستند . در این آموزش از یک ماژول SIM800 استفاده خواهیم کرد . ماژول SIM800 از سری های جدید ماژول های شرکت SIMcom می باشد که این ماژول ها مودم های GSM با امکانات و کاربرد های مختلف هستند . برای ارتباط آردوینو با SIM800 از ارتباط سریال نرم افزاری استفاده خواهیم کرد . خوشبختانه کتابخانه های زیادری برای راه اندازی ماژول های GSM وجود دارد که در این کتابخانه های کلیه کامند های مورد نیاز در قالب توابعی پیاده سازی شده اند . نکته مهم راجب به ماژول های SIM800 جریان مصرفی آن می باشد . در لحظه کانکت شدن ماژول با شبکه ممکن است ماژول به جریانی نزدیک به 2 آمپر نیاز داشته باشد . همچنین در زمان برقراری تماس جریان مصرفی آن تا 600 میلی آمپر بالا می رود لزا نمی توان تغذیه آن را از برد آردوینو تامین کرد . برای این کار می توانید تغذیه برد SIM800 را جداگانه به یک منبع تغذیه با ولتاژ 3.7 تا 4.2 ولت با حداکثر آمپر دهی 2 آمپر متصل کنید . همچنی می توانید از باتری های لیپونیز برای تغذیه ماژول SIM800 استفاده کنید .

در تصویر زیر نحوه اتصال SIM800 به آردوینو نشان داده شده است :

کد های آردوینو :

#include <SoftwareSerial.h>

SoftwareSerial gsmSerial(7, 8);
char incomingByte; 
String inputString;

void setup() 
{
    pinMode(2, OUTPUT);
    pinMode(3, OUTPUT);
    pinMode(2, LOW);
    pinMode(3, LOW);
    Serial.begin(9600);
    gsmSerial.begin(9600); 

    while(!gsmSerial.available()){
    gsmSerial.println("AT");
        delay(1000); 
        Serial.println("Connecting...");
    }
    Serial.println("Connected!");  
    gsmSerial.println("AT+CMGF=1");
    delay(1000);  
    gsmSerial.println("AT+CNMI=1,2,0,0,0"); 
    delay(1000);
    gsmSerial.println("AT+CMGL=\"REC UNREAD\"");
}

void loop()
{  
  if(gsmSerial.available()){
    inputString = "";
    delay(1000);
    while(gsmSerial.available()){
      incomingByte = gsmSerial.read();
      inputString += incomingByte; 
    }
    delay(100);      
    //inputString.replace("\n","");
    Serial.print("input : ");
    Serial.print(inputString);
    Serial.println("   end");
    
    inputString.toUpperCase();
    Serial.println("input up : " + inputString);
    if (inputString.indexOf("ON1") > 0){
      pinMode(2, HIGH);
    }
    if (inputString.indexOf("ON2") > 0){
      pinMode(3, HIGH);
    } 
    if (inputString.indexOf("OFF1") > 0){
      pinMode(2, LOW);
    }
    if (inputString.indexOf("OFF2") > 0){
      pinMode(3, LOW);
    }         
    delay(50);
    if (inputString.indexOf("OK") > -1){
      gsmSerial.println("AT+CMGDA=\"DEL ALL\"");
      delay(1000);
    } 
  }
}

 

با ارسال ON1 و ON2 می توانید هر کدام از رله ها را روشن کنید . همچنین با ارسال OFF1 و OFF2 نیز می توانید رله ها را خاموش کنید .

Tags:
About Author: USER_4