وحدة تحكم 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 ميجاهرتز)
المواد اللازمة
انك سوف تحتاج:
1. وحدة SIM800L V.2 GSM/GPRS.
2. اردوينو أونو.
3. 4 قناة 5V وحدة التتابع.
4. الأسلاك - لاعبا.
5. مصدر الطاقة 5 فولت.
(روابط نشطة للمتجر للشراء)
التجميع والتكوين
بمجرد توصيل جميع المكونات، قم بإنشاء برنامج ثم قم بتحميله على Arduino الخاص بك. لكن عليك أولاً تثبيت مكتبة GPRS، والتي يمكنك تنزيلها:
gprs.zip
[28.02 كيلو بايت] (التنزيلات: 887)
كود البرنامج لاردوينو
بمجرد توصيل بطاقة 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;
}
}
}
فحص الجهاز
تعمل الأداة عن طريق إرسال رسالة نصية قصيرة إلى SIM800L بتسلسل محدد من الأحرف. على سبيل المثال، لتشغيل التتابع 1، استخدم الأمر "Relay 1 ON"، ولإيقاف تشغيله، استخدم الأمر "Relay 1 OFF". بالنسبة للمرحلات المتبقية، تكون الأوامر هي نفسها تقريبًا، باستثناء الرقم التسلسلي لكل مرحل تريد التأثير عليه. بعد إرسال الرسالة تلقائيًا، سترسل بطاقة SIM800 ردًا على شكل رسالة حول حالة كل بطاقة SIM.
فيديو لتجميع وتكوين واختبار الجهاز
المقال الأصلي باللغة الإنجليزية
فصول رئيسية مماثلة
مثيرة للاهتمام بشكل خاص
التعليقات (4)