جدول المحتويات:
- الخطوة 1: مزود الطاقة
- الخطوة الثانية: المدخلات الرقمية
- الخطوة 3: المخرجات الرقمية
- الخطوة 4: مذبذب وحدة التحكم الصغيرة
- الخطوة 5: مؤشرات LED
- الخطوة 6: دائرة إعادة ضبط المعالج الصغير
- الخطوة 7: وحدة SIM800L
- الخطوة 8: وحدة التحكم الصغيرة
- الخطوة 9: تحسين ذاكرة SRAM
- الخطوة 10: حجم المخزن المؤقت للبرنامج التسلسلي
- الخطوة 11: عمل لوحة الكمبيوتر
- الخطوة 12: تجميع لوحة الكمبيوتر الشخصي
- الخطوة 13: برمجة AtMega328p
- الخطوة 14: توصيل الوحدة
- الخطوة 15: الإعداد الأولي
- الخطوة 16: أوامر الرسائل القصيرة
فيديو: وحدة التحكم عن بعد القائمة على GSM / SMS من Arduino: 16 خطوة (مع صور)
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:40
! ! ! تنويه !
بسبب تطوير برج الهاتف المحمول المحلي في منطقتي ، لم أعد قادرًا على استخدام وحدة 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 مقاس 3 مم.
تُستخدم مقاومات 1K للحد من التيار عبر LED إلى أقل من 5 مللي أمبير ، عند استخدام مصابيح LED عالية السطوع 3 مم ، يكون السطوع ممتازًا.
لسهولة تفسير مصابيح LED الخاصة بالحالة ، يتم استخدام لونين. من خلال الجمع بين مؤشري LED مع مؤشرات وامضة ، يمكن الحصول على الكثير من المعلومات من اثنين فقط من مصابيح LED.
الصمام الأحمر
يتم استخدام مؤشر LED الأحمر للإشارة إلى حالات الخطأ والتأخيرات الطويلة وأي أوامر غير صحيحة.
الصمام الأخضر
يُستخدم مؤشر LED الأخضر للإشارة إلى المدخلات والأوامر السليمة و / أو الصحيحة.
الخطوة 6: دائرة إعادة ضبط المعالج الصغير
لأسباب أمنية ، لا تتوفر بعض وظائف الوحدة إلا في أول 10 دقائق بعد تشغيل الوحدة.
باستخدام زر إعادة الضبط ، لا يلزم إيقاف تشغيل الطاقة عن الوحدة لإعادة ضبط الوحدة.
كيف تعمل
سيبقي المقاوم 10K خط RESET قريبًا من 5V. عند الضغط على الزر ، سيتم سحب خط RESET إلى 0 فولت ، وبالتالي الحفاظ على وحدة التحكم الصغيرة في حالة إعادة الضبط. عندما يتم تحرير الزر ، يعود سطر RESET إلى٪ v ، ويعيد تشغيل وحدة التحكم الجزئية.
الخطوة 7: وحدة 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
في وقت مبكر جدًا من مرحلة التطوير ، أبلغ 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
# # ترقية البرامج الثابتة إلى الإصدار 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: أوامر الرسائل القصيرة
هناك ثلاثة أنواع مختلفة من الأوامر التي تستخدمها الوحدة. يتم إرسال جميع الأوامر عبر الرسائل القصيرة ، وجميعها بالتنسيق التالي:
أمر، ، ، ، ،
- جميع الأوامر ، باستثناء أوامر المستخدم العادي ، حساسة لحالة الأحرف.
- المعلمات ليست حساسة لحالة الأحرف.
أوامر الإعداد الأولية
سيد الاسم
يتم استخدام رقم هاتف مرسل الرسائل القصيرة كرقم هاتف المستخدم الرئيسي. يمكن إضافة وصف للوحدة هنا.
امسح الكل
أعد ضبط الوحدة على إعدادات المصنع الافتراضية
واضح
امسح جميع البيانات من بطاقة 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 المرفق.
موصى به:
كيفية تلقي البيانات من وحدة التحكم الدقيقة القائمة على STM32 إلى جهاز الكمبيوتر: 5 خطوات
كيفية تلقي البيانات من وحدة التحكم الدقيقة القائمة على STM32 إلى جهاز الكمبيوتر: هنا في هذا البرنامج التعليمي ، قمنا بنقل البيانات من وحدة التحكم الدقيقة إلى جهاز الكمبيوتر باستخدام أحد UART الخاص بـ STM32l100 mcu
وحدة التحكم في مستوى المياه القائمة على إنترنت الأشياء باستخدام NodeMCU ESP8266: 6 خطوات
جهاز التحكم في مستوى المياه المستند إلى IOT باستخدام NodeMCU ESP8266: هذا تعليمات حول كيفية إنشاء وحدة تحكم في مستوى المياه تعتمد على IOT. ميزات هذا المشروع هي: - تحديثات مستوى المياه في الوقت الفعلي على تطبيق Android. قم بتشغيل مضخة المياه تلقائيًا عندما يصل الماء إلى أقل من المستوى الأدنى. Au
اللمس بالسعة مع Evive (وحدة التحكم القائمة على Arduino): 6 خطوات (بالصور)
اللمس بالسعة مع Evive (وحدة التحكم القائمة على Arduino): هل تعرف كيف تعمل شاشة اللمس بهاتفك الذكي؟ يحتوي الهاتف الذكي على مجموعة من مستشعرات اللمس أسفل الشاشة الزجاجية. في الوقت الحاضر ، يعتمد على تقنية استشعار اللمس بالسعة وحتى اللمس اللطيف يمكن اكتشافه بسهولة. يتم استشعار اللمس السعوي
إصدار كابل التحكم عن بُعد من Olympus Evolt E510 (الإصدار 2 مع التركيز التلقائي على جهاز التحكم عن بُعد): 6 خطوات (بالصور)
إصدار الكبل عن بُعد من Olympus Evolt E510 (الإصدار 2 مع التركيز التلقائي على جهاز التحكم عن بُعد): قمت بالأمس ببناء جهاز تحكم عن بعد بزر واحد بسيط لجهاز Olympus E510 الخاص بي. تحتوي معظم الكاميرات على زر تحرير الغالق (الزر الذي تضغط عليه لالتقاط صورة) الذي يحتوي على وضعين. إذا تم الضغط على الزر برفق ، فستقوم الكاميرا بالتركيز التلقائي وقياس الضوء
وحدة التحكم المؤازرة التسلسلية القائمة على Arduino: 6 خطوات
وحدة التحكم المؤازرة التسلسلية القائمة على Arduino: هذه وحدة تحكم تسلسلية بسيطة للعديد من الماكينات القائمة على Arduino. (أول تعليمات لي أيضًا :)) جاء معظم العمل في هذا من جعل البرنامج يتحدث مع اردوينو وعمل بروتوكول لتمرير البيانات. كـ و