فهرست مطالب:

سرور داده IoT Dual Temperature Data: 12 مرحله (همراه با تصاویر)
سرور داده IoT Dual Temperature Data: 12 مرحله (همراه با تصاویر)

تصویری: سرور داده IoT Dual Temperature Data: 12 مرحله (همراه با تصاویر)

تصویری: سرور داده IoT Dual Temperature Data: 12 مرحله (همراه با تصاویر)
تصویری: ESP32 Tutorial 43 - IoT Internet Weather Station | SunFounder's ESP32 IoT Learnig kit 2024, ژوئن
Anonim
سرور داده IoT Dual Temperature
سرور داده IoT Dual Temperature

این اولین تلاش من برای نوشتن یک دستورالعمل است و بنابراین لطفاً از من راحت بگیرید! اگر فکر می کنید این خیلی بد نیست ، لطفاً در مسابقه نویسنده اولین بار به من رای دهید.

این پروژه من قفل کردن است که از راه دور 2 درجه حرارت در گلخانه را کنترل می کنم ، یکی در سطح کف و دیگری زیر سقف. اگرچه قبلاً از Raspberry Pi (RPi) استفاده کرده بودم ، این پروژه شامل چندین عنصر بود که من از آنها استفاده نکرده بودم و در طول راه ، چندین آموزش پیدا کردم که قدیمی بودند یا فقط اشتباه بودند. این مجموعه دانش من برای ساخت یک مانیتور دمای دوگانه از راه دور از سنسورهای دما دیجیتال Pi Zero & 2 DS18B20+ One Wire است که در طول راه به دست آمده است.

مطالبی که در مورد آنها آموختم:

  • در دسترس قرار دادن داده ها از یک دستگاه به عنوان بخشی از اینترنت اشیاء (IoT)
  • رابط 1 سیم با 2 دستگاه
  • شباهت به داده
  • داده های JSON
  • راه اندازی فایروال UFW
  • استفاده از Freeboard.io برای نمایش داده ها
  • پیکربندی RPi برای راه اندازی مجدد برنامه

حجم عظیمی از داده ها وجود دارد که با یک جستجوی ساده در همه این موضوعات یافت می شود ، اما آنچه چندان روشن نیست نحوه ترکیب همه این عناصر جداگانه است.

تدارکات

  • شما به Raspberry Pi نیاز دارید (همراه با مانیتور ، موس و صفحه کلید برای راه اندازی اما نه هنگام اجرای پروژه به پایان رسیده)
  • اتصال به اینترنت کار می کند.
  • PSU با اتصال Micro USB
  • 2 سنسور درجه حرارت دیجیتال DS18B20+ One Wire. دریافتم آمازون ارزان ترین
  • مقاومت 4K7 اهم یا من از 2 مقاومت 10K اهم استفاده کردم.
  • تخته نان کوچک و چند سیم زن/مرد برای آزمایش روی نیمکت
  • یک تکه نوار کوچک برای مونتاژ نهایی
  • ابزارهای ساده برای لحیم کاری و سیم کشی.
  • جعبه پلاستیکی کوچک برای قرار دادن طرح نهایی

مرحله 1: سخت افزار

سخت افزار
سخت افزار
سخت افزار
سخت افزار

من قبلاً Raspberry Pi Zero W (با وایرلس) داشتم ، اما مطمئن هستم که این پروژه ساده در هر یک از RPI ها خوب اجرا می شود. جعبه بیت های عجیب و غریب الکترونیکی در کارگاه من همه چیز دیگر (نان برد ، سیم ، PSU و غیره) را داشت و بنابراین تنها چیزی که باید خریداری می کردم دو سنسور 2 x DS18B20 از آمازون بود. این تراشه های معمولی DS18B20 هستند که به راحتی در محفظه ضد آب و کابل 3 متری نصب شده اند. 3 سیم از کابل وجود دارد:

  • قرمز - قدرت - به پین 3.3 ولت 1 متصل شوید
  • سیاه - بازگشت - به پایه زمین 6 متصل شوید
  • زرد - داده - به پین GPIO4 وصل شوید 7

سنسورها از رابط 1-Wire استفاده می کنند و اتصال و بدست آوردن اطلاعات از آنها بسیار آسان است. چندین صفحه در وب وجود دارد که دارای جزئیات مربوط به اتصال 1 دستگاه است اما در مورد اتصال 2 (یا بیشتر) بسیار اندک است.

