جدول المحتويات:

وحدة التحكم عن بعد القائمة على GSM / SMS من Arduino: 16 خطوة (مع صور)
وحدة التحكم عن بعد القائمة على GSM / SMS من Arduino: 16 خطوة (مع صور)

فيديو: وحدة التحكم عن بعد القائمة على GSM / SMS من Arduino: 16 خطوة (مع صور)

فيديو: وحدة التحكم عن بعد القائمة على GSM / SMS من Arduino: 16 خطوة (مع صور)
فيديو: Android SMS App Based Device Switching using Arduino 2024, شهر نوفمبر
Anonim
وحدة التحكم عن بعد GSM / SMS القائمة على Arduino
وحدة التحكم عن بعد GSM / SMS القائمة على Arduino

! ! ! تنويه !

بسبب تطوير برج الهاتف المحمول المحلي في منطقتي ، لم أعد قادرًا على استخدام وحدة GSM هذه. لم يعد البرج الأحدث يدعم أجهزة 2G. لذلك ، لم يعد بإمكاني تقديم أي دعم لهذا المشروع.

مع هذه المجموعة الواسعة من وحدات GSM المتاحة للهواة ، انتهى معظمنا من شراء واحدة. اشتريت وحدة SIM800L محليًا ، وانتهى بي الأمر باللعب بالأوامر المختلفة للوحدة.

باستخدام Arduino Uno و Arduino IDE ، تمكنت من تحويل أفكاري إلى واقع. لم يكن هذا سهلاً ، حيث كانت المشكلة الأكبر في واحدة هي الحد من 2 كيلو بايت فقط من SRAM. بعد الكثير من البحث على الإنترنت والمنتديات المختلفة ، تمكنت من التغلب على هذا القيد.

تقنيات البرمجة المختلفة ، وفهم أفضل بكثير لمجمع Arduino ، واستخدام بطاقة SIM و EEPROM لذاكرة إضافية ، حفظ هذا المشروع. بعد إجراء بعض التغييرات على الكود ، تم بناء نموذج أولي ثابت واختباره على مدار أسبوع.

كان عيب SRAM المحدود هو أن الوحدة لا يمكن أن تكون مزودة بشاشة عرض ومفاتيح مستخدم. أدى ذلك إلى إعادة كتابة كاملة للرمز. مع عدم وجود واجهة مستخدم ، كان الخيار الوحيد المتبقي لمواصلة المشروع ، هو الاستفادة من رسائل SMS لتهيئة الوحدة ، وكذلك المستخدمين.

اتضح أن هذا مشروع مثير ، وتمت إضافة المزيد من العقود المستقبلية مع استمرار التطوير.

كان هدفي الرئيسي هو التمسك بـ Arduino Uno ، أو في هذه الحالة ، ATMEGA328p ، وعدم استخدام أي مكونات مثبتة على السطح. سيسهل هذا على عامة الناس نسخ الوحدة وبنائها.

مواصفات الوحدة:

  • يمكن برمجة 250 مستخدمًا كحد أقصى على الوحدة
  • أربعة مخارج رقمية
  • أربعة مداخل رقمية
  • يمكن تكوين كل مخرجات على شكل نبضة أو خرج تشغيل / إيقاف
  • يمكن ضبط مدة نبضة الإخراج بين 0.5.. 10 ثوانٍ
  • يمكن تكوين كل إدخال لتشغيل التغييرات من OFF إلى ON.
  • يمكن تكوين كل إدخال لتشغيل التغييرات من ON إلى OFF
  • يمكن ضبط كل وقت تأخير إدخال بين 0 ثانية وساعة واحدة
  • يمكن إرسال رسائل SMS الخاصة بالتغييرات في المدخلات إلى 5 مستخدمين مختلفين
  • يمكن للمستخدم تحديد الأسماء ونص الحالة لكل إدخال
  • يمكن للمستخدم تحديد الأسماء ونص الحالة لكل مخرجات
  • يمكن تكوين الوحدة لاستلام رسائل رصيد بطاقة SIM عبر رسائل USSD.
  • يمكن لجميع المستخدمين طلب تحديثات حالة الإدخال / الإخراج للوحدة
  • يمكن لجميع المستخدمين التحكم في المخرجات الفردية عبر رسائل SMS
  • يمكن لجميع المستخدمين التحكم في المخرجات الفردية عن طريق استدعاء الوحدة

ميزات السلامة

  • لا يمكن إجراء الإعداد الأولي للوحدة إلا أثناء وجودها في الوحدة.
  • لا يمكن إجراء الإعداد الأولي إلا بواسطة المستخدم الرئيسي
  • يتم تعطيل أوامر الإعداد الأولي تلقائيًا بعد عشر دقائق.
  • يمكن فقط للمكالمات والرسائل النصية القصيرة المرسلة من مستخدمين معروفين التحكم في الوحدة
  • يمكن للمستخدمين تشغيل النواتج المعينة لهم فقط من قبل المستخدم الرئيسي

ميزات أخرى

  • المكالمات إلى هذه الوحدة مجانية ، حيث لا يتم الرد على المكالمة مطلقًا.
  • عندما يتم استدعاء الوحدة ، ستنخفض المكالمة بعد ثانيتين فقط. هذا تأكيد للمتصل أن الوحدة قد استجابت للمكالمة.
  • إذا كان مزود خدمة بطاقة SIM يدعم رسائل USSD ، فيمكن للمستخدم الرئيسي إجراء استفسارات عن الرصيد. ستتم إعادة توجيه رسالة USSD التي تحتوي على الرصيد إلى المستخدم الرئيسي.

الخطوة 1: مزود الطاقة

مزود الطاقة
مزود الطاقة

لضمان إمكانية توصيل الوحدة بأنظمة الأمان القياسية (أنظمة الإنذار ، وأبواب المرآب الكهربائية ، ومحركات البوابة الكهربائية) ، سيتم تشغيل الوحدة من 12V DC والذي يتوفر عادة في مثل هذه الأنظمة.

يتم تطبيق الطاقة على أطراف 12V IN و 0V ، وهي محمية بواسطة فتيل 1A. تتوفر أطراف خرج إضافية بجهد 12 فولت ، وهي محمية أيضًا بواسطة المصهر.

يحمي الصمام الثنائي D1 الوحدة من اتصالات القطبية العكسية على خطوط 12 فولت.

تقوم المكثفات C1 و C2 بتصفية أي ضوضاء موجودة على خطوط إمداد 12 فولت. يستخدم مصدر الطاقة بجهد 12 فولت لتشغيل مرحلات الوحدة.

يتكون مصدر 5 فولت من منظم الجهد LM7805L ، وإخراج ثابت + 5 فولت مطلوب لوحدة SIM800L GSM ، بالإضافة إلى المعالج الصغير. تقوم المكثفات C3 و C4 بتصفية أي ضوضاء قد تكون موجودة في خط الإمداد + 5V. تم استخدام المكثفات الإلكتروليتية ذات الحجم النسبي ، حيث تستخدم وحدة SIM800L GSM قدرًا كبيرًا من الطاقة عند الإرسال.

لا حاجة للمشتت الحراري في منظم الجهد.

الخطوة الثانية: المدخلات الرقمية

ادخالات رقمية
ادخالات رقمية
ادخالات رقمية
ادخالات رقمية

جميع إشارات الإدخال الرقمية بجهد 12 فولت ، ويجب توصيلها بوحدة التحكم الصغيرة 5 فولت. لهذا الغرض ، يتم استخدام قارنات البصريات لعزل إشارات 12 فولت من نظام 5 فولت.

يحد المقاوم المدخل 1K من تيار الإدخال للمقرن البصري إلى حوالي 10mA.

نظرًا لمحدودية المساحة ، لم تتوفر مساحة على لوحة الكمبيوتر الشخصي لمقاومات سحب 5 فولت. تم إعداد وحدة التحكم الصغيرة لتمكين عمليات السحب الضعيفة لدبابيس الإدخال.

مع عدم وجود إشارة على الإدخال (LOW) للمقرن البصري ، لن يتدفق أي تيار من خلال الصمام الثنائي للمقرن البصري. وبالتالي يتم إيقاف تشغيل ترانزستور مقرنة البصريات. سيؤدي السحب الضعيف لوحدة التحكم الجزئية إلى سحب المجمع إلى 5 فولت تقريبًا ، وسيُنظر إليه على أنه منطق مرتفع بواسطة وحدة التحكم الدقيقة.

مع تطبيق 12V (HIGH) على مدخلات قارنة التوصيل البصري ، سوف يتدفق حوالي 10mA من خلال LED opto coupler. وبالتالي سيتم تشغيل ترانزستور مقرنة البصريات. سيؤدي هذا إلى سحب المجمع إلى ما يقرب من 0 فولت ، وسيُنظر إليه على أنه منطق منخفض بواسطة وحدة التحكم الدقيقة.

لاحظ أن الإدخال الذي تراه وحدة التحكم الصغيرة معكوس مقارنةً بإدخال 12 فولت.

يبدو الكود العادي لقراءة دبوس الإدخال على النحو التالي:

المدخلات المنطقية = digitalRead (inputpin) ؛

لتصحيح الإشارة المعكوسة ، استخدم الكود التالي:

المدخلات المنطقية =! digitalRead (inputpin) ؛ // لاحظ ال ! أمام القراءة

الآن ، سيتوافق الإدخال الذي تشاهده وحدة التحكم الصغيرة مع الإدخال الموجود على إدخال 12V.

تتكون دائرة الإدخال النهائية من 4 مداخل رقمية. يتم توصيل كل مدخلات بأطراف التوصيل الموجودة على لوحة الكمبيوتر الشخصي.

الخطوة 3: المخرجات الرقمية

المخرجات الرقمية
المخرجات الرقمية
المخرجات الرقمية
المخرجات الرقمية
المخرجات الرقمية
المخرجات الرقمية

عادةً ، مع وجود دائرة تقود أقل عدد ممكن من المرحلات ، فإن أفضل طريقة هي استخدام دائرة سائق الترانزستور كما هو موضح. إنها بسيطة ومنخفضة التكلفة وفعالة.

توفر المقاومات سحبًا لأسفل إلى الأرض ، وحدود تيار قاعدة الترانزستور. يستخدم الترانزستور لزيادة التيار المتاح لقيادة المرحل. مع سحب 1 مللي أمبير فقط من دبوس وحدة التحكم الصغيرة ، يمكن للترانزستور تبديل حمولة 100 مللي أمبير. أكثر من كافٍ لمعظم أنواع المرحلات. الصمام الثنائي هو صمام ثنائي خلفي يحمي الدائرة من ارتفاعات الجهد العالي أثناء تبديل الترحيل. الميزة الإضافية لاستخدام هذه الدائرة ، هي أن جهد تشغيل المرحل يمكن أن يكون مختلفًا عن جهد وحدة التحكم الصغيرة. وبالتالي ، بدلاً من استخدام مرحل 5 فولت ، يمكن استخدام أي جهد تيار مستمر يصل إلى 48 فولت.

تقديم ULN2803

كلما زاد عدد المرحلات التي يتطلبها المشروع ، زاد عدد المكونات. سيؤدي ذلك إلى جعل تصميم ثنائي الفينيل متعدد الكلور أكثر صعوبة ، وقد يستخدم مساحة قيّمة من ثنائي الفينيل متعدد الكلور. لكن استخدام مصفوفة الترانزستور ، مثل ULN2803 ، سيساعد بالتأكيد في الحفاظ على حجم ثنائي الفينيل متعدد الكلور صغيرًا. يعتبر ULN2803 مناسبًا بشكل مثالي لمدخلات 3.3 فولت و 5 فولت من وحدة تحكم دقيقة ، ويمكنه تشغيل مرحلات تصل إلى 48 فولت تيار مستمر. يحتوي ULN2803 على 8 دوائر ترانزستور فردية ، كل دائرة مزودة بجميع المكونات المطلوبة لتبديل مرحل.

تتكون دائرة الإخراج النهائية من ULN3803 ، يقود 4 مرحلات خرج تيار مستمر بجهد 12 فولت. كل جهة اتصال من المرحل متاحة على نهايات لوحة الكمبيوتر الشخصي.

الخطوة 4: مذبذب وحدة التحكم الصغيرة

مذبذب وحدة التحكم الصغيرة
مذبذب وحدة التحكم الصغيرة
مذبذب وحدة التحكم الصغيرة
مذبذب وحدة التحكم الصغيرة
مذبذب وحدة التحكم الصغيرة
مذبذب وحدة التحكم الصغيرة

حلبة المذبذب

تحتاج وحدة التحكم الدقيقة إلى مذبذب لتعمل بشكل صحيح. للحفاظ على تصميم Arduino Uno ، ستستفيد الدائرة من مذبذب قياسي 16 ميجا هرتز. يتوفر خياران:

كريستال

تستخدم هذه الطريقة بلورة متصلة بمكثفي تحميل. هذا هو الخيار الأكثر شيوعًا.

مرنان

الرنان هو في الأساس بلورة ومكثفات تحميل في حزمة واحدة من 3 دبابيس. يؤدي ذلك إلى تقليل كمية المكونات وزيادة المساحة المتوفرة على لوحة الكمبيوتر الشخصي.

للحفاظ على عدد المكونات منخفضًا قدر الإمكان ، اخترت استخدام مرنان 16 ميجاهرتز.

الخطوة 5: مؤشرات LED

مؤشرات LED
مؤشرات LED
مؤشرات LED
مؤشرات LED

ماذا ستكون أي دائرة بدون بعض المصابيح؟ تم توفير مخصص على لوحة الكمبيوتر الشخصي لمصابيح LED مقاس 3 مم.

تُستخدم مقاومات 1K للحد من التيار عبر LED إلى أقل من 5 مللي أمبير ، عند استخدام مصابيح LED عالية السطوع 3 مم ، يكون السطوع ممتازًا.

لسهولة تفسير مصابيح LED الخاصة بالحالة ، يتم استخدام لونين. من خلال الجمع بين مؤشري LED مع مؤشرات وامضة ، يمكن الحصول على الكثير من المعلومات من اثنين فقط من مصابيح LED.

الصمام الأحمر

يتم استخدام مؤشر LED الأحمر للإشارة إلى حالات الخطأ والتأخيرات الطويلة وأي أوامر غير صحيحة.

الصمام الأخضر

يُستخدم مؤشر LED الأخضر للإشارة إلى المدخلات والأوامر السليمة و / أو الصحيحة.

الخطوة 6: دائرة إعادة ضبط المعالج الصغير

دائرة إعادة ضبط المعالج الصغير
دائرة إعادة ضبط المعالج الصغير

لأسباب أمنية ، لا تتوفر بعض وظائف الوحدة إلا في أول 10 دقائق بعد تشغيل الوحدة.

باستخدام زر إعادة الضبط ، لا يلزم إيقاف تشغيل الطاقة عن الوحدة لإعادة ضبط الوحدة.

كيف تعمل

سيبقي المقاوم 10K خط RESET قريبًا من 5V. عند الضغط على الزر ، سيتم سحب خط RESET إلى 0 فولت ، وبالتالي الحفاظ على وحدة التحكم الصغيرة في حالة إعادة الضبط. عندما يتم تحرير الزر ، يعود سطر RESET إلى٪ v ، ويعيد تشغيل وحدة التحكم الجزئية.

الخطوة 7: وحدة SIM800L

وحدة SIM800L
وحدة SIM800L
وحدة SIM800L
وحدة SIM800L
وحدة SIM800L
وحدة SIM800L

قلب الوحدة هو وحدة SIM800L GSM. تستخدم هذه الوحدة فقط 3 دبابيس I / O على وحدة التحكم الدقيقة.

تتداخل الوحدة النمطية مع وحدة التحكم الدقيقة عبر منفذ تسلسلي قياسي.

  • يتم إرسال جميع الأوامر إلى الوحدة عبر المنفذ التسلسلي باستخدام أوامر AT القياسية.
  • مع مكالمة واردة ، أو عند تلقي رسالة نصية قصيرة ، يتم إرسال المعلومات إلى وحدة التحكم الدقيقة عبر المنفذ التسلسلي باستخدام نص ASCII..

لتوفير مساحة ، يتم توصيل وحدة GSM بلوحة الكمبيوتر الشخصي عبر رأس ذي 7 سنون. هذا يجعل إزالة وحدة GSM أمرًا سهلاً. يتيح هذا أيضًا للمستخدم إدخال / إزالة بطاقة SIM بسهولة في الجزء السفلي من الوحدة.

مطلوب بطاقة SIM نشطة ، ويجب أن تكون بطاقة SIM قادرة على إرسال واستقبال رسائل SMS.

إعداد وحدة SIM800L GSM

عند تشغيل الوحدة ، يتم سحب دبوس إعادة تعيين وحدة GSM إلى مستوى منخفض لمدة ثانية. هذا يضمن أن وحدة GSM لا تبدأ إلا بعد استقرار مصدر الطاقة. تستغرق وحدة GSM بضع ثوانٍ لإعادة التشغيل ، لذا انتظر 5 ثوانٍ قبل إرسال أي أوامر AT إلى الوحدة.

لضمان تكوين وحدة GSM للتواصل بشكل صحيح مع وحدة التحكم الدقيقة ، يتم استخدام أوامر AT التالية أثناء بدء التشغيل:

في

تستخدم لتحديد ما إذا كانت وحدة GSM متاحة

AT + CREG؟

استقصاء هذا الأمر حتى يتم تسجيل وحدة GSM على شبكة الهاتف المحمول

في + CMGF = 1

اضبط وضع رسائل SMS على ASCII

AT + CNMI = 1 ، 2 ، 0 ، 0 ، 0

إذا كانت الرسائل القصيرة متاحة ، أرسل تفاصيل الرسائل القصيرة إلى المنفذ التسلسلي لوحدة GSM

AT + CMGD = 1، 4

احذف أي رسائل SMS مخزنة على بطاقة SIM

AT + CPBS = / "SM

اضبط دفتر الهاتف الخاص بوحدة GSM على بطاقة SIM

AT + COPS = 2 ، ثم AT + CLTS = 1 ، ثم AT + COPS = 0

اضبط وقت وحدة GSM على وقت شبكة الهاتف المحمول

انتظر 5 ثوان حتى يتم ضبط الوقت

في + CUSD = 1

تمكين وظيفة رسائل USSD

الخطوة 8: وحدة التحكم الصغيرة

وحدة التحكم الصغيرة
وحدة التحكم الصغيرة
وحدة التحكم الصغيرة
وحدة التحكم الصغيرة
وحدة التحكم الصغيرة
وحدة التحكم الصغيرة

وحدة التحكم الصغيرة هي وحدة تحكم قياسية AtMega328p ، وهي نفسها المستخدمة في Arduino Uno. وبالتالي فإن الرمز قابل للمقارنة مع كليهما. للسماح ببرمجة سهلة على اللوحة ، يتوفر رأس برمجة ذي 6 سنون على لوحة الكمبيوتر الشخصي.

يتم توصيل الأقسام المختلفة للوحدة بالمعالج الصغير ، وتشمل ما يلي:

  • أربعة مداخل رقمية
  • أربعة مخارج رقمية
  • المذبذب
  • اثنين من مؤشرات LED
  • إعادة الدائرة
  • وحدة SIM800L GSM

تتم جميع الاتصالات من وإلى وحدة GSM باستخدام وظيفة SoftwareSerial (). تم استخدام هذه الطريقة لتحرير المنفذ التسلسلي الرئيسي لـ Arduino IDE أثناء مرحلة التطوير.

مع 2 كيلو بايت فقط من SRAM و 1 كيلو بايت من EEPROM ، لا توجد ذاكرة كافية لتخزين أكثر من اثنين من المستخدمين الذين يمكن ربطهم بالوحدة. لتحرير ذاكرة SRAM ، يتم تخزين جميع معلومات المستخدم على بطاقة SIM في وحدة GSM. مع هذا الترتيب ، يمكن للوحدة أن تلبي ما يصل إلى 250 مستخدمًا مختلفًا.

يتم تخزين بيانات التكوين الخاصة بالوحدة في EEPROM ، وبالتالي فصل بيانات المستخدم وبيانات النظام عن بعضها البعض.

لا يزال هناك العديد من منافذ الإدخال / الإخراج الاحتياطية المتاحة ، ومع ذلك ، لم يكن خيار إضافة شاشة LCD و / أو لوحة المفاتيح ممكنًا نظرًا للكمية الكبيرة من SRAM المستخدمة بواسطة SoftWareSerial () للاستقبال والإرسال المؤقتين ،

نظرًا لعدم وجود أي نوع من واجهة المستخدم على الوحدة ، تتم برمجة جميع الإعدادات والمستخدمين باستخدام رسائل SMS.

الخطوة 9: تحسين ذاكرة SRAM

تحسين ذاكرة SRAM
تحسين ذاكرة SRAM

في وقت مبكر جدًا من مرحلة التطوير ، أبلغ Arduino IDE عن انخفاض ذاكرة SRAM عند تجميع الكود. تم استخدام عدة طرق للتغلب على هذا.

تقييد البيانات الواردة على المنفذ التسلسلي

ستبلغ وحدة GSM عن جميع الرسائل إلى وحدة التحكم الصغيرة بالمنفذ التسلسلي. عند استلام بعض رسائل SMS ، يمكن أن يتجاوز الطول الإجمالي للرسالة المستلمة 200 حرف. يمكن أن يستهلك هذا بسرعة كل ذاكرة SRAM المتوفرة على شريحة AtMega ، وسيؤدي إلى مشاكل في الاستقرار.

لمنع هذا ، سيتم استخدام أول 200 حرف فقط من أي رسالة يتم تلقيها من وحدة GSM. يوضح المثال أدناه كيف يتم ذلك عن طريق حساب الأحرف المستلمة في متغير عداد.

// مسح البيانات من المنفذ التسلسلي للبرنامج

// ----------------------------------------------- RxString = "" ؛ عداد = 0 ؛ while (SSerial.available ()) {delay (1) ؛ // تأخير قصير لإعطاء وقت لوضع البيانات الجديدة في المخزن المؤقت // الحصول على حرف جديد RxChar = char (SSerial.read ()) ؛ // أضف أول 200 حرف إلى السلسلة إذا (Counter <200) {RxString.concat (RxChar) ؛ عداد = عداد + 1 ؛ }}

تقليل كود Serial.print ()

على الرغم من سهولة استخدامها أثناء التطوير ، إلا أن Arduino Serial Monitor يمكنه استخدام الكثير من ذاكرة SRAM. تم تطوير الكود باستخدام أقل عدد ممكن من رمز Serial.print (). تم اختبار قسم واحد من الكود للعمل ، تمت إزالة كل رمز Serial.print () من هذا الجزء من الكود.

باستخدام رمز Serial.print (F ((""))

تكون الكثير من المعلومات المعروضة عادةً على Arduino Serial Monitor أكثر منطقية عند إضافة الأوصاف. خذ المثال التالي:

Serial.println ("انتظار إجراءات محددة") ؛

تم إصلاح السلسلة "انتظار إجراءات معينة" ولا يمكن تغييرها.

أثناء تجميع الكود ، سيقوم المترجم بتضمين السلسلة "في انتظار إجراءات معينة" في ذاكرة فلاش.

بالإضافة إلى ذلك ، يرى المحول البرمجي أن السلسلة ثابتة ، يتم استخدامها بواسطة تعليمات "Serial.print" أو "Serial.println". أثناء بدء تشغيل الميكرو ، يتم وضع هذا الثابت أيضًا في ذاكرة SRAM.

باستخدام البادئة "F" في وظائف Serial.print () ، يخبر المترجم أن هذه السلسلة متاحة فقط في ذاكرة FLASH. في هذا المثال ، تحتوي السلسلة على 28 حرفًا. هذا هو 28 بايت التي يمكن تحريرها في SRAM.

Serial.println (F ("انتظار إجراءات محددة")) ؛

تنطبق هذه الطريقة أيضًا على أوامر SoftwareSerial.print (). نظرًا لأن وحدة GSM تعمل على أوامر AT ، فإن الكود يحتوي على العديد من أوامر SoftwareSerial.print ("xxxx"). أدى استخدام البادئة "F" إلى تحرير ما يقرب من 300 بايت من ذاكرة SRAM.

لا تستخدم المنفذ التسلسلي للجهاز

بعد تصحيح التعليمات البرمجية ، تم تعطيل المنفذ التسلسلي للجهاز عن طريق إزالة كافة أوامر Serial.print (). هذا حرر بضع بايتات إضافية من SRAM.

بدون أي أوامر Serial.print () متبقية في الكود ، تم توفير 128 بايت إضافية من SRAM. تم ذلك عن طريق إزالة المنفذ التسلسلي للجهاز من الكود. هذا fred حتى 64 بايت إرسال و 64 بايت استقبال المخازن المؤقتة.

// Serial.begin (9600) ؛ // منفذ تسلسلي للجهاز معطل

استخدام إيبروم للسلاسل

لكل إدخال ومخرج ، يجب حفظ ثلاث سلاسل. هم اسم القناة ، والسلسلة عندما تكون القناة قيد التشغيل ، والسلسلة عندما تكون القناة متوقفة.

مع ما مجموعه 8 قنوات I / O ، ستكون

  • 8 سلاسل تحتوي على أسماء القنوات ، كل منها 10 أحرف
  • 8 سلاسل تحتوي على وصف القناة ، كل 10 أحرف
  • 8 سلاسل تحتوي على وصف القناة Off ، كل منها 10 أحرف

هذه الإعلانات تصل إلى 240 بايت من SRAM. بدلاً من تخزين هذه السلاسل في SRAM ، يتم تخزينها في EEPROM. هذا حرر 240 بايت إضافية من SRAM.

التصريح عن السلسلة بالأطوال الصحيحة

المتغير يعلن عادة في بداية الكود. من الأخطاء الشائعة عند التصريح عن متغير سلسلة هو أننا لا نعلن عن السلسلة بعدد الأحرف الصحيح.

سلسلة GSM_Nr = "" ؛

سلسلة GSM_Name = "" ؛ سلسلة GSM_Msg = "" ؛

أثناء بدء التشغيل ، لن تقوم وحدة التحكم الصغيرة بتخصيص ذاكرة في SRAM لهذه المتغيرات. يمكن أن يتسبب هذا لاحقًا في عدم الاستقرار عند استخدام هذه السلاسل.

لمنع ذلك ، قم بتعريف السلاسل مع العدد الصحيح للأحرف التي ستستخدمها السلسلة في البرنامج.

سلسلة GSM_Nr = "1000000000" ؛

سلسلة GSM_Name = "2000000000" ؛ سلسلة GSM_Msg = "3000000000" ؛

لاحظ كيف أنني لم أصرح عن السلاسل بنفس الأحرف. إذا قمت بتعريف كل هذه السلاسل بنطق "1234567890" ، فسيرى المحول البرمجي نفس السلسلة في المتغيرات الثلاثة ، وسيخصص فقط ذاكرة كافية في SRAM لإحدى السلاسل.

الخطوة 10: حجم المخزن المؤقت للبرنامج التسلسلي

حجم المخزن المؤقت التسلسلي للبرنامج
حجم المخزن المؤقت التسلسلي للبرنامج

في الكود التالي ، ستلاحظ أنه يمكن قراءة ما يصل إلى 200 حرف من المنفذ التسلسلي للبرنامج.

// مسح البيانات من المنفذ التسلسلي للبرنامج

// ----------------------------------------------- RxString = "" ؛ عداد = 0 ؛ while (SSerial.available ()) {delay (1) ؛ // تأخير قصير لإعطاء وقت لوضع البيانات الجديدة في المخزن المؤقت // الحصول على حرف جديد RxChar = char (SSerial.read ()) ؛ // أضف أول 200 حرف إلى السلسلة إذا (Counter <200) {RxString.concat (RxChar) ؛ عداد = عداد + 1 ؛ }}

يتطلب هذا مخزنًا مؤقتًا لا يقل عن 200 بايت للمنفذ التسلسلي للبرنامج أيضًا. بشكل افتراضي ، يكون المخزن المؤقت للمنفذ التسلسلي للبرنامج 64 بايت فقط. لزيادة هذا المخزن المؤقت ، ابحث عن الملف التالي:

SoftwareSerial.h

افتح الملف باستخدام محرر نصوص ، وقم بتغيير حجم المخزن المؤقت إلى 200.

/******************************************************************************

* تعريفات ************************************************ ******************************** / #ifndef _SS_MAX_RX_BUFF #define _SS_MAX_RX_BUFF 200 // حجم المخزن المؤقت RX #endif

الخطوة 11: عمل لوحة الكمبيوتر

صنع مجلس الكمبيوتر
صنع مجلس الكمبيوتر

تم تصميم لوحة الكمبيوتر الشخصي باستخدام الإصدار المجاني من Cadsoft Eagle (أعتقد أن الاسم قد تغير).

  • لوحة الكمبيوتر الشخصي هي تصميم من جانب واحد.
  • لا يتم استخدام أي مكونات مثبتة على السطح.
  • يتم تثبيت جميع المكونات على لوحة الكمبيوتر ، بما في ذلك وحدة SIM800L.
  • لا يلزم وجود مكونات أو وصلات خارجية
  • وصلات الأسلاك مخفية أسفل المكونات للحصول على مظهر أنظف.

أستخدم الطريقة التالية لإنشاء لوحات الكمبيوتر:

  • تتم طباعة صورة لوحة الكمبيوتر الشخصي على Press-n-Peel باستخدام طابعة ليزر.
  • ثم يتم وضع Press-n-Peel أعلى قطعة نظيفة من لوحة الكمبيوتر الشخصي ، ويتم تثبيتها ببعض الشريط اللاصق.
  • ثم يتم نقل صورة لوحة الكمبيوتر الشخصي من Press-n-Peel إلى لوحة الكمبيوتر الشخصي الفارغة عن طريق تمرير اللوحة عبر آلة تغليف. بالنسبة لي ، 10 تمريرات تعمل بشكل أفضل.
  • بعد تبريد لوحة الكمبيوتر إلى درجة حرارة الغرفة ، يتم رفع جهاز Press-n-Peel ببطء من اللوحة.
  • ثم يتم حفر لوحة الكمبيوتر الشخصي باستخدام بلورات الأمونيوم بيرسلفات المذابة في الماء الساخن.
  • بعد الحفر ، تتم إزالة الحبر الأزرق Press-n-Peel والحبر الأسود عن طريق تنظيف لوحة الكمبيوتر المحفور ببعض الأسيتون.
  • يتم بعد ذلك قطع اللوحة حسب الحجم باستخدام جهاز Dremel
  • يتم حفر الثقوب لجميع المكونات من خلال الفتحة باستخدام مثقاب 1 مم.
  • يتم حفر الموصلات اللولبية الطرفية باستخدام مثقاب 1.2 مم.

الخطوة 12: تجميع لوحة الكمبيوتر الشخصي

جمعية مجلس الكمبيوتر
جمعية مجلس الكمبيوتر
جمعية مجلس الكمبيوتر
جمعية مجلس الكمبيوتر
جمعية مجلس الكمبيوتر
جمعية مجلس الكمبيوتر
جمعية مجلس الكمبيوتر
جمعية مجلس الكمبيوتر

يتم التجميع عن طريق إضافة أصغر المكونات أولاً ، والعمل على الوصول إلى أكبر المكونات.

تم الحصول على جميع المكونات المستخدمة في Instructable ، باستثناء وحدة SIM800 ، من موردي المحلي. يفكر فيهم لأن لديهم مخزونًا دائمًا. يرجى إلقاء نظرة على موقع الويب الخاص بهم في جنوب إفريقيا:

www.shop.rabtron.co.za/catalog/index.php

ملاحظة! قم أولاً بلحام القافزين الموجودين أسفل IC ATMEGA328p

الترتيب على النحو التالي:

  • المقاومات والصمام الثنائي
  • زر إعادة الضبط
  • مقابس IC
  • منظم ضغط كهربي
  • دبابيس الرأس
  • مكثفات صغيرة
  • المصابيح
  • حامل فيوزات
  • كتل طرفية
  • يمرر
  • مكثف كهربائيا

قبل إدخال الدوائر المتكاملة ، قم بتوصيل الوحدة بجهد 12 فولت ، واختبر جميع الفولتية لتكون صحيحة.

أخيرًا ، باستخدام بعض الطلاء الشفاف ، قم بتغطية الجانب النحاسي من لوحة الكمبيوتر الشخصي لحمايته من العناصر.

عندما يجف الطلاء ، أدخل الدوائر المتكاملة ، لكن اترك وحدة GSM حتى تتم برمجة AtMega.

الخطوة 13: برمجة AtMega328p

برمجة AtMega328p
برمجة AtMega328p
برمجة AtMega328p
برمجة AtMega328p
برمجة AtMega328p
برمجة AtMega328p

# # ترقية البرامج الثابتة إلى الإصدار 3.02 # #

يتم إرسال الرسائل القصيرة الممكّنة إلى MASTER USER عند استعادة الطاقة إلى الجهاز

أنا أستخدم Arduino Uno مع درع برمجة لبرمجة الوحدة. لمزيد من المعلومات حول كيفية استخدام Arduino Uno كمبرمج ، راجع هذا Instructable:

اردوينو UNO كمبرمج AtMega328P

يجب إزالة وحدة GSM من لوحة الكمبيوتر الشخصي للوصول إلى رأس البرمجة. احرص على عدم إتلاف سلك الهوائي عند إزالة وحدة GSM.

قم بتوصيل كابل البرمجة بين المبرمج والوحدة باستخدام رأس البرمجة على لوحة الكمبيوتر الشخصي ، وقم بتحميل الرسم التخطيطي إلى الوحدة.

ليست هناك حاجة لإمداد 12V الخارجي لبرمجة الوحدة. سيتم تشغيل لوحة الكمبيوتر الشخصي من Arduino عبر كابل البرمجة.

افتح الملف المرفق في Arduino IDE ، وقم ببرمجته على الوحدة.

بعد البرمجة ، قم بإزالة كابل البرمجة ، وأدخل وحدة GSM.

الوحدة جاهزة الآن للاستخدام.

الخطوة 14: توصيل الوحدة

توصيل الوحدة
توصيل الوحدة
توصيل الوحدة
توصيل الوحدة
توصيل الوحدة
توصيل الوحدة

يتم إجراء جميع التوصيلات بالوحدة عبر أطراف التوصيل اللولبية.

تشغيل الوحدة

تأكد من إدخال بطاقة SIM مسجلة في وحدة GSM ، وأن بطاقة SIM قادرة على إرسال واستقبال رسائل SMS.

قم بتوصيل مصدر طاقة بجهد 12 فولت DC إلى 12V IN وأي من المحطات الطرفية 0V. بمجرد التشغيل ، سيتم تشغيل مؤشر LED الأحمر على لوحة الكمبيوتر الشخصي. في غضون دقيقة تقريبًا ، يجب أن تكون وحدة GSM متصلة بشبكة الهاتف المحمول. سينطفئ المصباح الأحمر ، ويومض مؤشر LED الأحمر في وحدة GSM بسرعة.

بمجرد الوصول إلى هذه المرحلة ، تكون الوحدة جاهزة للتهيئة.

اتصالات الإدخال

المدخلات الرقمية تعمل على 12 فولت. لتشغيل أحد المدخلات ، يجب تطبيق 12V على الإدخال. ستؤدي إزالة 12 فولت إلى إيقاف تشغيل الإدخال.

اتصالات الإخراج

يتكون كل ناتج من جهة اتصال تغيير. اربط كل جهة اتصال كما هو مطلوب.

الخطوة 15: الإعداد الأولي

الإعداد الأولي
الإعداد الأولي

يجب إجراء الإعداد الأولي للوحدة لضمان ضبط جميع المعلمات على إعدادات المصنع الافتراضية ، وتهيئة بطاقة SIM لقبول معلومات المستخدم بالتنسيق الصحيح.

نظرًا لأن جميع الأوامر تعتمد على الرسائل القصيرة ، فستحتاج إلى هاتف آخر لإجراء الإعداد.

للإعداد الأولي ، يجب أن تكون في الوحدة.

قم بتعيين رقم هاتف المستخدم الرئيسي

نظرًا لأن المستخدم الرئيسي فقط يمكنه تكوين الوحدة ، يجب تنفيذ هذه الخطوة أولاً.

  • يجب تشغيل الوحدة.
  • اضغط على زر إعادة الضبط وحرره ، وانتظر حتى ينطفئ مؤشر LED الأحمر على لوحة الكمبيوتر الشخصي.
  • سيومض NET LED في وحدة GSM بسرعة.
  • الوحدة جاهزة الآن لقبول أوامر الإعداد الأولية. يجب أن يتم ذلك في غضون 10 دقائق.
  • إرسال رسالة SMS تحتوي على MASTER ، وصفًا لرقم هاتف الوحدة.
  • في حالة الاستلام ، سيومض مؤشر LED الأخضر الموجود على لوحة الكمبيوتر مرتين.
  • تمت برمجة MASTER USER الآن.

قم بإعادة الوحدة إلى إعدادات المصنع الافتراضية

بعد برمجة MASTER USER ، يجب ضبط إعدادات الوحدة على إعدادات المصنع الافتراضية.

  • أرسل رسالة SMS مع CLEARALL فقط إلى رقم هاتف الوحدة.
  • في حالة الاستلام ، سيومض مصباح LED باللونين الأخضر والأحمر على لوحة الكمبيوتر الشخصي مرة واحدة في الثانية. تمت استعادة الوحدة بإعدادات المصنع الافتراضية.
  • تمت استعادة جميع الإعدادات إلى إعدادات المصنع الافتراضية.
  • اضغط على زر إعادة الضبط وحرره لإعادة تشغيل الوحدة.

تهيئة بطاقة SIM

الخطوة الأخيرة هي مسح جميع المعلومات المخزنة على بطاقة SIM وتهيئتها للاستخدام في هذه الوحدة.

  • اضغط على زر إعادة الضبط وحرره ، وانتظر حتى ينطفئ مؤشر LED الأحمر على لوحة الكمبيوتر الشخصي.
  • سيومض NET LED في وحدة GSM بسرعة.
  • الوحدة جاهزة الآن لقبول أوامر الإعداد الأولية. يجب أن يتم ذلك في غضون 10 دقائق.
  • أرسل رسالة SMS باستخدام ERASESIM فقط إلى رقم هاتف الوحدة.
  • في حالة الاستلام ، سيومض مؤشر LED الأخضر الموجود على لوحة الكمبيوتر الشخصي مرات الشجرة.

تم الآن تكوين الوحدة وهي جاهزة للاستخدام.

الخطوة 16: أوامر الرسائل القصيرة

أوامر SMS
أوامر SMS

هناك ثلاثة أنواع مختلفة من الأوامر التي تستخدمها الوحدة. يتم إرسال جميع الأوامر عبر الرسائل القصيرة ، وجميعها بالتنسيق التالي:

أمر، ، ، ، ،

  • جميع الأوامر ، باستثناء أوامر المستخدم العادي ، حساسة لحالة الأحرف.
  • المعلمات ليست حساسة لحالة الأحرف.

أوامر الإعداد الأولية

سيد الاسم

يتم استخدام رقم هاتف مرسل الرسائل القصيرة كرقم هاتف المستخدم الرئيسي. يمكن إضافة وصف للوحدة هنا.

امسح الكل

أعد ضبط الوحدة على إعدادات المصنع الافتراضية

واضح

امسح جميع البيانات من بطاقة SIM

إعادة تعيين

أعد تشغيل الوحدة

أوامر المستخدم الرئيسي لتكوين الوحدة

OUTMODE ، c ، m ، t ملاحظة! ! ! لم يتم تنفيذه بعد

قم بتعيين قنوات محددة للحصول على مخرجات PULSED أو TIMED أو LATCHING. t هي المدة الزمنية بالدقائق لمخرجات TIMED

نبض ، cccc

اضبط قنوات محددة على مخرجات PULSED. في حالة عدم التعيين ، سيتم تعيين القنوات على أنها مخرجات LATCHING.

PULSETIME ، t يضبط مدة الإخراج النبضي بالثواني (0.. 10 ثوانٍ)

INPUTON ، cccc

قم بتعيين القنوات التي يجب تشغيلها ، وإرسال رسالة SMS عندما تتغير الحالة من OFF إلى ON

INPUTOFF ، cccc

قم بتعيين القنوات التي يجب تشغيلها ، وإرسال رسالة SMS عندما تتغير الحالة من ON إلى OFF

INTIME ، ج ، ت

يضبط وقت تأخير الإدخال لاكتشاف تغييرات الحالة بالثواني

INTEXT ، الفصل ، الاسم ، تشغيل ، إيقاف التشغيل

قم بتعيين اسم كل قناة إدخال ، على النص وغير النص

OUTTEXT ، الفصل ، الاسم ، تشغيل ، إيقاف التشغيل

قم بتعيين اسم كل قناة إخراج ، على النص وغير النص

إضافة موقع ، رقم ، Calloutputs ، SMSoutputs ، المدخلات

أضف مستخدمًا إلى بطاقة SIM في "موقع" الذاكرة ، مع تخصيص قنوات الإخراج والإدخال للمستخدم

ديل ، الموقع

حذف المستخدم من "موقع" ذاكرة بطاقة SIM

اسم القناة

سوف نبض الإخراج بالاسم ChannelName

ChannelName أو onText أو ChannelName أو offText

سيتم تشغيل / إيقاف الإخراج باسم ChannelName ، و onText / offText

أوامر المستخدم العادي للتحكم في الوحدة

؟؟؟؟ طلب تحديث حالة الإدخال / الإخراج. سيتم إرسال رسالة نصية قصيرة الحالة إلى المنشئ.

اسم القناة

سوف نبض الإخراج بالاسم ChannelName

اسم القناة ، onText

سيتم تشغيل الإخراج باسم ChannelName ، ونص الحالة على النص

ChannelName ، offText سيتم إيقاف تشغيل الإخراج باستخدام اسم ChannelName ، وإيقاف تشغيل نص الحالة

للحصول على وصف أكثر تفصيلاً للأوامر ، يرجى الرجوع إلى مستند PDF المرفق.

موصى به: