فهرست مطالب:

اینترنت اشیا ساده: مانیتورینگ چند سنسور: 7 مرحله
اینترنت اشیا ساده: مانیتورینگ چند سنسور: 7 مرحله

تصویری: اینترنت اشیا ساده: مانیتورینگ چند سنسور: 7 مرحله

تصویری: اینترنت اشیا ساده: مانیتورینگ چند سنسور: 7 مرحله
تصویری: نه کاری که نمیدونستی گوشیت انجام میده | 9 کاربرد مخفی گوشی 2024, نوامبر
Anonim
اینترنت اشیا ساده: مانیتورینگ چند سنسور
اینترنت اشیا ساده: مانیتورینگ چند سنسور
اینترنت اشیا ساده: مانیتورینگ چند سنسور
اینترنت اشیا ساده: مانیتورینگ چند سنسور

چند هفته پیش ، من در اینجا آموزشی در مورد نظارت بر دما با استفاده از DS18B20 ، یک سنسور دیجیتالی که از طریق یک گذرگاه 1-Wire ارتباط برقرار می کند ، ارسال می کنم و داده ها را از طریق اینترنت با NodeMCU و Blynk ارسال می کنم:

اینترنت اشیا ساده: نظارت بر دما در هر نقطه

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

ما آنچه را که در آخرین آموزش توسعه داده شد ، گسترش می دهیم ، در حال حاضر دو سنسور DS18B20 را که یکی در Celcius و دیگری در Fahrenheit پیکربندی شده است ، رصد می کنیم. همانطور که در نمودار بلوک بالا نشان داده شده است ، داده ها به Blynk App ارسال می شوند.

مرحله 1: صورتحساب مواد

  • NodeMCU ESP 12-E (*)
  • 2 X DS18B20 سنسور دما
  • مقاومت 4.7K اهم
  • تخته نان
  • سیم کشی

(*) هر نوع دستگاه ESP را می توان در اینجا استفاده کرد. رایج ترین آنها NodeMCU V2 یا V3 هستند. هر دو همیشه خوب کار خواهند کرد.

مرحله 2: سنسور دما DS18B20

سنسور دما DS18B20
سنسور دما DS18B20

ما در این آموزش از نسخه ضد آب سنسور DS18B20 استفاده می کنیم. برای دمای دور در شرایط مرطوب ، به عنوان مثال در خاک مرطوب ، بسیار مفید است. سنسور جدا شده است و می تواند تا 125 درجه سانتی گراد اندازه گیری کند (Adafrut توصیه نمی کند که از آن بیش از 100 درجه سانتی گراد استفاده کنید زیرا کابل PVC کابل آن وجود دارد).

DS18B20 یک سنسور دیجیتالی است که استفاده از آن را حتی در مسافت های طولانی خوب می کند! این سنسورهای حرارتی دیجیتالی 1 سیم نسبتاً دقیق هستند (± 0.5 درجه سانتی گراد در بیشتر محدوده) و می توانند تا 12 بیت دقت را از مبدل دیجیتال به آنالوگ روی برد ارائه دهند. آنها با NodeMCU با استفاده از یک پین دیجیتالی عالی کار می کنند ، و حتی می توانید چندین عدد را به یک پین متصل کنید ، هر یک دارای شناسه 64 بیتی منحصر به فردی است که در کارخانه برای تمایز آنها در نظر گرفته شده است.

سنسور از 3.0 تا 5.0V کار می کند ، بدین معنی که می توان آن را مستقیماً از یکی از پین های 3.3V NodeMCU تغذیه کرد.

سنسور دارای 3 سیم است:

  • سیاه: GND
  • قرمز: VCC
  • زرد: داده های 1 سیم

در اینجا ، می توانید اطلاعات کامل را پیدا کنید: DS18B20 Datasheet

مرحله 3: اتصال سنسورها به NodeMCU

اتصال سنسورها به NodeMCU
اتصال سنسورها به NodeMCU
  1. همانطور که در عکس بالا نشان داده شده است ، 3 سیم از هر سنسور را در مینی بردبرد وصل کنید. برای اتصال بهتر کابل سنسور روی آن از اتصالات مخصوص استفاده کردم.
  2. توجه داشته باشید که هر دو سنسور موازی هستند. اگر بیش از 2 سنسور دارید ، باید همین کار را انجام دهید.

    • قرمز ==> 3.3 ولت
    • سیاه ==> GND
    • زرد ==> D4
  3. استفاده از مقاومت 4.7K اهم بین VCC (3.3V) و داده (D4)

