این مقاله نحوه کنترل ولتاژ مصرف کننده با آردوینو را با استفاده از ماژول رله آردوینو نشان می دهد. در این مقاله معرفی مختصری از ماژول رله می کنیم و یک نمونه پروژه ساده با آردوینو می سازیم. مثالی که خواهیم ساخت نشان می دهد که چگونه یک ماژول رله را با آردوینو و سنسور حرکت PIR کنترل کنیم.

ماژول رله آردوینو

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

 

معرفی ماژول رله آردوینو

رله یک سوئیچ الکتریکی است که می تواند روشن یا خاموش شود، جریان را عبور دهد یا نه، و می تواند با ولتاژهای پایین کنترل شود، مانند 5 ولت که توسط پین های آردوینو ارائه می شود.

کنترل یک ماژول رله با آردوینو به سادگی کنترل هر نوع خروجی دیگری است که در ادامه خواهیم دید.

راهنمای ماژول رله آردوینو (پروژه تشخیص حرکت با سنسور PIR)

این ماژول رله دارای دو کانال (مکعب های آبی روی برد بالا) است. مدل های دیگری با یک، چهار و هشت کانال وجود دارد. این ماژول باید با 5 ولت تغذیه شود که برای استفاده با آردوینو مناسب است. ماژول های رله دیگری نیز وجود دارند که با استفاده از 3.3 ولت تغذیه می شوند که برای ESP32، ESP8266 و سایر میکروکنترلرها ایده آل است.

پین اوت ماژول رله آردوینو

شکل زیر پین اوت ماژول رله را نشان می دهد.

راهنمای ماژول رله آردوینو (پروژه تشخیص حرکت با سنسور PIR)

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

اتصالات قسمت ولتاژ بالا

سمت ولتاژ بالا دارای دو کانکتور (به دلیل دو کانال بودن این ماژول) است که هر کدام دارای سه پین است: مشترک (COM)، در حالت عادی بسته (NC) و در حالت عادی باز (NO).

راهنمای ماژول رله آردوینو (پروژه تشخیص حرکت با سنسور PIR)
  • COM: پین مشترک
  • NC (در حالت عادی بسته): پین NC زمانی استفاده می‌شود که می‌خواهید رله به طور پیش‌فرض جریان را هدایت کند، به این معنی که که مصرف کننده روشن است مگر اینکه سیگنالی از آردوینو به ماژول رله ارسال کنید تا مدار باز شود و جریان قطع شود.
  • NO (در حالت عادی باز): پین NO برعکس عمل می کند: رله همیشه باز است، بنابراین مصرف کننده خاموش است مگر اینکه سیگنالی از آردوینو برای بستن مدار ارسال کنید تا مصرف کننده روشن شود.

اگر فقط می خواهید گهگاهی یک لامپ را روشن کنید، بهتر است از پین NO استفاده کنید.

سیم کشی پین ها

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

راهنمای ماژول رله آردوینو (پروژه تشخیص حرکت با سنسور PIR)

مجموعه سمت راست شامل VCC و GND برای روشن کردن ماژول و ورودی 1 (IN1) و ورودی 2 (IN2) به ترتیب برای کنترل رله های پایین و بالایی است.

مجموعه دوم پین ها از پین های GND، VCC و JD-VCC تشکیل شده است. پین JD-VCC آهنربای الکتریکی رله را تغذیه می کند.

اتصالات بین ماژول رله و آردوینو بسیار ساده است:

  • GND: به GND اردوینو می رود
  • IN1: اولین رله را کنترل می کند (به یک پین دیجیتال آردوینو متصل خواهد شد)
  • IN2: رله دوم را کنترل می کند (اگر از این رله دوم استفاده می کنید باید به پین دیجیتال آردوینو وصل شود. در غیر این صورت نیازی به اتصال آن نیست)
  • VCC: به 5 ولت می رود

مثال: کنترل لامپ با ماژول رله آردوینو و سنسور حرکت PIR

راهنمای ماژول رله آردوینو (پروژه تشخیص حرکت با سنسور PIR)

در این مثال، ما یک لامپ حساس به حرکت ایجاد می کنیم. هر بار که حرکتی تشخیص داده می شود لامپ به مدت 10 ثانیه روشن می شود.

حرکت با استفاده از سنسور حرکت PIR تشخیص داده می شود. 

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

هشدار ایمنی

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

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

در اینجا قطعات مورد نیاز برای این مثال آمده است:

  • ماژول رله
  • Arduino UNO 
  • سنسور حرکت PIR
  • مجموعه سیم لامپ

کد پروژه آردوینو

کد زیر را در آردوینو IDE خود کپی کرده و در برد آردوینو خود آپلود کنید.

/*********
  Rui Santos
  Complete project details at https://randomnerdtutorials.com  
*********/

// Relay pin is controlled with D8. The active wire is connected to Normally Closed and common
int relay = 8;
volatile byte relayState = LOW;

