BASIC4MCU | 질문게시판 | 아두이노 RF 통신
페이지 정보
작성자 돌석 작성일2018-06-08 01:52 조회4,087회 댓글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
조회수 4,087등록된 댓글이 없습니다.