سنستعرض في هذا الدرس كيف يمكنك صنع نظام أمان لضمان الحماية من المخاطر الممكن حدوثها مثل السرقة أو دخول غرباء للمنزل. سيتم برمجة الأردوينو مع حساس الحركة ووحدة الاتصال اللاسلكي (SIM800L) التي تساعد على الاتصال أو ارسال الرسائل، بحيث يعمل النظام على استكشاف وجود حركة ومن ثم ارسال رسالة نصية إلى هاتف صاحب المنزل.
المواد والأدوات
X1 اردوينو
X1 وحدة SIM800L
X1 حساس الحركة
X1 لوحة تجارب
وحدة SIM800L
وحدة الاتصال اللاسلكي (SIM800L) تساعدك في مراقبة المنزل عن بعد أو تنشيط أي نظام داخل منزلك بمكالمة أو رسائل SMS عبارة عن مودم (GSM) مصغر فيمكن استخدامها لإجراء مهام ارسال أو استقبال الرسائل النصية القصيرة، إجراء مكالمات هاتفية أو استقبالها، الاتصال بالإنترنت من خلال (GPRS) و (TCP / IP)، يمكن استخدامها في عدد كبير من مشاريع إنترنت الأشياء. تحتاج أن تضيف شريحة 2G SIM في منفذ الشريحة لتتمكن من برمجته مع المتحكم حسب متطلبات مشروعك
مؤشر الوميض:
يوجد مؤشر الوميض أعلى الجانب الأيمن على وحدة الاتصال اللاسلكي (SIM800L) يشير إلى حالة شبكتك الخلوية. سيومض بمعدلات مختلفة لإظهار حالة الاتصال بالشبكة:
وميض كل ثانية :الوحدة قيد التشغيل ولكنها لم تتصل بالشبكة الخلوية.
وميض كل ثانيتين: تم تنشيط بيانات (GPRS)
وميض كل ثلاثة ثواني : اتصلت الوحدة بالشبكة الخلوية ويمكنها إرسال / استقبال الاتصال والرسائل القصيرة
منافذ وحدة الاتصال اللاسلكي (SIM800l)
الجدول التالي يوضح وظائف المنافذ
المنفذ في وحدة (SIM 800L) | الوظيفة |
NET | منفذ للحام الهوائي الحلزوني المزود مع الوحدة . |
VCC | منفذ الطاقة للوحدة. من 3.4 فولت إلى 4.4 فولت. و 2أمبير عدم تزويد الوحدة بالطاقة بشكل كافي سيتسبب في عدم عملها بشكل صحيح |
RST (Reset) | RST (إعادة الضبط). سحب الدبوس LOW لمدة 100 مللي ثانية لإجراء إعادة تعيين ثابت. |
RxD (Receiver) | منفذ للاتصال التسلسلي |
TxD (Transmitter) | منفذ للاتصال التسلسلي |
GND | GND |
RING | دبوس مؤشر. يعطي اشارة HIGH افتراضيًا وسينبض LOW لمدة 120 مللي ثانية عند تلقي مكالمة. يمكن أيضًا تهيئته للنبض عند تلقي رسالة نصية قصيرة. |
DTR | لإلغاء وتنشيط وضع السكون حسب الاشارة التي يتم ارسالها له. إشارة HIGH تفعيل وضع السكون، وبالتالي تعطيل الاتصال التسلسلي. اشارة LOW تعطيل وضع السكون وتشغيل الوحدة. |
MIC± | مدخل المايكرفون |
SPK± | مدخل مكبر الصوت |
توصيل الدائرة
قبل توصيل الدائرة عليك التأكد من أن خرج منظم الجهد (DC TO DC buck converter) يساوي 4.4 قد يتسبب زيادة الجهد إلى تلف وحدة الاتصال اللاسلكي (SIM800l)
البرمجة
برمجة هذا المشروع تحتاج إلى كتابة الشفرة البرمجية بلغة (C++)على بيئة التطوير المتكاملة للأردوينو Arduino IDE)) يمكن التعرف على البرنامج أكثر من خلال الرابط
أولا: عليك تحميل مكتبة (SoftwareSerial)
ثانيا: كتابة الأوامر البرمجية التالية
#include <SoftwareSerial.h> SoftwareSerial mySerial(3, 2); int p=7; void setup() { pinMode(p, INPUT); mySerial.begin(9600); delay(1000); } void loop() {int buttonState = digitalRead(7); if (buttonState == HIGH) { delay(1000); mySerial.println("AT"); delay(500); mySerial.println("AT+CMGF=1"); delay(500); mySerial.println("AT+CMGS=\"+966XXXXXXXX\"\r"); delay(500); mySerial.print("Warning! Motion detected!"); delay(500); mySerial.write(26);}}
شرح الشفرة البرمجية (Code)
استدعاء مكتبة (SoftwareSerial)
#include <SoftwareSerial.h>
تعريف منافذ الأردوينو التي تم توصيلها مع منافذ الارسال والاستقبال للاتصال التسلسلي (TX-RX) في وحدة الاتصال اللاسلكي (SIM800l) حيث تم توصيل المنفذ الرقمي 3 مع منفذ الاستقبال (RX) والمنفذ الرقمي 2 مع منفذ الارسال(TX)
SoftwareSerial mySerial(3, 2);
تعريف منافذ الأردوينو الذي تم توصيل منفذ الخرج (Out) في حساس الحركة وهو المنفذ رقم 7
int p=7;
في دالة () void setup نُعرف منافذ الدخل والخرج
كذلك نقوم بتهيئة الاتصال التسلسلي
void setup() { pinMode(p, INPUT); mySerial.begin(9600); delay(1000); }
في دالة void loop () سنعرف متغير يخزن داخله حالة حساس الحركة التي ستم قرأتها من المنفذ رقم 7
ثم نكتب الجملة الشرطية التي تجعل البرنامج ينتظر لمدة ثانية إذا كانت توجد حركة
void loop() {int buttonState = digitalRead(7); if (buttonState == HIGH) { delay(1000);
تحدد بروتوكولات ارتباط الاتصال في بداية الاتصال
mySerial.println("AT"); delay(500);
التشغيل على وضع نص SMS
mySerial.println("AT+CMGF=1"); delay(500);
تحديد الرقم الذي سيتم ارسال الرساله له
mySerial.println("AT+CMGS=\"+9665XXXXXX\"\r"); delay(500);
نص الرسالة الذي سيتم ارسالها في حال وجود حركة
mySerial.print("Warning! Motion detected!"); delay(500);
mySerial.write(26);}}