آموزش رزبری پایپروژه رزبری پای

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

سلام. آموزش کنترل وسایل خانه با ماژول فرستنده رادیویی و رزبری پای را آماده کردیم.

پروژه خانه هوشمند با کنترل رادیویی و Raspberry Pi

در این پروژه رزبری پای میخواهیم یک کنترل از راه دور رادیویی با استفاده از رزبری پای را بسازیم. این دستگاه میتواند از راه دور وسایل را کنترل کند. مثلا میتوانیم فن ها ، چراغ ها و … را  با این دستگاه روشن و خاموش کنیم. در این پروژه به جای دستگاه ها ما از جند ال ای دی استفاده کرده ایم. شما میتوانید با استفاده از رله مناسب هر دستگاهی را از راه دور کنترل کنید.

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

فیلم زیر به شما در درک نحوه کار این پروژه کمک میکند.

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

در این پروژه ، ما از چهار LED فقط برای نمایش عملکرد استفاده کرده ایم، می توانیم با فشار دادن دکمه مربوطه در “کنترل” هر کاری را انجام دهید. مثلا می توانیم با استفاده از رله ، لوازم خانگی AC را به جای LED کنترل کنیم. ما قبلا بسیاری از پروژه های خانه هوشمند را در سایت قرار داده ایم.

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

مدار پروژه کنترل وسایل از راه دور بسیار ساده است. تصویر زیر شماتیک مدار این پروژه نمایش میدهد. ما در اینجا از Raspberry Pi 3 استفاده کرده ایم اما میتوانید از هر مدل رزبری پای برای این پروژه استفاده کنید. مدار به دو قسمت تقسیم می شود، یکی مدار گیرنده RF و دیگری مدار فرستنده RF است. هر دو مدار در تصویر زیر نشان داده شده است.

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

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

در اینجا قطعات مورد نیاز این پروژه را در دو لیست مجزا آورده ایم.

فرستنده و گیرنده RF 433 (ترکیبی ASK)

قسمت فرستنده:

  1. فرستنده RF 433 (فرستنده ترکیبی ASK)
  2. HT12E IC
  3. 4 دکمه
  4. مقاومت 750 کیلو اهم
  5. باتری 9 ولت

قسمت گیرنده:

  1. رزبری پای
  2. ال سی دی کاراکتری 16×2
  3. پتانسیومتر 10کیلو اهم
  4. مقاومت 1کیلو اهم (پنج)
  5. مقاومت 33کیلو اهم
  6. HT12D IC
  7. گیرنده 433 RF (گیرنده ترکیبی ASK)
  8. LED (پنج)
  9. مقاومت 10کیلو اهم (چهار)
قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

توضیحات IC دکودر و اینکودر HT12D و HT12E

ما از IC های HT12D و HT12E استفاده کردیم. D مخفف Decoder است که در قسمت گیرنده استفاده خواهد شد و E مخفف Encoder است که در قسمت فرستنده استفاده خواهد شد. این IC ها 4 کانال را در اختیار شما قرار می دهند. همچنین به دلیل رمزگذاری و رمزگشایی میزان نویز بسیار پایین است.

IC دکودر و اینکودر HT12D و HT12E 

نکته مهم پین OSC است که در آن ما باید مقاومتها را به هم متصل کنیم. رمز گشا نسبت به رمزگذار نوسان بیشتری دارد. به طور معمول مقدار مقاومت رمزگذار 1M خواهد بود و مقدار رمز گشا 33k است.

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

توضیح برنامه نویسی پروژه

برای برنامه نویسی این پروژه نیاز به نصب WiringPi دارید. این آموزش را ببینید : آموزش نصب کتابخانه wiringPi برای پین های GPIO رزبری پای

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

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

#include<wiringPi.h> // فراخوانی کتابخانه های مورد نیاز
#include <wiringSerial.h>
#include<stdio.h>
#include <string.h>

#define RS 11 // پین های ال سی دی کاراکتری
#define EN 10
#define D4 6
#define D5 5
#define D6 4
#define D7 1

#define led1 26 // پین های ال ای دی ها
#define led2 27
#define led3 28
#define led4 29
#define buzz 0 // پین بازر

#define d1 25 // پین های دیکودر
#define d2 24
#define d3 23
#define d4 22

int flag1=0,flag2=0,flag3=0,flag4=0;

سپس نوع پین های GPIO را تعریف میکنیم.

void setup()
{
   if (wiringPiSetup () == -1)
   {
     clear();
     print("Unable to start"); 
     setCursor(0,1);
     print("wiringPi");
   }
  pinMode(led1, OUTPUT); // تعریف پین های ال ای دی ها به عنوان خروجی
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  ... ......
  .... ......

در کد ما از تابع digitalRead برای خواندن خروجی دیکودر و از digitalWrite برای ارسال خروجی به LED یا دستگاه استفاده میکنیم.

.... ....
..... ....
while(1)
   {
        setCursor(0,0);
        print("D1  D2  D3  D4");
        if(digitalRead(d1)==0)
        {
          flag1++;
          setCursor(0,1);
          if(flag1%2==1)
          {
            print("ON "); 
            digitalWrite(led1,HIGH);  // روشن کردن ال ای دی
          }
        .... ....
        ..... ....

چندین تابع دیگر نیز وجود دارد که در این پروژه استفاده شده است. تابع void lcdcmd برای ارسال فرمان به LCD استفاده می شود و عملکرد write void برای ارسال داده به LCD استفاده می شود.

function void clear () برای پاک کردن LCD استفاده می شود و از void setCursor برای تنظیم موقعیت مکان نما و void print برای ارسال رشته به LCD استفاده می شود.  void begin برای پیکربندی ال سی دی کاراکتری در جالت 4 بیتی استفاده میشود و از buzzer() برای فعال سازی بازر استفاده میشود.

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

5 (4 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

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

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

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