- تثبيت AWS IOT Device SDK لـ Python على Raspberry Pi:
- مخطط الرسم البياني:
- برمجة Raspberry Pi الخاص بك:
- اختبار برنامج Python من خلال Shell Window:
- العمل:
لطالما كان Raspberry Pi هو الخيار الأول لتطوير التطبيقات القائمة على إنترنت الأشياء إذا كان هناك مستوى معين من الحساب. بفضل مرونة Python ومجتمع المطورين القوي ، من السهل جدًا جمع مجموعة من البيانات أو تسجيلها أو تحليلها أو الإبلاغ عنها باستخدام Pi. في هذا البرنامج التعليمي ، سوف نتعلم كيفية دمج قوة Raspberry Pi مع خدمة Amazon AWS لنشر البيانات عبر الإنترنت على الإنترنت.
في هذا البرنامج التعليمي ، سنستخدم مستشعر DHT11 لقراءة قيمة درجة الحرارة والرطوبة ، ثم الاتصال بخدمة AWS IOT وتحديث قيم المستشعر باستخدام AWS IOT SDK. يمكن بعد ذلك تصور هذه البيانات في وحدة تحكم Amazon IOT للتأكد من حصولنا على البيانات المنشورة على الإنترنت.
يمكنك أيضًا استخدام AWS Elastic Search Service لجلب قيم المستشعرات هذه وتخزينها في قاعدة بيانات ، ثم استخدام خدمة Kibana Dashboard لتصور بيانات المستشعر كرسم بياني أنيق. ممتع كفى؟ !!! لذا ، فلنبدأ…
المتطلبات المسبقة:
يفترض هذا البرنامج التعليمي أنك قمت بالفعل بإنشاء حساب AWS المجاني الخاص بك وتعرف الأساسيات حول خدمة AWS IoT مثل إنشاء شيء وشهادة وسياسة ونشر القيم باستخدامها. إذا كان خلاف ذلك اقرأ البرنامج التعليمي أدناه.
- بدء استخدام Amazon AWS IOT باستخدام MQTT.fx
يفترض أيضًا أنك تعرف كيفية توصيل مستشعر LCD و DHT11 بـ Raspberry Pi وأن المكتبات للقيام بالشيء نفسه مثبتة بالفعل على Pi الخاص بك. إذا لم يكن كذلك ، تابع البرنامج التعليمي أدناه.
- التفاعل مع DHT11 مع Raspberry Pi
في نهاية البرنامج التعليمي أعلاه ، كنت ستنشئ شيئًا على AWS-IOT ويجب أن يكون لديك أيضًا عنوان الوسيط الخاص بشيءك جنبًا إلى جنب مع الشهادات اللازمة للوصول إلى الشيء الخاص بك. نفترض أيضًا أن Raspberry pi الخاص بك قد تم إعداده بالفعل مع نظام تشغيل ومتصل بالإنترنت. مع وجود هذه في مكانها الصحيح ، فلننتقل إلى البرنامج التعليمي. إذا كنت جديدًا على Raspberry Pi ، فانتقل إلى Getting started with Raspberry Pi أولاً.
تثبيت AWS IOT Device SDK لـ Python على Raspberry Pi:
لاستخدام خدمة AWS على Pi ، يمكننا تثبيت أي من مجموعتي SDK. أحدهما هو JavaScript SDK الذي يستخدم JavaScript كلغة برمجة والآخر هو Python SDK الذي من الواضح أنه يستخدم python كلغة برمجة. نحن هنا نختار Python باعتباره SDK الخاص بنا لأننا نشعر براحة أكبر مع Python من JavaScript.
تتوفر المعلومات الكاملة حول AWS IOT SDK على صفحة GitHub الخاصة بها.
الخطوة 1: لتثبيت SDK على Pi الخاص بك ، افتح Terminal بكتابة الأمر التالي
استنساخ بوابة
الخطوة 2: يجب أن يكون هذا قد ثبّت دليل aws على Pi الخاص بك ، انتقل الآن إليه باستخدام الأمر التالي.
cd aws - iot -device- sdk -python
الخطوة 3: داخل الدليل ، قم بتثبيت ملف الإعداد باستخدام السطر أدناه
python setup.py install
مخطط الرسم البياني:
على جانب الأجهزة ، لدينا Raspberry Pi متصل بمستشعر DHT11 وشاشة LCD. يتم استخدام DHT11 للحصول على قيمة درجة الحرارة والرطوبة ويتم استخدام شاشة LCD لعرض القيم ومعلومات إزالة الأخطاء. يظهر مخطط الدائرة لنفسه أدناه.
يعمل كل من مستشعر LCD و DHT11 مع مصدر طاقة + 5 فولت ، لذلك نستخدم دبابيس 5 فولت في Raspberry Pi لتشغيل كليهما. يتم استخدام مقاومة سحب بقيمة 1 كيلو على دبوس الإخراج لمستشعر DHT11 ، إذا كنت تستخدم وحدة ، فيمكنك تجنب هذا المقاوم.
تمت إضافة وعاء تشذيب يبلغ 10 كيلو إلى دبوس Vee الخاص بشاشة LCD للتحكم في مستوى التباين في شاشة LCD. بخلاف ذلك ، جميع الاتصالات مباشرة إلى الأمام. لكن قم بتدوين دبابيس GPIO التي تستخدمها لتوصيل المسامير لأننا سنحتاجها في برنامجنا. يجب أن يسمح لك الرسم البياني أدناه بمعرفة أرقام دبوس GPIO.
استخدم المخطط وقم بإجراء اتصالاتك وفقًا لمخطط الدائرة. لقد استخدمت لوح توصيل وأسلاك توصيل لإجراء اتصالاتي. منذ أن استخدمت وحدة نمطية قمت بتوصيلها مباشرة بـ Raspberry Pi. بدا جهازي مثل هذا أدناه
برمجة Raspberry Pi الخاص بك:
في برنامج python الخاص بنا ، يتعين علينا قراءة قيمة درجة الحرارة والرطوبة ، وعرضها على شاشة LCD ، وكذلك نشر القيم إلى شيء Amazon IOT الذي أنشأناه بالفعل في البرنامج التعليمي السابق. لذا تأكد من أنك قمت بإنشاء الشيء ولديك جميع الملفات الرئيسية الثلاثة وعنوان الوسيط للشيء الذي قمت بإنشائه.
في برنامج python الخاص بنا ، يتعين علينا ربط الملفات الرئيسية الثلاثة حتى يتمكن Raspberry Pi من الوصول إلى نشر القيم الخاصة بنا. لذا انسخ جميع ملفات المفاتيح الثلاثة والصقها على سطح مكتب Raspberry pi لأننا سنحتاج إلى عنوان مسارها في برنامجنا.
في برنامج الثعبان كاملة ويمكن الاطلاع على الجزء السفلي من هذه الصفحة، يمكنك استخدام البرنامج بعد تحرير عنوان وسيط ومسار الدلائل وفقا لشيء قمت بإنشائه. علاوة على ذلك ، لقد أوضحت الكود في قصاصات صغيرة.
نحن نبدأ من خلال استيراد المكتبات المطلوبة لمشروعنا. المكتبات الرئيسية الثلاث هي AWS SDK ومكتبة LCD ومكتبة DHT ، تأكد من أنك قمت بتثبيت كل من Pi الخاص بك. في الوقت و التاريخ والوقت سيتم تثبيت مكتبة افتراضيا.
من AWSIoTPythonSDK.MQTTLib استيراد AWSIoTMQTTClient قم بإجراء #import من AWS-تقنيات عمليات مكتبة وقت استيراد # لإنشاء تأخير من التاريخ والوقت تاريخ الاستيراد، التاريخ والوقت #To الحصول على تاريخ ووقت Adafruit_CharLCD استيراد كما LCD قم بإجراء #import مكتبة LCD استيراد Adafruit_DHT قم بإجراء #import مكتبة DHT للاستشعار
في السطر التالي ، يتعين علينا تقديم تفاصيل الشيء مثل عنوان الوسيط واسم العميل والمسار إلى الشهادة وملفات المفتاح. لقد استخدمت هنا اسم العميل كـ new_Client يمكنك استخدام نفس الاسم أو أي اسم من اختيارك. يجب تغيير عنوان الوسيط إلى عنوان الشيء الذي قمت بإنشائه ويجب أيضًا تغيير دليل المسار وفقًا لشيءك. بخلاف هذين الشيئين ، لا يتعين عليك تغيير أي شيء في الأسطر التالية.
myMQTTClient = AWSIoTMQTTClient ("new_Client") myMQTTClient.configureEndpoint ("qwert1234567yuio89.iot.us-east-2.amazonaws.com" ، 8883) myMQTTClient.configureCredentials ("/ home / pi / Desktop / الشهادات "/ home / pi / Desktop / ESP32_Thing الشهادات / private.pem.key"، "/ home / pi / Desktop / ESP32_Thing الشهادات / Certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (-1) # Infinite offline نشر قائمة الانتظار myMQTTClient. configDrainingFrequency (2) # Draining : 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 ثوانٍ myMQTTClient.configureMQTTOperationTimeout (5) # 5 ثوانٍ
بعد ذلك علينا تحديد تفاصيل رقم التعريف الشخصي لاتصالنا. يتم تخصيص رقم التعريف الشخصي GPIO لكل دبوس لاسمه الخاص. هنا استخدمنا مستشعر DHT على السن 17 وشاشة LCD في وضع 4 بت. يظهر رمز نفسه أدناه
sensor_name = Adafruit_DHT.DHT11 # نحن نستخدم مستشعر مستشعر DHT11_pin = 17 # المستشعر متصل بـ GPIO17 على Pi lcd_rs = 7 #RS من LCD متصل بـ GPIO 7 على PI lcd_en = 8 #EN من LCD متصل بـ GPIO 8 على PI lcd_d4 = 25 # D4 من LCD متصل بـ GPIO 25 على PI lcd_d5 = 24 # D5 من LCD متصل بـ GPIO 24 على PI lcd_d6 = 23 # D6 من LCD متصل بـ GPIO 23 على PI lcd_d7 = 18 # D7 من يتم توصيل LCD لGPIO 18 على PI lcd_backlight = غير متصل 0 #LED لذلك نحن تعيين إلى 0
ثم نقوم بتهيئة شاشة LCD وعرض رسالة مقدمة صغيرة على شاشة LCD. بعد ذلك سنحاول الاتصال بشيء AWS باستخدام عنوان الوسيط وملفات المفاتيح التي تم إدخالها أعلاه. إذا كان الاتصال ناجحًا ، ستعرض شاشة LCD عبارة " متصل بشيء AWS " أو ستحاول لمدة 10 ثوانٍ وإذا فشل ، فسوف تعرض رسالة خطأ. إذا تلقيت رسالة خطأ ، فتأكد من إنشاء الشيء بنجاح وربطه بالرمز بشكل صحيح. يمكنك دائمًا الرجوع إلى البرنامج التعليمي السابق لمعرفة ما إذا كنت قد أنشأت الشيء بشكل صحيح في AWS.
if time.time () <connect_time: # حاول الاتصال بـ AWS لمدة 10 ثوانٍ myMQTTClient.connect () myMQTTClient.publish ("DHT11 / info"، "متصل"، 0) اطبع "MQTT Client Connection Success!" lcd.message ('متصل بـ \ n شيء AWS') # إذا كان متصلاً آخر: طباعة "خطأ: تحقق من تفاصيل AWS في البرنامج" lcd.message ('خطأ: \ n تفاصيل غير صالحة') # إذا لم يكن متصلاً
مرة واحدة يتم تأسيس الاتصال بنجاح، ونحن ندخل في لانهائية في حين حلقة ل نشر قيمة الوقت ودرجة الحرارة والرطوبة كما حمولة. يجب أن تكون الحمولة هنا دائمًا عبارة عن سلسلة بتنسيق JSON. لذلك نحن أولاً من خلال قراءة التاريخ والوقت الحاليين وحفظهما في متغير باستخدام الأسطر أدناه
now = datetime.utcnow () #get date and time current_time = now.strftime ('٪ Y-٪ m-٪ dT٪ H:٪ M:٪ SZ') # احصل على الوقت الحالي بتنسيق سلسلة
ثم نقرأ قيم الرطوبة ودرجة الحرارة من مستشعر DHT11 ونعرضها على شاشة LCD. ستحافظ الرطوبة ودرجة الحرارة المتغيرة على قيمة الرطوبة ودرجة الحرارة على التوالي
الرطوبة ودرجة الحرارة = Adafruit_DHT.read_retry (sensor_name، sensor_pin) # مقروء من المستشعر
وحفظ القيم ذات الصلة في متغير درجة الحرارة والرطوبة
lcd.clear () # محو شاشة LCD.message ('Temp =٪.1f C'٪ temperature) # عرض قيمة درجة الحرارة lcd.message ('\ nHum =٪.1f ٪٪'٪ humidity) #Display قيمة وقت الرطوبة. النوم (2) # انتظر لمدة 2 ثانية ثم قم بتحديث القيم
كما ذكرنا سابقًا ، يجب أن تكون الحمولة على شكل سلسلة ذات أقواس متعرجة حولها ، نلحق قيمة التاريخ والوقت ودرجة الحرارة والرطوبة بعد تحويل المتغير إلى سلاسل كما هو موضح أدناه.
#prepare the payload in string format payload = '{"timestamp": "' + current_time + '"، "temperature":' + str (temperature) + '، "humidity":' + str (humidity) + '}'
أخيرًا بمجرد أن تصبح الحمولة جاهزة ، يتعين علينا نشرها على عميل MQTT. يمكن القيام بذلك باستخدام الأمر myMQTTclient.publish . أثناء النشر على شيء ما ، يجب أن نطلق عليه اسمًا ، هنا قمت بتسميته DHT11 / data ولكن يمكنك تسميته بأي شيء تريده. لكن تأكد من تذكر الاسم لأننا سنحتاج إلى الاشتراك من الشيء الخاص بنا لعرض البيانات.
اختبار برنامج Python من خلال Shell Window:
بمجرد أن يصبح البرنامج جاهزًا ، قم بتشغيله باستخدام اختيارك. لقد استخدمت Python IDE لتشغيل البرنامج في نافذة shell. إذا كان كل شيء على ما يرام ، يجب أن تحصل على اتصال رسالة ناجح ويجب أن يتم عرض كل الحمولة على النافذة. يمكنك التحقق من قراءة قيم درجة الحرارة والرطوبة بشكل صحيح. سيتم تحديث الحمولة كل 5 ثوانٍ. ستبدو نافذة الغلاف مثل هذا أدناه
إذا كانت لديك أي مشكلة ، فتأكد من أنك قدمت تفاصيل المفتاح الصحيحة وعنوان الوسيط ، فتحقق أيضًا من إمكانية توصيل الشيء باستخدام برنامج MQTT.fx. إذا عرضت الصدفة نجاح اتصال MQTT Client وتوقف هناك ، فهذا يعني أن مستشعر DHT11 لا يستجيب ، تحقق مما إذا كنت قد اتصلت بالدبوس الصحيح وأن المستشعر يعمل.
العمل:
بمجرد تشغيل البرنامج والحصول على التفاصيل أعلاه في نافذة shell ، فهذا يعني أن البرنامج يستجيب بشكل صحيح ويتم تحميل القيم إلى خادم Amazon AWS. يمكنك أيضًا ملاحظة شاشة LCD للتحقق مما إذا كانت تشير إلى أنه منشور على AWS-IoT كل 5 ثوانٍ كما هو موضح أدناه.
يمكننا الدخول إلى تطبيق MQTT.fx والاشتراك في الموضوع DHT11 / data . ثم يجب أن نكون قادرين على الحصول على جميع البيانات التي يتم نشرها بواسطة Raspberry Pi. سيتم أيضًا تحديث هذه البيانات لكل 5 ثوانٍ ؛ ستبدو شاشة MQTT كما يلي
كما ترى ، يتم استلام الحمولة على برنامج MQTT كما هو موضح باللون الأزرق. يمكنك أيضًا مشاهدة الفيديو أدناه لمعرفة كيفية عمل المشروع. منذ الآن لدينا بياناتنا على الإنترنت ، يمكننا استخدامها مع الأدوات الأخرى التي توفرها Amazon مثل Elastic search و Lambda لحفظ البيانات في قاعدة بيانات أو تصورها على الرسم البياني. هناك الكثير من التطبيقات ، بناءً على كيفية استفادةنا من البيانات.
آمل أن تكون قد فهمت البرنامج التعليمي واستمتعت ببناء شيء مشابه ، إذا كانت لديك أي مشكلة في إنجاز ذلك ، فقم بنشره في قسم التعليقات أدناه أو استخدم المنتديات للحصول على المساعدة الفنية.