تطبيقات لغة بايثون في إنترنت الأشياء

0 183

تطبيقات لغة بايثون في إنترنت الأشياء من المواضيع التي يزداد البحث عنها خلال الوقت الحالي خاصة عند الحديث عن التحول الرقمي و المدن الذكية و تقنيات الجيل القادم . سواءً كنت تتعامل مع النماذج الأولية أو المشاريع الواقعية في إنترنت الأشياء (IoT) فأنت بحاجة إلى السرعة والكفاءة في عملية التطوير، كما أنك ستكون بحاجة إلى نوعين من المهام: برمجة معدات وأجهزة إنترنت الأشياء ذاتها، وبرمجة واجهات خلفية Backend APIs يمكنها أن تتفاعل مع تلك الأجهزة. في الحقيقة، يمكنك استخدام لغة البرمجة بايثون في التطويرلك من أجل المهتمين السابقتين، كما يمكنك استخدام الإصدار MicroPython والذي يساعدك في التطوير على الأجهزة ذات الموارد المحدودة والمستخدمة في إنترنت الأشياء وبالتالي الحصول على أداء مرتفع بتكلفة منخفضة للغاية.

في هذا المقال الذ تنقله لكم يايثونات (ترجمة بتصرف عن مصادر أجنبية) سوف نلقي نظرة على دور لغة البرمجة بايثون في برمجة أجهزة إنترنت الأشياء. لن نتناول في هذا المقال أمثلة عملية أو تطبيقية، ولكن سنتكلم بشكل نظري عن دور البايثون في هذا الموضوع.

تطبيقات لغة بايثون في إنترنت الأشياء – لماذا إنترنت الأشياء؟

يعود مصطلح إنترنت الأشياء إلى العام 1999 والذي بدأه كيفن اشتون، حيث انتشر وتجلّت أهميته في العالم، تشير التوقعات بأن حجم سوق إنترنت الأشياء في عام 2018 البالغ 151 مليار دولار، سوف يتوسّع ويزداد بشكل طرديٍّ على أساس سنوي ليصل في عام 2022 إلى قرابة 561 مليار دولار.

يمكنك فهم ما هي فائدة إنترنت الأشياء من خلال المثال الآتي:

تخيل أن تستخدم هاتفك لتشغيل وإطفاء المصابيح الكهربائية في منزلك أو أنك تستخدم جهاز الكتروني مخصص لمراقبة استهلاك الطاقة في منزلك وإرسال إشعارات دورية حول معدل استهلاك الطاقة إلى هاتفك أو بريدك الالكتروني بالإضافة لحساب فاتورة الكهرباء وإعلامك بالمبلغ المتوقع بشكل شهريٍّ ومنتظم. أما في المجالات الصناعية والزراعية فتستخدم تقنيات إنترنت الأشياء في تبسيط العمليات وجعلها أكثر كفاءة، فعلى سبيل المثال: في المجال الزراعي، تساعد الحلول المبنية بتقنيات إنترنت الأشياء في تنسيق الحصّادات مع الشاحنات بحيث تعمل على حصاد الأرض وجمع الحبوب وإعادة زراعة الأرض ببذور جديدة في نفس المكان والوقت الذي تمر به الشاحنة على الأرض.

تطبيقات لغة بايثون في إنترنت الأشياء – لماذا البايثون؟

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

تشير الكاتبة Viktoria Melnychuk في مقالتها حول MicroPython إلى أن هذه التقنية تساعد في تقليل حجم البيانات الذي يجب التعامل معه حيث يمكنك الوصول إلى البيانات من خلال الانترنت على السحابة وستساعدك البايثون في عملك سواء كنتَ تنشئ مشروع إنترنت الأشياء الخاص بك من البداية ام أنك فقط ترغب بالتفاعل مع المستشعرات والملحقات المختلفة. تتمثل المزايا العديدة لـ Python عند التعامل مع أجهزة IoT في السرعة التي يمكنك كتابة التعليمات البرمجية فيها والعدد كبير من المكتبات التي يمكنها أن تساعدك في كتابة اكواد لمختلف أنواع الأنظمة الأساسية.

تعد بايثون خياراً رائعاً لتطوير نماذج أولية للأجهزة حتى إذا قمت بإعادة كتابة بعض التعليمات البرمجية أثناء الإنتاج بلغة C أو C ++ أو Java بهدف رفع الأداء بشكل عام، في جميع الأحوال سيعمل النظام بشكل مثالي في Python.

حلول إنترنت الأشياء وبايثون

بايثون مع راسبيري باي

إن إستخدام لغة البرمجة بايثون مع شريحة Raspberry Pi أسهل مما تتخيل، أخرج شريحتك المفضلة من العلبة، ثم ابدأ بكتابة الكود على الفور، فلغة بايثون تم تثبيتها مسبقاً على نظام التشغيل الخاص بالراسبيري باي ولا يحتاج الأمر منك أي تجهيزاتٍ أو إجراءاتٍ مسبقة. ستتمكن من التحكم في جميع منافذ الإدخال والإخراج الموجودة في الشريحة، فضلاً عن دعمها لمختلف بروتوكولات الإتصال اللاسلكي (البلوتوث والواي فاي)، إضافةً لمدخل الشبكة Ethernet، ومخرج HDMI يدعم شاشة صغيرة مخصصة للراسبيري باي بمقاس 3.2 انش وأبعاد 320×240 من نوع TFT LCD أو شاشة من نوع E-Ink (الحبر الرقمي) الموفرة للطاقة بأبعاد 250×122 ومقاس 2.13 انش.