مرحله 4: نصب کتابخانه های اختصاصی

برای استفاده صحیح از DS18B20 ، دو کتابخانه لازم است:

  1. OneWire
  2. دما دالاس

هر دو کتابخانه را در مخزن Arduino IDE Library خود نصب کنید.

توجه داشته باشید که کتابخانه OneWire باید کتابخانه خاصی باشد که برای استفاده با ESP8266 تغییر یافته است ، در غیر این صورت هنگام تدوین خطایی دریافت خواهید کرد. آخرین نسخه را در پیوند بالا مشاهده خواهید کرد.

مرحله 5: آزمایش سنسورها

آزمایش سنسورها
آزمایش سنسورها

برای آزمایش سنسورها ، فایل زیر را از GitHub من بارگیری کنید:

NodeMCU_DS18B20_Dual_Se nsor_test.ino

/**************************************************************

*تست فرستنده دمای چندگانه**2 x سنسور OneWire: DS18B20*متصل به NodeMCU D4 (یا Arduino Pin 2)**توسعه یافته توسط Marcelo Rovai - 25 آگوست 2017 **************** **********************************************/ #عبارتند از # شامل #تعریف ONE_WIRE_BUS 2 // DS18B20 در پین NodeMCU D4 OneWire oneWire (ONE_WIRE_BUS) ؛ DallasTemperature DS18B20 (& oneWire) ؛ void setup () {Serial.begin (115200)؛ DS18B20.begin ()؛ Serial.println ("آزمایش داده های دو سنسور") ؛ } void loop () {float temp_0؛ شناور temp_1 ؛ DS18B20.request دما ()؛ temp_0 = DS18B20.getTempCByIndex (0) ؛ // سنسور 0 Temp را در Celcius temp_1 = DS18B20.getTempFByIndex (1)؛ // سنسور 0 Temp را در فارنهایت Serial.print ("Temp_0:")؛ Serial.print (temp_0)؛ Serial.print ("oC. Temp_1:")؛ Serial.print (temp_1)؛ Serial.println ("oF")؛ تاخیر (1000) ؛ }

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

temp_0 = DS18B20.getTempCByIndex (0) ؛ // سنسور 0 Temp را در Celcius ضبط می کند

temp_1 = DS18B20.getTempFByIndex (1) ؛ // سنسور 0 Temp را در فارنهایت ثبت می کند