برای آزمایش روی نیمکت ، مدار با استفاده از تخته نان مونتاژ شد. آموزش هایی که پیدا کردم بیان می کند که از یک مقاومت 4K7 برای جانبداری از خط داده استفاده می کند ، اما من نتوانستم یکی را پیدا کنم و به طور موازی از 2* 10K استفاده می کنم و به خوبی کار می کند. منابع زیادی در وب برای استفاده از تخته نان برای جمع آوری مدارهای RPi وجود دارد و بنابراین آنها را در اینجا تکرار نمی کنم.

نمودار ایجاد شده با استفاده از نمودار مدار

مرحله 2: راه اندازی نرم افزار Raspberry Pi OS

راه اندازی نرم افزار Raspberry Pi OS
راه اندازی نرم افزار Raspberry Pi OS
راه اندازی نرم افزار Raspberry Pi OS
راه اندازی نرم افزار Raspberry Pi OS
راه اندازی نرم افزار Raspberry Pi OS
راه اندازی نرم افزار Raspberry Pi OS

همانطور که قبلاً از این RPi استفاده کرده بودم ، تصمیم گرفتم با نصب تمیز سیستم عامل شروع کنم ، کارت SD را دوباره فرمت کردم و نسخه تمیز NOOBS را نصب کردم. سپس نسخه کامل رومیزی Raspian (گزینه برتر) را نصب کردم زیرا این امر همچنین PIP & GIT را نصب می کند که نسخه Lite آن را نصب نمی کند. حتی اگر برای پروژه نیازی به رابط کاربری گرافیکی (GUI) نداشتم ، راه اندازی همه گزینه ها آسان است و با کارت SD 16 گیگابایت کمبود فضا وجود ندارد.

من دسترسی WI-FI را راه اندازی کردم ، سپس نصب کامل و سپس جادوگر با به روز رسانی و ارتقاء و غیره را اجرا کردم. با استفاده از رابط کاربری گرافیکی ، RPI را در صورت نیاز تنظیم کردم ، زیرا استفاده از رابط کاربری گرافیکی ساده تر از واسط خط فرمان (CLI) است. از منو به پنجره پیکربندی رفتم و سپس:

  • در برگه سیستم ، گذرواژه را تغییر دادم ، در حالت بوت (CLI) قرار گرفتم و تیک ورود خودکار را بردارید
  • در برگه رابط ها ، 1 سیم را فعال کردم
  • روی ok کلیک کنید و دوباره راه اندازی شود

اگر می خواهید در هر زمان به GUI بازگردید فقط startx را در CLI تایپ کنید

startx

مرحله 3: Dataplicity را برای دسترسی از راه دور تنظیم کنید

Dapaplicity را برای اجازه دسترسی از راه دور تنظیم کنید
Dapaplicity را برای اجازه دسترسی از راه دور تنظیم کنید
Dapaplicity را برای اجازه دسترسی از راه دور تنظیم کنید
Dapaplicity را برای اجازه دسترسی از راه دور تنظیم کنید
Dapaplicity را برای اجازه دسترسی از راه دور تنظیم کنید
Dapaplicity را برای اجازه دسترسی از راه دور تنظیم کنید

من یک وبلاگ واقعاً مفید در سایت Dataplicity به آدرس https://blog.dataplicity.com/how-to-build-a-raspb… پیدا کردم و از چند قسمت آن استفاده کردم. بخش 3 وبلاگ تنظیم Dataplicity برای دسترسی از راه دور به RPi را توضیح می دهد. من قبلاً از Dataplicity استفاده نکرده ام ، اما باید بگویم ، من آن را به عنوان یک ابزار دسترسی از راه دور بسیار ساده توصیه می کنم. اگرچه تصاویر صفحه (در وبلاگ بالا) کمی قدیمی هستند ، اما اصل کار خوب است.

در رایانه خود ، به Dataplicity.com بروید و یک حساب ایجاد کنید (می توانید از مرورگر در رابط کاربری گرافیکی استفاده کنید ، اما در RPi Zero کند است). سپس روی دکمه "افزودن دستگاه جدید" کلیک کنید و یک خط کد در پنجره بازشو نمایش داده می شود. سپس به CLI در RPi بروید و خط متن را تایپ کنید. اگر همه چیز خوب است ، آرم Dataplicity نمایش داده می شود و برنامه نصب اجرا می شود.

پس از بازگشت به رایانه ، دستگاه جدید باید در وب سایت Dataplicity ظاهر شود. روی دستگاه کلیک کنید و باید صفحه ترمینال RPi خود را مشاهده کنید.

