التحكم بالإضاءة بواسطة الرسائل النصية SMS


Control lamp via SMS thumbnail

مقدمة

سنقوم في هذه التجربة باستخدام وحدة الاتصال GSM مع الأردوينو للتحكم بالأجهزة الكهربائية بواسطة الرسائل النصية SMS.

Global System for Mobile (GSM):  النظام الموحد للاتصالات المتنقلة

Short Message Service (SMS): خدمة الرسائل القصيرة

الأدوات المستخدمة

Screen Shot 1439 03 28 at 7.57.12 PM

الأداة العدد ملاحظات
اردوينو أونو 1
وحدة الاتصال SIM900 1 ويمكن استخدام SIM900A
مرحل (Relay) 1
لوحة توصيل 1
أسلاك توصيل حسب الحاجة

الجزء النظري

SMS controlled electrical relay device using arduino

  1. وحدة الاتصال GSM متصلة بالأردوينو وبداخل الوحدة يوجد بطاقة SIM
  2. وحدة تعريف المشترك: (Subscriber Identity Module (SIM
  3. الريلي يتم توصيله بالأردوينو والجزء الآخر يتم توصيلهم بالأدوات الكهربائية ( فائدة الريلي هي تمكيننا من التحكم بالأجهزة ذات فرق الجهد العالي باستخدام الأردوينو ذو فرق الجهد الضعيف).
  4. عند إرسال رسائل نصية للوحدة يتم قراءة هذه الرسالة بواسطة الوحدة وتنتقل للأردوينو.
  5. بحسب الرسالة المرسلة يتم التحكم بالريلي لتشغيل وايقاف الأجهزة.
  6. يمكن فحص حالة الريلي عبر إرسال رسالة نصية للوحدة ومن ثم ستقوم الوحدة بإرسال رسالة للجوال بحالة الريلي.

للمزيد من العلومات حول وحدة الاتصال وكيفية عملها وإعدادها يرجى زيارة الرابط التالي:

أساسيات استخدام GSM مع الأردوينو

SMS to on and off

خطوات التوصيل

اتبع الصورة التالية لتتمكن من توصيل الدائرة

Untitled Sketch bb2

*ملاحظات:

إذا كنت تستخدم لوحة أردوينو غير الأونو، الميغا أو النانو يجب التأكد من أن RX و TX لهم نفس مقدار فرق الجهد لوحدة الاتصال.

بعض وحدات الاتصال قد تختلف عن المستخدمة في التجربة. كل ما عليك هو إيجاد المنافذ الأربعة التالية [Tx, Rx, Vcc, GND] وتوصيلها بالأردوينو كما في الصورة.

في وحدة الاتصال sim900a المستخدمة في التجربة هنا نجد المنافذ المهمة ونقوم بتوصيلها:

gsm mini sim900A 1

نقوم بتوصيل المرسل 5VT مع المنفذ 9 في الاردوينو

نقوم بتوصيل المستقبل 5VR  مع المنفذ 10 في الاردوينو

نقوم بتوصيل GND مع GNG

نقوم بتوصيل Vcc مع 5v

الكود البرمجي

نحتاج إلى تحميل المكتبة (softwareserial.h) ليعمل الكود بدون أخطاء

قم بنسخ الكود ولصقه في برنامج الأردوينو وشاهد إنجازك !

الكود البرمجي

 

// Code is modified by https://MyElectronicslab.com original code written by RNL
#include <SoftwareSerial.h>
 
// Configure software serial port
SoftwareSerial SIM900(7, 8);
 
// Variable to store text message
String textMessage;
 
// Create a variable to store Lamp state
String lampState = "HIGH";
 
// Relay connected to pin 3
const int relay = 3;
 
void setup() {
  // Automatically turn on the shield
  digitalWrite(9, HIGH);
  delay(1000);
  digitalWrite(9, LOW);
  delay(5000);
  
  // Set relay as OUTPUT
  pinMode(relay, OUTPUT);
 
  // By default the relay is off
  digitalWrite(relay, HIGH);
  
  // Initializing serial commmunication
  Serial.begin(19200); 
  SIM900.begin(19200);
 
  // Give time to your GSM shield log on to network
  delay(20000);
  Serial.print("SIM900 is ready to send receive sms");
 
  // AT command to set SIM900 to SMS mode
  SIM900.print("AT+CMGF=1\r"); 
  delay(100);
  // Set module to send SMS data to serial out upon receipt 
  SIM900.print("AT+CNMI=2,2,0,0,0\r");
  delay(100);
}
 
void loop(){
  if(SIM900.available()>0){
    textMessage = SIM900.readString();
    Serial.print(textMessage);    
    delay(10);
  } 
  if(textMessage.indexOf("ON")>=0){
    // Turn on relay and save current state
    digitalWrite(relay, LOW);
    lampState = "on";
    Serial.println("Relay set to ON");  
    textMessage = "";   
  }
  if(textMessage.indexOf("OFF")>=0){
    // Turn off relay and save current state
    digitalWrite(relay, HIGH);
    lampState = "off"; 
    Serial.println("Relay set to OFF");
    textMessage = ""; 
  }
  if(textMessage.indexOf("STATE")>=0){
    String message = "Lamp is " + lampState;
    sendSMS(message);
    Serial.println("Lamp state resquest");
    textMessage = "";
  }
}  
 
// Function that sends SMS
void sendSMS(String message){
  // AT command to set SIM900 to SMS mode
  SIM900.print("AT+CMGF=1\r"); 
  delay(100);
 
  // change to your sim900's your phone number
  SIM900.println("AT + CMGS = \"9717768653\""); 
  delay(100);
  // Send the SMS
  SIM900.println(message); 
  delay(100);
 
  // End AT command with a ^Z, ASCII code 26
  SIM900.println((char)26); 
  delay(100);
  SIM900.println();
  // Give module time to send SMS
  delay(5000);  
}

*تذكر تغيير الرقم الموجود بالكود برقم الشريحة المستخدمة داخل الوحدة.

فيديو التجربة

المصدر

مصدر التجربة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *