본문 바로가기

아두이노

RF 센서와 조도 센서를 사용한 원격 조명 제어

반응형

RF 센서와 조도 센서를 사용한 원격 조명 제어 시스템을 아두이노로 구현하는 프로젝트에 대해 설명하겠습니다.

1. 이론 소개

  • RF 센서: 무선 주파수 신호를 사용하여 원격으로 데이터를 전송하고 수신합니다.
  • 조도 센서(LDR): 빛의 강도에 따라 저항값이 변하는 센서입니다.

2. 준비물

  • 아두이노 보드 (Uno, Mega 등)
  • RF 송수신 모듈
  • 조도 센서 (LDR)
  • LED 또는 다른 광원
  • 점퍼 와이어
  • 브레드보드

3. 비슷한 센서 모델명

  • 조도 센서: TEMT6000
  • RF 모듈: NRF24L01

4. 추천 보드 및 간단한 설명

  • 아두이노 Uno: 다용도로 사용하기 좋고 초보자에게 친숙합니다.
  • 아두이노 Mega: 더 많은 I/O 핀과 메모리를 제공합니다.

5. 회로 구성

  • RF 송수신 모듈의 각 핀을 아두이노의 적절한 핀에 연결합니다.
  • 조도 센서의 한 쪽 핀을 아두이노의 아날로그 입력 핀에 연결하고, 다른 쪽 핀은 저항을 통해 GND에 연결합니다.
  • LED의 양극을 아두이노의 디지털 핀에 연결하고, 음극을 GND에 연결합니다.

 

6. 코딩 내용

 

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(7, 8); // CE, CSN 핀 설정
const byte address[6] = "00001";
const int ldrPin = A0;
const int ledPin = 9;

void setup() {
  radio.begin();
  radio.openReadingPipe(0, address);
  radio.setPALevel(RF24_PA_MIN);
  radio.startListening();
  pinMode(ldrPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  if (radio.available()) {
    char text[32] = "";
    radio.read(&text, sizeof(text));
    if (strcmp(text, "ON") == 0) {
      digitalWrite(ledPin, HIGH);
    } else if (strcmp(text, "OFF") == 0) {
      digitalWrite(ledPin, LOW);
    }
  }

  int ldrStatus = analogRead(ldrPin);
  if (ldrStatus < 300) {
    digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(ledPin, LOW);
  }
}

 

7. 코딩 내용 설명

이 코드는 RF 모듈을 통해 수신된 신호에 따라 LED를 켜거나 끕니다. 또한, 조도 센서를 사용하여 주변 밝기에 따라 자동으로 LED를 켜거나 끄도록 설정됩니다.

8. 코드 업로드 및 테스트

  • 아두이노 IDE에 코드를 입력하고, 보드에 업로드합니다.
  • RF 송신기를 사용하여 "ON"과 "OFF" 신호를 보내 LED의 반응을 확인합니다.
  • 주변 밝기를 변경하여 LED가 자동으로 켜지고 꺼지는지 확인합니다.

9. 응용 업그레이드

  • 다수의 RF 수신기와 LED를 사용하여 다중 조명 제어
  • 조도 센서의 감도 조정을 통한 정밀한 밝기 제어
  • 외부 센서(예: 온도, 습도)를 추가하여 환경 모니터링 기능 통합

10. 전문용어 및 설명

  • RF (Radio Frequency): 무선 주파수를 이용한 데이터 전송 기술
  • 조도 센서(LDR): 빛의 강도에 따라 저항값이 변하는 센서

11. 기타

RF 통신의 범위와 신호 강도는 환경에 따라 달라질 수 있습니다.

반응형