در اینجا چند نکته قابل ذکر است:

  • برای ورود به سیستم ، "su pi" (برای دسترسی superuser) را تایپ کنید و از شما رمز عبور (همانطور که قبلاً تنظیم شده است) خواسته می شود.
  • شما باید Wormhole را فعال کنید (بعداً مورد استفاده قرار می گیرد)
  • برای نمایش داده ها بعداً به آدرس Wormhole نیاز دارید (در صورت نیاز برای کپی راست کلیک کنید)

می توانید از این دسترسی از راه دور برای همه مراحل زیر استفاده کنید و برای کپی کردن داده ها ، برنامه ها و غیره بسیار راحت تر از RPi است.

مرحله 4: سنسورها را بررسی کنید

اکنون می توانید از Dataplicity از راه دور برای دسترسی به RPI برای همه بخشهای بعدی استفاده کنید.

اگر همه چیز خوب وصل شده است ، باید بتوانید دمای برگشتی از DS18B20 را مشاهده کنید. من از طریق آموزش Pi Hut کار کردم اما بیشتر اینها مورد نیاز نبود. اگر می خواهید جزئیات کامل را در اینجا پیدا کنید:

بیتهای مهم این است که به فهرست دستگاهها بروید و مطمئن شوید 2 سنسور مختلف نشان داده شده است.

cd/sys/bus/w1/devices/

این باید 2 دستگاه را که از 28 شروع می شود و استاد اصلی نشان می دهد. نمایش های معدن:

28-011453ebfdaa 28-0114543d5daa w1_bus_master1

این 2 شماره شناسه مهم است و بعداً مورد نیاز خواهد بود! سپس به یکی از فهرست های سنسور تغییر دهید:

cd 28-011453ebfdaa

(به عنوان مثال) و سپس مقدار را از سنسور بخوانید

گربه w1_slave

باید 2 خط متن نشان داده شود:

53 01 4b 46 7f ff 0c 10 2d: crc = 2d بله

53 01 4b 46 7f ff 0c 10 2d t = 21187

YES نشان می دهد که سنسور به درستی خوانده می شود و 21187 دما را در سانتی گراد 21.187 (تقسیم بر 1000) نشان می دهد این کار را برای بررسی سنسور دوم تکرار کنید. اگر هر دو ok را بخوانند ، می توانیم به خواندن داده ها با Python3 برویم.

کد زیر را که در وب پیدا کردم کپی و تطبیق دادم اما نمی توانم به خاطر بیاورم که از کجا آمده است. اگر این کد شبیه کد شماست ، پس عذرخواهی می کنم زیرا قصد سرقت ادبی نبوده است. لطفاً به من اطلاع دهید و من کار شما را تایید خواهم کرد

یک دایرکتوری به نام projects ایجاد کرده و به آن فهرست تغییر دهید.

mkdir ~/پروژه ها

cd ~/پروژه ها

در این فهرست ، از ویرایشگر متن (nano) برای ایجاد و ویرایش فایلی به نام thermo-test.py استفاده کنید

sudo nano thermo-test.py

این باید ویرایشگر را باز می کرد و همانطور که از Dataplicity استفاده می کنید ، می توانید کد زیر را (thermo-test.py) کپی کرده و در ویرایشگر جایگذاری کنید. شما باید 2 نام دستگاه (از 28 تا…) را با موارد ذکر شده در بالا تغییر دهید. وقتی همه چیز درست به نظر می رسد ، برای پایان کار ctrl+X ، برای ذخیره Y و بازگشت به استفاده از نام موجود را فشار دهید. اگر ترجیح می دهید از GUI استفاده کنید ، Thonny نیز همین کار را می کند.

برای اجرای برنامه آزمایشی:

sudo python3 thermo-test.py

همه چیز خوب است ، این باید فایل را با استفاده از پایتون 3 اجرا کند و هر 10 ثانیه 2 درجه حرارت را روی صفحه چاپ کند. با قرار دادن 1 سنسور در آب سرد یا گرم کردن ملایم با سشوار می توانید همه چیز را خوب آزمایش کنید. اگر همه چیز خوب به نظر می رسد ، می توانیم ادامه دهیم!

مرحله 5: فایروال UFW

فایروال UFW
فایروال UFW

از آنجا که این RPi قرار بود به طور دائمی به اینترنت متصل شود ، من تصمیم گرفتم که فایروال ایده خوبی باشد و یک راه ساده برای استفاده از آن فایروال بدون عارضه (ufw) است. در اینجا یک آموزش بسیار ساده وجود دارد

من عمق زیادی نمی دهم زیرا این هدف این دستورالعمل نیست ، بلکه به طور خلاصه:

فایروال را با موارد زیر نصب کنید:

sudo apt-get ufw را نصب کنید

قوانین پیش فرض را تنظیم کنید:

sudo ufw پیش فرض اجازه خروجی

sudo ufw به طور پیش فرض ورودی را رد می کند

پورت 80 را برای Dataplicity باز کنید

sudo ufw اجازه 80

فایروال را فعال کنید

sudo ufw را فعال کنید

وضعیت را بررسی کنید و مطمئن شوید همه در حال اجرا هستند

sudo ufw وضعیت

مرحله 6: S پایان دادن به داده های دما به عنوان JSON

S پایان دادن به داده های دما به عنوان JSON
S پایان دادن به داده های دما به عنوان JSON

بازگشت به وبلاگ تیم فرناندو و بخش 5.

مراحل را همانطور که گفته شد دنبال کنید (به جز اینکه ما قبلاً فهرست پروژه ها را ایجاد کرده ایم) و همه باید خوب کار کنند. با استفاده از GIT فایل های برنامه Tim را بارگیری می کنید و PIP مطمئن می شود که همه برنامه های مورد نیاز بر روی RPi شما نصب شده است. سپس متوجه شدم که باید دوباره بوت کنم تا مطمئن شوم که بسته ها به درستی تنظیم شده اند.

سپس برنامه Tim را اجرا کنید و RPi شما باید داده های JSON را برای اولین سنسور ارائه دهد.

cd home/pi/projects/temperature-serve-pi

دمای sudo gunicorn: برنامه -b 0.0.0.0:80

می توانید از طریق وبلاگ به بخش 6 ادامه دهید که در آن متوجه خواهید شد که داده ها برای 1 سنسور ارائه می شود.

همچنین می توانید از JSON Viewer برای مشاهده داده ها استفاده کنید https://codebeautify.org/jsonviewer روی دکمه "بارگذاری URL" کلیک کرده و در آدرس Wormhole که قبلاً ذکر شد ، جایگذاری کنید. در پنجره سمت چپ ، باید دو ورودی را مشاهده کنید ، یکی برای درجه سانتیگراد و دیگری برای فارنهایت.

مرحله 7: ارسال داده از هر دو سنسور

ارسال داده از هر دو سنسور
ارسال داده از هر دو سنسور

بر اساس کد موجود در temperature.py و thermo-test.py ، من 2temps.py ویرایش شده مانند قبل در فهرست /projects /temperature-serve-pi ایجاد کردم ، در کد جایگذاری و ذخیره شد. بعد من دویدم

sudo gunicorn 2temps: برنامه -b 0.0.0.0:80

وقتی دوباره JSON Viewer را اجرا کردم ، مقادیری برای temp1 و temp2 دریافت کردم

موفقیت:)

مرحله 8: راه اندازی خودکار

شروع خودکار
شروع خودکار

از آنجا که گاهی اوقات برق گلخانه خاموش می شود ، من می خواستم RPi به طور خودکار برنامه را بارگیری کرده و شروع به اثبات داده ها کند. به نظر می رسد ساده ترین راه این است که فایل rc.local را ویرایش کرده و کد مورد نیاز را در پایین درست بالای خط 0 خروجی اضافه کنید.

سی دی و غیره

sudo nan rc.local

سپس افزودنی

خوابیدن 10

cd home/pi/projects/temperature-serve-pi sudo gunicorn temp04: app -b 0.0.0.0:80 &

  • & در انتها به رایانه می گوید که اسکریپت را در زیر پوسته اجرا کند تا رایانه شما منتظر پایان عملکرد نباشد و با بوت شدن ادامه دهد.
  • 10 ثانیه بخوابید قبل از شروع سرویس مطمئن شوید که تمام عملیات قبلی به پایان رسیده است.

مانند گذشته خارج شده و ذخیره کنید. سپس JSON Viewer را راه اندازی مجدد کرده و مجدداً اجرا کنید تا همه چیز خوب باشد.

اگر می خواهید اطلاعات بیشتری در مورد برنامه های خودکار اجرا کنید ، یک آموزش عالی در اینجا وجود دارد

مرحله 9: نمایش داده ها در Freeboard.io (1)

نمایش داده ها در Freeboard.io (1)
نمایش داده ها در Freeboard.io (1)

مراحل وبلاگ تیم به طور خلاصه کار می کند. یک حساب کاربری در www.freeboard.io ایجاد کنید و سپس یک Freeboard جدید ایجاد کنید ، من به آن SHEDTEMPERATURES (من) می گویم.

ابتدا ، یک منبع داده اضافه کنید ، روی ADD در بالا سمت راست کلیک کنید و از پنجره باز شده JSON را به عنوان نوع انتخاب کنید ، منبع داده را NAME کنید ، آدرس کرم چاله را از قبل به عنوان URL اضافه کنید و روی NO برای TRY THINGPROXY کلیک کنید. دما فقط بسیار آهسته تغییر می کند و بنابراین هر 15 ثانیه را تازه کنید خوب است. روی ذخیره کلیک کنید.

مرحله 10: نمایش داده ها در Freeboard.io (2)

نمایش داده ها در Freeboard.io (2)
نمایش داده ها در Freeboard.io (2)
نمایش داده ها در Freeboard.io (2)
نمایش داده ها در Freeboard.io (2)
نمایش داده ها در Freeboard.io (2)
نمایش داده ها در Freeboard.io (2)
نمایش داده ها در Freeboard.io (2)
نمایش داده ها در Freeboard.io (2)

برای افزودن اولین ویجت روی ADD PANE و سپس + کلیک کنید. شما می توانید انواع مختلف را انتخاب کرده و با آنها بازی کنید ، اما من متوجه شدم Gauge خوب بود. یک TITLE ، UNITS (C) ، MINIMUM و MAXIMUM مناسب متناسب با برنامه خود ارائه دهید. برای DATASOURCE ، روی + کلیک کنید و منبع ایجاد شده در بالا ظاهر می شود.

کشویی اکنون باید 2 منبع داده JSON (temp2 و temp2) که قبلاً ساخته شده اند را نشان دهد. منبع مناسب را انتخاب کرده و روی ذخیره کلیک کنید.

این را برای سنج دوم تکرار کنید و همه چیز آماده است.

اکنون داده ها باید روی 2 سنج نشان داده شوند و اگر هنوز PRi را به مانیتور وصل کرده اید ، باید درخواستهای Freeboard.io را هنگام ورود مشاهده کنید.

مرحله 11: پروژه را در یک جعبه بسازید

پروژه را در یک جعبه بسازید
پروژه را در یک جعبه بسازید
پروژه را در یک جعبه بسازید
پروژه را در یک جعبه بسازید
پروژه را در یک جعبه بسازید
پروژه را در یک جعبه بسازید
پروژه را در یک جعبه بسازید
پروژه را در یک جعبه بسازید

تا این لحظه ، RPi و سایر اجزاء با استفاده از تخته نان روی نیمکت مونتاژ شده بودند. سپس یک تکه کوچک از نوار چسب برای جایگزینی تخته نان استفاده شد و سربی ها همه در جای خود لحیم شدند.

یک جعبه ذخیره سازی کوچک لگو به رنگ صورتی روشن پیدا شد که فضای زیادی دارد و در آن RPI خیلی داغ نمی شود. سوراخ هایی در کناره های جعبه ایجاد شد و ستون های نایلونی 3 میلی متری برای نگه داشتن RPi و نوار چسب در جای خود استفاده شد.

فقط 3 اتصال از GPIO ، 3.3v ، GND و داده مورد نیاز است.

  • پین 3.3 ولت DC
  • پین GND 6
  • پین 7 داده (GPIO4)

سوراخ هایی برای تغذیه و کابل USB به سنسورهای دما در جعبه اضافه شد. هنگامی که همه چیز در جای خود قرار گرفت ، مقدار کمی سیلانت سیلیکون اضافه شد تا عنکبوت ها فکر نکنند این مکان گرم و خوبی برای گذراندن زمستان است!

مرحله 12: تمام شد

تمام شده
تمام شده
تمام شده
تمام شده

جعبه داخل گلخانه قرار گرفت و از شارژر USB تغذیه کرد. این دو سنسور یکی در بالای گلخانه و دیگری روی گلدان قرار داده شد تا میزان سرمای نهال ها در شب را بررسی کند.

این اولین دستورالعمل من است و امیدوارم فکر کنید که خوب است. اگر خطایی پیدا کردید لطفاً به من اطلاع دهید و در صورت لزوم اصلاح خواهم کرد. گام بعدی ممکن است این باشد که داده ها را هر 60 ثانیه (مثلاً) ثبت کنید ، اما این بعداً می آید.

توصیه شده: