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

محطة طقس أخرى لـ IoT: 8 خطوات
محطة طقس أخرى لـ IoT: 8 خطوات

فيديو: محطة طقس أخرى لـ IoT: 8 خطوات

فيديو: محطة طقس أخرى لـ IoT: 8 خطوات
فيديو: مزايا رهيبة أغلبنا ما يعرف عنها في خرائط جوجل 2024, يوليو
Anonim
محطة طقس أخرى لإنترنت الأشياء
محطة طقس أخرى لإنترنت الأشياء
محطة طقس أخرى لـ IoT
محطة طقس أخرى لـ IoT
محطة طقس أخرى لـ IoT
محطة طقس أخرى لـ IoT
محطة طقس أخرى لإنترنت الأشياء
محطة طقس أخرى لإنترنت الأشياء

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

علاوة على ذلك ، يوضح لك هذا التوجيه كيفية استخدام Blynk أو Google Sheets أو كليهما لمراقبة قراءات المستشعر وتسجيلها. علاوة على ذلك ، تتم كتابة إدخالات جداول بيانات Google مباشرة على الورقة (دون الحاجة إلى الانتقال عبر خدمة تابعة لجهة خارجية).

فيما يتعلق بشاشة Stevenson ، هناك العديد منها متاح على الإنترنت يمكن طباعته ثلاثية الأبعاد على سبيل المثال https://www.thingiverse.com/thing:1718334. سأبني على هذا من أجل هذا Instructable.

شاشة Stevenson عبارة عن "ملجأ للأدوات هو ملجأ أو حاوية لأدوات الأرصاد الجوية ضد هطول الأمطار والإشعاع الحراري المباشر من المصادر الخارجية ، مع السماح للهواء بالدوران بحرية حولها". (ويكيبيديا).

القطع

  • Wemos LolIn - NodeMCU v3 (1.43 دولار أمريكي)
  • BME280 (مستشعر درجة الحرارة والضغط والرطوبة) (2.40 دولار أمريكي)
  • لوحة شمسية 6 فولت 1000 مللي أمبير (9.96 دولار أمريكي)
  • 5 فولت 1A مايكرو USB 18650 بطارية ليثيوم وحدة شاحن لوح شحن + حماية وظائف مزدوجة TP4056 (0.99 دولار أمريكي)
  • بطاريات قابلة لإعادة الشحن 4x1.2 فولت NiMH
  • حامل البطارية (4x AA ، جنبًا إلى جنب ومن طرف إلى طرف)
  • قابس موصل USB الصغير ذكر
  • شريط رباط الاسلاك
  • 3x جناح جناح
  • عمود أو عصا مكنسة
  • الإيبوكسي و / أو الغراء الفائق (بعد فوات الأوان ، ربما كان السيليكون يعمل بشكل أفضل)

برمجة

  • تطبيق Blynk
  • جداول بيانات Google (إذا كنت ترغب في الوصول إلى البيانات التاريخية)
  • EasyEDA (للرسم التخطيطي)
  • اردوينو IDE

أدوات

  • لحام حديد
  • جندى
  • أنابيب الانكماش الحراري
  • طابعة 3D
  • مسدس الغراء

الخطوة 1: الطباعة ثلاثية الأبعاد - شاشة ستيفنسون

طباعة ثلاثية الأبعاد - شاشة ستيفنسون
طباعة ثلاثية الأبعاد - شاشة ستيفنسون
طباعة ثلاثية الأبعاد - شاشة ستيفنسون
طباعة ثلاثية الأبعاد - شاشة ستيفنسون
طباعة ثلاثية الأبعاد - شاشة ستيفنسون
طباعة ثلاثية الأبعاد - شاشة ستيفنسون

كما ذكرنا سابقًا ، قم بتنزيل الملفات من https://www.thingiverse.com/thing:1718334 وقم بطباعة البتات المطلوبة. توجد تعليمات التجميع أيضًا في الرابط أعلاه. لقد أجريت بعض التعديلات (انظر الملاحظات أدناه).

الأجزاء المطبوعة هي:

  • Top_Cover_for_m3_tapping.stl
  • Middle_Ring.stl (x5)
  • Middle_Ring_bottom.stl (x1 ، STL مرفق أعلاه)
  • Solid_Plate.stl (x1)
  • Solid_Plate_Base.stl (x1)
  • Pole_Mount_1in_Round.stl
  • Sensor_Grid.stl
  • Electronics_Mount.stl
  • My_Solar_Cell_Mount.stl (x2 ، STL مرفق أعلاه)

ترتيب التجميع هو:

  • خيط الثقوب
  • برغي قضبان M3 في المقابس الملولبة
  • الغطاء العلوي
  • Solid_Plate
  • الحلقات الوسطى
  • قم بالانزلاق في Sensor_Grid
  • إلكترونيات_الجبال
  • Solid_Plate_Bottom
  • القطب جبل
  • يتم إيبوكسيد My_Solar_Cell_Mounts في الجزء العلوي من Top_Cover

لقد قمت بحفر ثقوب في الألواح الصلبة للسماح لكابل الشحن من لوحة الطاقة الشمسية بالاتصال بالشاحن ثم واحد للسماح للكابل بالتشغيل من وحدة التحكم إلى المستشعر على Sensor_Grid.

بمجرد الانتهاء ، تمت برمجة المستشعر لأخذ القراءات التالية كل 60 دقيقة:

  • درجة حرارة
  • رطوبة
  • ضغط

ملحوظات

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

الخطوة 2: الدائرة

الدائرة
الدائرة
الدائرة
الدائرة

قم بتوصيل الدائرة كما هو موضح في التخطيطي ، وقم بتركيب LoLin و BME280 على شبكة مطبوعة ثلاثية الأبعاد كما هو موضح في الصورة.

BME280 -> ليلون

  • VCC -> 3.3 فولت
  • GND -> GND
  • SCL -> D1
  • SDA -> D2

ليلون -> ليلون

D0 -> RST (هذا ضروري لإيقاظ وحدة التحكم من السكون العميق ولكن يجب توصيلها فقط بعد تحميل الكود إلى وحدة التحكم)

ملاحظة

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

  • تم توصيل الإخراج من TP4056 بموصل USB ذكر والذي تم توصيله بعد ذلك بمقبس USB باللوحة من أجل تشغيله.
  • تم توصيل B- و B + على TP4056 بحامل بطارية AA الذي يحمل بطاريات NiMH.

الخطوة 3: إنترنت الأشياء - Blynk

إنترنت الأشياء - بلينك
إنترنت الأشياء - بلينك
إنترنت الأشياء - بلينك
إنترنت الأشياء - بلينك
إنترنت الأشياء - بلينك
إنترنت الأشياء - بلينك
إنترنت الأشياء - بلينك
إنترنت الأشياء - بلينك

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

لبدء استخدام الخدمة ، ستحتاج أولاً إلى تنزيل تطبيق Blynk على هاتفك / جهازك ، وإنشاء حساب (أو تسجيل الدخول باستخدام حساب موجود) ثم إنشاء مشروع جديد على النحو التالي:

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

لن تحتاج إلى إضافة الحاجيات المطلوبة. مع 2000 رصيد مجاني أضفت ما يلي:

  • 3 مقاييس
  • 1 سوبر تشارت

تم إعداد المقاييس والمخططات وفقًا للصور المرفقة ، حيث تم تخصيص رقم التعريف الشخصي الافتراضي لكل منها والذي سيتم استخدامه لاحقًا في الكود.

بمجرد الانتهاء من الإعدادات ، يمكن الضغط على زر التشغيل في أعلى اليمين لبدء جمع التاريخ.

لمزيد من المعلومات، راجع

docs.blynk.cc/#getting-started.

الخطوة 4: الكود - تحضير Arduino IDE

يجب إضافة المكتبات التالية إلى Arduino IDE لإكمال هذا المشروع:

  • https://github.com/adafruit/Adafruit_BME280_Library (الحاجة إلى مستشعر درجة الحرارة والضغط والرطوبة)
  • https://github.com/adafruit/Adafruit_Sensor
  • https://github.com/esp8266/Arduino (يمنحك هذا الوصول إلى لوحة ESP8266)
  • https://github.com/blynkkk/blynk-library/releases/tag/v0.6.1 (مكتبة Blynk)
  • https://github.com/electronicsguy/ESP8266/tree/master/HTTPSRedirect (يلزم HTTPSRedicect للاتصال بجداول بيانات Google)

للحصول على إرشادات حول تثبيت مكتبات Arduino IDE ، قم بزيارة

إعدادات الأجهزة الخاصة بي على النحو التالي:

  • اللوحة: NodeMCU 1.0 (وحدة ESP-12E)
  • سرعة الرفع: 115200

عند استخدام الكود المرفق في الخطوات التالية ، يرجى الرجوع دائمًا إلى التعليقات في الكود فيما يتعلق بإضافة ما يلي:

  • واي فاي SID
  • كلمة السر واي فاي
  • مفتاح تفويض Blynk
  • معرّف Google Script
  • مفتاح مشاركة ورقة Google

الخطوة 5: الكود - Blynk

لقد ناضلت من أجل الأعمار لجعل مستشعر BME280 يعمل حتى وجدت مثالًا يحتوي على السطر التالي.

الحالة = bme.begin (0x76) ؛ // عنوان I2C الخاص بالمستشعر الذي أستخدمه هو 0x76

يبدو أنني بحاجة إلى تعيين عنوان المستشعر. بمجرد أن فعلت هذا كل شيء سار على ما يرام.

يتمتع Blynk بواجهة مستخدم جوال رائعة حقًا ، إلا أنه يحتوي على القيود التالية:

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

للأسباب المذكورة أعلاه ، نظرت في كيفية دمج عملية جمع البيانات الخاصة بي في جدول بيانات Google. يتم تناول هذا في القسم التالي.

الخطوة 6: الكود - جداول بيانات Google

كود - أوراق جوجل
كود - أوراق جوجل
كود - أوراق جوجل
كود - أوراق جوجل
كود - أوراق جوجل
كود - أوراق جوجل

من أجل تسجيل قراءاتك بحيث يمكنك تحليل البيانات التاريخية في وقت لاحق ، تحتاج إلى كتابتها في نوع من قاعدة البيانات. تتيح لنا مكتبة HTTPSRedirect القيام بذلك عن طريق كتابة بياناتنا في جدول بيانات Google.

القيود الرئيسية لهذا النهج هي كما يلي:

  • لا توجد واجهة مستخدم لطيفة للهاتف المحمول
  • يمكن أن تحتوي ورقة Google على 400000 خلية كحد أقصى. بالنسبة لهذا المشروع ، هذه ليست مشكلة كبيرة حيث سيستغرق الأمر ما يزيد قليلاً عن 11 عامًا قبل الوصول إلى هذا الحد.

تم إعداد ورقة Google على النحو التالي.

قم بإنشاء ورقة Google من ورقتين.

الورقة 1: البيانات

تحتاج ورقة البيانات إلى 4 أعمدة ، أي التاريخ / الوقت ، ودرجة الحرارة ، والرطوبة ، والضغط (الأعمدة من أ إلى د). تنسيق الأعمدة بشكل مناسب ، على سبيل المثال يجب أن يكون العمود A "Date Time" بحيث يتم عرض التاريخ والوقت في الخلايا.

الورقة 2: لوحة القيادة

قم بإنشاء ورقة لوحة المعلومات وفقًا للصور المرفقة ، وإدخال الصيغ كما هو موضح أدناه:

  • B2: = كونتا (البيانات! ب: ب) -1
  • B3: = B1 + TIMEVALUE (CONCATENATE ("00:"، نص (G7، "0")))
  • B6: = استعلام (البيانات! A2: D، "اختر ترتيب B حسب الحد التنازلي 1")
  • C6: = استعلام (البيانات! A2: D، "تحديد ترتيب C بواسطة حد تنازلي 1")
  • D6: = استعلام (البيانات! A2: D، "تحديد ترتيب D بواسطة حد تنازلي 1")
  • B8: = استعلام (البيانات! A2: D ، "حدد ترتيبًا من خلال حد وصف B 1")
  • C8: = استعلام (البيانات! A2: D، "حدد أمرًا حسب C حد وصف 1")
  • D8: = استعلام (البيانات! A2: D، "تحديد أمر حسب D حد وصف 1")
  • B9: = استعلام (البيانات! A2: D، "اختر ترتيب B حسب B حد تنازلي 1")
  • C9: = استعلام (البيانات! A2: D، "تحديد ترتيب C عن طريق C حد وصف 1")
  • D9: = استعلام (البيانات! A2: D، "تحديد ترتيب D عن طريق D حد وصف 1")
  • B11: = استعلام (البيانات! A2: D ، "حدد A حيث B ليس ترتيبًا فارغًا عن طريق الحد التصاعدي B 1")
  • C11: = استعلام (البيانات! A2: D ، "حدد A حيث لا يكون C ترتيبًا فارغًا عن طريق الحد C تصاعدي 1")
  • D11: = استعلام (البيانات! A2: D ، "حدد A حيث D ليس ترتيبًا فارغًا عن طريق الحد التصاعدي D 1")
  • B12: = استعلام (البيانات! A2: D ، "حدد B حيث B ليس ترتيبًا فارغًا عن طريق الحد التصاعدي B 1")
  • C12: = استعلام (البيانات! A2: D ، "حدد C حيث لا يكون C ترتيبًا فارغًا عن طريق الحد C تصاعدي 1")
  • D12: = استعلام (البيانات! A2: D ، "حدد D حيث لا يكون D ترتيبًا فارغًا عن طريق الحد التصاعدي D 1")
  • G3: = 4 + B2 * 4 + 29 + 17
  • G4: = (G2-G3) / G2
  • G6: = G2 / 4 G8: = G7 * G6
  • G9: = (G8 / 60) / 24
  • G10: = G9 / 365
  • G11: = (((((G2-G3) / 4) * G7) / 60) / 24/365)