تتوافر المتحكمات بنظاق واسع من الميزات والمواصفات والاسعار، يمكنك اختيار المواصفات التي تلبي احتياجاتك ابتداء من Raspberry Pi 4 Model B 8GB السريع وصولاً إلى أصغر وحدة تحكم Raspberry Pi Zero وجميعها بلا استثناء تدعم لغة البرمجة بايثون بكفاءة عالية، (قد تضطر إلى استخدام Python2.7 في بعض الحالات).

يمكنك بسهولة ومن خلال بضعة أسطر برمجية في Python التحكم في منافذ الإدخال والإخراج باستخدام مكتبة GPIO Zero:

from gpiozero import Button
from time import sleep
 
button = Button(2)
 
while True:
    if button.is_pressed:
        print("Button Press")
    else:
        print("Button Release")
    sleep(1)

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

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

استخدام لغة البرمجة Python مع شريحة PyBoard

لعّل أحد أفضل الحلول التي يمكنك استخدامها في المتحكمات مع لغة البرمجة بايثون هي الشريحة المميزة PyBoard المرفقة بمتحكم STM32F405RG. حيث تعتبر هذه الشريحة بمثابة متحكم صغير ولوحة تطوير متكاملة، تعمل على MicroPython ويمكن توصيلها بالحاسوب عير منفذ USB مما يمكّنك من حفظ أكواد بايثون الخاصة بك من خلال منفذ الـ USB ومن استخدام موجه بايثون التسلسلي (REPL) للبرمجة الفورية، والذي يعمل على أنظمة التشغيل المختلفة Windows و Mac و Linux.

تُدار شريحة PyBoard من خلال لغة MicroPython وهي عبارة عن نسخة خفيفة من المترجم CPython القياسي والمبنية على لغة البرمجة Python 3، حيث تتضمن مجموعة فرعية صغيرة من مكتبة بايثون القياسية بحيث تم تحسينها لتعمل بكفاءة على وحدات التحكم الدقيقة وضمن البيانات المقيدة، مما يؤدي إلى الوصول في النهاية إلى نظام تشغيل بياثوني منخفض المستوى يمكن استخدامه للتحكم بجميع الدوائر والشرائح الالكترونية التي تدعم البايثون.

MicroPython مليئة بالميزات المتقدمة مثل الموجه التفاعلي، والأعداد الصحيحة العشوائية الدقيقة، والإغلاق، وفهم القائمة، والمولدات، ومعالجة الاستثناءات والمزيد، ومع ذلك فهي مضغوطة بما يكفي لتلائم وتعمل في نطاق 256 كيلو بايت فقط من مساحة التعليمات البرمجية و 16 كيلو بايت من ذاكرة الوصول العشوائي. باختصار يمكننا اعتبار MicroPython أنها إعادة كتابة كاملة للغة البرمجة بايثون (الإصدار 3.4) بحيث تناسب وتعمل على المتحكمات الدقيقة وهي تتضمن العديد من تحسينات للكفاءة وتستخدم القليل جدًا من ذاكرة الوصول العشوائي.

تعمل MicroPython على لوحة PyBoard مما يمنحك اتاحة نظام تشغيل بايثون، كما تحتوي وحدة pyb المدمجة على وظائف وفئات للتحكم في الأجهزة الطرفية المتوفرة على اللوحة، مثل UART ، I2C و SPI و ADC و DAC. كما أن أبعاد اللوحة مثيرة للإعجاب، 33 مم × 43 مم ، وبوزن 6 جرامات فقط.

استخدام Micropython مع الشرائح ESP8266 وESP32

إذا كنت بحاجة إلى بناء أجهزة إنترنت الأشياء باستهلاك منخفض للطاقة وإمكانيات رائعة وتكامل مع شبكات WiFi اللاسلكية، يمكنك تشغيل بايثون على شرائح ESP8266 وESP32. بعد تثبيت بايثون على جهاز الكمبيوتر الخاص بك، يمكنك إدخال أداة تثبيت النقطة esptool من سطر الأوامر، عملية التثبيت بسيطة للغاية: قم بتنزيل البرنامج المطلوب من موقع الويب وتثبيته باستخدام esptool، ولا تنسَ تنسيق اللوحة قبل تثبيتها.

from machine import Pin
import time
 
led_pin = Pin(2,Pin.OUT)
 
while True:
    led_pin.on()
    time.sleep(1)
    led_pin.off()
    time.sleep(1)

