2019.04.15

아두이노와 nRF24L01 모듈을 활용하여 무선통신 구성하기
arduino RF

개발환경

  • MacOS 10.14
  • Visual Studio Code
  • Platform IO Extension for VSCode
  • RadioHead Library

준비물

  • Arduino 2개
  • nRF24L01 Transceiver(송수신기) 모듈 2개

nRF24L01 모듈

아두이노와 연결하기

nRF24 Arduino
1 - GND GND
2 - VCC 3.3V
3 - CE 8
4 - CSN 10
5 - SCK 13
6 - MOSI 11
7 - MISO 12

연결 완료

소스코드 업로드

Visual Studio Code에서 PlatformIO Extension이 설치되어 있는 환경에서 진행합니다.

1. PlatformIO INI 설정

송/수신 아두이노 프로젝트의 platformio.ini 파일을 다음과 같이 수정합니다.

[env:uno]
platform = atmelavr
framework = arduino
board = uno
monitor_speed = 9600

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L
lib_deps =
;    Arduino
    SHA-1 Hash
    RF24

2. 송신 아두이노 소스코드

메시지를 보내는 아두이노에 다음 소스코드를 업로드합니다.

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(8, 10); // CE, CSN
const byte address[6] = "00001";
void setup() {
  radio.begin();
  radio.openWritingPipe(address);
  radio.setPALevel(RF24_PA_MIN);
  radio.stopListening();
}
void loop() {
  const char text[] = "Hello World";
  radio.write(&text, sizeof(text));
  delay(1000);
}

3. 수신 아두이노 소스코드

메시지를 받는 아두이노에 다음 소스코드를 업로드합니다.

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(8, 10); // CE, CSN
const byte address[6] = "00001";
void setup() {
  Serial.begin(9600);
  radio.begin();
  radio.openReadingPipe(0, address);
  radio.setPALevel(RF24_PA_MIN);
  radio.startListening();
}
void loop() {
  if (radio.available()) {
    char text[32] = "";
    radio.read(&text, sizeof(text));
    Serial.println(text);
  }
}

결과 화면

송신 아두이노는 1초마다 “Hello World”를 보내고, 수신 아두이노는 이 메시지를 받아서 시리얼모니터에 출력합니다.

레퍼런스