كيفية ربط الاردوينو مع الانترنت باستخدام الواي الفاي وبروتوكول MQTT
نبذة:
استقبل رسالة SMS عندما يفتح أو يغلق باب منزلكماذا نحتاج
لتطبيق المشروع نحتاج إلى التالي:
- بورد اردوينو مع واي فاي. البورد المستخدم هو Wemos D1 (من الممكن استخدام أي بورد مماثل).
- زر
- ليد
- بعض الأسلاك والمقاومات
البرامج المستخدمة في عملية التطوير
نحتاج إلى تحميل البرامج التالية للعمل على المشروع:
جميع هذه البرامج cross platform بمعنى أنه يمكن تحميلها على ويندوز أو ماك أو لينكس.
أيضا نحتاج إلى عمل حساب مجاني في الخدمات التالية:
ما هو بروتوكول MQTT
البروتوكول هذا مصمم ليعمل بكفاءة بين جهاز وجهاز آخر أو كما يعرف بـ M2M.
كل جهاز قادر على عمل Publish أو Subscribe لأي Topic.
فمثلا قد يكون عندي Topic اسمه درجة_حرارة_الغرفة، ويوجد عليه Subscribe من حساس الحرارة ومن شاشة LCD. عند تغير درجة الحرارة يقوم حساس الحرارة بإرسال Publish إلى Topic درجة_حرارة_الغرفة. وفي كل مرة تصل الرسالة إلى هذا Topic سيصل إشعار إلى الشاشة LCD بمحتوى الرسالة والتي هي قيمة درجة الحرارة.
الحصول على MQTT Broker
نقوم بالتسجيل في موقع Heroku.
بعد ذلك نضغط على create app ونقوم بتسميته بأي اسم.
ثم نضغط على Resources ونقوم بالبحث على cloudmqtt في مربع البحث الخاص بـ add ons.
نقوم باختيار الخطة المجانية cute cat.
بعد ذلك نذهب إلى Settings ثم نضغط على Revel Config Vars.
سيظهر لنا متغيرين أحدهما تحت اسم CLOUDMQTT_URL، في هذا المتغير يوجد معلومات خاصة بالاتصال على السيرفر. يجب أن نقوم بنسخ هذه المعلومات وكتابتها في الاردوينو لاحقا.
برمجة الهاردوير
نقوم بتحميل المكتبة الخاصة بـ PubSubClient من موقع GitHub ونقوم بإضافتها في مجلد library مع ملاحظة أنه يجب إزالة كلمة master من اسم المجلد.
نقوم أيضا بتحميل الملفات الخاصة بالبورد wemos D1 وذلك من خلال board manager نبحث على ESP8266 by ESP8266 Community.
نتأكد أننا قمنا بتحميل الملفات المطلوبة وذلك من خلال تجربة أحد الأمثلة الموجودة.
نقوم بتوصيل البورد إلى الكمبيوتر ورفع الكود المرفق.
حمل الكود من هنا وغير بعض المتغيرات حسب الخطوة الموضحة سابقا.
بعد رفع الكود سيقوم الليد الموصل إلى D4 بـ blink سريعا ثم سيطفأ عند نجاح عملية الوصول إلى شبكة الانترنت.
من الممكن رؤية ما يحصل وذلك من خلال فتح serial monitor.
الحصول على خدمة إرسال رسائل SMS
نذهب إلى موقع nexmo ونسجل فيه مجانا.
بعد التسجيل سيظهر لنا api key و secret key.
سنقوم بنسخهم لاحقا عند كتابة الكود المتعلق بإرسال SMS.
برمجة السيرفر لإرسال رسالة نصية SMS
نقوم بإنشاء مجلد جديد ونسميه بأي اسم ثم نفتح هذا المجلد باستخدام VS code.
نضغط على Ctrl + ~ لفتح terminal.
نقوم بكتابة التالي وضغط enter بعد كل سطر لتنفيذ الأمر والانتظار حتى ينتهي تنفيذه.
npm init -y
npm install mqtt nexmo
سيتم إنشاء بعض الملفات داخل المجلد. نقوم بفتح ملف package.json وإضافة سطر جديد تحت test script كالتالي:
“start”: “node index.js”
ونحفظ ونغلق الملف.
ثم نقوم بإنشاء ملف داخل نفس المجلد باسم index.js. وبعدها ننسخ الكود المرفق هنا والتعديل عليه قليلا وذلك بإضافة المعلومات الخاصة بـ api key والمتعلقة بـ nexmo.
بعد ذلك نتوجه إلى terminal ونكتب الأوامر التالية استعدادا لرفع الكود إلى Heroku:
git init
git add .
git commit -m “init”
heroku git:remote -a yourAppName
git push heroku master
بعدها سيتم رفع الكود إلى Heroku.
نذهب إلى Heroku ونقوم بإضافة متغير في config vars تحت اسم phone_num وقيمته هي الرقم الذي استخدمته في التسجيل إلى nexmo.
جميييل