- المواد المطلوبة
- البرمجيات المستخدمة
- وحدة GSM
- التواصل مع وحدة GSM باستخدام أوامر AT
- رسم تخطيطي لدائرة واجهة وحدة ATMega16 GSM
- إنشاء مشروع ATmega16 باستخدام CodeVision
- الكود والشرح
- بناء المشروع
- قم بتحميل الكود إلى Atmega16
وحدات GSM مثيرة للاهتمام للاستخدام خاصة عندما يتطلب مشروعنا الوصول عن بعد. يمكن أن تتخذ هذه الوحدات جميع الإجراءات التي يمكن أن يقوم بها هاتفنا المحمول العادي ، مثل إجراء / تلقي مكالمة ، وإرسال / استقبال رسائل SMS ، والاتصال بالإنترنت باستخدام GPRS وما إلى ذلك. يمكنك أيضًا توصيل ميكروفون ومكبر صوت عاديين بهذه الوحدة والتحدث على جهازك. مكالمات الجوال. سيؤدي هذا إلى فتح الأبواب أمام الكثير من المشاريع الإبداعية إذا كان من الممكن ربطها بوحدة تحكم دقيقة. ومن ثم في هذا البرنامج التعليمي سوف نتعلم كيف يمكننا ربط وحدة GSM (SIM900A) بوحدة التحكم الدقيقة AVR ATmega16 وسوف نوضح ذلك عن طريق إرسال واستقبال الرسائل باستخدام وحدة GSM.
المواد المطلوبة
- اتميغا 16
- وحدة GSM (SIM900 أو أي وحدة أخرى)
- عرض شاشات الكريستال السائل
- أزرار الضغط
- 10 كيلو مقاومات ، مقياس الجهد
- توصيل الأسلاك
- محول 12 فولت
- مبرمج USBasp
- 10 دبوس كابل FRC
البرمجيات المستخدمة
سوف نستخدم برنامج CodeVisionAVR لكتابة الكود الخاص بنا وبرنامج SinaProg لتحميل الكود الخاص بنا إلى Atmega16 باستخدام مبرمج USBASP
يمكنك تنزيل هذه البرامج من الروابط المحددة:
CodeVisionAVR:
SinaProg:
قبل الدخول في الخطط والرموز ، نتعرف على وحدة GSM وعملها.
وحدة GSM
يمكن استخدام وحدة GSM حتى بدون أي متحكم باستخدام وضع أوامر AT. كما هو موضح أعلاه ، تأتي وحدة GSM مع محول USART والذي يمكن توصيله مباشرة بالكمبيوتر باستخدام وحدة MAX232 أو يمكن استخدام دبابيس Tx و Rx لتوصيله بوحدة تحكم دقيقة. يمكنك أيضًا ملاحظة المسامير الأخرى مثل MIC + و MIC- و SP + و SP- إلخ حيث يمكن توصيل ميكروفون أو مكبر صوت. يمكن تشغيل الوحدة بواسطة محول 12 فولت من خلال مقبس أسطواني عادي.
أدخل بطاقة SIM الخاصة بك في فتحة الوحدة وقم بتشغيلها ، يجب أن تلاحظ تشغيل مؤشر LED للطاقة. انتظر الآن لمدة دقيقة أو نحو ذلك ، وسترى مؤشر LED أحمر (أو أي لون آخر) يومض مرة واحدة كل 3 ثوانٍ. هذا يعني أن الوحدة النمطية الخاصة بك كانت قادرة على إنشاء اتصال ببطاقة SIM الخاصة بك. الآن يمكنك متابعة توصيل الوحدة الخاصة بك بالهاتف أو أي متحكم.
يمكنك بناء العديد من المشاريع الرائعة باستخدام وحدة GSM مثل:
- لوحة الملاحظات اللاسلكية باستخدام GSM و Arduino
- جهاز الرد الآلي على المكالمات باستخدام وحدة Arduino و GSM
- أتمتة المنزل على أساس GSM باستخدام Arduino
- مستشعر PIR ونظام الأمان القائم على GSM
تحقق أيضًا من جميع المشاريع المتعلقة بـ GSM هنا.
التواصل مع وحدة GSM باستخدام أوامر AT
كما قد تكون خمنت ، يمكن لوحدة GSM التواصل من خلال الاتصال التسلسلي ويمكن أن تفهم لغة واحدة فقط وهي " أوامر AT ". أيًا كان ما قد ترغب في إخباره أو طلب وحدة GSM ، يجب أن يكون فقط عبر أوامر AT. على سبيل المثال ، إذا كنت تريد معرفة ما إذا كانت الوحدة النمطية الخاصة بك نشطة. يجب أن تطلب (إرسال) أمرًا مثل "AT" وسترد الوحدة النمطية الخاصة بك بـ "موافق".
يتم شرح أوامر AT هذه بشكل جيد في ورقة البيانات الخاصة بها ويمكن العثور عليها هنا في ورقة البيانات الرسمية الخاصة بها. حسنا! حسنا! إنها ورقة بيانات 271 صفحة وقد تستغرق أيامًا لقراءتها. لذا فقد قدمت لك بعض أوامر AT الأكثر أهمية أدناه حتى تتمكن من تشغيلها قريبًا.
في |
الردود بـ "موافق" للإقرار |
AT + CPIN؟ |
تحقق من جودة الإشارة |
في + COPS؟ |
ابحث عن اسم مزود الخدمة |
ATD96XXXXXXXX ؛ |
استدعاء الرقم المحدد ، ينتهي بفاصلة منقوطة |
في + CNUM |
ابحث عن رقم بطاقة SIM (قد لا يعمل مع بعض بطاقات SIM) |
ATA |
أجب على المكالمة الواردة |
ATH |
شنق المكالمة الواردة الحالية |
AT + COLP |
إظهار رقم المكالمة الواردة |
AT + VTS = (رقم) |
أرسل رقم DTMF. يمكنك استخدام أي رقم على لوحة مفاتيح هاتفك المحمول لـ (رقم) |
AT + CMGR |
AT + CMGR = 1 يقرأ الرسالة في المركز الأول |
AT + CMGD = 1 |
حذف الرسالة في المركز الأول |
AT + CMGDA = "DEL ALL" |
احذف كل الرسائل من بطاقة SIM |
AT + CMGL = "ALL" |
اقرأ كل الرسائل الواردة من بطاقة SIM |
في + CMGF = 1 |
ضبط تكوين الرسائل القصيرة. "1" لوضع النص فقط |
AT + CMGS = "+91 968837XXXX" > نص CircuitDigest
|
لإرسال رسالة نصية إلى رقم معين هنا 968837XXXX. عندما ترى ">" ابدأ بإدخال النص. اضغط على Ctrl + Z لإرسال النص. |
AT + CGATT؟ |
للتحقق من اتصال الإنترنت على بطاقة SIM |
AT + CIPSHUT |
لإغلاق اتصال TCP ، وهذا يعني قطع الاتصال بالإنترنت |
AT + CSTT = "APN" ، "اسم المستخدم" ، "تمرير" |
اتصل بـ GPRS باستخدام APN ومفتاح المرور. يمكن الحصول عليها من مزود الشبكة. |
AT + CIICR |
تحقق مما إذا كانت بطاقة SIM بها حزمة بيانات |
في + CIFSR |
احصل على IP لشبكة SIM |
AT + CIPSTART = "TCP" ، "SERVER IP" ، "PORT" |
يستخدم لتعيين اتصال TCP IP |
في + CIPSEND |
يستخدم هذا الأمر لإرسال البيانات إلى الخادم |
هنا سنستخدم الأمر AT + CMGF و AT + CMGS لإرسال الرسائل.
إذا كنت قد استخدمت وحدة GSM مع Arduino ، أثناء تلقي الرسائل ، يمكنك استخدام الأمر + CMT: لعرض رقم الهاتف المحمول والرسالة النصية على الشاشة التسلسلية. تأتي الرسالة النصية في السطر الثاني كما هو موضح في الصورة.
سنقوم بفحص هذا الأمر + CMT: للتحقق مما إذا كانت الرسالة متاحة أم لا.
رسم تخطيطي لدائرة واجهة وحدة ATMega16 GSM
ستكون الاتصالات على النحو التالي
- Tx و Rx لوحدة GSM إلى Rx (Pin14) و Tx (Pin15) من Atmega16 على التوالي.
- اضغط على الأزرار إلى PD5 (Pin19) و PD6 (Pin20).
- توصيلات LCD:
- RS - PA 0
- R / W - PA1
- EN - PA2
- D4 - PA4
- D5 - PA5
- D6 - PA6
- D7 - PA7
إنشاء مشروع ATmega16 باستخدام CodeVision
بعد تثبيت CodeVisionAVR و SinaProg برامج ، اتبع الخطوات أدناه لإنشاء المشروع وكتابة التعليمات البرمجية:
تم تحميله بالفعل
الخطوة 1. افتح CodeVision انقر فوق ملف -> جديد -> مشروع . سيظهر مربع حوار التأكيد. انقر فوق نعم
الخطوة 2. سيفتح CodeWizard. انقر فوق الخيار الأول أي AT90 ، وانقر فوق موافق.
الخطوة 3: - اختر شريحة الميكروكونترولر الخاصة بك ، هنا سنأخذ Atmega16L كما هو موضح.
الخطوة 4: - انقر فوق USART . اختر استقبال و الارسال عن طريق النقر عليه. كما هو مبين أدناه:
الخطوة 5: - انقر على Alphanumeric LCD وحدد Enable Alphanumeric LCD support .
الخطوة 6: - انقر فوق البرنامج -> إنشاء وحفظ وخروج . الآن ، اكتمل أكثر من نصف عملنا
الخطوة 7: - أنشئ مجلدًا جديدًا على سطح المكتب ، بحيث تظل ملفاتنا في المجلد وإلا فسوف ننتشر على نافذة سطح المكتب بالكامل. قم بتسمية المجلد الخاص بك كما تريد وأقترح استخدام نفس الاسم لحفظ ملفات البرنامج.
سيكون لدينا ثلاثة مربعات حوار واحدة تلو الأخرى لحفظ الملفات.
افعل الشيء نفسه مع مربعي الحوار الآخرين اللذين سيظهران بعد حفظ الأول.
الآن ، مساحة العمل الخاصة بك تبدو هكذا.
اكتمل معظم عملنا بمساعدة المعالج. الآن ، علينا كتابة رمز GSM فقط.
الكود والشرح
يتم إرفاق جميع ملفات الرأس تلقائيًا بعد إنشاء المشروع ، ما عليك سوى تضمين ملف رأس delay.h وإعلان جميع المتغيرات. يتم إعطاء رمز كامل في نهاية هذا البرنامج التعليمي.
#تضمن
قم بعمل وظيفة لتلقي البيانات من سجل UDR. ستعيد هذه الوظيفة البيانات المستلمة.
تم استلام حرف غير موقع (باطل) { while (! (UCSRA & (1 <
تعال إلى حلقة while التي ننشئ فيها عبارتين if ، واحدة لإرسال الرسالة والأخرى للاستلام. زر الإرسال متصل بـ PIND6 من ATmega وزر استقبال الرسائل مع PIND5.
عند الضغط على PIND6 (زر الإرسال) أولاً إذا تم تنفيذ العبارة وسيتم تنفيذ جميع أوامر إرسال الرسالة واحدة تلو الأخرى.
بينما (1) { // lcd_clear () ؛ lcd_putsf ("إرسال-> bttn 1") ؛ lcd_gotoxy (0،1) ؛ lcd_putsf ("تلقي-> زر 2") ؛ إذا (PIND.6 == 1) { lcd_clear () ؛ lcd_gotoxy (0،0) ؛ lcd_putsf ("إرسال رسالة…") ؛ لـ (z = 0؛ cmd_1! = ''؛ z ++) { UDR = cmd_1 ؛ delay_ms (100) ؛ } UDR = ('r') ؛ delay_ms (500) ؛ لـ (z = 0؛ cmd_2! = ''؛ z ++) { UDR = cmd_2 ؛ delay_ms (100) ؛ } …..
إذا تم الضغط على زر Receive message ، فستتحقق الحلقة (b! = '+') من وجود أمر CMT أم لا. إذا كان موجودًا ، فسيتم تنفيذ حلقة while loop الثانية والانتقال إلى السطر الثاني من الأمر وطباعة الرسالة على شاشة LCD واحدة تلو الأخرى.
بينما (PIND.5 == 1) { lcd_clear () ؛ lcd_gotoxy (0،0) ؛ lcd_putsf ("استقبال الرسائل…") ؛ ب = Received_value () ؛ بينما (b! = '+') { b = Received_value () ؛ } ب = Received_value () ؛ إذا (ب == 'C') { b = Received_value () ؛ … ..
تأخذ هذه الحلقة البرنامج إلى السطر الثاني من الأوامر وتخزن الرسالة في المصفوفة.
بينما (b! = 0x0a) { b = Received_value () ؛ } لـ (b = 0؛ b <3؛ b ++) { c = Received_value ()؛ msg = ج ؛ } .. ..
هذه ل حلقة هو لعرض رسالة على LCD.
لـ (z = 0؛ z <3؛ z ++) { a = msg؛ lcd_putchar (أ) ؛ // PRINT IN lcd delay_ms (10) ؛ }
الكود الكامل مع الفيديو التوضيحي موضح أدناه ، والآن علينا بناء مشروعنا.
بناء المشروع
انقر فوق إنشاء رمز المشروع كما هو موضح.
بعد إنشاء المشروع ، يتم إنشاء ملف HEX في Debug-> مجلد Exe والذي يمكن العثور عليه في المجلد الذي قمت بإنشائه مسبقًا لحفظ مشروعك. سنستخدم ملف HEX هذا للتحميل في Atmega16 باستخدام برنامج Sinaprog.
قم بتحميل الكود إلى Atmega16
قم بتوصيل دوائرك وفقًا لمخطط معين لبرنامج Atmega16. قم بتوصيل جانب واحد من كابل FRC بمبرمج USBASP والجانب الآخر سوف يتصل بدبابيس SPI الخاصة بالمتحكم الدقيق كما هو موضح أدناه:
- Pin1 من موصل أنثى FRC -> Pin 6 ، MOSI لـ Atmega16
- دبوس 2 متصل بـ Vcc من atmega16 أي Pin 10
- دبوس 5 متصل بإعادة تعيين atmega16 ie Pin 9
- دبوس 7 متصل بـ SCK من atmega16 ie Pin 8
- دبوس 9 متصل بـ MISO من atmega16 ie Pin 7
- دبوس 8 متصل بـ GND من atmega16 ie Pin 11
سنقوم بتحميل ملف Hex الذي تم إنشاؤه أعلاه باستخدام Sinaprog ، لذا افتحه واختر Atmega16 من القائمة المنسدلة للجهاز. حدد ملف HEX من Debug-> مجلد Exe كما هو موضح.
الآن ، انقر فوق البرنامج وسيتم نسخ الكود الخاص بك في متحكم ATmega16.
لقد انتهيت وتم برمجة وحدة التحكم الدقيقة الخاصة بك. فقط اضغط على الأزرار لإرسال واستقبال الرسائل من متحكم GSM و ATmega16.
الكود الكامل والفيديو التوضيحي معطى أدناه.