صفحة ١٥٠
انظر إلى الشكل: نحن الآن في الدرس الثالث المعنون بالتفاعل مع خدمات الويب السحابية. بعد أن بنيت في الدرس السابق دائرة الأردوينو وقرأت البيئة المحيطة، ستطور العمل اليوم لتستعمل منصة الحوسبة السحابية Binary IoT Cloud لترسل البيانات عبر الإنترنت. تتيح لك هذه المنصة عرض البيانات التي أنشأتها عبر دائرة الأردوينو، وتظهر على شاشة حاسوبك لوحة ترحيب تحمل اسم المستخدم ومع جدول يعرض التاريخ ووقت القياس مع درجتي الحرارة والرطوبة، بالإضافة إلى أزرار لتصدير البيانات إلى ملفات أو تسجيل الخروج.
صفحة ١٥١
لكي تستخدم منصة الحوسبة السحابية Binary IoT Cloud عبر الإنترنت، عليك أولاً الانتقال إلى موقعها الإلكتروني عبر الرابط المطبوع أمامك ومن ثم صفحة الترحيب تضغط على زر Register أي تسجيل. يطلب منك الموقع كتابة اسم المستخدم في حقل Username وكلمة مرور في حقل Password ثم تأكيدها وفي حقل Pin تكتب رقم التعريف الشخصي وهو الرقم ١٧٤٥٦٣، وبعد تعبئة هذه الحقول بدقة تضغط على زر Register لتكتمل عملية التسجيل بنجاح وتصبح قادراً على الدخول إلى حسابك.
صفحة ١٥٢
لكي تستدعي واجهة برمجة تطبيقات الويب والمعروفة اختصاراً بـ Web API باستخدام لغة البايثون، ستنشئ كائن جسون أو ما يسمى JSON والذي يحتوي على بيانات البيئة المحيطة ويرسلها إلى منصة الحوسبة السحابية من خلال دالة تتفاعل مع واجهة برمجة تطبيقات الويب. ابدأ بتثبيت حزمة طلبات البايثون عن طريق فتح الواجهة الطرفية وتدخل الأمر pip install requests. بعد ذلك في بداية برنامجك استدعِ حزمة الطلبات بالسطر import requests، ثم احصل على التاريخ والوقت الحالي وحولهما إلى نص باستدعاء الوحدة القياسية datetime بالطريقة المبينة، وأنشئ متغيرين باسم username وpassword لتتطابق مع البيانات التي استخدمتها سابقاً في التسجيل، ثم أنشئ دالة جديدة باسم send_data لاستقبال المعاملات.
صفحة ١٥٣
تكملة لبناء دالة إرسال البيانات، أنشئ متغيرًا جديدًا باسم api_url بواسطة الرابط المطبوع أمامك والذي يمثل نقطة وصل واجهة برمجة تطبيقات الويب للمنصة السحابية. بعد ذلك أنشئ كائناً بمتغيرات الدالة التي ستمرر إلى واجهة برمجة تطبيقات الويب كجزء الطلب الرئيس، حيث يضم كائن جسون مفاتيح مثل اسم المستخدم وكلمة المرور ودرجة الحرارة والرطوبة والتاريخ والوقت. استدعِ واجهة برمجة تطبيقات الويب باستخدام دالة request.post وتأكد من احتوائها على معاملات كل من رابط واجهة برمجة تطبيقات الويب وكائن جسون الرئيس عبر كود response = requests.post.
صفحة ١٥٤
يجمع هذا الشكل التعليمات البرمجية الكاملة للدالة send_data التي أنشأتها في الخطوات السابقة، حيث تحتوي على رابط المنصة السحابية ومعالجة التاريخ والوقت وكائن جسون الذي يجمع القياسات ويرسلها عبر الطلب. لإرسال البيانات بشكل دوري، أضف الدالة send_data في البرنامج الرئيس ليتم إرسال البيانات التي جُمعت من البيئة المحيطة كل ٣٠ ثانية باستخدام أمر time.sleep بقيمة ٣٠. في الجزء الثاني من الصفحة، يبدأ البرنامج بشكله النهائي Complete Code عبر استيراد المكتبات اللازمة مثل datetime وtime وrequests وpyfirmata، ثم تعريف لوحة الأردوينو المتصلة بمنفذ COM4.
صفحة ١٥٥
نتابع كتابة البرنامج النهائي في لغة البايثون للتحكم بالأردوينو؛ نبدأ بإنشاء المكرر لتنظيم القراءات عبر pyfirmata.util.Iterator وتفعيله، ثم نحدد منافذ التوصيل عبر board.get_pin، حيث يمثل المنفذ d:3:o محرك التيار المستمر، والمنفذ a:2:i مستشعر الحرارة، والمنفذ a:4:i مستشعر الرطوبة. نضع بيانات حسابك في المنصة السحابية ثم نكتب دالة send_data لإرسال القراءات. بعد ذلك ننشئ دالة water_plant للتحكم بري النبات عبر طباعة رسالة تشغيل المضخة، ثم جعل قيمة المنفذ تساوي واحداً، والانتظار خمس ثوانٍ قبل إيقاف تشغيل المضخة بجعل القيمة صفراً، ثم نبدأ حلقة التكرار while True لقراءة الحساسات.
صفحة ١٥٦
داخل حلقة التكرار الدائمة، نقرأ قيمتي الحرارة والرطوبة من المستشعرين، ونتأكد من عدم كونها فارغة. نحول قراءة الحرارة ونحسب الجهد الكهربائي بمعادلة تعتمد على قسمة القيمة على ١٠٢٤ مضروبة في خمسة، ثم نحسب درجة الحرارة بطرح نصف وضرب النتيجة في مائة. وللرطوبة نحسب النسبة المئوية بطرح القيمة من واحد ثم الضرب في مائة. إذا كانت الحرارة أكبر من أو تساوي ٢٤ والرطوبة أقل من أو تساوي ٤٠، يتم استدعاء دالة ري النبات water_plant، ثم نجهز تقارير الحرارة والرطوبة لنطبعها على الشاشة، وأخيراً نستدعي دالة إرسال البيانات send_data ونوقف التنفيذ مؤقتاً لثلاثين ثانية قبل القراءة التالية.
صفحة ١٥٧
انظر إلى الشكل: هذا هو الشكل النهائي لمشروع الحديقة الذكية باستخدام الأردوينو. بعد الانتهاء من كتابة البرنامج في البايثون، ضع مستشعر رطوبة التربة في تربة النبتة كما ترى في الصورة داخل الحوض، وقم بتشغيل برنامجك من حاسوبك، وستلاحظ قراءة البيانات المخرجة من البيئة إلى الحاسوب. يظهر أمامك لوحة أردوينو متصلة بلوحة تجارب ومستشعر، إضافة إلى محرك تيار مستمر يفترض اتصاله بمضخة ماء أو بصمام للري، وتعمل هذه الأجزاء متكاملة لتنفيذ نظام الري الذكي.
صفحة ١٥٨
لعرض بيانات الحديقة الذكية بعد تشغيل برنامجك بالكامل في البايثون ودعه يعمل لبضعة دقائق ليجمع بعض البيانات، اذهب إلى منصة الحوسبة السحابية Binary IoT Cloud عبر رابط المنصة المطبوع. أدخل اسم المستخدم وكلمة المرور التي أنشأتها سابقا، واضغط على زر تسجيل الدخول Login. يتيح لك هذا الدخول عرض البيانات المجمعة حول بيئتك النباتية والمستمدة من قراءات المستشعرات التي أرسلها برنامج البايثون طوال فترة تشغيله.
صفحة ١٥٩
انظر إلى الشكل: يعرض الجدول أمامك قراءات البيئة المحيطة التي جُمعت بواسطة الأردوينو وأرسلت إلى المنصة السحابية من خلال برنامج البايثون الذي يعمل على حاسوبك. يوضح الجدول التاريخ ووقت القياس مع قيم درجات الحرارة والرطوبة مسجلة بدقة. أسفل الجدول، تجد أزراراً لتصدير بياناتك إلى ملفات بصيغة xlsx أو csv. ملف القيم المفصولة بفواصل أو CSV هو ملف نصي يتم الفصل بين القيم المدرجة فيه بالفواصل، ويُمثّل كل سطر في الملف سجل بيانات مستقل.
صفحة ١٦٠
انظر إلى الشكل: لنفترض أن لدينا عدة حدائق مختلفة في أنحاء المدينة، ويتعين على إدارة الحدائق في البلدية مراقبة ورعاية كل من هذه الحدائق من خلال أنظمة مختلفة. تجمع هذه الحدائق كميات هائلة من البيانات، والتي يمكن تحليلها بدورها لتوفير رؤى وأنماط شاملة حول إدارة وتشغيل جميع تلك الحدائق من خلال إجراء المقارنة بين كل منها. إن الإدارة الذكية للحدائق باستخدام هذه التقنيات تساهم بشكل فاعل في تحسين الحدائق الذكية وتطويرها، وذلك من خلال زيادة فاعلية تلك النظم، والمحافظة على توازنها واستمراريتها.
صفحة ١٦١
هذه صفحة تمرينات. السؤال الأول يطلب منك توضيح الغرض من استخدام واجهة برمجة تطبيقات الويب، ففكر في كيف تربط هذه الواجهات بين التطبيقات السحابية وبرامجك في الأردوينو لنقل البيانات. السؤال الثاني يسأل عن سبب ضرورة اسم المستخدم وكلمة المرور للاتصال بواجهة برمجة تطبيقات الويب، واذكر سببين لذلك؛ وفكر في حماية البيانات ومنري غيرAuthorized من الوصول إلى حسابك ومنصتك السحابية.
صفحة ١٦٢
هذه صفحة تمرينات. السؤال الثالث يطلب تحديد الأَسُطر البرمجية التي يتعين عليك إجراء تغييرات عليها في البرنامج لتعديل الشروط المطلوبة لبدء ري النبات ومدة الري؛ ففكر في الدوال الشرطية التي تفحص قيم الحرارة والرطوبة وأوامر الانتظار الزمني للمضخة. السؤال الرابع يطلب منك وصف بيانات أخرى يمكن جمعها بخلاف درجة الحرارة والرطوبة في بيئة الحديقة الذكية؛ وفكر في عناصر بيئية أخرى مثل الإضاءة أو حموضة التربة أو مستوى الماء.
صفحة ١٦٣
هذه صفحة تمرينات. السؤال الخامس يفترض توفر بيانات وقراءات تتعلق بمراقبة البيئة في الحديقة الذكية على المدى الطويل من الماضي، ويطلب شرح كيف يمكن لهذه البيانات إضافتها إلى البيانات الحالية من المنصة السحابية لمساعدتك في ري حديقتك بكفاءة أكبر؛ ففكر في استقراء الأنماط الموسمية وتوقع احتياجات النبات. السؤال السادس يطلب منك المقارنة بين أنواع تنسيقات البيانات JSON وCSV؛ ففكر في طريقة تنظيم البيانات كأزواج مفتاح وقيمة في الأول، وكملف نصي مفصول بفواصل في الثاني.
صفحة ١٦٤
هذه صفحة مشروع تتضمن أربع خطوات عملية لتطوير نظام حديقتك الذكية. المطلوب أولاً تصميم دائرة باستخدام الأردوينو في محاكي تينكركاد قائمة على الدائرة التي أنشأتها سابقاً لمراقبة وري عدد أكبر من النباتات. ثانياً، استخدم الأطراف التناظرية المتبقية لتوصيل ثلاث نباتات أخرى باستخدام مستشعرات رطوبة التربة. ثالثاً، قم بتطوير برنامج البايثون للحصول على قيم الرطوبة من النباتات الجديدة وإنشاء ظروف بيئية مختلفة لري كل نبات. رابعاً، أنشئ الدائرة الفعلية وأعد كتابة برنامج البايثون ليتضمن النباتات الجديدة.
صفحة ١٦٥
انظر إلى الصفحة: تلخص هذه الصفحة ما تعلمته في هذا الدرس، حيث تتضمن النقاط تثبيت مكتبة pyfirmata واستخدام البايثون لبرمجة أجهزة تحكم الأردوينو، وإنشاء تطبيقات عملية لإنترنت الأشياء باستخدام جهاز الأردوينو الدقيق، واستخدام المنصات السحابية لإرسال البيانات المجمعة وتقييمها، وتمييز مدى تأثير البيانات المجمعة من حلول إنترنت الأشياء في عمليات صنع القرار، والتعرف على طريقة إنشاء حلول إنترنت أشياء موسعة من تطبيقات بسيطة. في أسفل الصفحة جدول يوضح المصطلحات الرئيسية مع مقابلاتها باللغة الإنجليزية.