// PIR Motion Sensor is connected to D2.
int PIRInterrupt = 2;

// Timer Variables
long lastDebounceTime = 0;  
long debounceDelay = 10000;

void setup() {
  // Pin for relay module set as output
  pinMode(relay, OUTPUT);
  digitalWrite(relay, HIGH);
  // PIR motion sensor set as an input
  pinMode(PIRInterrupt, INPUT);
  // Triggers detectMotion function on rising mode to turn the relay on, if the condition is met
  attachInterrupt(digitalPinToInterrupt(PIRInterrupt), detectMotion, RISING);
  // Serial communication for debugging purposes
  Serial.begin(9600);
}

void loop() {
  // If 10 seconds have passed, the relay is turned off
  if((millis() - lastDebounceTime) > debounceDelay && relayState == HIGH){
    digitalWrite(relay, HIGH);
    relayState = LOW;
    Serial.println("OFF");
  }
  delay(50);
}

void detectMotion() {
  Serial.println("Motion");
  if(relayState == LOW){
    digitalWrite(relay, LOW);
  }
  relayState = HIGH;  
  Serial.println("ON");
  lastDebounceTime = millis();
}

نحوه کار کد

ابتدا متغیرهایی را ایجاد می کنیم تا پین را که پایه رله IN1 به آن متصل است نگه داریم و حالت رله را ذخیره کنیم:

int relay = 8;
volatile byte relayState = LOW;

سنسور حرکت PIR به پین 2 متصل است:

int PIRInterrupt = 2;

برای کنترل تایمرها با سنسور حرکت PIR باید چند متغیر کمکی ایجاد کنیم. متغیر lastDebounceTime آخرین باری که حرکت شناسایی شد را ذخیره می کند. DebounceDelay مدت زمان روشن ماندن لامپ پس از تشخیص حرکت را ذخیره می کند (در اینجا ما 10 ثانیه = 10000 میلی ثانیه را تنظیم می کنیم)

long lastDebounceTime = 0;
long debounceDelay = 10000;

در setup()، رله را به عنوان OUTPUT تنظیم می کنیم و آن را به طور پیش فرض خاموش می کنیم:

pinMode(relay, OUTPUT);
digitalWrite(relay, HIGH);

از آنجا که ما از پایه NO استفاده می کنیم، هیچ اتصالی بین سوکت های COM و NO وجود ندارد مگر اینکه رله را فعال کنید. رله زمانی فعال می شود که ورودی سیگنال رله کمتر از 2 ولت باشد. یعنی اگر سیگنال LOW را از آردوینو ارسال کنید، رله روشن می شود و اگر سیگنال HIGH ارسال کنید، رله خاموش می شود. با منطق معکوس کار می کند.

سنسور حرکت PIR را به عنوان یک وقفه تنظیم کنید:

pinMode(PIRInterrupt, INPUT);
// Triggers detectMotion function on rising mode to turn the relay on, if the condition is met
attachInterrupt(digitalPinToInterrupt(PIRInterrupt), detectMotion, RISING);

هر زمان که سنسور حرکت PIR فعال شود، تابع detectMotion() تعریف شده در انتهای کد را فراخوانی می کند تا رله را روشن کند:

void detectMotion() {
    Serial.println("Motion");
    if(relayState == LOW){
        digitalWrite(relay, LOW);
    }
    relayState = HIGH;
    Serial.println("ON");
    lastDebounceTime = millis();
}

در  loop() بررسی می کنیم که آیا 10 ثانیه از روشن بودن رله گذشته است یا خیر. اگر این شرط درست باشد، می توانیم رله را خاموش کنیم.

if((millis() - lastDebounceTime) > debounceDelay && relayState == HIGH){
    digitalWrite(relay, HIGH);
    relayState = LOW;
    Serial.println("OFF");
}

شماتیک

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

راهنمای ماژول رله آردوینو (پروژه تشخیص حرکت با سنسور PIR)

لامپ با استفاده از پایه NO به رله متصل می شود. آردوینو رله را از طریق پایه 8 کنترل می کند (پایه 8 به پایه رله IN1 متصل است). در نهایت، سنسور حرکت PIR به پایه 2 متصل می شود.

نتیجه

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

هنگامی که حرکت تشخیص داده می شود، لامپ شما روشن می شود. اگر به مدت 10 ثانیه حرکتی وجود نداشته باشد، لامپ خاموش می شود.

راهنمای ماژول رله آردوینو (پروژه تشخیص حرکت با سنسور PIR)

جمع بندی

کنترل یک ماژول رله آردوینو به سادگی کنترل یک خروجی است – فقط باید سیگنال های HIGH یا LOW را با استفاده از یک پین دیجیتال آردوینو ارسال کنید. با ماژول رله آردوینو می توانید تقریباً هر وسیله الکترونیکی AC (نه فقط لامپ) را کنترل کنید.

برای امتیاز به این نوشته کلیک کنید!
[کل: 1 میانگین: 5]

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

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