أخر الاخبار

كود الأردوينو sim900 لإستقبال/إرسال رسالة وتشغيل الريلاي/ليد

Arduino code sim900 to receive/send a message and turn on the relay/LED

كود الأردوينو sim900 لإستقبال/إرسال رسالة وتشغيل الريلاي/ليد

السلام عليكم ورحمة الله تعالى وبركاته

اليوم سنتعرف ان شاء الله على كود للأردوينو مع السيم sim900 وهدفه هو:
  •  إستقبال الرسائل
  • ثم سحب رقم الهاتف الذي أرسل الرسائل منها 
  • ثم معرفة محتوى الرسالة 
  • ثم التعرف على وجود الأمر "اون اوف" فيها او لا.
  • ثم تشغيل/ او اطفاء اللاد حسب الامر .
  • ثم تشغيل/ او اطفاء الريلاي حسب الامر. 
  • ثم تكوين رسالة جديدة للرد بالحالة الجديدة حسب الامر السابق "on / off".
  • او تكوين رسالة جديدة للرد بالحالة الجديدة اذا كان الامر  "state".
  • ثم ارسال الرسالة الجديدة لرقم المتصل المسحوب من قبل.
كل هذا ان شاء الله في كود واحد مبسط جدا مع الشرح للنقاط الجديدة علينا داخل الكود نفسه للتبسيط
وقد تطلب منا انجازه الكثير والكثير من البحث والمجهودات والتجارب حتى نجح معنا وهو هدية لكم منا ..



كود الأردوينو sim900 لإستقبال/إرسال رسالة sms وتشغيل الريلاي/ليد مع الشرح:

Arduino code sim900 to receive/send a message and turn on the relay/LED



#include 
int Relay=2;  
int Led=4;  
SoftwareSerial SIM900(7,8);
int i;

// Variable to store text message
String ComingCall;
String IDsms;
 String TXsms; 
String message = "Led is ON, Relay is ON";

void setup(){
  ComingCall.reserve(200);
//  message.reserve(200);
  pinMode(Relay,OUTPUT);
  pinMode(Led,OUTPUT);
  digitalWrite(Relay,HIGH);
  digitalWrite(Led,HIGH);

  Serial.begin(9600);
  SIM900.begin(9600);
  delay(100);
  SIM900.write("AT+CMGF=1\r"); //تفعيل وضع الرسائل
  delay(500);
  SIM900.write("AT+CNMI=2,2,0,0,0\r");
  delay(100);
}

void loop(){
while (SIM900.available()) {
  ComingCall=SIM900.readString();
   Serial.println(ComingCall); 
  }

// عند ارسال رسالة ينفذ الامر اما تشغيل او ايقاف او  الحالة مع الرد برسالة 
if(ComingCall.indexOf("+CMT")>0){
    Serial.println("*************+CMT***********"); 
    ComingCall.replace("+CMT: \"", ""); 
    ComingCall.replace("+212", "0");
   IDsms=ComingCall.substring(2, 12);  \\الحصول على رقم مرسل الرسالة
   TXsms = ComingCall.substring(12, 200); \\الحصول على محتوى الرسالة
Serial.print("IDsms=");
Serial.println(IDsms); 
Serial.print("TXsms="); 
Serial.println(TXsms); 
ComingCall=9999;} \\تصفير السترينغ للخروج من if..

if(TXsms.indexOf("ON")>=0){
       String message="Led is ON, Relay is ON";
       delay(100);
       SIM900.print("AT+CMGF=1\r");   
       delay(1000); 
       SIM900.println("AT + CMGS = \"05555555555\""); 
       delay(1000);
       SIM900.println(message); 
       delay(1000); 
       SIM900.println((char)26); 
       delay(100); 
       SIM900.println();
       delay(5000);
     digitalWrite(Led,HIGH);
     digitalWrite(Relay,HIGH); 
     TXsms="rrrrrrr";    \\تصفير السترينغ للخروج من if..
     ComingCall=SIM900.readString(); Serial.println(ComingCall); 
     Serial.println("****************************"); 
     delay(500);}

if(TXsms.indexOf("OFF")>=0){
       String message="Led is off, Relay is Off";
       delay(100);
       SIM900.print("AT+CMGF=1\r"); 
       delay(1000); 
       SIM900.println("AT + CMGS = \"05555555555\"");
       delay(1000);
       SIM900.println(message); 
       delay(1000); 
       SIM900.println((char)26); 
       delay(100); 
       SIM900.println(); 
       delay(5000);     
     digitalWrite(Led,LOW);
     digitalWrite(Relay,LOW); 
     TXsms="rrrrrrr";  \\تصفير السترينغ للخروج من if..
     ComingCall=SIM900.readString(); 
     Serial.println(ComingCall); 
     Serial.println("****************************"); 
     delay(500);}

if(TXsms.indexOf("STATE")>=0){
       String tmp=message;
       delay(100); 
       String message="STATE: "+tmp;
       delay(100);
       SIM900.print("AT+CMGF=1\r"); 
       delay(1000); 
       SIM900.println("AT + CMGS = \"05555555555\""); 
       delay(1000);
       SIM900.println(message); 
       delay(1000); 
       SIM900.println((char)26); 
       delay(100); 
       SIM900.println(); 
       delay(5000);     
     TXsms="rrrrrrr";  \\تصفير السترينغ للخروج من if..
     ComingCall=SIM900.readString();
     Serial.println(ComingCall);
     Serial.println("****************************"); 
     delay(500);}

}





شرح الالوان المضمنة بكود الأردوينو sim900 لإستقبال/إرسال رسالة sms وتشغيل الريلاي/ليد

 باللون الأخضر:  التعاريف الأساسية (ليدات , سيريل .. الخ).         

 باللون الابيض:  التعاريف الثانوية (pinMode ,HIGH .. الخ).     

 باللون الأحمر:  القيم المختلفة ("Setup Start...." , 9600 .. الخ).

 باللون البرتقالي:  الفواد (او القسم البرمجي الاول والثاني اللوب) (void .. الخ).

 باللون الأزرق:  الشرح المضمن مع الكود (// wait for 5 a second .. الخ). 







ˆFr
وضع القراءة :
حجم الخط
+
16
-
تباعد السطور
+
2
-