يمكن أن تحتوي "جداول بيانات Google" على 400000 خلية كحد أقصى. يتم استخدام هذا ، جنبًا إلى جنب مع حقيقة أن كل قراءة تستخدم 4 خلايا ، لحساب مقدار المساحة المتبقية ومتى ستنفد.

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

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

نحتاج الآن إلى Google Script الذي سيمكننا من كتابة بياناتنا عن طريق الاتصال بعنوان URL.

إنشاء السيناريو

في عنوان URL الخاص بورقة Google ، دوِّن المفتاح بين "d /" و "/ edit". هذا هو مفتاح-Google-Sheet-Sharing-Key الخاص بك- وستكون مطلوبًا في الكود أدناه.

انتقل بعد ذلك إلى Tools> Script Editor وأنشئ Google App Script ، والصق الرمز في ملف GS المرفق. تحديث var ss = SpreadsheetApp.openByUrl ("https://docs.google.com/spreadsheets/d/-Your-Google-Sheet-Sharing-Key–/edit") ؛ لتعكس مفتاح المشاركة الخاص بك.

قم الآن بنشر البرنامج النصي بالانتقال إلى نشر> نشر كتطبيق ويب.

انسخ عنوان URL لتطبيق الويب الحالي واحفظه في مكان ما حيث ستحتاج إليه لاستخراج GScriptID (-Your-Google-Script-ID–). GScriptID هو السلسلة بين "s /" و "/ exec؟". تأكد من أن "أي شخص ، حتى لو كان مجهولاً" لديه حق الوصول إلى التطبيق. سيُطلب منك أثناء هذه العملية منح بعض الأذونات. من المهم أن تمنح هذه.

ملاحظة: عندما تقوم بتعديل الكود الخاص بك ، يجب عليك إنشاء إصدار مشروع "جديد" ونشره وإلا فستستمر في الوصول إلى نفس الرمز القديم.

يمكنك الآن اختبار البرنامج النصي من خلال التصفح إلى https://script.google.com/macros/s/-Your-Google-Script-ID–/exec؟Temperature=10&Humidity=11&Pressure=12. في كل مرة تقوم فيها بتحديث هذا الرابط ، يجب إضافة إدخال جديد إلى جدول بيانات Google.

تم أخذ هذا أعلاه من البرنامج التعليمي التالي: https://embedded-lab.com/blog/post-data-google-sheets-using-esp8266/. ومع ذلك ، يعد هذا البرنامج التعليمي قديمًا ولذلك تم تغيير كود Arduino المرتبط في القسم التالي لاستيعاب أحدث مكتبات

كود اردوينو

انظر الكود المرفق.

الخطوة 7: الكود - Blynk & Google Sheets

من أجل الحصول على أفضل ما في العالمين ، يمكن للمرء أن يجمع بين الكود لكل من Blynk و Google Sheets.

انظر الكود المرفق.

الخطوة 8: التعليقات النهائية

التعليقات النهائية
التعليقات النهائية
التعليقات النهائية
التعليقات النهائية

لا شيء مما سبق هو أفكاري ، بل هو مشروع مبني على أفكار وعمل الآخرين. لقد استمتعت بسحبه تمامًا في مكان واحد. باستخدام تقنيات وأدوات مختلفة لتقديم مشروع عملي وممتع. لقد استمتعت بشكل خاص بتعلم كيفية تخزين قراءاتي في ورقة Google. لهذا أود أن أشكر ElectronicsGuy (Sujay Phadke).

تحديث

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

موصى به: