وحدة تحكم SMS على أساس SIM800L

وحدة تحكم SMS على أساس SIM800L

SIM800L V2.0 GSM/GPRS عبارة عن وحدة GSM/GPRS رباعية النطاق متوافقة مع Arduino. يتم استخدام الوحدة لتنفيذ وظائف GSM (المكالمات والرسائل النصية القصيرة) وGPRS. ميزة هذه الوحدة هي واجهة TTL، التي لديها جهد 5 فولت، مما يسمح لك بتوصيلها مباشرة إلى Arduino أو أي نظام آخر بجهد 5 فولت. تتطلب معظم وحدات GSM/GPRS الموجودة في السوق اتصالات منظم أو تحويل المستوى، بينما في SIM800L V.2 لا يتطلب GSM/GPRS دوائر تحويل إضافية لمستوى الواجهة.

لنعطي مثالاً لمشروع يستخدم SIM800L V.2 GSM/GPRS. الهدف من المشروع هو التحكم في المفاتيح باستخدام وحدة تحكم SMS. يمكنك بسهولة تشغيل وإيقاف معظم الأجهزة المنزلية في المنزل، مثل اللاما والمروحة وما إلى ذلك.

خصائص وحدة SIM800L V.2 GSM/GPRS


فيما يلي جميع الخصائص التقنية لوحدة SIM800L V.2 GSM/GPRS:
  • واجهة تسلسلية TTL متوافقة مع وحدات التحكم الدقيقة المتوافقة مع Arduino 3.3V و5V.
  • تحتوي وحدة SIM800L على واجهة تسلسلية TTL.
  • قابس توصيل الهوائي.
  • دعم الشبكة: أربعة نطاقات 850/900/1800/1900 ميجاهرتز، قادرة على إجراء المكالمات والرسائل النصية القصيرة ونقل البيانات مع تقليل استهلاك البطارية بشكل كبير.
  • واجهة VDD TTL UART، حتى تتمكن من توصيل MCU مباشرة مثل 51MCU أو ARM أو MSP430.يتم استخدام قابس VDD لمطابقة جهد TTL.
  • الموديل: سيمكوم SIM800L
  • جهد التشغيل: من 3.7 فولت إلى 5 فولت؛
  • الأبعاد: 40 مم × 28 مم × 3 مم
  • جي بي آر إس متعدد الفتحات فئة 12/10
  • فئة خدمة حزم GPRS ب
  • يتوافق مع مرحلة GSM 2/2+
  • الفئة 4 (2 وات @ 850/900 ميجاهرتز)
  • الفئة 1 (1 وات @ 1800/1900 ميجاهرتز)


المواد اللازمة


وحدة تحكم SMS على أساس SIM800L


انك سوف تحتاج:


1. وحدة SIM800L V.2 GSM/GPRS.
2. اردوينو أونو.
3. 4 قناة 5V وحدة التتابع.
4. الأسلاك - لاعبا.
5. مصدر الطاقة 5 فولت.
(روابط نشطة للمتجر للشراء)

التجميع والتكوين


وحدة تحكم SMS على أساس SIM800L


بمجرد توصيل جميع المكونات، قم بإنشاء برنامج ثم قم بتحميله على Arduino الخاص بك. لكن عليك أولاً تثبيت مكتبة GPRS، والتي يمكنك تنزيلها:

gprs.zip [28.02 كيلو بايت] (التنزيلات: 887)


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


وحدة تحكم SMS على أساس SIM800L


بمجرد توصيل بطاقة SIM800L ووحدة الترحيل ذات 4 قنوات وArduino بجهاز الكمبيوتر الخاص بك، أدخل الرمز أدناه وبذلك تكون قد انتهيت.



#يشمل 

#يشمل

#تعريف المهلة 5000

#تعريف المستوى المنخفض النشط

#تعريف قبالة عالية



ترحيل البايت[] = {A0,A1,A2,A3};

بايت StatRelay[4];

رقم برتقالي للحرف[20];

شار الخط الحالي[500] = "";

int currentLineIndex = 0;

bool nextLineIsMessage = false;

سلسلة الرد رقم = "089510863958"؛

جي بي آر إس جي بي آر إس.



الإعداد باطل() {

ل(int i=0;i < 4;i++) {

pinMode(Relay[i] , OUTPUT);

الكتابة الرقمية(Relay[i], MATI);

StatRelay[i] = MATI;

}



Serial.begin(9600);

بينما(!المسلسل);

Serial.println("تنشيط SIM800L V2 >>> قراءة الرسائل القصيرة تلقائيًا");

gprs.preInit();

تأخير (1000)؛

بينما (0!= gprs.init()) {

تأخير (1000)؛

Serial.print ("init errorrn")؛

}



// إدارة الرسالة إلى الوضع ASCII

إذا (0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1rn", "OK, TIMEOUT)) {

خطأ ("خطأ: CNMI")؛

يعود؛

}

// قراءة الرسائل القصيرة الواردة

if (0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0rn", "OK, TIMEOUT)) {

خطأ ("خطأ: CNMI")؛

يعود؛

}

int pjg = ResponseNumber. length() + 1;

buffNumber[pjg];

ResponseNumber.toCharArray(buffNumber,pjg);

Serial.print("أرسل الرد إلى الرقم =>");

Serial.println(buffNumber);

Serial.println("تم التهيئة");

serial.println ("======================================================= ========================================================================================

}



حلقة فارغة() {

// تغيير حالة التتابع ON / OFF

ل(int i=0;i < 4;i++) {

digitalWrite(Relay[i], StatRelay[i]);

}



// إذا كانت هناك بيانات إدخال من SIM800

إذا (gprs.serialSIM800.available()) {

char lastCharRead = gprs.serialSIM800.read();



// احفظ جميع البيانات على lastCharRead، ثم إذا كان هناك r أو n، كإشارة نهائية للرسالة الواردة

إذا (lastCharRead == 'r' || lastCharRead == 'n') {

String lastLine = String(currentLine);



// إذا كانت الرسالة الأخيرة +CMT تشير إلى وصول رسالة جديدة

إذا (lastLine.startsWith("+CMT:")) {

Serial.println(lastLine);

nextLineIsMessage = true;

} وإلا إذا (lastLine. length() > 0) {

إذا (التاليLineIsMessage) {

Serial.println(lastLine);



// ========================================================================================= ==== =========== وظيفة وحدة التحكم في التتابع



//تتابع 1 تحكم



إذا (lastLine.indexOf("Relay 1 ON") >= 0) {

StatRelay[0] = AKTIF;

Serial.print("رد====>>>>");

Serial.println("حالة التتابع 1 نشطة");

gprs.sendSMS(buffNumber, "Relay 1 Status Active");

}



وإلا إذا (lastLine.indexOf("Relay 1 OFF") >= 0) {

StatRelay[0] = MATI;

Serial.print("رد====>>>>");

Serial.println("حالة التتابع 1 معطلة");

gprs.sendSMS(buffNumber, "حالة التتابع 1 معطلة");

}



//تتابع 2 تحكم



إذا (lastLine.indexOf("Relay 2 ON") >= 0) {

StatRelay[1] = AKTIF;

Serial.print("رد====>>>>");

Serial.println("حالة التتابع 2 نشطة");

gprs.sendSMS(buffNumber, "Relay 2 Status Active");

}

وإلا إذا (lastLine.indexOf("Relay 2 OFF") >= 0) {

StatRelay[1] = MATI;

Serial.print("رد====>>>>");

Serial.println("حالة التتابع 2 معطلة");

gprs.sendSMS(buffNumber, "Relay 2 Status Off");

}



//تتابع 3 تحكم

إذا (lastLine.indexOf("Relay 3 ON") >= 0) {

StatRelay[2] = AKTIF;

Serial.print("رد====>>>>");

Serial.println("حالة التتابع 3 نشطة");

gprs.sendSMS(buffNumber, "Relay 3 Status Active");

}

وإلا إذا (lastLine.indexOf("Relay 3 OFF") >= 0) {

StatRelay[2] = MATI;

Serial.print("رد====>>>>");

Serial.println("حالة التتابع 3 معطلة");

gprs.sendSMS(buffNumber, "Relay 3 Status Off");

}



//تتابع 4 تحكم

إذا (lastLine.indexOf("Relay 4 ON") >= 0) {

StatRelay[3] = AKTIF;

Serial.print("رد====>>>>");

Serial.println("حالة التتابع 4 نشطة");

gprs.sendSMS(buffNumber, "Relay 1 Status Active");

}

وإلا إذا (lastLine.indexOf("Relay 4 OFF") >= 0) {

StatRelay[3] = MATI;

Serial.print("رد====>>>>");

Serial.println("حالة التتابع 4 معطلة");

gprs.sendSMS(buffNumber, "Relay 4 Status Off");

}

nextLineIsMessage = false;

}



// ========================================================================================= ==== ===========>>



}

// امسح مصفوفة الأحرف للسطر التالي من القراءة

من أجل ( int i = 0; i < sizeof(currentLine); ++i ) {

currentLine[i] = (char)0;

}

currentLineIndex = 0;

}

آخر {

currentLine[currentLineIndex++] = lastCharRead;

}

}

}



فحص الجهاز


وحدة تحكم SMS على أساس SIM800L


تعمل الأداة عن طريق إرسال رسالة نصية قصيرة إلى SIM800L بتسلسل محدد من الأحرف. على سبيل المثال، لتشغيل التتابع 1، استخدم الأمر "Relay 1 ON"، ولإيقاف تشغيله، استخدم الأمر "Relay 1 OFF". بالنسبة للمرحلات المتبقية، تكون الأوامر هي نفسها تقريبًا، باستثناء الرقم التسلسلي لكل مرحل تريد التأثير عليه. بعد إرسال الرسالة تلقائيًا، سترسل بطاقة SIM800 ردًا على شكل رسالة حول حالة كل بطاقة SIM.

فيديو لتجميع وتكوين واختبار الجهاز



المقال الأصلي باللغة الإنجليزية
عد
تعليق
  • ربطة القوسيبتسميضحكاحمر خدودمبتسماسترخاء استرخاءابتسامة متكلفة
    عيون القلبتقبيل القلبالتقبيل و العيون مغمضةمسحمرتاحراضيابتسامة
    غمزةاللسان الى الخارج وعين تغمزملجوم اللسان مغمض العينينابتسامة عريضةتقبيلstuck_out_tongueنائم
    قلقعابسحزينفتح الفمكشرمشوشصمت
    بدون تعبيرغير مستمتعSweat_smileيعرقبخيبة أمل_مرتاحالمرهقسلبي
    خائب الأملمرتبكخشيةعرق باردالمثابرةيبكيتنهد
    مرحمندهشتصرخوجه متعبغاضبغضبانتصار
    نعسانيمقناعنظارة شمسيهdizzy_faceعفريتsmile_imp
    محايد_faceno_mouthالبريء
3+ثلاثة=
التعليقات (4)
  1. qieeq
    #1 qieeq ضيوف 26 أغسطس 2017 الساعة 23:50
    0
    رائع! كما يقولون، كل شيء عبقري بسيط. لم أضطر حتى إلى شراء أي شيء، ربما كل شخص لديه كومة من هذه القمامة في المنزل
  2. اليكسي
    #2 اليكسي ضيوف 16 ديسمبر 2017 الساعة 16:53
    0
    لا يعمل. عند التجميع يقول "Arduino: 1.8.5 Hourly Build 2017/08/28 06:33 (Windows 7)، اللوحة:"Arduino/Genuino Uno"
    1. دينيس
      #3 دينيس ضيوف 17 ديسمبر 2017 08:11
      0
      تحتاج إلى استخدام مسار بدون أحرف روسية للمشروع.
  3. أندريه
    #4 أندريه ضيوف 10 فبراير 2019 الساعة 11:54
    2
    هناك الكثير من الأخطاء في الرسم. لن ينجح الأمر.