فهرست مطالب:
- مرحله 1: BoM - Bill of Materials
- مرحله 2: نصب سنسور دما و رطوبت
- مرحله 3: نصب DS18B20 - سنسور دما
- مرحله 4: نصب BMP180
- مرحله 5: اندازه گیری آب و هوا و ارتفاع با BMP180
- مرحله 6: HW کامل
- مرحله 7: ارسال داده ها به ThingSpeak
- مرحله 8: ارسال داده از راه دور به ThingSpeak با استفاده از ESP8266
- مرحله 9: نکات پایانی
- مرحله 10: نتیجه گیری
تصویری: ایستگاه هواشناسی اینترنت اشیا با RPi و ESP8266: 10 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:55
در آموزش های قبلی ، ما با NodeMCU ، سنسورها بازی کرده و نحوه ضبط و ثبت داده ها را در ThingSpeak (بستر اینترنت اشیاء (IoT) که به شما امکان جمع آوری و ذخیره داده های حسگر در ابر و توسعه برنامه های IoT را می دهد) یاد گرفته ایم:
IOT MASE EASY: CAPTURING DEMOTE WEATHER DATA: UV و دمای هوا و رطوبت
با این آموزش جدید ، نحوه انجام این کار اما در این زمان را یاد می گیریم ، با استفاده از Raspberry Pi برای گرفتن اطلاعات از چندین سنسور مختلف و همچنین بررسی راه های مختلف ارتباط بین دستگاه ها و وب:
سنسورها و نوع کامینیکاسیون:
- DHT22 (دما و رطوبت) ==> ارتباطات دیجیتال
- BMP180 (دما و فشار) ==> پروتکل I2C
- DS18B20 (دما) ==> پروتکل 1 سیم
نمودار بلوک نشان می دهد که در پایان این پروژه به چه چیزی خواهیم رسید:
مرحله 1: BoM - Bill of Materials
- رزبری پای V3 - 32 دلار آمریکا
- سنسور دما و رطوبت نسبی DHT22 - 9.95 دلار آمریکا
- مقاومت 4K7 اهم
- سنسور دما ضد آب DS18B20 - 5.95 دلار آمریکا
- مقاومت 4K7 اهم
- BMP180 سنسور فشار ، دما و ارتفاع - 6.99 دلار آمریکا
مرحله 2: نصب سنسور دما و رطوبت
اولین سنسوری که نصب می شود DHT22 برای ثبت اطلاعات دمای هوا و رطوبت نسبی خواهد بود. سایت ADAFRUIT اطلاعات بسیار خوبی در مورد این سنسورها ارائه می دهد. در زیر ، برخی از اطلاعات از آنجا بازیابی شده است:
بررسی اجمالی
سنسورهای دما و رطوبت DHT کم هزینه بسیار اساسی و آهسته هستند اما برای علاقمندان که مایل به انجام برخی از اطلاعات اصلی هستند بسیار مناسب است. سنسورهای DHT از دو قسمت سنسور رطوبت خازنی و ترمیستور ساخته شده اند. همچنین یک تراشه بسیار اساسی در داخل آن وجود دارد که مقداری تبدیل آنالوگ به دیجیتال انجام می دهد و سیگنال دیجیتال را با دما و رطوبت بیرون می دهد. خواندن سیگنال دیجیتال با استفاده از هر میکروکنترلر بسیار آسان است.
DHT22 ویژگی های اصلی:
- کم هزینه
- قدرت 3 تا 5 ولت و ورودی/خروجی
- حداکثر 2.5 میلی آمپر جریان فعلی در هنگام تبدیل (هنگام درخواست داده)
- برای خواندن رطوبت 0-100 with با دقت 2-5 Good خوب است
- برای خواندن دمای 40- تا 125 درجه سانتی گراد با دقت 0.5 درجه سانتی گراد مناسب است
- نرخ نمونه برداری بیش از 0.5 هرتز (هر 2 ثانیه یک بار)
- اندازه بدنه 15.1 میلی متر در 25 میلی متر در 7.7 میلی متر
- 4 پین با فاصله 0.1 اینچ
هنگامی که معمولاً از سنسور در فواصل کمتر از 20 متر استفاده می کنید ، یک مقاومت 4K7 اهم باید بین پین های داده و VCC متصل شود. پین داده خروجی DHT22 به Raspberry GPIO 16 متصل می شود. نمودار الکتریکی فوق را بررسی کرده و سنسور را به پین های RPi به شرح زیر وصل کنید:
- پین 1 - Vcc ==> 3.3V
- پین 2 - داده ==> GPIO 16
- پین 3 - اتصال ندارد
- پین 4 - Gnd ==> Gnd
فراموش نکنید که مقاومت 4K7 اهم را بین پین های Vcc و Data نصب کنید
پس از اتصال سنسور ، ما همچنین باید کتابخانه آن را روی RPi خود نصب کنیم.
نصب DHT Library:
در Raspberry خود ، از شروع /خانه ، به /Documents بروید
سی دی اسناد
یک دایرکتوری برای نصب کتابخانه ایجاد کرده و به آنجا بروید:
mkdir DHT22_ سنسور
cd DHT22_ سنسور
در مرورگر خود ، به Adafruit GitHub بروید:
github.com/adafruit/Adafruit_Python_DHT
کتابخانه را با کلیک روی پیوند بارگیری در سمت راست بارگیری کرده و بایگانی پوشه Raspberry Pi خود را که اخیراً ایجاد شده است از حالت فشرده خارج کنید. سپس به فهرست کتابخانه (زیر پوشه ای که هنگام باز کردن فایل از حالت فشرده خارج می شود) بروید و دستور را اجرا کنید:
sudo python3 setup.py install
یک برنامه آزمایشی (DHT22_test.py) از GITHUB من باز کنید
Adafruit_DHT را وارد کنید
DHT22Sensor = Adafruit_DHT. DHT22 DHTpin = 16 رطوبت ، دما = Adafruit_DHT.read_retry (DHT22Sensor، DHTpin) اگر رطوبت هیچکدام و دما هیچکدام نباشد: print ('Temp = {0: 0.1f}*C رطوبت = {1: 0.1 f}٪ '. فرمت (دما ، رطوبت)) دیگر: چاپ (' خواندن انجام نشد. دوباره امتحان کنید! ')
برنامه را با دستور زیر اجرا کنید:
python3 DHT22_test.py
صفحه چاپ پایانه زیر نتیجه را نشان می دهد.
مرحله 3: نصب DS18B20 - سنسور دما
نمای کلی سنسور:
ما در این آموزش از نسخه ضد آب سنسور DS18B20 استفاده می کنیم. برای دمای دور در شرایط مرطوب ، به عنوان مثال در خاک مرطوب ، بسیار مفید است. سنسور جدا شده است و می تواند تا 125 درجه سانتی گراد اندازه گیری کند (Adafrut توصیه نمی کند که از آن بیش از 100 درجه سانتی گراد استفاده کنید زیرا کابل PVC کابل آن وجود دارد).
DS18B20 یک سنسور دیجیتالی است که استفاده از آن را حتی در مسافت های طولانی خوب می کند! این سنسورهای حرارتی دیجیتالی 1 سیم نسبتاً دقیق هستند (± 0.5 درجه سانتی گراد در بیشتر محدوده) و می توانند تا 12 بیت دقت را از مبدل دیجیتال به آنالوگ روی برد ارائه دهند. آنها با NodeMCU با استفاده از یک پین دیجیتالی عالی کار می کنند ، و حتی می توانید چندین عدد را به یک پین متصل کنید ، هر یک دارای شناسه 64 بیتی منحصر به فردی است که در کارخانه برای تمایز آنها در نظر گرفته شده است.
سنسور از 3.0 تا 5.0 ولت کار می کند ، بدین معنی که می توان آن را مستقیماً از طریق 3.3 ولت توسط یکی از پین های رزبری (1 یا 17) تغذیه کرد.
سنسور دارای 3 سیم است:
- سیاه: GND
- قرمز: VCC
- زرد: داده های 1 سیم
در اینجا ، می توانید اطلاعات کامل را پیدا کنید: DS18B20 Datasheet
نصب سنسور:
نمودار بالا را دنبال کرده و اتصالات را ایجاد کنید:
- Vcc ==> 3.3V
- Gnd ==> Gnd
- داده ==> GPIO 4 (به طور پیش فرض برای کتابخانه)
نصب کتابخانه پایتون:
بعد ، اجازه دهید کتابخانه پایتون را که سنسور را کنترل می کند نصب کنیم:
sudo pip3 سنسور w1therms را نصب کنید
قبل از اجرای اسکریپت برای آزمایش سنسور ، بررسی کنید که آیا رابط "1-Wire" در RPi شما فعال است (صفحه چاپ بالا را ببینید)
فراموش نکنید که RPi خود را پس از تغییر پیکربندی مجدداً راه اندازی کنید
آزمایش سنسور:
برای آزمایش سنسور می توان از یک اسکریپت ساده پایتون استفاده کرد:
زمان واردات
از w1thermsensor import W1ThermSensor ds18b20Sensor = W1ThermSensor () while True: temperature = ds18b20Sensor.get_temperature () print ("The temperature is٪ s celsius"٪ temperature) time.sleep (1)
مرحله 4: نصب BMP180
نمای کلی سنسور:
BMP180 جانشین BMP085 است ، نسل جدیدی از سنسورهای فشار دیجیتال با دقت بالا برای کاربردهای مصرف کننده. دستگاه های الکترونیکی کم مصرف و ولتاژ پایین BMP180 برای استفاده در تلفن های همراه ، PDA ها ، دستگاه های ناوبری GPS و تجهیزات بیرونی بهینه شده است. BMP180 با صدای کم ارتفاع فقط 0.25 متر در زمان تبدیل سریع ، عملکرد برتر را ارائه می دهد. رابط I2C امکان ادغام آسان سیستم با میکروکنترلر را فراهم می کند. BMP180 بر اساس فناوری مقاوم در برابر پیزو برای استحکام EMC ، دقت بالا و خطی بودن و همچنین ثبات طولانی مدت است.
برگه کامل BMP را می توانید در اینجا پیدا کنید: BMP180 - سنسور فشار دیجیتال
نصب سنسور: نمودار فوق را دنبال کرده و اتصالات را ایجاد کنید:
- Vin ==> 3.3V
- GND ==> GND
- SCL ==> GPIO 3
- SDA ==> GPIO 2
فعال کردن رابط I2C
به تنظیمات RPi بروید و تأیید کنید که رابط I2C فعال است. اگر نه ، آن را فعال کرده و RPi را راه اندازی مجدد کنید.
با استفاده از BMP180
اگر همه چیز به درستی نصب شده است و همه چیز به خوبی متصل شده است ، اکنون آماده هستید که Pi خود را روشن کرده و آنچه BMP180 در مورد جهان اطراف شما به شما می گوید را مشاهده کنید.
اولین کاری که باید انجام دهید این است که بررسی کنید آیا Pi BMP180 شما را می بیند یا خیر. موارد زیر را در پنجره ترمینال امتحان کنید:
sudo i2cdetect -y 1
اگر دستور کار کرد ، باید چیزی مشابه صفحه چاپ نهایی ترمینال را مشاهده کنید که نشان می دهد BMP180 در کانال "77" است.
نصب کتابخانه BMP180:
یک دایرکتوری برای نصب کتابخانه ایجاد کنید:
mkdir BMP180_Sensorcd BMP180_Sensor
در مرورگر خود ، به Adafruit GITHub بروید:
github.com/adafruit/Adafruit_Python_BMP
کتابخانه را با کلیک روی پیوند بارگیری zip در سمت راست بارگیری کرده و بایگانی پوشه Raspberry Pi ایجاد شده را از حالت فشرده خارج کنید. سپس به زیر پوشه ایجاد شده بروید و دستور زیر را در فهرست کتابخانه اجرا کنید:
sudo python3 setup.py install
Python IDE خود را باز کرده و یک برنامه آزمایشی ایجاد کرده و نام آن را بگذارید ، به عنوان مثال BMP180Test.py
وارد کردن Adafruit_BMP. BMP085 به عنوان BMP085 حسگر = BMP085. BMP085 () print ('Temp = {0: 0.2f} *C'.format (sensor.read_temperature ())) print (' Pressure = {0: 0.2f} Pa ' format (sensor.read_pressure ())) print ('Altitude = {0: 0.2f} m'.format (sensor.read_altitude ())) print (' Sealevel Pressure = {0: 0.2f} Pa'.format (سنسور.read_sealevel_pressure ()))
اجرای برنامه آزمون:
python3 BMP180Test.py
صفحه چاپ ترمینال بالا نتیجه را نشان می دهد.
توجه داشته باشید که این فشار در Pa (پاسکال) ارائه می شود. برای درک بهتر این واحد به مرحله بعدی مراجعه کنید.
مرحله 5: اندازه گیری آب و هوا و ارتفاع با BMP180
بیایید کمی وقت بگذاریم تا با خواندن BMP کمی بیشتر در مورد آنچه بدست می آوریم درک کنیم. می توانید این قسمت از آموزش را نادیده بگیرید یا بعداً برگردید.
اگر می خواهید در مورد خواندن سنسور بیشتر بدانید ، لطفاً به این آموزش عالی بروید:
BMP180 برای اندازه گیری دقیق فشار اتمسفر طراحی شده است. فشار جوی هم با آب و هوا و هم با ارتفاع متفاوت است.
فشار اتمسفر چیست؟
تعریف فشار اتمسفر نیرویی است که هوای اطراف شما بر همه چیز وارد می کند. وزن گازهای موجود در جو باعث ایجاد فشار در جو می شود. واحد فشار معمولی "پوند بر اینچ مربع" یا psi است. ما در اینجا از علامت بین المللی ، یعنی نیوتن در متر مربع که پاسکال (Pa) نامیده می شود ، استفاده می کنیم.
اگر یک ستون با عرض 1 سانتی متر از هوا بگیرید 1 کیلوگرم وزن خواهید داشت
این وزن ، با فشار دادن روی رد پای آن ستون ، فشار جوی را ایجاد می کند که می توانیم با سنسورهایی مانند BMP180 اندازه گیری کنیم. از آنجا که وزن ستون هوا به عرض 1 سانتی متر در حدود 1 کیلوگرم است ، نتیجه می شود که فشار متوسط سطح دریا حدود 101325 پاسکال یا بهتر است 1013.25 hPa (1 hPa نیز به عنوان میلی بار - mbar شناخته می شود) است. این به ازای هر 300 متری که صعود می کنید ، 4 درصد کاهش می یابد. هرچه بالاتر بروید ، فشار کمتری خواهید دید ، زیرا ستون بالای جو بسیار کوتاهتر است و بنابراین وزن کمتری دارد. دانستن این نکته مفید است ، زیرا با اندازه گیری فشار و انجام برخی محاسبات ، می توانید ارتفاع خود را تعیین کنید.
فشار هوا در 3 ، 810 متر تنها نیمی از فشار در سطح دریا است.
BMP180 فشار مطلق را در پاسکال (Pa) خروجی می دهد. یک پاسکال فشار بسیار کمی است ، تقریباً مقداری که یک ورق کاغذ روی میز می نشیند. بیشتر اوقات اندازه گیری ها را در هکتوپاسکال (1 hPa = 100 Pa) مشاهده خواهید کرد. کتابخانه مورد استفاده در اینجا خروجی مقادیر شناور در hPa را ارائه می دهد که این مقدار نیز برابر با یک میلی بار (mbar) است.
در اینجا برخی از تبدیل به واحدهای فشار دیگر است:
- 1 hPa = 100 Pa = 1 mbar = 0.001 بار
- 1 hPa = 0.75006168 تور
- 1 hPa = 0.01450377 psi (پوند در اینچ مربع)
- 1 hPa = 0.02953337 اینچ جیوه (اینچ جیوه)
- 1 hpa = 0.00098692 atm (اتمسفرهای استاندارد)
اثرات دما
از آنجا که دما بر چگالی یک گاز تأثیر می گذارد ، و چگالی بر جرم یک گاز تأثیر می گذارد ، و جرم بر فشار (whw) تأثیر می گذارد ، فشار اتمسفر به طور چشمگیری با دما تغییر می کند. خلبانان این را "ارتفاع تراکم" می دانند ، که باعث می شود پرواز در یک روز سرد راحت تر از یک روز گرم باشد زیرا هوا متراکم تر است و اثر آیرودینامیکی بیشتری دارد. برای جبران درجه حرارت ، BMP180 دارای یک سنسور درجه حرارت نسبتاً خوب و همچنین یک سنسور فشار است.
برای انجام یک فشارخوان ، ابتدا یک دماسنج را اندازه گیری می کنید ، سپس آن را با یک فشار فشار خام ترکیب می کنید تا به آخرین اندازه گیری فشار جبران شده دما برسید. (کتابخانه همه اینها را بسیار آسان می کند.)
اندازه گیری فشار مطلق
اگر برنامه شما نیاز به اندازه گیری فشار مطلق دارد ، تنها کاری که باید انجام دهید این است که دما را بخوانید ، سپس یک فشارسنج را انجام دهید (برای جزئیات به طرح اصلی مراجعه کنید). قرائت فشار نهایی بر حسب hPa = mbar خواهد بود. در صورت تمایل ، می توانید با استفاده از فاکتورهای تبدیل فوق این مورد را به واحد دیگری تبدیل کنید.
توجه داشته باشید که فشار مطلق جو با ارتفاع شما و الگوهای آب و هوایی فعلی متفاوت است ، که هر دو برای اندازه گیری مفید هستند.
مشاهدات آب و هوا
فشار اتمسفر در هر نقطه از زمین (یا هرجای دیگر با اتمسفر) ثابت نیست. تعامل پیچیده بین چرخش زمین ، کج شدن محور و بسیاری عوامل دیگر منجر به حرکت مناطق با فشار بیشتر و پایین می شود که به نوبه خود باعث تغییرات آب و هوایی می شود که هر روز شاهد آن هستیم. با مشاهده تغییرات فشار ، می توانید تغییرات کوتاه مدت آب و هوا را پیش بینی کنید. به عنوان مثال ، کاهش فشار معمولاً به معنای آب و هوای مرطوب یا نزدیک شدن طوفان است (یک سیستم فشار کم در حال حرکت است). افزایش فشار معمولاً به این معنی است که هوای روشن نزدیک می شود (یک سیستم فشار قوی در حال حرکت است). اما به یاد داشته باشید که فشار جوی نیز با ارتفاع متفاوت است. فشار مطلق در خانه من ، Lo Barnechea در شیلی (ارتفاع 950 متر) همیشه کمتر از فشار مطلق در سان فرانسیسکو است (به عنوان مثال کمتر از 2 متر ، تقریبا سطح دریا). اگر ایستگاه های هواشناسی فقط فشار مطلق خود را گزارش دهند ، مقایسه مستقیم فشار اندازه گیری ها از یک مکان به مکان دیگر دشوار خواهد بود (و پیش بینی آب و هوا در مقیاس بزرگ بستگی به اندازه گیری تا آنجا که ممکن است) دارد.
برای حل این مشکل ، ایستگاه های هواشناسی همیشه اثرات ارتفاع را از قرائت فشار گزارش شده خود با افزودن ریاضی فشار ثابت معادل حذف می کنند تا به نظر برسد که این اندازه گیری در سطح دریا گرفته شده است. وقتی این کار را انجام می دهید ، خوانش بالاتر در سان فرانسیسکو از لو بارنچیا همیشه به دلیل الگوهای آب و هوایی است و نه به دلیل ارتفاع.
برای این کار ، یک تابع در کتابخانه به نام سطح دریا (P ، A) وجود دارد. این فشار مطلق (P) را در hPa ، و ارتفاع فعلی ایستگاه (A) را متر می گیرد و اثرات ارتفاع را از فشار حذف می کند. می توانید از خروجی این عملکرد برای مقایسه مستقیم خوانش های آب و هوایی خود با سایر ایستگاه های سراسر جهان استفاده کنید.
تعیین ارتفاع
از آنجا که فشار با ارتفاع متفاوت است ، می توانید از سنسور فشار برای اندازه گیری ارتفاع (با چند نکته) استفاده کنید. فشار متوسط جو در سطح دریا 1013.25 hPa (یا mbar) است. با صعود به سمت خلاء فضا ، این مقدار به صفر می رسد. از آنجا که منحنی این افت به خوبی درک شده است ، می توانید اختلاف ارتفاع بین دو اندازه گیری فشار (p و p0) را با استفاده از یک معادله خاص محاسبه کنید.
اگر از فشار سطح دریا (1013.25 hPa) به عنوان فشار پایه استفاده کنید (p0) ، خروجی معادله ارتفاع فعلی شما از سطح دریا خواهد بود. در کتابخانه تابعی به نام ارتفاع (P، P0) وجود دارد که به شما امکان می دهد "ارتفاع محاسبه شده" را دریافت کنید.
توضیحات فوق از آموزش BMP 180 Sparkfun استخراج شده است.
مرحله 6: HW کامل
مرحله 7: ارسال داده ها به ThingSpeak
در این مرحله ، ما آموختیم که چگونه RPi را برای گرفتن اطلاعات از هر 3 سنسور و چاپ روی ترمینال آماده کنیم. اکنون وقت آن است که ببینیم چگونه این داده ها را به پلت فرم IoT ، ThingSpeak ارسال کنیم.
شروع کنیم!
ابتدا ، باید یک حساب کاربری در ThinkSpeak.com داشته باشید
دستورالعمل ها را برای ایجاد یک کانال دنبال کنید و به شناسه کانال خود و نوشتن کلید API توجه کنید
بارگیری اسکریپت پایتون از GitHub من: localData ToTS_v1_EXT.py
اجازه دهید کد مهمترین قسمتها را توضیح دهیم:
ابتدا ، اجازه دهید کتابخانه ThingSpeak را وارد کنیم ، سرویس گیرنده WiFi را تعریف کرده و اعتبار محلی روتر و Thinkspeak خود را تعریف کنیم:
وارد کردن چیزهای گفتاری
چندین راه برای ارتباط با ThingSpeak وجود دارد ، ساده ترین راه استفاده از کتابخانه مشتری برای API thingspeak.com است که توسط میکولاج چوالیز و کیث الیس توسعه یافته است.
کتابخانه را می توان از https://github.com/mchwalisz/thingspeak بارگیری کرد یا از PIP در پایانه استفاده کرد:
sudo pip3 install thingspeak
سپس ، در داخل اسکریپت ، اعتبار کانال ThingSpeak را به روز کنید
chId = 9999999 # با شناسه کانال خود وارد کنید
tsKey = 'وارد کانال خود شوید کلید بنویسید' tsUrl = 'https://api.thingspeak.com/update' ts = thingspeak. Channel (chId، tsUrl، tsKey)
حالا بیایید 3 سنسور را اولیه کنیم:
# DS18B20 کتابخانه 1 سیم
از w1thermsensor import W1ThermSensor ds18b20Sensor = W1ThermSensor () # به طور پیش فرض GPIO 4 توسط کتابخانه استفاده می شود # DHT22 واردات کتابخانه Adafruit_DHT DHT22Sensor = Adafruit_DHT. DHT22 DHTpin = 16 # BMP180MP BMP085MPMP8585MP شما باید ارتفاع واقعی محل ایستگاه هواشناسی خود را تعریف کنید و متغیر جهانی "altReal" را به روز کنید. در مورد من ، ایستگاه من در ارتفاع 950 متری از سطح دریا واقع شده است
altReal جهانی
altReal = 950
هنگامی که ارتفاع ایستگاه را به عنوان ورودی وارد می کنیم ، می توانیم فشار مطلق ، فشار سطح دریا ، دما و ارتفاع را با استفاده از تابع bmp180GetData (ارتفاع) بدست آوریم:
def bmp180GetData (ارتفاع):
temp = bmp180Sensor.read_temperature () pres = bmp180Sensor.read_pressure () alt=bmp180Sensor.read_altitude () presSeaLevel = pres/pow (1.0 - altitude/44330.0، 5.255) temp = round (temp، 1) pres = round (pres/100 ، 2) # فشار مطلق در hPa (یا mbar) alt=دور (alt) presSeaLevel = دور (presSeaLevel/100 ، 2) # فشار مطلق در hPa (یا mbar) دمای بازگشت ، pres ، alt ، presSeaLevel
تابع getLocalData () ، تمام داده های محلی را که توسط ایستگاه ما گرفته شده است ، برمی گرداند:
def getLocalData ():
time globalString global humLab temp globalExt global tempLab global presSL global altLab presAbs global # زمان مطالعه را هم اکنون دریافت کنید = datetime.datetime.now () timeString = now.strftime ("٪ Y-٪ m-٪ d٪ H:٪ M") # دمای خارج را بخوانید (1 متر فاصله) tempExt = دور (ds18b20Sensor.get_temperature ()، 1) tempLab، presAbs، altLab، presSL = bmp180GetData (altReal) humDHT، tempDHT = Adafruit_DHT.read_retry اگر DHT22Tensor نیست ، DHTH و tempDHT هیچکدام نیست: humLab = round (humDHT
هنگامی که همه داده ها توسط توابع بالا گرفته شد ، باید آنها را به ThingSpeak ارسال کنید. شما این کار را با استفاده از تابع sendDataTs () انجام می دهید:
def sendDataTs ():
data = {"field1": tempLab ، "field2": tempExt ، "field3": humLab ، "field4": presSL ، "field5": altLab} ts.update (data) print ("[INFO] داده ارسال شده برای 5 فیلد: "، tempLab، tempExt، humLab ، presSL ، altLab)
با به روزرسانی داده های کانال ، اسکریپت را ذخیره کرده و در پایانه خود اجرا کنید:
sudo Python3 localData_ToTs_v1_EXT.py
درباره پروتکل های ارتباطی
توجه داشته باشید که با استفاده از "کتابخانه thingspeak" ، "کتابخانه درخواست ها" وارد می شود ، این کتابخانه HTTP دارای مجوز Apache2 است که به زبان پایتون نوشته شده است. اسناد رسمی درخواست نصب را می توانید در اینجا پیدا کنید:
docs.python-requests.org/fa/latest/user/install/
در صورت لزوم ، قبل از اجرای اسکریپت خود ، می توانید تأیید کنید که کتابخانه درخواست ها نصب شده است:
درخواست های نصب sudo pip3
به صورت اختیاری می توانید از MTTQ به عنوان روشی برای ارسال داده به ThingSpeak استفاده کنید. MQTT با HTTP متفاوت است ، یک بار به طور خاص طراحی شده است که سبک است و برای دستگاه های تعبیه شده با RAM و عملکرد CPU پایین در نظر گرفته شده است. همچنین ، در بیشتر موارد ، MQTT از پهنای باند کمتری استفاده می کند.
به این آموزش مراجعه کنید: برای جزئیات بیشتر ، یک کانال ThingSpeak را با استفاده از MQTT در Raspberry Pi به روز کنید.
مرحله 8: ارسال داده از راه دور به ThingSpeak با استفاده از ESP8266
برای این مرحله ، از همان HW استفاده می کنیم که در آموزش muy توضیح داده شد:
IOT MASE EASY: CAPTURING DEMOTE WEATHER DATA: UV و دمای هوا و رطوبت
کدی که ما در اینجا استفاده می کنیم ، اساساً همان است که در آن آموزش استفاده می شود. اجازه دهید کد مهمترین قسمتها را توضیح دهیم:
ابتدا بیایید با کتابخانه ESP8266 تماس بگیریم ، کلاینت WiFi را تعریف کرده و اعتبار روتر محلی و Thinkspeak خود را مشخص کنیم:
/ * NodeMCU ESP12-E */
#شامل مشتری WiFiClient ؛ const char* MY_SSID = "با SSDID خود وارد شوید"؛ const char* MY_PWD = "با گذرواژه خود وارد شوید"؛ /* Thinkspeak*/ const char* TS_SERVER = "api.thingspeak.com"؛ رشته TS_API_KEY = "با کلید نوشتاری خود وارد شوید"؛
دوم ، بیایید یک کتابخانه بسیار مهم برای پروژه های اینترنت اشیاء قرار دهیم: SimpleTimer.h:
/ * تایمر */
#شامل تایمر ساده تایمر ؛
سوم ، در هنگام راه اندازی () ، ارتباط سریال را آغاز می کنیم ، تابع connectWiFi () را فراخوانی می کنیم و زمان سنج ها را تعریف می کنیم. توجه داشته باشید که خط کد: timer.setInterval (60000L، sendDataTS)؛ تابع sendDataTS () را هر 60 ثانیه فراخوانی می کند تا داده ها را در کانال ThinkSpeak بارگذاری کند.
void setup ()
{… Serial.begin (115200)؛ تأخیر (10) ؛ … connectWifi ()؛ timer.setInterval (60000L ، sendDataTS) ؛ …}
سرانجام اما مهم نیست ، در طول حلقه () ، تنها دستور مورد نیاز این است که زمان سنج را راه اندازی کنید و تمام!
حلقه خالی ()
{… timer.run ()؛ // SimpleTimer را راه اندازی می کند}
در زیر ، دو عملکرد مهم مورد استفاده برای مدیریت ارتباط Thinkspeak را مشاهده می کنید:
اتصال ESP12-E با شبکه WiFi شما:
/***************************************************
*اتصال WiFi ********************************************* ***/ void connectWifi () {Serial.print ("اتصال به"+*MY_SSID) ؛ WiFi.begin (MY_SSID ، MY_PWD) ؛ while (WiFi.status ()! = WL_CONNECTED) {تأخیر (1000) ؛ Serial.print (".") ؛ } Serial.println ("")؛ Serial.println ("WiFi متصل است") ؛ Serial.println ("")؛ }
ESP12-E ارسال داده به ThinkSpeak:
***************************************************
*ارسال اطلاعات به کانال Thinkspeak **************************************** ******/ void sendDataTS (void) {if (client.connect (TS_SERVER، 80)) {String postStr = TS_API_KEY؛ postStr += "& field6 ="؛ postStr += رشته (temp) ؛ postStr += "& field7 ="؛ postStr += رشته (همهمه) ؛ postStr += "& field8 ="؛ postStr += رشته (dataSensorUV) ؛ postStr += "\ r / n / r / n"؛ client.print ("POST /update HTTP /1.1 / n") ؛ client.print ("میزبان: api.thingspeak.com / n")؛ client.print ("اتصال: بستن / n")؛ client.print ("X-THINGSPEAKAPIKEY:" + TS_API_KEY + "\ n")؛ client.print ("نوع محتوا: application/x-www-form-urlencoded / n")؛ client.print ("Content-Length:")؛ client.print (postStr.length ())؛ client.print ("\ n / n")؛ client.print (postStr)؛ تاخیر (1000) ؛ } ++ ارسال شد ؛ client.stop ()؛ }
کد کامل را می توانید در GitHub من پیدا کنید: NodeMCU_UV_DHT_Sensor_OLED_TS_EXT
هنگامی که کد را در NodeMCU بارگذاری کردید. بیایید یک باتری خارجی را متصل کرده و در زیر نور خورشید اندازه گیری کنیم. ایستگاه راه دور را روی سقف قرار می دهم و شروع به ضبط داده ها در ThingSpeak.com می کنم ، همانطور که در عکس های بالا نشان داده شده است.
مرحله 9: نکات پایانی
هدف اصلی این آموزش نشان دادن نحوه اتصال Raspberry Pi به ThingSpeak بود. این امر برای ضبط داده ها و ثبت آنها بر روی پلت فرم IoT بسیار عالی است.
با استفاده از فرصت ، ما همچنین داده ها را به آن کانال خاص ارسال کردیم و آنها را از یک ایستگاه راه دور با استفاده از ESP8266 گرفتیم. این روش خوب است ، اما بهترین نیست. از آنجا که ما یک عملیات "ناهمزمان" داریم ، گاهی اوقات ، هر دو ، RPi و ESP8266 سعی می کنند به طور همزمان (یا با فاصله کمی) آنچه توسط ThingSpeak رد می شود را وارد کنند. ایده آل این است که ESP8266 داده ها را به صورت محلی به رزبری پای ارسال کند و آخرین دستگاه مسئول رسیدگی به همه داده ها باشد. با انجام این کار ، "ایستگاه اصلی" (رزبری پای) ، می تواند 3 کار انجام دهد:
- همه داده ها را در پایگاه داده محلی ثبت کنید
- ارائه همه داده ها در یک صفحه وب محلی (با استفاده از Flask همانطور که در عکس بالا نشان داده شده است)
- ارسال همه داده ها به ThingSpeak به طور همزمان.
در آموزش آینده ، ما این گزینه ها را بررسی می کنیم.
مرحله 10: نتیجه گیری
مثل همیشه ، امیدوارم این پروژه بتواند به دیگران کمک کند تا به دنیای هیجان انگیز الکترونیک راه پیدا کنند!
برای اطلاعات بیشتر و کد نهایی ، لطفاً از مخزن GitHub من دیدن کنید: RPi-NodeMCU-Weather-Station
برای پروژه های بیشتر ، لطفاً از وبلاگ من دیدن کنید: MJRoBot.org
گوش به زنگ باشید! آموزش بعدی ما داده ها را از یک ایستگاه آب و هوایی از راه دور به یک ایستگاه مرکزی ، بر اساس سرور وب رزبری پای ارسال می کنیم:
سلودوس از جنوب جهان!
شما را در دستورالعمل بعدی من می بینم!
متشکرم،
مارسلو
توصیه شده:
ایستگاه هواشناسی اینترنت اشیا با مانیتورینگ VOC: 6 مرحله
ایستگاه هواشناسی اینترنت اشیا با نظارت بر VOCs: در این مقاله آموزشی ، نحوه ساخت ایستگاه هواشناسی اینترنت اشیاء (IoT) با نظارت بر ترکیبات آلی فرار (VOCs) را نشان می دهم. برای این پروژه ، من یک کیت Do-It-Yourself (DIY) ایجاد کردم. سخت افزار و نرم افزار منبع باز هستند
ایستگاه هواشناسی مبتنی بر اینترنت اشیا ESP8266: 6 مرحله
ایستگاه هواشناسی مبتنی بر IoT ESP8266: آیا می خواهید پروژه ایستگاه هواشناسی را بدون استفاده از حسگر بسازید و از آب و هوا در سراسر جهان اطلاعات دریافت کنید؟ با استفاده از OpenWeatherMap ، یک کار واقعی می شود
ماژول قدرت اینترنت اشیا: افزودن ویژگی اندازه گیری توان اینترنت اشیا به کنترل کننده شارژ خورشیدی من: 19 مرحله (همراه با تصاویر)
ماژول IoT Power: افزودن ویژگی اندازه گیری توان اینترنت اشیا به کنترل کننده شارژ خورشیدی من: سلام به همه ، امیدوارم همه شما عالی باشید! در این مقاله آموزشی می خواهم به شما نشان دهم که چگونه یک ماژول اندازه گیری توان اینترنت اشیا را ایجاد کرده ام که مقدار توان تولید شده توسط پنل های خورشیدی من را که توسط کنترل کننده شارژ خورشیدی مورد استفاده قرار می گیرد ، محاسبه می کند
ایستگاه هواشناسی دیگر اینترنت اشیا: 8 مرحله
یکی دیگر از ایستگاه های هواشناسی اینترنت اشیا: موارد زیر هدیه تولد پدرم بود. با الهام از دستورالعمل دیگری که دیدم و در ابتدا قصد داشت به عنوان یک کیت خودسازی به او ثابت شود. با شروع کار روی این پروژه با او ، من خیلی سریع متوجه شدم که
سیستم مانیتورینگ کارخانه اینترنت اشیا (با بستر اینترنت اشیا IBM): 11 مرحله (همراه با تصاویر)
سیستم نظارت بر کارخانه اینترنت اشیا (با پلتفرم IoM IoT): مروری سیستم نظارت بر کارخانه (PMS) یک برنامه کاربردی است که با افرادی که در طبقه کارگر هستند با انگشت شست سبز در نظر گرفته شده است. امروزه افراد شاغل بیش از هر زمان دیگری شلوغ هستند. پیشرفت شغلی و مدیریت امور مالی آنها