پروژه الکترونیکپروژه های اینترنت اشیاپروژه های پایتونپروژه های رزبری پای

پروژه مانیتورینگ برق مصرفی در اینترنت با رزبری پای IoT

مانیتور و بررسی انرژی مصرفی به شما کمک میکند میزان مصرف انرژی در بخش های مختلف ساختمان، کارخانه یا … را بررسی کنید و بر آن اساس تصمیمات لازم را اخذ کنید. مانیتور کردن انرژی مصرفی پروژه ای متداول است و در بازار موجود است اما من فکر میکنم استفاده از نسخه دست ساز خودمان لذت بیشتری دارد. در این آموزش ما یک سیستم مانیتورینگ مصرف برق مبتنی بر رزبری پای میسازیم که با آن قادر خواهیم بود مصرف انرژی را در اینترنت و در پلتفرم Adafruit.io مشاهده کنیم.

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

انرژی با رزبری پای چطور اندازه گیری میشود؟

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

انرژی با رزبری پای چطور اندازه گیری میشود؟

انتخاب واحدها یکی پس از دیگری؛

Current Sensing Unit: واحد سنجش جریان از حسگر جریان SCT -013 تشکیل شده است که بسته به نسخه ای که خریداری می کنید ، می تواند تا 100 آمپر را اندازه گیری کند. سنسور جریان عبور شده از سیم را كه به آن وصل شده است ، به جریان كوچک تر تبدیل می كند كه از طریق مدار تقسیم كننده ولتاژ به ADC تغذیه می کند.

Voltage Sensing Unit: ما در اینجا یک سنسور ولتاژ را خودمان میسازیم. سنسور ولتاژ دست ساز ما شامل مرحله تقسیم ولتاژ است که ولتاژ بالا را به مقداری مناسب برای تغذیه به ADC تبدیل میکند.

واحد پردازش: واحد پردازش شامل ADC و Raspberry pi است. ADC سیگنال آنالوگ را می گیرد و آن را به رزبری پای می فرستد ، که در آن مقدار دقیق نیرویی که مصرف می شود محاسبه می شود و آن را به پلفترم Adafruit.io میفرستد.

سلب مسئولیت: قبل از شروع ، ذکر این نکته ضروری است که این پروژه شامل اتصال به منبع تغذیه ولتاژ بالا است که بسیار خطرناک است و باید احتیاط را رعایت کنید.

قطعات مورد نیاز

برای ساخت این پروژه مانیتورینگ مصرف برق با Raspberry pi اجزای زیر مورد نیاز است.

اگر میخواهید آردوینو را به صورت اصولی و پروژه محور (برنامه نویسی حرفه ای، ارتباط آردوینو با اندروید، ساخت ربات با آردوینو) یاد بگیرید، روی دوره آموزش آردوینو کلیک کنید.
  1. برد رزبری پای
  2. مبدل آنالوگ به دیجیتال ADS1115 16bit I2C
  3. سنسور YHDC SCT-013-000
  4. آداپتور برق 2.5A 5V MicroUSB
  5. مقاومت 2W 10 کیلو اهم
  6. مقاومت 0.5W 10 کیلو اهم
  7. مقاومت 33 اهم
  8. مقاومت 2W 3.3 کیلو اهم
  9. دیود IN4007 – چهار عدد
  10. دیود 3.6v زنر
  11. پتانسیومتر 10 کیلو اهم
  12. خازن 50v 1uf
  13. خازن 50v 10uf – دو عدد

در اینجا من از سیستم عامل buster استفاده میکنم.

آماده سازی رزبری پای برای مانیتورینگ مصرف برق IoT

قبل از شروع اتصال قطعات و برنامه نویسی ، کارهای ساده ای وجود دارد که ما باید روی رزبری پای انجام دهیم.

مرحله 1: فعال کردن I2C در  رزبری پای

هسته اصلی ما در این پروژه ADC1115 16bit I2C مبتنی بر ADC است. ADC به ما این امکان را می دهد تا سنسورهای آنالوگ را به Raspberry Pi متصل کنیم زیرا خود Pi دارای ADC داخلی نیست. این قطعه داده ها را از طریق ADC خود می گیرد و از طریق I2C آن را به رزبری پای منتقل می کند. به همین ترتیب ، باید ارتباط I2C را روی Pi فعال کنیم تا بتواند با آن ارتباط برقرار کند.

I2C را در رزبری پای می توان از طریق صفحه پیکربندی فعال یا غیرفعال کرد. برای راه اندازی آن ، بر روی نماد رزبری پای در دسک تاپ کلیک کنید و در preferences روی configuration کلیک کنید.

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید

آماده سازی رزبری پای برای مانیتورینگ مصرف برق IoT

مانند تصویر زیر ارتباط I2C را فعال کنید.

فعال کردن I2C در  رزبری پای

با اجرای sudo raspi-config هم می توانید به صفحه تنظیمات Raspbian دسترسی پیدا کنید.

مرحله 2: نصب کتابخانه ADS11xx از Adafruit

دومین موردی که ما باید انجام دهیم نصب کتابخانه پایتون ADS11xx است که شامل توابع و روالهایی است که نوشتن اسکریپت پایتون را برای ما آسان می کند تا مقادیر ADC را بدست آوریم.

برای انجام این کار مراحل زیر را دنبال کنید.

  1. در ابتدا دستور
    sudo apt-get update
    را اجرا کنید و سپس
    sudo apt-get upgrade
    را اجرا کنید تا رزبری پای شما بروز شود.
  2. در مرحله بعدی ، دستور cd ~ را اجرا کنید تا اطمینان حاصل کنید که در دایرکتوری خانه هستید.
  3. در مرحله بعد موارد مورد نیاز را با دستور روبرو فعال کنید
    sudo apt-get install build-essential python-dev python-smbus git
  4. سپس ، پوشه پوشه Adafruit git را با اجرای دستور مقابل کلون کنید.
    git clone https://github.com/adafruit/Adafruit_Python_ADS1x15.git
  5. با استفاده از این دستور
    cd Adafruit_Python_ADS1x1z
    به صفحه فایل مورد نظر بروید و با این دستور
    sudo python setup.py install
    نصب را تکمیل کنید.

مرحله 3: ماژول Adafruit.IO Python را نصب کنید

همانطور که در ابتدا گفته شد ما اطلاعات انرژی مصرفی را در Adafruit IO Cloud منتشر خواهیم کرد که میتوان آن را از هرجای دنیا مشاهده کرد. همچنین میتوانید با اتصال IFTTT به آن اعمال بسیار گسترده ای را انجام داد.

ماژول Adafruit.IO python شامل برنامه های فرعی و عملکردهایی است که ما از آنها استفاده خواهیم کرد تا بتوانیم داده ها را به راحتی به ابر انتقال دهیم. برای نصب ماژول مراحل زیر را دنبال کنید.

  1. برای بازگشت به دایرکتوری خانه ، cd ~ را اجرا کنید.
  2. سپس دستور زیر را اجرا کنید.
    sudo pip3 install adafruit-io
    اینکار باید ماژول Adafruit IO python را نصب کرده باشد.

مرحله 4: حساب Adafruit.io خود را تنظیم کنید

برای استفاده از Adafruit IO قطعا باید ابتدا یک حساب کاربری ایجاد کنید تا یک کلید AIO را بدست آورید. این کلید AIO به همراه نام کاربری شما توسط اسکریپت پایتون برای دسترسی به سرویس ابری Adafruit IO استفاده می شود. برای ایجاد یک حساب کاربری به این آدرس بروید https://io.adafruit.com ، روی دکمه get started for free کلیک کنید و تمام پارامترهای مورد نیاز را پر کنید. با ثبت نام ، باید دکمه View AIO Key را در سمت راست صفحه اصلی خود مشاهده کنید.

دریافت کلید Adafruit IO

برای به دست آوردن کلید AIO روی آن کلیک کنید. سپس Active Key را یادداشت کنید.

برای ایجاد فید ، روی “Feeds” در بالای صفحه AIO کلیک کرده و روی افزودن فید جدید add new feed کلیک کنید.

هر اسمی را که می خواهید بگذرانید اما برای ساده نگه داشتن چیزها ، من آن را energy consumption می نامم. همچنین می توانید برای ایجاد فید برای ولتاژ و جریان تصمیم بگیرید و کد را برای انتشار داده با آنها تطبیق دهید.

با تمام این کارها ، اکنون ما آماده ساخت پروژه هستیم.

شماتیک پروژه انرژی سنج مبتنی بر اینترنت اشیا

شماتیک مدار برای پروژه مانیتور انرژی رزبری پای نسبتاً پیچیده است و شامل اتصال به یک ولتاژ AC است. همانطور که گفته شد این مدار از برق AC استفاده میکند و باید احتیاط را رعایت کنید.

این برنامه شامل اتصال سنسور های ولتاژ و جریان به ADC است و سپس داده ها را از حسگرها به Raspberry Pi ارسال می کند. برای آسانتر شدن اتصالات ، نقشه های هر واحد به صورت جداگانه ارائه می شود.

شماتیک بخش جریان

شماتیک پروژه انرژی سنج مبتنی بر اینترنت اشیا

ترانسفورماتور فعلی مورد استفاده در این پروژه در زیر نشان داده شده است ، همانطور که می بینید ما سه سیم از آن داریم یعنی زمین ، Cout و 3.3V

شماتیک بخش ولتاژ

همانطور که در شکل زیر نشان داده شده است ، قطعات را برای سنسور ولتاژ متصل کنید.

شماتیک بخش ولتاژ انرژی مانیتور

شماتیک واحد پردازش اطلاعات

همه چیز را مطابق با شماتیک مدار زیر به رزبری پای متصل کنید.

شماتیک واحد پردازش اطلاعات انرژی متر با رزبری پای

اطمینان حاصل کنید که پین ​​های GND هر دو واحد سنجشی به GND قطعه آنالوگ به دیجیتال یا رزبری پای متصل شده اند.

پس از اتصال قطعات مانند شماتیک ها، مدار شما باید چیزی شبیه به زیر باشد.

پروژه انرژی سنج با Raspberry pi

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

پیشنهاد میکنم برای این پروژه از پایتون 3 استفاده کنید. کد کامل پروژه در فایل دانلودی انتهای صفحه قرار داده شده است. در اینجا بعضی از قسمت های کد را توضیح میدهیم. الگوریتم پشت کد ساده است. اسکریپت پایتون ما ولتاژ و جریان از ADS1115 را میخواند. مقدار انرژی محاسبه میشود و بر حسب کیلو ولت به پلتفرم Adafruit ارسال میشود.

در ابتدا کتابخانه های مورد نیاز را فراخوانی میکنیم.

import time
import Adafruit_ADS1x15
from Adafruit_IO import *
import math

در مرحله بعد ، نمونه ای از کتابخانه ADS1115 را ایجاد می کنیم که برای پرداختن به ADC استفاده می شود.

# ADS1115 ADC (16-bit)
adc1 = Adafruit_ADS1x15.ADS1115()

در مرحله بعد ، نام کاربری IO adafruit و کلید “AIO” خود را وارد کنید.

username = ‘نام کاربری خود را در اینجا قرار دهید’
AIO_KEY = 'کلید شما' 
aio = Client(username, AIO_KEY)

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

در مرحله بعد ، ما متغیرهایی مانند Gain برای ADC ، تعداد نمونه های مورد نظر خود ایجاد می کنیم.

GAIN = 1       
samples = 200      # تعداد نمونه ها
places = int(2)  

بعد ، ما یک حلقه ایجاد می کنیم که جریان و ولتاژ را کنترل می کنیم و داده ها را در فواصل زمانی به Adafruit io ارسال می کنیم. حلقه با تنظیم همه متغیر ها در 0 شروع میشود.

while True:
    # بازنشانی متغیر ها
    count = int(0)
    datai = []
    datav = []
    maxIValue = 0 #حداکثر جریان در نمونه
    maxVValue = 0 #حداکثر ولتاژ در نمونه
    IrmsA0 = 0 
    VrmsA1 = 0 
    ampsA0 = 0 #اوج جریان
    voltsA1 =0  #ولتاژ
    kilowatts = float(0)

از آنجا که ما با مدارهای AC کار می کنیم ، خروجی SCT-013 و سنسور ولتاژ یک موج سینوسی خواهد بود ، بنابراین برای محاسبه جریان و ولتاژ از موج سینوسی ، باید مقادیر اوج را بدست آوریم. برای به دست آوردن مقادیر اوج ، ما هم ولتاژ و هم جریان (200 نمونه) را نمونه برداری می کنیم و بالاترین مقادیر (مقادیر اوج) را پیدا خواهیم کرد.

      for count in range(samples):       
        datai.insert(count, (abs(adc1.read_adc(0, gain=GAIN))))
        datav.insert(count, (abs(adc1.read_adc(1, gain=GAIN))))
        # در صورت وجود مقدار حداکثر دیگر
        print (datai[count])
        if datai[count] > maxIValue:
            maxIValue = datai[count]           
        if datav[count] > maxVValue: 
            maxVValue = datav[count]

بعد ، مقادیر را با تبدیل مقادیر ADC به مقدار واقعی استاندارد می کنیم و پس از آن از معادله Root Mean Square برای پیدا کردن ولتاژ و جریان RMS استفاده می کنیم.

 #محاسبه جریان با استفاده از نمونه ها
    # کالیبره کردن حریان
    IrmsA0 = float(maxIValue / float(2047) * 30)
    IrmsA0 = round(IrmsA0, places)
    ampsA0 = IrmsA0 / math.sqrt(2)  
    ampsA0 = round(ampsA0, places)
    # محاسبه ولتاژ
    VrmsA1 = float(maxVValue * 1100/ float(2047))
    VrmsA1 = round(VrmsA1, places)
    voltsA1 = VrmsA1 / math.sqrt(2)  
    voltsA1 = round(voltsA1, places)
    print('Voltage: {0}'.format(voltsA1))
    print('Current: {0}'.format(ampsA0))

با این کار ، انرژی محاسبه می شود و داده ها در adafruit.io منتشر می شود.

    # محاسبه انرژی
    power = round(ampsA0 * voltsA1,places)
    print('Power: {0}'.format(power)) 
   # ارسال اطلاعات به adafruit.io  
   EnergyUsage = aio.feeds('EnergyUsage')
  aio.send_data('EnergyUsage’, power) 

برای حسابهای رایگان ، adafruit خواستار تأخیر بین درخواستها و بارگذاری داده است.

   # تاخیر قبل از تکرار
    time.sleep(0)

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

با کامل کردن کد ، آن را ذخیره کرده و دکمه run را روی Python IDE بزنید. قبل از این ، اطمینان حاصل کنید که رزبری پای از طریق WiFi یا LAN به اینترنت وصل شده است ، و کلید aio و نام کاربری شما صحیح است. پس از مدتی ، شما باید داده های انرژی (توان) نمایش داده شده در خوراک را در Adafruit.io را مشاهده کنید.

برای پیشبرد کارها ، می توانید داشبورد را در adafruit.io ایجاد کرده و یک مؤلفه گرافیکی را اضافه کنید تا بتوانید همانطور که در تصویر زیر نشان داده شده است ، نموداری گرافیکی از داده ها بدست آورید.

پروژه اندازه گیری میزان انرژی مصرف شده با رزبری پای مبتنی بر اینترنت اشیا

به اینصورت میتوانید یک پروژه اندازه گیری میزان انرژی مصرف شده با رزبری پای مبتنی بر اینترنت اشیا را بسازید. فیلم زیر به شما در درک نحوه کار این پروژه Raspberry pi و IoT کمک میکند.

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

موارد موجود در فایل : سورس کامل ، شماتیک کامل

پروژه ها رایگان هستند. برای دانلود فایل های پروژه باید در سایت عضو باشید. ثبت نام / ورود

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

محمد رحیمی

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

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

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