پروژه الکترونیکپروژه های پایتونپروژه های دما و رطوبتپروژه های رزبری پای

پروژه مانیتورینگ دما، رطوبت و فشار در اینترنت (IoT) با رزبری پای و پایتون

سلام. پروژه مانیتورینگ دما، رطوبت و فشار در اینترنت (IoT) با رزبری پای را آماده کردیم. این پروژه میتواند برای ایستگاه های هواشناسی استفاده شود.

اندازه گیری دما ، رطوبت و فشار و نمایش در اینترنت با Raspberry Pi

رطوبت ، دما و فشار سه پارامتر اساسی برای ساخت هر ایستگاه هواشناسی و اندازه گیری شرایط محیطی هستند. این پروژه مبتنی بر اینترنت اشیا با هدف نمایش پارامترهای رطوبت، دما و فشار فعلی بر روی LCD و همچنین بر روی سرور اینترنت با استفاده از Raspberry Pi است. شما می توانید این سیستم را در هر کجا نصب کنید و می توانید از هر نقطه جهان از طریق اینترنت بر شرایط آب و هوایی آن مکان نظارت داشته باشید. علاوه بر مشاهده مقادیر زنده، میتوانید مقادیر ذخیره شده در گذشته را نیز در اینترنت مشاهده کنید.

اندازه گیری دما ، رطوبت و فشار و نمایش در اینترنت با Raspberry Pi

ما برای سنجش فشار از سنسور فشارسنج BM180 و برای اندازه گیری دما و رطوبت از سنسور دماسنج و رطوبت سنج DHT11 استفاده کرده ایم. دما و فشار و رطوبت در ال سی دی کاراکتری نمایش داده میشوند و تمامی این اطلاعات در محیط اینترنت نیز قابل دسترسی هستند. فیلم آموزش و کد های پروژه در انتهای مطلب قرار داده شده است.

همانطور که گفتیم این پروژه میتواند برای انجام عملیات های هوا شناسی استفاده شود.

این پروژه مبتنی بر IoT دارای چهار بخش است. ابتدا حسگر DHT11 رطوبت و دما را حس می کند و سنسور BM180 فشار جو را اندازه گیری می کند. در مرحله دوم ، Raspberry Pi خروجی ماژول سنسور DHT11 را با استفاده از پروتکل تک سیم و خروجی سنسور فشار BM180 با استفاده از پروتکل I2C می خواند و هر دو مقدار سنسور را به درصد (رطوبت)، مقیاس سلسیوس (دما) و هکتو پاسکال یا میلی بار (فشار) استخراج می کند. در مرحله سوم ، این مقادیر با استفاده از Wi-Fi داخلی Raspberry Pi 3. به سرور ThingSpeak ارسال می شوند و در آخر ThingSpeak داده ها را تجزیه و تحلیل می کند و آن ها را به صورت نمودار نشان می دهد. از LCD نیز برای نمایش این مقادیر استفاده می شود.

پروژه مانیتورینگ دما، رطوبت و فشار

آموزش کار با ThingSpeak

ThingSpeak ابزار های بسیار مناسبی را برای پروژه های مبتنی بر IoT فراهم می کند. با استفاده از وب سایت ThingSpeak، ما می توانیم از کانال ها و صفحات وب ارائه شده توسط ThingSpeak استفاده کرده و داده های خود را مشاهده کرده و سیستم خود را از طریق اینترنت کنترل کنیم. ThingSpeak داده های حسگرها را جمع آوری می کند.

حتما ببینید :  پروژه سرعت سنج GPS با آردوینو و نمایشگر OLED

ابتدا باید در وب سایت ThingSpeak حساب ایجاد کنید و یک کانال جدید را در آن ایجاد کنید. در کانال جدید شما باید برخی از فیلدها را برای داده هایی که می خواهید نظارت کنید تعیین کنید، مانند این پروژه ما می توانیم سه زمینه برای داده های رطوبت ، دما و فشار ایجاد کنیم.

اکنون روی برگه “API Keys” کلیک کرده و کلیدهای Write و Read API را ذخیره کنید. در اینجا ما فقط از کلید Write استفاده می کنیم. شما باید این کد را در متغیر ‘key’ در کد کپی کنید.

آموزش کار با ThingSpeak 

پس از آن ، بر روی “Data Import/Export” کلیک کنید و آدرس URL Get GET Request Channel Update را کپی کنید، مانند آدرس زیر است.

https://api.thingspeak.com/update?api_key=30BCDSRQ52AOI3UA&field1=0

Api Keys در پلتفرم things Speak

اکنون باید این آدرس را در کد پایتون پروژه قرار بدهیم تا بتوانیم اطلاعات را به Thingsspeak ارسال کنیم.

اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید.
URL = 'https://api.thingspeak.com/update?api_key=%s' % key
finalURL = URL +"&field1=%s&field2=%s"%(humi, temp)+"&field3=%s" %(pressure)

در اینجا ما از کتابخانه AdaFruit DHT11 برای ارتباط DHT11 با Raspberry Pi استفاده کرده ایم. Raspberry Pi در اینجا داده های رطوبت و دما را از DHT11 و فشار اتمسفر از حسگر BMP180 جمع آوری کرده و سپس آن را به سرور ThingSpeak و ال سی دی کاراکتری ارسال می کند. ThingSpeak داده ها را به شکل نمودار به شرح زیر نشان می دهد:

نمودار های نمایش دما رطوبت و فشار در things speak

توضیحات مدار و شماتیک پروژه

تصویر زیر شماتیک مدار این پروژه را نشان میدهد. همانطور که میبینید مدار بسیار ساده است و ما فقط سنسور رطوبت و دما DHT11 و سنسور فشار BMP180 را به برد Raspberry Pi متصل کرده ایم.

مدار و شماتیک پروژه ارسال دما و فشار و رطوبت به اینترنت

پیکربندی برنامه رزبری پای و پایتون

 

ما در اینجا از زبان پایتون برای کد برنامه استفاده می کنیم. قبل از کد گذاری ، کاربر باید پیکربندی Raspberry Pi را انجام دهد. اول از همه ما برای اجرای این پروژه روی Raspberry Pi باید فایلهای کتابخانه سنسور Adafruit Python DHT را نصب کنیم. برای این کار باید دستورات داده شده را دنبال کنیم:

sudo apt-get install git-core
sudo apt-get update
git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT
sudo apt-get install build-essential python-dev
sudo python setup.py install

فایلهای کتابخانه سنسور Adafruit Python DHT

پس از این کار ، کاربر باید با مراجعه به تنظیمات نرم افزار RPi To Raspberry Pi I2C را فعال کند:

sudo raspi-config

سپس به “Advance Options” بروید ، “I2C” را انتخاب کنید و سپس “Enable” را انتخاب کنید.

حتما ببینید :  تشخیص چشم، فک، دهان با OpenCV و رزبری پای

نرم افزار RPi To Raspberry Pi I2C

بخش برنامه نویسی این پروژه نقش بسیار مهمی در انجام صحیح عملیات دارد.

کد کامل پروژه در فایل دانلودی انتهای صفحه قرار داده شده است. در اینجا قسمت های مهم کد را توضیح میدهیم.

اول از همه ، همه كتابخانه های مورد نیاز را فراخوانی میکنیم. سپس متغیر ها را معرفی میکنیم و پین های ال سی دی و سنسور DHT را تعیین میکنیم.

import sys
import RPi.GPIO as GPIO
import os
import Adafruit_DHT
import urllib2
import smbus
import time
from ctypes import c_short

#Register Address
regCall   = 0xAA
... ......
 ..... ...

تابع def main (): از کد زیر برای ارسال داده ها به سرور و نمایش آن بر روی LCD، به طور مداوم استفاده می شود.

def main():
    
    print 'System Ready...'
    URL = 'https://api.thingspeak.com/update?api_key=%s' % key
    print "Wait...."
    while True:
            (humi, temp)= readDHT()
            (pressure) =readBmp180()
           
            lcdcmd(0x01)
            lcdstring("Humi#Temp#P(hPa)")
            lcdstring(humi+'%'+"  %sC  %s" %(temp, pressure))
            finalURL = URL +"&field1=%s&field2=%s"%(humi, temp)+"&field3=%s" %(pressure) 
            print finalURL
            s=urllib2.urlopen(finalURL);
            print  humi+ " " + temp + " " + pressure
            s.close()
            time.sleep(10)

برای LCD، از تابع Def lcd_init () برای تنظیم اولیه LCD در حالت چهار بیتی استفاده می کنیم. از عملکرد def lcdcmd  برای ارسال دستور به LCD استفاده می شود.

تابع Def readDHT () برای خواندن مقادیر سنسور DHT11 استفاده میشود.

def readDHT():
    humi, temp = Adafruit_DHT.read_retry(Adafruit_DHT.DHT11, DHTpin)
    return (str(int(humi)), str(int(temp)))

تابع def readBmp180 برای خواندن فشار از سنسور BM180 استفاده می شود. سنسور BM180 همچنین می تواند درجه حرارت را اندازه گیری کند. اما در اینجا ما فقط از آن برای محاسبه فشار استفاده کرده ایم.

def readBmp180(addr=deviceAdd):    
  value = bus.read_i2c_block_data(addr, regCall, 22)  # Read calibration data

  # Convert byte data to word values
  AC1 = convert1(value, 0)
  AC2 = convert1(value, 2)
  AC3 = convert1(value, 4)
  AC4 = convert2(value, 6)
  ..... .......
  ........ ......

فیلم عملکرد پروژه

می توانید از این پروژه برای اندازه گیری و ذخیره پارامترهای مختلف آب و هوا مانند سرعت باد ، دما، روشنایی (لوکس) ، بارندگی ، کیفیت هوا و .. استفاده کنید و آن را گسترش دهید. فیلم زیر به شما در درک نحوه کار این پروژه کمک میکند.

برای دانلود فایل های پروژه ثبت نام کنید، تنها چند ثانیه زمان لازم است. از طریق فرم زیر اقدام کنید.

ایمیل خود را وارد کنید

نظرتان را در مورد این مطلب با ستاره دادن اعلام کنید امیدوارم این مطلب برای شما مفید بوده باشد. نظرات ، مشکلات و پیشنهادات خود را در پایین صفحه اعلام کنید

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا