nRF24L01은 2.4GHz를 사용하여 무선으로 대략 데이터를 1~2Mbps 속도로 전송 및 수신할 수 있는 싱글칩입니다.
칩 관련 자세한 내용은 아래 첨부된 데이터 시트를 참고하시기 바랍니다.
nRF24L01 모듈을 사용하여 단방향 동작 테스트를 해 보았습니다.
조심해야 할 점은 nRF24L01 모듈은 데이터 시트에 허용 전압 범위가 +1.9~3.6V를 사용해야 합니다. 그런데 인터넷에서 nRF24L01 모듈 사용을 검색해 보면 +5V를 사용하는 아두이노 우노와 연결하여 테스트된 게시글이 많이 보입니다. +3V에서 동작되는 모듈을 어떻게 +5V에서 사용할 수 있는지 궁금하여 좀 더 찾아보니 데이터 시트에 '5V tolerant signal input pads'이라고 나와 있어서 아두이노 우노와 바로 연결하여 사용 가능한 것으로 보입니다.
테스트는 ATmega328p/+3.3V/8MHz를 사용하는 아두이노 프로 미니 보드 2개를 사용하여 테스트되었습니다.
아래와 같이 회로를 2개를 구성하여 각 각 송/수신용으로 사용하였습니다.
nRF24L01은 아래 핀맵을 참고하시면 됩니다.
아두이노 프로 미니는 아래 붉은색 핀맵을 참고하시면 됩니다.
아래는 제가 테스트용으로 구성된 이미지입니다. 왼쪽은 송신용, 오른쪽은 수신용입니다.
아두이노의 라이브러리 매니저에서 RF24로 검색을 한 후 설치를 합니다.
송신용 코드를 아래와 같이 작성하였습니다.
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(7, 8);
const byte rxAddr[6] = "2Node"; //PIPE
char buf[20];
unsigned long payload = 0;
void setup()
{
Serial.begin(115200);
Serial.println("nRF24L01 Transmitter testing...");
if (!radio.begin()) {
Serial.println(F("radio hardware is not responding!!"));
while (1) {} // hold in infinite loop
}
radio.setRetries(15, 15);
radio.openWritingPipe(rxAddr);
radio.stopListening();
}
void loop()
{
radio.write( &payload, sizeof(unsigned long) );
payload++;
delay(1000);
}
수신용 코드를 아래와 같이 작성하였습니다.
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(7, 8);
const byte rxAddr[6] = "2Node";
unsigned long payload = 0;
void setup()
{
Serial.begin(115200);
Serial.println("nRF24L01 Receiver testing...");
if (!radio.begin()) {
Serial.println(F("radio hardware is not responding!!"));
while (1) {} // hold in infinite loop
}
radio.openReadingPipe(0, rxAddr);
radio.startListening();
}
void loop()
{
if (radio.available())
{
radio.read( &payload, sizeof(unsigned long) );
Serial.println(payload);
}
}
각 각의 아두이노 프로 미니 보드에 송신용 및 수신용 코드를 업로드합니다.
아두이노 IDE 창을 모두 닫아 COM 포트의 사용을 종료합니다.
Tera Term Pro라는 프로그램을 사용하여 각 각의 아두이노 프로 미니가 연결된 COM 포트를 연결합니다.
송신쪽 창에서는 "nRF24L01 Transmitter testing..."이라는 메시지가 보여지고 payload 변수를 +1씩 증가시키면서 Air로 전송되기 시작하고 수신쪽 창에서는 "nRF24L01 Receiver testing..."이라는 메시지가 보여지며 수신된 payload 값을 보여줍니다. 수신된 값이 1초마다 +1씩 증가된 값이 수신되는 것으로 보아 모듈이 정상적으로 송/수신됨을 알 수 있습니다.
'Hardware > Arduino ( AVR )' 카테고리의 다른 글
[Portenta H7] 제품 살펴보기 (0) | 2021.10.16 |
---|---|
SMD NRF24L01 Wireless Module 테스트 (0) | 2021.10.06 |
SK6805-EC15 테스트용 PCB 조립하기 (0) | 2021.09.14 |
SK6805-EC15 테스트용 PCB & Stencil 주문하기 (0) | 2021.09.13 |
이글 캐드용 SK6805-EC15 라이브러리 작성하기 (0) | 2021.09.12 |
댓글