아두이노 > 아두이노 RF 통신

TODAY567 TOTAL153,508
사이트 이용안내
Login▼/회원가입
포럼 동영상강좌 회원가입


BASIC4MCU | 아두이노 | 아두이노 | 아두이노 RF 통신

페이지 정보

작성자 돌석 작성일2018-06-08 01:52 조회63회 댓글0건

본문

	

한쪽 아두이노에서는 스위치 두개의 값을 입력받아 safe 변수가 결정되고 safe 변수를 RF통신으로 내보낸다.

반대쪽 아두이노에서는 받은 safe 변수로 릴레이를 작동 정지 시킨다.

 

1. 먼저 송신하는 스위치 센서부분

#include <SPI.h>

#include <nRF24L01.h>

#include <RF24.h>

RF24 radio(7, 8); // SPI 버스에 nRF24L01 라디오를 설정하기 위해 CE, CSN를 선언.

const byte address[6] = "12345"; //주소값을 5가지 문자열로 변경할 수 있으며, 송신기와 수신기가 동일한 주소로 해야됨.

int safe;

 

void setup() {

  Serial.begin(9600);

  pinMode(3, INPUT);

  pinMode(4, INPUT);

  radio.begin();

  radio.openWritingPipe(address); //이전에 설정한 5글자 문자열인 데이터를 보낼 수신의 주소를 설정

  radio.setPALevel(RF24_PA_LOW); //전원공급에 관한 파워레벨을 설정합니다. 모듈 사이가 가까우면 최소로 설정합니다.

 

  //거리가 가까운 순으로 RF24_PA_MIN / RF24_PA_LOW / RF24_PA_HIGH / RF24_PA_MAX 등으로 설정할 수 있습니다.

 

  //높은 레벨(거리가 먼 경우)은 작동하는 동안 안정적인 전압을 가지도록 GND와 3.3V에 바이패스 커패시터 사용을 권장함.

 

  radio.stopListening();  //모듈을 송신기로 설정

}

void loop() {

  int right = digitalRead(3);

  int left = digitalRead(4);

 

  if (right && left) {

    safe = 1;

    Serial.println("DANGER");

  }

  else {

    safe = 0;

    Serial.println("SAFE");

  }

 

  radio.write(&safe, sizeof(safe));

  delay(100);

}

 

 

2. 수신하는 솔레노이드 작동부분 (릴레이 이용) 

 

#include <SPI.h>

#include <nRF24L01.h>

#include <RF24.h>

RF24 radio(7, 8); // SPI 버스에 nRF24L01 라디오를 설정하기 위해 CE, CSN 선언.

const byte address[6] = "12345"; //주소값을 5가지 문자열로 변경할 수 있으며, 송신기과 수신기가 동일한 주소로 해야됨.

void setup() {

  pinMode(10, OUTPUT);

  Serial.begin(9600);

  radio.begin();

  radio.openReadingPipe(0, address);

  radio.setPALevel(RF24_PA_HIGH); //전원공급에 관한 파워레벨을 설정합니다. 모듈 사이가 가까우면 최소로 설정합니다.

 

  //거리가 가까운 순으로 RF24_PA_MIN / RF24_PA_LOW / RF24_PA_HIGH / RF24_PA_MAX 등으로 설정할 수 있습니다.

 

  //높은 레벨(거리가 먼 경우)은 작동하는 동안 안정적인 전압을 가지도록 GND와 3.3V에 바이패스 커패시터 사용을 권장함

  radio.startListening(); //모듈을 수신기로 설정

}

void loop() {

  if (radio.available()) {

    int safe;

    radio.read(&safe, sizeof(safe));

    if (safe == 1) {

      Serial.println("BRAKE");

      digitalWrite (10, HIGH); // 릴레이 ON

      delay (500);              //0.5초 delay

    }

    else {

      Serial.println("MOVE");

      digitalWrite (10, LOW); // 릴레이 ON

      delay (500);              //0.5초 delay

    }

  }

  delay(100);

}

 

 

코딩이 괜찮은지 수정할 부분 있으면 말씀해주시면 감사하겠습니다.

댓글 0

조회수 63

등록된 댓글이 없습니다.

아두이노HOME > 아두이노 > 전체 목록

게시물 검색

Privacy Policy
                   MCU BASIC ⓒ 2017 모바일버전으로보기