استخدام فايربيس كلاود في انظمة IoT



السلام عليكم ..

عنوان الدرسمثال بسيط لاستخدام firebase cloud storage في انظمة IoT 
الاختصاص/ Internet of Things
الموضوع/ Cloud
المستوى/ المبتدئ


ملخص التجربة 

يقدم هذا الدرس تجربة توضح استخدام الكلاود في مشاريع ال internet of thing  كخزن بيانات وتغيير حالة الجهاز او ال sensor المرتبط مع النظام عن بعد (أي مكان في العالم) من خلال تطبيق موبايل وفي هذا الدرس نستخدم تطبيق اندرويد مبرمج بلغة جافا . 


الأدوات المستعملة: 
  1. هاردوير 
  •  NodeMCU esp8266 : متحكم يستخدم لربط الجهاز للانترنت عن طريق wifi وكذلك يحتوي على مخارج ومدخلات للتحكم بالاجهزة
  • LED : يعتبر بمثابة جهاز للتحكم به عن طريق الكلاود
  1.  قاعددة بيانات : Firebase Real Time DB
  2. تطبيق نظام اندرويد 
اللغات المستعملة /  C , java


سنقوم بعمل node في firbase db باسم LED_Status ونستخدم نفس الاسم في برمجة تطبيق الموبايل وبرمجة المتحكم لوضع القيمة فيه

في طرف تطبيق الموبايل نستخدم setInt لكتابة القيمة في الLED_Status وهنا التعامل مع نوع integer
وفي طرف اردوينو نستخدم getInt  لقراءة القيمة من الLED_Status وهنا التعامل مع نوع integer ايضاً

للمزيد من الدوال حول استخدام firebase مع الاردينو راجع الdocumentation  الخاص من خلال هذا الموقع :

هيكلية التجربة



ملاحظة/ اضغط على الصورة للتكبير

الخطوات:-

الخطوة 1:- 

سنقوم في البداية بربط جزء الهاردوير الذي يحتوي على متحكم جاهز (nodeMUC) الذي يحتوي على wifi ونربط النظام من خلاله للانترنت وأيضا هنالك LED للتحكم به من خلال تطبيق موبايل عبر firebase  ويكون الربط كما في الصورة :

LED pin = D7 in NodeMCU
الخطوة 2:- 
سنقوم بتجهيز الكلاود (firebase) بعمل مشروع جديد وليكن اسمه (IoT) ولمعرفة كيفية عمل مشروع جديد في firebase اذهب الى رابط هذا الدرس 


بعد انشاء المشروع  ننشئ قاعدة بيانات جديدة ونضع فيها node باسم LED_Status  كما في الصورة:



في حال يكون LED_Status = 0 فهذا يعني ان ال LED لا يعمل اما عندما يكون LED_Status = 1  فهذا يعني ان ال LED يعمل

الخطوة 3:- (android studio)

نقوم بعمل تطبيق موبايل للتحكم على الLED من خلاله ... وسنعمل على بيئة android studio باستخدام لغة جافا 

انشئ مشروع جديد فارغ في android studio وضع فيه هذه ال objects:


TextView = 1
Buttons = 2

نستخدم TextView لقراءة حالة ال LED داخل التطبيق
نستخدم Buttons لتغيير حالة ال LED احدهما للاطفاء والاخر للتشغيل

سيكون التطبيق بشكل مبسط كالتالي:


اذهب الى ملف java وضع فيه الكود التالي : (ملاحظة/ تم ادراج الكود على شكل الصورة لكي يقوم المتدرب بكتابة الكود بيده حتى يفهم الكود بشكل افضل)



شرح للكود :

هذا الجزء لعمل initialize for objects

********************************
وهذا الجزء خاص بتشغيل الLED

ننشئ متغير باسم database لعمل instance من firebaseDatabase ومتغير آخر باسم myref لتغيير القيمة المخزنة داخل node=LED_status حيث انه سيقوم بوضع قيمة "1" لتغيير الحالة الى on
********************************
وهذا الجزء خاص باطفاء الLED

ننشئ متغير باسم database ايضا لعمل instance من firebaseDatabase ومتغير آخر ايضا باسم myref لتغيير القيمة المخزنة داخل node=LED_status حيث انه سيقوم بوضع قيمة "0" لتغيير الحالة الى off

ملاحظة:- 
1- استخدمنا Toast لاظهار مسج مؤقت 
2- للمزيد من المعلومات حول كيفية استخدام Firebase API يمكنك مراجعة firebase documentation
3- تم إهمال Text View لعدم إطالة الدرس اكثر


وبهذا نكون قد انتهينا من كتابة كود بسيط جدا للتحكم على حالة الLED من خلال التطبيق، سننتقل الى برمجة الطرف الآخر وهو الهاردوير (NodeMCU) ... 

//////////////////////////////////////////////////////////


الخطوة 4:- (Arduino IDE)

قبل ان نذهب الى Arduino IDE نحتاج الى تحميل libraries التالية:

1- library خاص لل firebase  ونقوم بتنزيله من موقع الgithub من خلال الرابط التالي:  https://github.com/FirebaseExtended/firebase-arduino

2-  library خاص لل esp8266 : من خلال برنامج Arduino اذهب الى Tools واختر manage libraries  وقم بالبحث عن esp8266 وقم  بتحميله ... أيضا من خلال نافذة File اذهب الى Preferences والصق هذا الرابط في حقل Additional Board

http://arduino.esp8266.com/stable/package_esp8266com_index.json

الان بامكاننا عمل connection مع firebase &Node MCU esp8266 باستخدام هذه المكتبات

- ننشئ ملف جديد ونضع في الكود التالي (الشرح بالتعليقات الموجودة في الكود):-








بعد الانتهاء نقوم بتحميل البرنامج على المتحكم فيصبح ال LED جاهز للتحكم به عن طريق التطبيق من اي مكان عبر Firebase

ملاحظة/ التجربة كانت سهلة للغاية لكن الشرح كان مطولاً من اجل ايصال فكرة الدرس الى المبتدئين واردت ان اتطرق الى تفاصيل اكثر قدر الامكان ... 

اتمنى الاستفادة من الدرس وتطبيقه بشكل عملي والمحاولة على تغيير الحساس والتلاعب بالكود والتطبيق  لتكتشف أشياء جديدة 😊.enjoy



تعليقات

المشاركات الشائعة من هذه المدونة

استخدام مكتبات Numpy, Pandas, Matplot الخاصة بلغة بايثون في تمثيل البيانات

بناء نظام انترنت الاشياء باستخدام محاكي Packet Tracer المقدم من شركة سيسكو العالمية

تعلم Firebase cloud function