اولین مورد یک مقدار را از سنسور [0] (به "index (0)") در Celcius باز می گرداند (به قسمت کد نگاه کنید: "getTempC". خط دوم مربوط به سنسور [1] است و داده ها را برمی گرداند در فارنهایت. شما می توانید در اینجا "n" سنسور داشته باشید زیرا برای هر یک از آنها "شاخص" متفاوتی دارید.

اکنون کد را در NodeMCU خود بارگذاری کرده و با استفاده از Serial Monitor دما را کنترل کنید.

عکس بالا نتیجه مورد انتظار را نشان می دهد. هر یک از سنسورها را در دست بگیرید ، باید شاهد افزایش دما باشید.

مرحله 6: استفاده از Blynk

استفاده از بلینک
استفاده از بلینک
استفاده از بلینک
استفاده از بلینک

هنگامی که شروع به ضبط داده های دما می کنید ، وقت آن است که آن را از هر نقطه مشاهده کنید. ما این کار را با استفاده از Blynk انجام می دهیم. بنابراین ، تمام داده های ضبط شده در زمان واقعی بر روی دستگاه تلفن همراه شما نمایش داده می شود و همچنین ما یک انبار تاریخی برای آن ایجاد می کنیم.

مراحل زیر را دنبال کنید:

  1. ایجاد یک پروژه جدید
  2. نامی بگذارید (در مورد من "مانیتور دمای دوگانه")
  3. دستگاه جدید - ESP8266 (WiFi) را به عنوان "دستگاههای من" انتخاب کنید
  4. AUTH TOKEN را برای استفاده در کد کپی کنید (می توانید آن را به ایمیل خود ارسال کنید).
  5. شامل دو ویجت "Gauge" ، که عبارتند از:

    • پین مجازی برای استفاده در هر سنسور: V10 (سنسور [0]) و V11 (سنسور [1])
    • محدوده دما: -5 تا 100 درجه سانتی گراد برای سنسور [0]
    • محدوده دما: 25 تا 212 درجه سانتی گراد برای سنسور [1]
    • فرکانس خواندن داده ها: 1 ثانیه
  6. شامل ویجت "نمودار تاریخ" است که V10 و V11 را به عنوان پین های مجازی تعریف می کند
  7. "پخش" (مثلث در گوشه سمت راست بالا) را فشار دهید

البته ، برنامه Blynk به شما می گوید که NodeMCU آفلاین است. وقت آن است که کد کامل را در Arduino IDE خود بارگذاری کنید. می توانید آن را از اینجا دریافت کنید:

NodeMCU_Dual_Sensor_Blynk_Ext.ino

"اطلاعات ساختگی" را با اعتبار خود تغییر دهید.

/ * اعتبارنامه Blynk */

char auth = "کد نویسنده BLYNK خود را در اینجا"؛ / * اعتبارنامه WiFi */ char ssid = "SSID شما" ؛ char pass = "گذرواژه شما"؛

و بس!

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

/**************************************************************

* IoT Multiple Temperature Monitor with Blynk * کتابخانه Blynk تحت مجوز MIT دارای مجوز است * این کد نمونه در مالکیت عمومی است. **سنسور چندگانه OneWire: DS18B20*توسعه یافته توسط مارسلو روایی - 25 آگوست 2017 ******************************** ***************************//*ESP & Blynk*/ #شامل #شامل #شامل #تعریف سریال BLYNK_PRINT // این نظر را برای چاپها را غیرفعال کنید و در فضا صرفه جویی کنید / * اعتبارنامه Blynk * / char auth = "کد BLYNK AUTH CODE شما در اینجا"؛ / * اعتبارنامه WiFi */ char ssid = "SSID شما" ؛ char pass = "گذرواژه شما"؛ / * TIMER */ #شامل زمان سنج SimpleTimer ؛ / * DS18B20 سنسور دما */ #شامل #شامل #تعریف ONE_WIRE_BUS 2 // DS18B20 در arduino pin2 مربوط به D4 در برد فیزیکی OneWire oneWire (ONE_WIRE_BUS) است ؛ DallasTemperature DS18B20 (& oneWire) ؛ int temp_0؛ int temp_1؛ void setup () {Serial.begin (115200)؛ Blynk.begin (author، ssid، pass)؛ DS18B20.begin ()؛ timer.setInterval (1000L ، getSendData) ؛ Serial.println ("")؛ Serial.println ("آزمایش داده های دو سنسور") ؛ } void loop () {timer.run ()؛ // SimpleTimer Blynk.run () را راه اندازی می کند ؛ } /******************************************** ****ارسال داده های حسگر به Blynk *************************************** *********/ void getSendData () {DS18B20.requestTemperatures ()؛ temp_0 = DS18B20.getTempCByIndex (0) ؛ // سنسور 0 Temp را در Celcius temp_1 = DS18B20.getTempFByIndex (1)؛ // سنسور 0 Temp را در فارنهایت Serial.print ("Temp_0:")؛ Serial.print (temp_0)؛ Serial.print ("oC. Temp_1:")؛ Serial.print (temp_1)؛ Serial.println ("oF")؛ Blynk.virtualWrite (10 ، temp_0) ؛ // پین مجازی V10 Blynk.virtualWrite (11 ، temp_1) ؛ // پین مجازی V11}

هنگامی که کد بارگذاری و اجرا شد ، برنامه Blynk را بررسی کنید. اکنون باید همانطور که در صفحه چاپ بالا از iPhone من نشان داده شده است نیز اجرا شود.

مرحله 7: نتیجه گیری

نتیجه
نتیجه

مثل همیشه ، امیدوارم این پروژه بتواند به دیگران کمک کند راه خود را در دنیای هیجان انگیز الکترونیک ، روباتیک و اینترنت اشیا پیدا کنند!

لطفاً برای اطلاع از فایل های به روز شده از GitHub من دیدن کنید: NodeMCU Dual Temp Monitor

برای پروژه های بیشتر ، لطفاً از وبلاگ من دیدن کنید: MJRoBot.org

سلودوس از جنوب جهان!

شما را در دستورالعمل بعدی من می بینم!

متشکرم،

مارسلو

توصیه شده: