الهاتف المحمول هو اختراع ثوري في القرن. تم تصميمه بشكل أساسي لإجراء واستقبال المكالمات والرسائل النصية ، ولكنه أصبح العالم كله بعد ظهور الهاتف الذكي في الصورة. في هذا المشروع ، نقوم ببناء نظام التشغيل الآلي للمنزل ، حيث يمكن للمرء التحكم في الأجهزة المنزلية ، باستخدام الهاتف البسيط القائم على GSM ، فقط عن طريق إرسال الرسائل القصيرة عبر هاتفه. في هذا المشروع ، لا حاجة إلى هاتف ذكي ، فقط هاتف GSM القديم سيعمل على تشغيل وإيقاف أي أجهزة إلكترونية منزلية ، من أي مكان. يمكنك أيضًا التحقق من المزيد من مشاريع أتمتة المنزل اللاسلكي هنا: أتمتة المنزل عن بعد بالأشعة تحت الحمراء باستخدام Arduino ، وأتمتة المنزل الذي يتم التحكم فيه عن طريق البلوتوث جنبًا إلى جنب مع أتمتة المنزل القائم على DTMF ، والتحكم في أتمتة المنزل بواسطة الكمبيوتر باستخدام Arduino
شرح العمل
في هذا المشروع ، يتم استخدام Arduino للتحكم في العملية بأكملها. هنا استخدمنا الاتصالات اللاسلكية GSM للتحكم في الأجهزة المنزلية. نرسل بعض الأوامر مثل "# A.light on *" ، "# A.light off *" وما إلى ذلك للتحكم في أجهزة تكييف الهواء المنزلية. بعد تلقي أوامر معينة من Arduino من خلال GSM ، يرسل Arduino إشارة إلى المرحلات ، لتشغيل أو إيقاف تشغيل الأجهزة المنزلية باستخدام برنامج تشغيل الترحيل.
مكونات الدائرة:
- اردوينو UNO
- وحدة GSM
- ULN 2003
- ريلاى 5 فولت
- لمبة مع حامل
- توصيل الأسلاك
- لوح الخبز
- 16x2 LCD
- مزود الطاقة
- الهاتف الخلوي
استخدمنا هنا بادئة في سلسلة الأمر "#A". تُستخدم هذه البادئة لتحديد أن الأمر الرئيسي سيأتي بجوارها و * في نهاية السلسلة يشير إلى أن الرسالة قد تم إنهاؤها.
عندما نرسل رسالة نصية قصيرة إلى وحدة GSM عن طريق الهاتف المحمول ، فإن GSM يتلقى تلك الرسائل القصيرة ويرسلها إلى Arduino. الآن يقرأ Arduino رسالة SMS هذه ويستخرج الأمر الرئيسي من السلسلة المستلمة ويخزنها في متغير. بعد ذلك ، يقارن Arduino هذه السلسلة بسلسلة محددة مسبقًا. في حالة حدوث تطابق ، يرسل Arduino إشارة للترحيل عبر برنامج تشغيل الترحيل لتشغيل وإيقاف تشغيل الأجهزة المنزلية. والنتيجة النسبية تطبع أيضًا على شاشة LCD مقاس 16 × 2 باستخدام الأوامر المناسبة.
هنا في هذا المشروع ، استخدمنا 3 لمبة صفر واط للتوضيح والتي تشير إلى المروحة والضوء والتلفزيون.
فيما يلي قائمة الرسائل التي نرسلها عبر الرسائل القصيرة ، لتشغيل وإيقاف تشغيل المروحة والإضاءة والتلفزيون:
س. |
رسالة |
عملية |
1 |
# ألف مروحة على * |
تشغيل المروحة |
2 |
# أ إيقاف المروحة * |
مروحة معطلة |
3 |
# أ - قم بإلقاء الضوء على * |
الضوء يعمل |
4 |
# أ- إطفاء الضوء * |
الإضائة مطفئة |
5 |
# A.tv على * |
تشغيل التلفزيون |
6 |
# أ- إيقاف تشغيل التلفزيون * |
إيقاف تشغيل التلفزيون |
7 |
# أ - الكل على * |
كل شيء على |
8 |
# أ - كل شيء * |
كل قبالة |
وحدة GSM:
تُستخدم وحدة GSM في العديد من أجهزة الاتصالات التي تعتمد على تقنية GSM (النظام العالمي للاتصالات المتنقلة). يتم استخدامه للتفاعل مع شبكة GSM باستخدام جهاز كمبيوتر. لا تفهم وحدة GSM إلا أوامر AT ، ويمكنها الاستجابة وفقًا لذلك. الأمر الأساسي هو "AT" ، إذا كان GSM يستجيب بشكل جيد ، فإنه يعمل بشكل جيد وإلا فإنه يستجيب بـ "ERROR". هناك العديد من أوامر AT مثل ATA للرد على مكالمة ، ATD لطلب مكالمة ، AT + CMGR لقراءة الرسالة ، AT + CMGS لإرسال الرسائل القصيرة إلخ.) ، مثل "AT + CMGS \ r". يمكننا استخدام وحدة GSM باستخدام هذه الأوامر:
ATE0 - لإيقاف الصدى
AT + CNMI = 2،2،0،0،0
ATD
في + CMGF = 1
AT + CMGS = "رقم الجوال"
>> الآن يمكننا كتابة رسالتنا
>> بعد كتابة الرسالة
Ctrl + Z إرسال الأمر (26 في النظام العشري).
أدخل = 0x0d في HEX
و SIM900 هو استكمال رباعية الموجات GSM / جي بي آر إس وحدة التي توفر GSM / جي بي آر إس 850/900/1800 / 1900MHz والأداء لنقل الصوت والرسائل القصيرة والبيانات مع انخفاض استهلاك الطاقة.
سيركويت دسكريبتيون
تعتبر توصيلات دائرة أتمتة المنزل القائمة على GSM بسيطة للغاية ، وهنا يتم استخدام شاشة عرض بلورية سائلة لعرض حالة الأجهزة المنزلية المتصلة مباشرة بـ arduino في وضع 4 بت. تتصل دبابيس بيانات LCD وهي RS و EN و D4 و D5 و D6 و D7 برقم دبوس اردوينو الرقمي 6 و 7 و 8 و 9 و 10 و 11. ويتم توصيل دبوس Rx و Tx لوحدة GSM مباشرة في Tx و Rx دبوس اردوينو على التوالي. ويتم تشغيل وحدة GSM باستخدام محول 12 فولت. تستخدم مرحلات 5 فولت SPDT 3 للتحكم في LIGHT و FAN و TV. ويتم توصيل المرحلات بمنفذ اردوينو رقم 3 و 4 و 5 من خلال برنامج تشغيل المرحل ULN2003 للتحكم في LIGHT و FAN و TV على التوالي.
وصف الكود
في جزء البرمجة من هذا المشروع ، أولاً وقبل كل شيء في البرمجة ، نقوم بتضمين مكتبة لعرض الكريستال السائل ثم نقوم بتحديد دبابيس البيانات والتحكم لشاشات الكريستال السائل والأجهزة المنزلية.
#تضمن
بعد تهيئة هذا الاتصال التسلسلي بسرعة 9600 بت في الثانية ويعطي توجيهًا للدبوس المستخدم.
إعداد باطل () {lcd.begin (16،2) ؛ Serial.begin (9600) ؛ pinMode (الصمام ، الإخراج) ؛ pinMode (مروحة ، الإخراج) ؛ pinMode (الضوء ، الإخراج) ؛ pinMode (التلفزيون ، الإخراج) ؛
لتلقي البيانات بشكل متسلسل ، استخدمنا وظيفتين إحداهما هي Serial.available والتي تتحقق مما إذا كانت أي بيانات تسلسلية قادمة والأخرى هي Serial.read التي تقرأ البيانات التي تأتي بشكل تسلسلي.
while (Serial.available ()) {char inChar = Serial.read () ؛
بعد تلقي البيانات بشكل متسلسل قمنا بتخزينها في سلسلة ثم في انتظار إدخال.
باطل serialEvent () {while (Serial.available ()) {if (Serial.find ("# A.")) {digitalWrite (led، HIGH)؛ تأخير (1000) ؛ الكتابة الرقمية (led ، منخفضة) ؛ while (Serial.available ()) {char inChar = Serial.read () ؛ str = inChar ؛ إذا (inChar == '*') {temp = 1 ؛ إرجاع؛ }
عندما يأتي Enter ، يبدأ البرنامج في مقارنة السلسلة المستلمة بسلسلة محددة بالفعل وإذا تطابقت السلسلة ، يتم تنفيذ عملية نسبية باستخدام الأمر المناسب المعطى في الكود.
اختيار باطل () {if (! (strncmp (str، "tv on"، 5))) {digitalWrite (TV، HIGH)؛ lcd.setCursor (13،1) ؛ lcd.print ("تشغيل") ؛ تأخير (200) ؛ } else if (! (strncmp (str، "tv off"، 6))) {digitalWrite (TV، LOW)؛ lcd.setCursor (13،1) ؛ lcd.print ("إيقاف") ؛ تأخير (200) ؛ }