아두이노

NRF24L01 모듈 사용하기

반응형

1. NRF24L01 모듈


NRF24L01을 아두이노와 함께 사용하기 위해서는 다음과 같은 것들이 필요합니다.


아두이노 우노 (또는 나노) x2, NRF24L01 모듈 x2, 가변저항 x1, 서보모터 x1, 등등

위의 사진은 NRF24L01의 안테나 증폭회로가 달려있지 않은 모듈입니다. 안테나 증폭회로가 달려있는 모듈은 좀더 비싸지만 훨씬 더 멀리까지 송수신이 가능합니다.



2. 회로구성

(1)송신부

송신부에서는 가변저항의 값을 읽어들여 수신부로 보내는 역활을 합니다. NRF24L01모듈의 특성상 아두이노의 전원 노이즈와 전력량에 영향을 받기 때문에 NRF24L01의 VCC와 GND단자에 10uF의 콘덴서를 달아주는 것이 좋습니다.


소스코드


#include <SPI.h>

#include "nRF24L01.h"

#include "RF24.h"


int joystick;


RF24 radio(8,7);


const uint64_t pipe = 0xE8E8F0F0E1LL;


void setup(void)

{

  Serial.begin(9600);

  radio.begin();

  radio.openWritingPipe(pipe);

}


void loop(void)

{

  joystick = analogRead(A0);

  joystick = map(joystick, 0, 1023, 1000, 2000);

  Serial.println(joystick);

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

  delay(50);


}


(2)수신부

송신부에서는 읽어드린 가변저항 값을 이용해 서보모터를 회전시킵니다. 소스코드에는 가변저항 값을 각도로 변환하는 코드가 포함되어있습니다.


소스코드


#include <SPI.h>

#include <Servo.h>

#include "nRF24L01.h"

#include "RF24.h"


int joystick;

Servo myservo;

int servo;


RF24 radio(8,7);

const uint64_t pipe = 0xE8E8F0F0E1LL;


void setup(void)

{

  Serial.begin(9600);

  radio.begin();

  radio.openReadingPipe(1,pipe);

  radio.startListening();

  myservo.attach(4);

}


void loop(void)

{

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

      Serial.println(joystick);

      servo=map(joystick,1000,2000,0,90);

      myservo.write(servo);

      delay(50);

}


NRF24L01을 사용하기 위해서는 라이브러리가 필요합니다. 라이브러리는 아래의 링크에서 다운받을 수 있습니다.

반응형
    # 테스트용