nRF24L01+와 ATtiny85로 3핀 무선 센서 전송 구현하기
부품 및 소모품
nRF24L01+ 모듈
×
2
ATtiny85
×
1
아두이노 우노 (프로그래머용)
×
1
세라믹 커패시터 10nF
×
1
카본 필름 저항 22kΩ
×
1
스위칭 다이오드 1N4148
×
1
3.3V 전원 공급원
×
1
nRF24L01+ 소켓 어댑터 (선택)
×
1
프로젝트 개요
이전 프로젝트 ATtiny85 아두이노 우노로 프로그래밍하기 의 연장선으로, 저렴한 ATtiny85를 사용해 센서 데이터를 무선 전송하는 방법을 다룹니다. nRF24L01+는 저렴하고 저전력 RF 트랜시버로 이 목적에 적합하지만, ATtiny85의 핀 수 제한(5개 I/O)으로 센서와 nRF24L01+를 동시에 연결하기 어렵습니다. 이를 해결하기 위해 3핀 구성으로 nRF24L01+ 제어하기 기법(Ralph Doncaster 제안)을 적용했습니다.
모듈 구성
송신기(Transmitter): ATtiny85 + nRF24L01+ → 1초마다 증가하는 숫자 전송 (3핀만 사용)
수신기(Receiver): 아두이노 우노 + nRF24L01+ → 시리얼 모니터로 수신 데이터 확인
라이브러리: RF24 라이브러리 (아두이노 IDE에 설치 필요)
송신기 회로 및 코드
필요 부품: ATtiny85, nRF24L01+, 10nF 커패시터, 22kΩ 저항, 1N4148 다이오드
아래 회도대로 연결하고 코드 업로드 (ATtiny85 프로그래밍 방법은 이전 프로젝트 참조).
#define CE_PIN 3
#define CSN_PIN 3 // 3핀 구성에서 CE와 CSN 동일 핀 사용
#include "RF24.h"
RF24 radio(CE_PIN, CSN_PIN);
byte address[11] = "SimpleNode";
unsigned long payload = 0;
void setup() {
radio.begin();
radio.setAutoAck(1);
radio.setRetries(15,15);
radio.openWritingPipe(address);
}
void loop() {
payload++;
radio.write(&payload, sizeof(unsigned long));
delay(1000);
}
수신기 회로 및 코드
필요 부품: 아두이노 우노, nRF24L01+, 소켓 어댑터(선택)
주의: nRF24L01+는 반드시 3.3V로 구동해야 합니다. 일부 아두이노 클론의 3.3V 레귤레이터는 전류가 부족해 모듈 오작동 원인이 됩니다. 해결책:
별도 3.3V 파워 서플라이 사용
모듈 VCC-GND 사이에 10µF 커패시터 추가
nRF24L01+ 소켓 어댑터 사용 (내장 레귤레이터 탑재)
#define CE_PIN 7
#define CSN_PIN 8
#include <SPI.h>
#include "RF24.h"
RF24 radio(CE_PIN, CSN_PIN);
byte address[11] = "SimpleNode";
unsigned long payload = 0;
void setup() {
Serial.begin(115200);
radio.begin();
radio.setAutoAck(1);
radio.setRetries(15,15);
radio.openReadingPipe(1, address);
radio.startListening();
}
void loop() {
radio.stopListening();
radio.startListening();
radio.read(&payload, sizeof(unsigned long));
if(payload != 0) {
Serial.print("Got Payload ");
Serial.println(payload);
}
delay(1000);
}
테스트 및 영구 제작
송신기 전원 ON → 아두이노 우노 PC 연결 → 시리얼 모니터 열기. 1초마다 증가하는 페이로드 수신 확인.
퍼프보드에 납땜해 영구 모듈로 제작 가능. 센서 연결용 핀(2개)이 남아 다양한 센서 데이터 전송에 응용할 수 있습니다.
회로도 파일
Fritzing: nRF24L01+_With_Socket_Attiny85.fzz, nRF24L01+_Arduino_Uno.fzz