تُستخدم وحدة GSM في العديد من أجهزة الاتصالات التي تعتمد على تقنية GSM (النظام العالمي للاتصالات المتنقلة). يتم استخدامه للتفاعل مع شبكة GSM باستخدام جهاز كمبيوتر. لا تفهم وحدة GSM إلا أوامر AT ، ويمكنها الاستجابة وفقًا لذلك. الأمر الأساسي هو "AT" ، إذا كان GSM يستجيب بشكل جيد ، فإنه يعمل بشكل جيد وإلا فإنه يستجيب بـ "ERROR". هناك العديد من أوامر AT مثل ATA للرد على مكالمة ، ATD لطلب مكالمة ، AT + CMGR لقراءة الرسالة ، AT + CMGS لإرسال الرسائل القصيرة إلخ.) ، مثل "AT + CMGS \ r". يمكننا استخدام وحدة GSM باستخدام هذه الأوامر.
ربط GSM مع 8051
بدلاً من استخدام جهاز الكمبيوتر ، يمكننا استخدام ميكروكنترولر للتفاعل مع وحدة GSM وشاشة LCD للحصول على استجابة من وحدة GSM. لذلك سنقوم بواجهة GSM مع متحكم 8051 (AT89S52). من السهل جدًا واجهة GSM مع 8051 ، نحتاج فقط إلى إرسال أوامر AT من وحدة تحكم دقيقة واستقبال استجابة من GSM وعرضها على شاشة LCD. يمكننا استخدام المنفذ التسلسلي لمتحكم دقيق للتواصل مع GSM ، يعني استخدام PIN 10 (RXD) و 11 (TXD).
نحتاج أولاً إلى توصيل LCD بـ 8051 ، يمكنك معرفة ذلك من هنا: واجهة LCD مع متحكم 8051. ثم نحتاج إلى توصيل وحدة GSM بـ 8051 ، والآن يجب أن نولي بعض الاهتمام. تحتاج أولاً إلى التحقق مما إذا كانت وحدة GSM لديك قادرة على العمل في منطق TTL أو أنها تعمل فقط مع RS232. بشكل أساسي ، إذا كانت الوحدة الخاصة بك تحتوي على دبابيس RX و TX (مع GND) على اللوحة ، فيمكنها العمل على منطق TTL. وإذا لم يكن به أي دبابيس RX ، TX ولديه فقط منفذ RS232 (منفذ تسلسلي مع 9) ، فأنت بحاجة إلى استخدام MAX232 IC لتوصيل المنفذ التسلسلي بالمتحكم الدقيق. في الأساس MAX232تستخدم لتحويل البيانات التسلسلية إلى منطق TTL لأن Microcontroller لا يعمل إلا على منطق TTL ولكن إذا كانت وحدة GSM تحتوي على دبابيس RX و TX ، فلن تحتاج إلى استخدام MAX232 أو أي محول تسلسلي ، يمكنك توصيل RX من GSM إلى TX (PIN 11) من 8051 و TX من GSM إلى RX (PIN 10) من 8051 في حالتنا لقد استخدمت وحدة SIM900A ولديها دبابيس RX و TX لذا لم أستخدم MAX232.
يظهر الرسم التخطيطي لدائرة اتصال GSM مع متحكم AT89S52 في الشكل أعلاه. الآن بعد الاتصال ، نحتاج فقط إلى كتابة برنامج لإرسال أوامر AT إلى GSM وتلقي استجابتها على شاشة LCD. هناك العديد من أوامر AT كما هو موضح أعلاه ، ولكن نطاق هذه المقالة هو فقط واجهة GSM مع 8051 ، لذلك سنقوم فقط بإرسال الأمر "AT" متبوعًا بـ "\ r" (0D في ست عشري). سيعطينا هذا الرد "حسنًا". لكن يمكنك تمديد هذا البرنامج لاستخدام جميع مرافق GSM.
شرح الكود
إلى جانب جميع الوظائف المتعلقة بشاشات الكريستال السائل ، استخدمنا هنا المنفذ التسلسلي وسجل وضع المؤقت (TMOD). يمكنك التعرف على وظائف LCD والرموز الأخرى من خلال الانتقال إلى قسم المشاريع 8051 ، وهنا أشرح وظائف التعليمات البرمجية المتعلقة بالاتصال التسلسلي:
وظيفة GSM_init ():
تستخدم هذه الوظيفة لضبط Baudrate للميكروكونترولر. البودرات ليست سوى وحدات البت / الثانية المرسلة أو المستلمة. ونحتاج إلى مطابقة معدل البث بالباود 8051 مع معدل الباود لوحدة GSM أي 9600. لقد استخدمنا Timer 1 في الوضع 2 (وضع إعادة التحميل التلقائي 8 بت) عن طريق ضبط سجل TMOD على 0X20 والبايت العالي من Timer 1 (TH1) إلى 0XFD للحصول على معدل البث بالباود 9600. كما يتم استخدام سجل SCON لضبط وضع الاتصال التسلسلي ، وقد استخدمنا Mode1 (8 بت UART) مع تمكين الاستلام.
وظيفة GSM_write:
يتم استخدام SBUF (سجل وظيفة خاصة للمخزن التسلسلي) للتواصل التسلسلي ، كلما أردنا إرسال أي بايت إلى جهاز تسلسلي ، نضع هذا البايت في سجل SBUF ، عندما يتم إرسال البايت الكامل ، يتم تعيين TI بت بواسطة الأجهزة. نحن بحاجة إلى إعادة تعيينه لإرسال البايت التالي. إنها علامة تشير إلى أنه تم إرسال البايت بنجاح. TI هو الجزء الثاني من سجل SCON. لقد أرسلنا "AT" باستخدام هذه الوظيفة.
وظيفة GSM_read:
تمامًا مثل الإرسال ، عندما نتلقى أي بايت من جهاز خارجي يتم وضع البايت في سجل SBUF ، نحتاج فقط إلى قراءته. وكلما تم استلام البايت الكامل ، يتم تعيين بت RI بواسطة الأجهزة. نحن بحاجة إلى إعادة تعيينه لتلقي البايت التالي. RI هو الجزء الأول من سجل SCON. لقد قرأنا الرد "موافق" باستخدام هذه الوظيفة.