هناك عدد لا بأس به من بيئات التطوير IDEs للتطوير باستخدام Micropython، يتم تنفيذ عملية التطوير بأكملها على جهاز الحاسوب، ثم يتم تجميعها وتخزينها في ذاكرة متحكم ESP8266 أو ESP32، التعليمات البرمجية في الصورة أدناه توضح بساطة الأمر. سيفرض MicroPython الكثير من القيود مقارنة ببايثون العادية، ولكن بشكل عام يمكنك بسهولة كتابة الوظائف الضرورية وتشغيلها بكفاءة على متحكمات ESP، ويعتبر هذا الحل أكثر فعاليةً من حيث التكلفة مقارنةً بشراء شريحة PyBoard.

 

تطبيقات لغة بايثون في إنترنت الأشياء – الواجهات الخلفية

بروتوكول Python MQTT مع Python

MQTT هو أكثر طرق الإتصال شيوعًا لأجهزة إنترنت الأشياء وهو بروتوكول اتصال يتم تنفيذه باستخدام لغة البايثون. بروتوكول MQTT هو بروتوكول اتصال فيما بين أجهزة إنترنت الأشياء (M2M) تم تصميمه ليكون وسيلة نقل وتبادل الرسائل خفيفة الحجم وهو مفيد لعمليات التواصل بعيدة المسافات والتي تتطلب وجود رمز تحقق و/أو وجود نطاق اتصال ترددي للشبكة. تقوم مكتبة العميل Eclipse Paho MQTT Python بتنفيذ الإصدارات 5.0 و 3.1.1 و 3.1 من بروتوكول MQTT.

يوفر كود مكتبة Poho إجراء يمكّن التطبيقات من الاتصال بوسيط MQTT لنشر الرسائل وتبادل واستلام الرسائل، كما يوفر بعض الوظائف المساعدة لجعل نشر الرسائل لمرة واحدة على خوادم MQTT أمرًا سهلاً. تجدر الملاحظة بأن المكتبة تدعم جميع الاصدارات من البايثون بما فيها 2.7.9+ و 3.5+، كما يعد تكامل الصور مع إصدارات 2.7 Python والإصدارات أكثر سهولة.

الواجهات الخلفية لأجهزة إنترنت الأشياء باستخدام إطار العمل Flask

إذا كنت تبحث عن وسيلة سريعة وذات أداء عالٍ لكتابة اكواد الواجهات الخلفية المترابطة مع أجهزة إنترنت الأشياء الخاصة بك، والتحكم بالإدخال والإخراج وجميع العمليات اللازمة، فإن إطار العمل Flask المبني على لغة البايثون بميزاتها ووظائفها العديدة هي خيارك الأنسب. للبدء، حدد الطلبات التي تحتاج إلى تقديمها من الشريحة، وقم بتضمين إطار العمل Flask micro framework، وبمجرد كتابة بضعة أسطر من التعليمات البرمجية، ستعيد طريقة GET الآن المعلومات عند طلبها من طرف العميل. في كثير من الحالات ، يكون من الأفضل لك استخدام بروتوكول RESTFUL عند التعامل مع أجهزة إنترنت الأشياء. فهذا البروتوكول يبسط التبادل بين مكونات النظام ويسمح لك بتوسيع تبادل المعلومات لاحقاً.

حسناً لنفترض أنك بحاجة لتنفيذ المهمة الآتية وهي نقل المعلومات من أجهزة إنترنت الأشياء وعرضها في صفحة الويب، هنا يأتي دور إطار العمل Flask والذي سينفذ المهمة المطلوبة بسلاسة من خلال آلية القالب المضمنة، والتي تمكنك من عرض البيانات والرسومات في صفحة الويب المطلوبة. لعلَّ العيب الوحيد في استخدام هذا الأسلوب هو النقص المحتمل للبيانات اأثناء نقلها من الخادم إلى الجهاز، وهذا يعني أنه يجب على إنترنت الأشياء الخروج بشكل مستقل ودوري من الخادم، ولكن لا مشكلة حيث توجد حلول لمعالجة هذا الخطر، فعلى سبيل المثال يمكنك استخدام مآخذ الويب أو مكتبة Pushsafer من بايثون. باستخدام مكتبة PushSafer، سوف تتمكن بسهولة وأمان إرسال واستقبال الإشعارات في الوقت الفعلي إلى أجهزة iOS و Android و Windows، بالإضافة إلى المتصفحات مثل Chrome و Firefox و Opera وما إلى ذلك.

الخلاصة

قد تتفاجأ قليلاً ، لكن بايثون ليست هي التي تجعل العمل مع أجهزة إنترنت الأشياء والواجهة الخلفية أمرًا مريحًا للغاية. هناك العديد من العوامل التي تلعب دورًا في العمل معًا لتحسين قابلية استخدام البايثون لإنترنت الأشياء:

  • وجود عدد ضخم من المكتبات متنوعة المهام
  • طريقة تشغيل البايثون من طرف العميل Client
  • القدرة على كتابة الواجهات الخلفية من خلال أطر عمل البايثون المختلفة
  • تكامل مع الواجهات الخلفية بشكل أسهل من جانب العميل
  • متطلبات تشغيل ونظام منخفضة خصوصا لـ MicroPython
  • دعم السحابة
  • وجود كبير من الخبراء والمتخصصين المدربين

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

اترك ردًا

Your email address will not be published.