يدلّ اختصار GSM على Global System for Mobile Communications: وهو النّظام العامّ للاتّصالات الخليويّة. الاختصار GPRS فيعود إلى General Packet Radio Service
التّطبيقات
تسمح شريحة GSM GPRS باستخدامات مفيدة كما يلي:
- الاتّصال بالإنترنت عبر شبكة GPRS.
- إرسال واستقبال الرّسائل النّصيّة القصيرة SMS.
- إجراء المكالمات الهاتفيّة
إمكانيّاتها تجعلها مناسبة للمشاريع المعتمدة على لوحة الأردوينو، مثل: التّحكم عن بُعد بالتّطبيقات الإلكترونيّة،إرسال رسائل نصيّة SMS لتطبيق ما، استقبال الإشعارات، إرسال رسائل نصيّة إلى هاتفك المحمول عند حدوث حركة في منزلك، استقبال بيانات الحسّاس، وإرسال رسائل SMS لهاتفك المحمول بالبيانات يوميّاً عن حالة الطّقس.
الخصائص
فيما يلي بعض أشهر الخصائص الّتي تتميّز بها الشّريحة:
- ملائمة لجميع لوحات الأردوينو.
- تعتمد نموذج SIM900 من نماذج شركة SIMCOM.
- تتيح رسائل SMS والـ MMS و GPRS، كما تتيح إرسال الأصوات عبر منفذ UART باستخدام أوامر AT.
- تمتلك 12 منفذاً من GPIO، ومنفذَين PWM، و ADC مُدمَج مع الشّريحة.
- يمكنها أن تعمل مع أربعِ نطاقاتٍ من عرض الحزمة وهي: 850، 900، 1800، و1900 ميغا هرتز، لذلك فهي قابلة لأن تعمل مع شبكات 2G في جميع البلدان.
- التّحكم عن طريق أوامر الـ AT.
- تدعم العمل بالزّمن الحقيقيّ (RTC (Real Time Clock ولها على الجهة الخلفيّة حامل لبطاريّة 3V CR1220.
8. تمتلك مقابس للسّماعات والميكروفون (Microphone) لنتمكّن من إجراء المكالمات.
الخطوات الأوّليّة
تحتاج لفهم بعض الجوانب حول بطاقة SIM وتغذية الشّريحة قبل أن تبدأ بالعمل مع نموذج شريحة SIM900 GSM GPRS.
- التغطية الخاصّة بالـ GSM: تأكّد من حصولك على تغطية GSM 850MHz، GSM 900MHz، DCS 1800MHz، أو PCS 1900MHz، ونعني بال GSM الشّبكات المعتمدة على 2G.
- بطاقة SIM مسبّقة الدّفع: نوصي باستخدام بطاقة مسبّقة الدّفع أو بطاقة بباقة غير محدودة الرّسائل النّصيّة SMS بهدف الاختبار؛ لأنّه في حال حدوث خطأ ما سيؤدّي ذلك لدفع فاتورة ضخمة عند إرسال مئات الرّسائل الخاطئة أثناء التّجريب.
وتَستخدِم هذه الشّريحة حجم البطاقة الأصليّ وليس حجم المايكرو أو النّانو، وعند وجود هذه الأحجام يجب الحصول على محوِّل حجم البطاقة.
إيقاف تفعيل رمز التّعريف
نحتاج لإيقاف تفعيل رمز التّعريف حتّى نتمكّن من استخدام البطاقة مع الشّريحة، والطّريقة الأسهل للقيام بذلك هي الدّخول إلى إعدادات بطاقة الـ SIM ضمن الهاتف الذّكي وإيقاف تفعيل الرّمز الموجود في إعدادات الأمان، وذلك باتباع الخطوات التّالية:
Settings> advanced settings >security>SIM lock
ثمّ نقوم بإيقاف تفعيل رمز البطاقة.
اختيار التّغذية الصّحيحة
تملك الشّريحة مقبساً للتيّار المستمرّ للتّزويد بالطّاقة، ويوجد مفتاح تبديل بجانب مقبس الطّّاقة لتحديد مصدر الطّاقة، كما يوجد سهم بجانب مفتاح التّبديل يشير إلى موقع التّبديل لاستخدام مصدر طاقة خارجيّ، حرّك مفتاح التّبديل لتتمكّن من استخدام مصدر الطّاقة الخارجيّ.
نستخدم لتشغيل الشّريحة مصدر طاقة 5V الّذي يوفّر تيّاراً مقداره 2A، كما يمكن أن تعمل بطاقة مقدارها 9V 1A أو 12V 1A كما هو موضِّح أدناه:
العتاد الصّلب (المكوّنات المادّية) لشريحة SIM900 GSM GPRS
يوضّح الشّكل الجانب الخلفيّ للشّريحة فهو يملك حامل لبطاقة SIM وحامل لبطاريّة 3V CR1220 والّتي تعمل بالزّمن الحقيقيّ.
في الشّكل التّالي تتوضّح المكوّنات الأكثر أهمية للشّريحة.
1. أدخِل بطاقة الـ SIM في المكان المُخصّص لها وتأكّد من قراءة الخطوات السّابقة.
2. تأكّد من توصيل الهوائي.
3. تأكّد من توصيل غطاء الجمبر Jumper على المنفذ التّسلسليّ أثناء استخدام البرامج التسلسليّة كما موضّح أدناه.
4. قم بإمداد الشّريحة بمصدر طاقة خارجي بجهد قيمته 5V، وتأكد من تحديد مصدر الطّاقة مع مفتاح التّبديل الموجود بجوار مقبس التيّار المستمرّ.
5. لتشغيل وإطفاء الشّريحة اضغط على مفتاح التّشغيل لمدّة ثانيتين.
6. يضيء مؤشر الـLED بعد ذلك، ثُم يومض الـ LED الخاصّ بـNetLight كل 800 ميلي ثانية حتّى يجد الشّبكة وعندما يجدها يومض هذا الـ LED لمدّة 3 ثوانٍ.
ملاحظة: يمكنك تشغيل الشّريحة تلقائيّاً عبر البرنامج كما هو موضّح في قسم التّشغيل التّلقائي الآتي لاحقاً.
7. اختبار الشّريحة إن كانت تعمل بشكل صحيح عن طريق إرسال أوامر الـAT إلى بيئة برمجة الأردوينو باستخدام
مبرمجة FTDI كما ستظهر لاحقاً.
أوامر الـ AT الخاصة بـ SIM900
– نستخدم لضبط الـ SIM على نمط الكتابة: AT+CMGF=1\r.
– لإرسال رسالة SMS إلى الرقم: AT+CMGS=PHONE_NUMBER بصيغته الدّوليّة.
– قراءة أول رسالة من الصّندوق الوارد: AT+CMGR=1\r.
– قراءة ثاني رسالة من الصّندوق الوارد: AT+CMGR=2\r.
– قراءة جميع الرّسائل: AT+CMGR=ALL\r.
– الاتّصال برقم ما: ATDP+ PHONE_NUMBER بصيغته الدّوليّة.
– تعليق مكالمة: ATH.
– استقبال المكالمات: ATA.
اختبار الشّريحة مع مبرمجة FTDI
لمعرفة إن كان كلّ شيء يعمل بشكل صحيح، يمكنك اختبار الشّريحة عن طريق إرسال أوامر AT من شاشة الـ serial في بيئة البرمجة الخاصّة بالأردوينو، للقيام بذلك تحتاج مبرمجة FTDI.
1. صِلْ المبرمجة مع شريحة GSM كما في الشّكل.
2. افتح بيئة البرمجة الخاصّة بالأردوينو واختر منفذ COM.
3. افتح شاشة الـ Serial.
4. اجعل معدّل البود 19200 و تكون هذه القيمة افتراضية بإعدادات الشّريحة، واختر خيار Carriage return، واكتب AT بالمستطيل المُشار إليه بالخط الأحمر ثمّ اضغط enter.
5. تستجيب الشّريحة بـ ok إذا كان كلّ شيء يعمل بشكل صحيح.
ربط شيلد SIM900 GSM GPRS مع لوحة التّطوير الأردوينو
نقوم بالوصل كما هو مبيّن في الرّسم التّخطيطيّ التّالي:
إرسال رسالة
يلزمنا رفع الكود البرمجي الآتي حتّى نقوم بإرسال رسالة نصيّة:
الكود البرمجيّ1 الخاصّ بإرسال الرّسالة: للتحميل اضغط هنا
بدأنا في هذا الكود بتضمين مكتبة SoftwareSerial.h وتعريف منفذ تسلسليّ برمجيّ على الأطراف 7 و8 (حيثُ يتمُّ تخصيص الطّرف ذي الرقم 7 للاستقبال (RX)، والطّرف ذي الرّقم8 للإرسال (TX)).
<include <SoftwareSerial.h#
;(SoftwareSerial SIM900(7, 8)
أمّا تابع ()sendSMS عُرِّف لإرسال الرّسالة النّصيّة، ويَستخدِم هذا التّابع أوامر ال AT
(اAT+CMGF=1\rو AT+CMGS) يجب تغيير رقم المتلقّي؛ فنستبدل بإشارات “+” رقم الهاتف الخاصّ بالمتلقّي على أن يكون بصيغتهالدّوليّة.
;(“”++++++++++++++”\)=SIM900.println(“AT + CMGS
بعد ذلك نستطيع تعديل نص الرّسالة كما هو موضّح تالياً:
(“SIM900.println(“Message example from Arduino Uno
قراءة الرّسالة المُستلمة
لقراءة الرّسائل المُستَلمة، نقوم برفع الكود البرمجيّ التّالي إلى لوحة التّطوير الأردوينو، بعد ذلك ننتظر مدّة 20 ثانية يتمّ خلالها تأسيس الاتّصال، ثمَّ نختبر المقطع البرمجيّ بإرسال رسالة إلى رقم الهاتف الخاصّ بشريحة الاتّصال الموجودة ضمن الشيلد، وتُعرَض الرّسالة على شاشة السّيريال الخاصّة ببرنامج الأردوينو.
الكود البرمجيّ الخاصّ بقراءة الرّسائل المُستلمة: للتحميل اضغط هنا
كما ونقوم خلال هذا الكود بضبط الشّيلد لإرسال بيانات الرّسالة إلى خرج المنفذ التّسلسليّ:(“SIM900.print(“AT+CNMI=2,2,0,0,0\r
ثمّ نخزّن محارف الرِّسالة بمتحوِّل اسمه incoming_char، وتكون القراءة باستخدام تابع SIM900.read().
إجراء مكالمة
نقوم برفع الكود البرمجيّ الآتي كما في السّابق إلى لوحة التّطوير الأردوينو:
الكود البرمجيّ الخاصّ بإجراء مكالمة: للتحميل اضغط هنا
علينا استخدام تابع call Someone الّذي يستخدم أمر الـATD
(“;SIM900.println(“ATD + +XXXXXXXXX
حيث نستبدل بالإشارات الحمراء “X”رقم الهاتف الذّي نريد الاتّصال به، ونقوم بوصل السّماعات والميكروفون لإتمام الاتّصال، ويبين هذا المثال أنّ الاتّصال يبدأ بعد 30 ثانية باستخدام أمر ATH.
(“SIM900.println(“ATH
وتعليق الاتّصال بعد 30 ثانية ليس بالأمر المفيد، لكنّه مناسب لهذا المثال، حيث نستخدم أمر ATH عند تشغيل الحدث،فعندما نضغط زر التّشغيل الخاصّ بلوحة التّطوير الأردوينو يتمّ إرسال الأمر، وتبدأ المكالمة.
الرّد على المكالمات:
يُستخدَم الكود البرمجيّ الآتي للرَّد على المكالمات الجارية.
الكود البرمجيّ الخاصّ بالرّد على المكالمات: للتحميل اضغط هنا
فعندما يتّصل شخص ما برقم الـ SIM900؛ فإنّه يرسل رسالة تقول “RING” ولمعرفة إن كان هناك شخص قام بالاتّصال بك، انتظر الرّسالة الواردة من SIM900، وقارن فيما إذا كانت RING، إن كانت RING قم بإرسال الأمر ATA للرّد على الهاتف.
التّشغيل التلقائيّ للشيلد
نستطيع استبدال التّشغيل اليدويّ بالضّغط على مفتاح التّشغيل الخاصّ بالشّيلد بتشغيل تلقائيّ من خلال البرمجة.
1. نحتاج إلى لِحام وصلات الـR13 الموجودة على الشّيلد كما موضّح بالتّظليل الأحمر في الشّكل التّالي:
2. نصل الطرف D9 الخاص بالشيلد مع الطرف D9 على الأردوينو كما موضَّح في الشكل التخطيطي التالي:
3. نضيف المقطع البرمجيّ الآتي ضمن تابع setup ()، وهذا يقابل الضّغط على زر تشغيل الشّيلد.
;(digitalWrite(9, HIGH
;(delay(1000
;(digitalWrite(9, LOW
;(delay(5000
اكتشاف الأخطاء وإصلاحها
- في حال عدم استجابة الشّيلد مع ok
تأكّد من وصلات TX RX & مع الأردوينو، وأعد المحاولة مع تغيير أطراف TX و RX، وأيضاً تأكّد من
اختيارك المنفذ التّسلسليّ البرمجيّ من خلال وضع غطاء الجمبر في المكان المناسب كما هو مبيّن في الشّكل
- في حال عدم ظهور الرّسائل على لوحة الإظهار الخاصّة ببرنامج الأردوينو:
لنتمكّن من رؤية الرّسائل على شاشة الإظهار هذه يجب أن يكون معدّل البود (وهو معدّل نقل المعلومات في قناة الاتّصال)( مثلاً هنا معدّل البود هو19600 أي أنّ المنفذ التسلسلي قادر على نقل 19600 بت في الثانية كحدّ أقصى) للمنفذ التّسلسليّ الخاصّ بالشّيلد نفسه للمنفذ التّسلسليّ للأردوينو، وافتراضيّاً إنّ معدّل البود هو 19600 للشّيلد المستخدم، بالتّالي نضبط المنفذ الخاصّ بالأردوينو على هذه القيمة، في حال أردنا تغيير معدّل البود الخاص بالشّيلد يمكننا استخدام الأمر التّالي بإرسال AT.
AT+IPR=1920