أخر الاخبار

كود الأردوينو sim900 لإستقبال/إجراء/قطع مكالمة وتشغيل الريلاي/ليد

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

كود الأردوينو sim900 لإستقبال/إجراء/قطع مكالمة وتشغيل الريلاي/ليد

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

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


 

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

code Arduino sim900 receive/make/disconnect call and turn on and off LED



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

const String phone="+212311111111"; 
String ComingCall; 
String IDcaller;

void setup(){
ComingCall.reserve(200); 
phone.reserve(20);
  y=1;
  
  pinMode(Relay,OUTPUT);
  pinMode(Led,OUTPUT);
  digitalWrite(Relay,HIGH);
  digitalWrite(Led,HIGH);

  Serial.begin(9600);
  SIM900.begin(9600);
  delay(100);
  SIM900.write("AT\r");// because of SIM800L autobounding mode
  delay(100);
  SIM900.write("AT+IPR=9600\r");
  delay(100);
  SIM900.write("AT+CMGF=1\r");
  delay(500);
  SIM900.write("AT+CNMI=2,2,0,0,0\r");
  delay(100);
  Serial.print(SIM900.readString());
  SIM900.write("AT+CLIP=1\r\n");
  delay(100);
}

void loop(){
while (SIM900.available()) {
               ComingCall=SIM900.readStringUntil('\n');}        //الحصول على قرائة السيم عن طريق الاردوينو

// عند الاتصال يشغل الريلاي و اللاد 
if(ComingCall.indexOf("CLIP:")>0){
          IDcaller=ComingCall.substring(ComingCall.indexOf("+CLIP: ")+8,ComingCall.indexOf("+CLIP: ")+18); //الحصول على رقم هاتف المتصل
          Serial.print("IDcaller=");  
          Serial.println(IDcaller);                         //كتابة رقم هاتف المتصل

if(IDcaller==phone){
          SIM900.write("ATH\r");
           delay(500); 
          Serial.println("IDcaller==phone"); 
           y=!y; 
          Serial.print("y="); 
          Serial.println(y); 
           delay(8000); 
          digitalWrite(Led,y); 
          digitalWrite(Relay,y);
   if (y==0){SIM900.println("ATD +212311111111;");
           delay(10000); SIM900.println("ATH");}
   if (y==1){SIM900.println("ATD +212311111111;"); 
           delay(10000);
          SIM900.println("ATH");
          delay(5000); 
          SIM900.println("ATD +212311111111;"); 
           delay(10000); 
          SIM900.println("ATH");}
        IDcaller=11111;}                               //تصفير السترينغ للخروج من if(IDcaller==phone){..
else{Serial.println("IDcaller =/= phone");}}
}
 






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

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

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

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

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

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








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