انترنت الاشياء-20


عالم البرمجة في انترنت الاشياء

قلنا في الدروس السابقة اننا سنستخدم متحسسات ومحركات لألتقاط بيانات معينة من البيئة المحيطة (بالنسبة للمتحسسات sensors) والقيام بعمل معين استجابة لتلك البيانات والقراءات (من قبل المحركات او المشغلات actuators). ولكن كيف تعرف المتحسسات اي بيانات تجمع وكيف تعرف المحركات (المشغلات) اي وظيفة تقوم بها؟

الجواب ببساطة: من خلال برمجة هذه الاجهزة للقيام بما يجب القيام به في الظروف المختلفة.

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

قبل البدء بالتعرف على ما هي المهارات المطلوبة للمبرمجين في عالم انترنت الاشياء، لا بأس بمقدمة بسيطة عن البرمجة للمبتدئين:

ما هو البرنامج (program

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

ولأن الحواسيب لا تتكلم بلغة البشر (على الاقل لحد الان 🙂 ) فأن لها لغات خاصة تسمى لغات البرمجة (programming languages) والتي تسمح للبشر بكتابة الايعازات للحاسوب بلغة يفهمها الحاسوب ويستطيع الاستجابة لها. كما يعرف الجميع فهناك الكثير من لغات البرمجة ولكنها جميعاً تشترك بنفس السياق المنطقي لكتابة البرامج فيها وتحتوي اغلبها على ادوات شروط وحلقات تكرارية (ليس هذا المكان المناسب للتوغل في تفاصيلها حيث ان لها مكانها الخاص في كتب تعلم لغات البرمجة J ) وفي الصورة ادناه مثال على الادوات البرمجية الموجودة في اغلب لغات البرمجة:

1.png

انواع البرامج:

قد يخطر على بال المبتدئين سؤال مهم وهو: هل كل البرامج التي نقوم بكتابتها هي من نوع واحد؟

والجواب يأتي بسرعة: كلا. فهناك الكثير من انواع البرامج التي يمكن كتابتها ومنها:

  • نظم التشغيل (operating systems): مثل الويندوز والماك والليكنس واليونكس والاندرويد. نعم هي برامج كبيرة ولكنها تبقى برامج J والهدف منها ادارة عمل الاجهزة التي تنصب عليها حيث تكون وسيطاً بين الهاردوير والبرامج التطبيقية. تسمح هذه البرامج للمستخدم بالتحكم في الاجهزة المختلفة بدرجات مختلفة من الحرية وفي الصورة ادناه بعض منها:

2.png

  • البرامج التطبيقية (applications): وهي البرامج التي تكتب لأنجاز وظيفة معينة مثل المايكروسوفت وورد ومحرر الصور والاكسل ومشغل الصوتيات وغيرها من التطبيقات.
  • البرامج الوسطية (firmware): وهي البرامج التي تحتوي الايعازات الخاصة بجعل الجهاز يقوم بعملية الاستنهاض (booting up) عند بدء التشغيل وقد تكون هي البرمجيات الوحيدة في بعض الاجهزة (مثل المتحسسات الصغيرة والاجهزة الدقيقة) في حين تحتوي اجهزة اخرى على نظام تشغيل مستقل وتطبيقات اخرى اضافة الى الفيرموير (firmware) ومن امثلة الاجهزة التي تحتوي فيرموير هي الساعات والطابعات واجهزة التلفزيون الذكية والمتحسسات والاجهزة الذكية والراوترات والسويتشات. ومثال الفيرموير في اجهزة الحاسوب هو برنامج البيوز (BIOS: Basic Input Output System).

لغات البرمجة (programming languages) : وكما قلنا هناك الكثير منها ومن اشهرها لغات (C, C++, C#) ولغة جافا (Java) التي يجب عشاقها ان يسموها لغة (WORA) اي (Write once, run everywhere) اي انها توفر امكانية كتابة البرنامج مرة واحدة وامكانية تنفيذه في كل مكان للدلالة على انها متعددة المنصات (multiplatform) وفي الصورة ادناه بعض من اهم لغات البرمجة الان:

3.png

نشاط:

 لفهم كيفية عمل (if/then, for/do, while/do) حاول فهم المقاطع البرمجية المبينة في الشكل التالي على شكل مخطط انسيابي (flow chart):

4.png

من لغات البرمجة الاخرى التي يجب على الراغبين بالعمل في عالم انترنت الاشياء ان يتقنوها هي لغة (Java Script) وهي لغة برمجة تستخدم بشكل اساسي في تطبيقات الويب وكمثال عليها تصور ان هناك موقع انترنت يسمى (cisco coffee) ومهمته ان يراقب حقول القهوة في مكان ما وكما في الصورة ادناه:

5.png

في هذا المثال تصور ان لديك الكثير من المتحسسات المنصوبة في عدة اماكن في حقل للقهوة وتقوم هذه المتحسسات بأرسال اشارات الى محطة تحكم مركزية واجهتها هي تطبيق الويب المكتوب بلغة الجافا سكربت (java script) للسماح للمستخدمين بمراقبة الحقل.

ولنفترض ايضاً ان ثلاث انواع من المتحسسات تم تنصيبها في الحقل وهي متحسسات الحرارة وضوء الشمس ورطوبة التربة. والتي يفترض ان تعمل وفق الشروط التالية:

  • اذا كانت درجة الحرارة اقل من 77 فهرنهايت (وهي درجات الحرارة المستخدمة في امريكا 🙂 بدلاً من الدرجات السيليزية) فأن تحذيراً يجب ان يظهر للمستخدم (في صفحة الويب).
  • اذا كان الحقل معرضاً لضوء الشمس بمقدار كبير جداً فأن تحذيراً اخر يجب ان يظهر للمستخدم.
  • واخيراً ان كانت التربة رطبة جداً او جافة جداً فأن تحذيراً اخر يجب ان يظهر للمستخدم.

في الصورة التالية يظهر كود مكتوب بلغة الجافا سكربت لوصف الشروط اعلاه ولأن التعامل مع تفاصيل هذه اللغة هو خارج نطاق هذا الكورس فسنترك للقاريء المهتم بمعلومات اكثر حرية الاطلاع على معنى هذا الكود (ونحن ننصح المهتمين بالبرمجة في عالم انترنت الاشياء بالاهتمام بكل لغات البرمجة المذكورة في هذا الدرس ان ارادوا الصمود في عالم الغد 🙂 ):

6.png

وللمهتمين بتعلم اساسيات البرمجة بشكل مبسط فشركة كوكل تقدم اداة سهلة ورسومية اسمها (google Blockly Game) يمكن زيارتها من الرابط التالي والبدء بتعلم مفاهيم البرمجة المبسطة معها: (انقر هنا لزيارة موقع الاداة). الصورة تبين واجهة الموقع:

7.png

واخيراً فمن اللغات المهمة في عالم انترنت الاشياء هي لغة البايثون (python) ولمعرفة كيفية البدء في تعلمها يمكن زيارة الرابط التالي (انقر هنا). او زيارة تبويب لغة بايثون في المدونة العلمية على الرابط التالي (انقر هنا لزيارة تبويب لغة بايثون في مدونة مصطفى صادق العلمية).

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

انتظرونا في الدرس القادم الذي سيكون مفاجأة ستسعد الجميع 🙂

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s