جدول المحتويات:

UCL - IIOT Greenhouse: 11 خطوة
UCL - IIOT Greenhouse: 11 خطوة

فيديو: UCL - IIOT Greenhouse: 11 خطوة

فيديو: UCL - IIOT Greenhouse: 11 خطوة
فيديو: BEE Talks 2020 - Thibault Pirson, UC Louvain, Belgique 2024, يوليو
Anonim
UCL - IIOT Greenhouse
UCL - IIOT Greenhouse

هذا المشروع هو امتداد لمشروعنا السابق مع Greenhouse (https://www.instructables.com/id/EAL-EMBEDDED-GREE…).

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

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

إلى جانب dataloggin ، يمكننا أيضًا التحكم في الملف الشخصي النشط في Greenhouse والتحكم فيه عن بُعد.

ثم يمكننا أيضًا التحكم في المضخة والمروحة يدويًا.

الخطوة 1: دليل التثبيت

دليل التثبيت
دليل التثبيت

الخطوة الأولى هي تثبيت جميع المكونات المختلفة.

داخل الأقواس () ، قمنا بإدراج مكان توصيل المكون. على سبيل المثال ، Arduino متصل بـ Raspberry Pi عبر كابل USB.

الأجهزة المستخدمة:

  • اردوينو (Raspberry Pi)
  • Raspberry Pi 3 B +
  • مقياس رطوبة التربة (اردوينو)
  • مستشعر DHT11 (اردوينو)
  • مضخة مياه غاطسة HG-320 (مرحل)
  • تتابع 5 فولت (اردوينو)
  • مروحة كمبيوتر (ريلاي)
  • 230 فولت امدادات الطاقة (مضخة)

البرمجيات المستخدمة:

  • Raspbian (OS for Raspberry Pi)
  • اردوينو IDE
  • Python (Raspberry Pi) - PySerial- MySQLclient
  • العقدة الحمراء (Raspberry Pi) - Pythonshell - Summariser - MySQL - لوحة القيادة
  • خادم MySQL (freemysqlhosting.net)

سيتعين عليك أولاً توصيل مكونات الأجهزة ، لذا اتبع هذا الدليل لبناء الدفيئة: دليل التثبيت.

ثم سيتعين عليك تثبيت نظام التشغيل Raspbian OS على Raspberry Pi الخاص بك. بعد ذلك سيكون عليك تثبيت Python ، ثم تثبيت مكتبات Python.

الخطوة التالية هي تثبيت Node-Red على Raspberry Pi ، ثم الانتقال إلى مدير منصة التحميل وتثبيت الوحدات المذكورة سابقًا.

ثم انتقل إلى هذا الموقع Free MySQL Server وأنشئ خادم MySQL مجاني.

عند الانتهاء من كل هذا ، تكون جاهزًا لنقل نص python إلى Raspberry Pi الخاص بك ، واستيراد البرنامج النصي Node-Red وتحميل الكود الخاص بـ Arduino.

الخطوة 2: عرض التحكم

Image
Image

الخطوة 3: قائمة الأجزاء / البرامج المستخدمة في المشروع

لقد استخدمنا التكنولوجيا التالية لصنع الدفيئة

  • اردوينو
  • فطيرة التوت
  • العقدة الحمراء
  • بايثون
  • PHPMyAdmin

الخطوة 4: قائمة / 0

الاسلاك الرسم البياني
الاسلاك الرسم البياني

الخطوة 5: مخطط الأسلاك

الخطوة 6: كود اردوينو

يعمل كود Arduino عن طريق طباعة البيانات ، المقاسة بواسطة المستشعرات ، إلى الاتصال التسلسلي حيث تتم قراءتها بواسطة Raspberry Pi ونقلها إلى قاعدة البيانات.

يحتوي Arduino أيضًا على بعض دبابيس الإدخال الرقمية المتصلة بـ Raspberry Pi التي يقرأها Arduino وإذا أصبح أحد الثلاثة مرتفعًا ، فسيتغير ملف التعريف بسبب عبارة IF.

كما قمنا بترقية الكود لاستخدام الميلي بدلاً من التأخير الذي يتيح قراءة الأزرار وبقية الكود طوال الوقت بدلاً من الفاصل الزمني عن طريق التأخير القديم.

الخطوة 7: Raspberry Pi 3 B +

Raspberry Pi 3 B +
Raspberry Pi 3 B +

استخدمنا Raspberry Pi 3 B + لتوصيل Arduino بالإنترنت وقاعدة بيانات MySQL. وقد أتاح لنا ذلك تخزين البيانات من أجهزة الاستشعار الخاصة بنا وإنشاء واجهة مرئية للمستخدم النهائي. بالنسبة لواجهة المستخدم ، استخدمنا Node-Red مع لوحة Dashboard.

ولكن قبل أن نتمكن من إظهار بيانات المستشعر الخاصة بنا على Node-Red ، كنا بحاجة إلى طريقة لتحميل البيانات على قاعدة بيانات MySQL ، ولهذا قمنا بعمل نص برمجي Python يعمل على Raspberry Pi الخاص بنا.

الخطوة 8: بايثون

بايثون
بايثون

يتم استخدام نص Python لتلقي البيانات من الاتصالات التسلسلية القادمة من Arduino. ثم يرسل البرنامج النصي البيانات إلى قاعدة بيانات MySQL.

استخدمنا مكتبتين ، pyserial و mysqlient.

لذا فإن الخطوة الأولى هي تنزيل هاتين المكتبتين:

  1. PySerial
  2. عميل MySQL

يستخدم PySerial لجمع البيانات من Arduino عبر الاتصال التسلسلي.

الجهاز = '/ dev / ttyUSB0'

اردوينو = مسلسل تسلسلي (جهاز ، 9600)

يتم استخدام السطر الأول لتحديد منفذ COM الخاص بنا. في Raspberry Pi ، نستخدم / dev / ttyUSB0 في Arduino. السطر الثاني هو فتح المنفذ التسلسلي إلى Arduino. نحن فقط نحدد منفذ COM وبأي سرعة يتم تشغيل الاتصال.

باقي الكود يعمل في حلقة while.

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

لذلك داخل كتل Try ، لدينا كود يقرأ الاتصال التسلسلي ثم يرسله إلى قاعدة بيانات MySQL الخاصة بنا.

hygrolist = arduino.readlines (1)

Templist = arduino.readlines (2) humidlist = arduino.readlines (3)

لذا فإن الكود أعلاه لقراءة الخطوط في الاتصال التسلسلي. الرقم الموجود في نهاية الكود يحدد السطر الذي تمت قراءته في المسلسل. لذلك يتم تصنيف هذه الخطوط في متغيرات مختلفة.

عند استلام البيانات من Arduino ، استخدمنا وحدة mysqlclient لإرسال البيانات إلى خادم MySQL.

db = _mysql.connect (host = "sql7.freemysqlhosting.net" ، المستخدم = "sql7256552" ، passwd = "3ebtbP8FQ2" ، db = "sql7256552")

هذا الخط مخصص للاتصال بقاعدة بيانات MySQL الخاصة بنا. يحدد الخادم واسم المستخدم وكلمة المرور وقاعدة البيانات التي يجب أن يتصل بها داخل الخادم. هنا يجب عليك تحديد الاتصال بـ MySQL DB.

db.query ("INSERTINTO" TempHumid "(` temp`، `humid`،` hygro`) VALUES (٪ s،٪ s،٪ s) "٪ (temp، humid، hygro))

لذلك نحن هنا نأخذ اتصال قاعدة البيانات الخاصة بنا ونقوم بعمل استعلام SQL. يقول الاستعلام أنه يجب إدراج القيم داخل الجدول "TempHumid" ثم في الأعمدة "temp" و "humid" و "hygro". الجزء الأخير "(٪ s ،٪ s ،٪ s)" هو تنسيق سلسلة ويستخدم لمنح قاعدة البيانات التنسيق الذي يمكنها قراءته.

ويتم وضع كل هذا الإجراء في حلقة while ، حتى نستمر في إرسال البيانات إلى خادم MySQL.

إذا كنت تريد أن ترى كل التعليمات البرمجية ، فقم بتنزيل برنامج python النصي (TempHumid.py).

الخطوة 9: MySQL

MySQL
MySQL
MySQL
MySQL

بالنسبة لخادم MySQL ، استخدمنا خدمة مجانية على www.freemysqlhosting.net. كان بإمكاننا إنشاء خادم محليًا على Raspberry Pi ، لكننا استخدمنا الخدمة المجانية لجعلها متصلة بالكامل بالسحابة / الإنترنت.

للوصول إلى MySQL الخاص بك ، عليك الذهاب إلى phpmyadmin.co وتسجيل الدخول باستخدام بيانات الاعتماد من حساب freemysqlhosting الخاص بك.

عندما تكون في الداخل ، يجب عليك إنشاء جدول يسمى "TempHumid" ، داخل هذا الجدول عليك إنشاء 4 أعمدة تسمى ، "ID" ، "temp" ، "humid" و "hygro". العمود الأول (المعرف) يجب عليك تحديد المربع A_I (زيادة تلقائية). هذا بحيث يعطي عمود المعرّف معرّفًا لكل مجموعة بيانات. يجب تعيين جميع الأعمدة التالية على أنها INT (عدد صحيح) ، وتعيين القيمة القياسية على NULL.

الخطوة 10: العقدة الحمراء

العقدة الحمراء
العقدة الحمراء
العقدة الحمراء
العقدة الحمراء
العقدة الحمراء
العقدة الحمراء

في مشروعنا ، استخدمنا Node-Red لإنشاء واجهة رسومية. تعمل Node-Red على Raspberry Pi وتقوم بجمع البيانات من قاعدة بيانات MySQL الخاصة بنا وتعرض هذه البيانات بمقاييس على شكل دونات ومخططات رسومية ، بحيث يمكن للمستخدم النهائي مراقبة البيانات. الشيء الذكي في Node-Red هو أنه يمكن عرضه على أي جهاز ، مما يعني أنه سيتم تغيير حجم الموقع للجهاز المحدد الذي يعرض المحتوى.

لتثبيت برمجة Node-Red الخاصة بنا ، انظر إلى الخطوة 1 وقم بتنزيل المستند المسمى "Node-Red.docx". ثم انسخ النص والصقه في Node-Red عبر وظيفة الاستيراد في الزاوية اليمنى العليا.

بعد ذلك ، قم بتغيير إعدادات قاعدة البيانات الخاصة بـ MySQL DB.

موصى به: