https://howtomechatronics.com/tutorials/arduino/arduino-wireless-communication-nrf24l01-tutorial/
https://deneb21.tistory.com/548
//Libraries for NRF24L01+ module.
#include <SPI.h>
#include <RF24.h>
//RF24 object with two pins defined with arguments. CE: 9, CSN: 10
RF24 radio(9, 10);
//Address of the pipe. 40 bit long, you can choose this freely.
//Remember to use different address in different projects.
long long address = 0x1234ABCDEFLL;
int sensorPin = 0;
float temperature;
//Variable that selects whether the circuit is sender (1) or receiver (0)
bool sender = 0;
void setup() {
//Start the radio
Serial.begin(9600);
radio.begin();
if (sender) { //If sender
radio.openWritingPipe(address);
//RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH and RF24_PA_MAX
//NRF24L01: -18dBm, -12dBm,-6dBM, and 0dBm
radio.setPALevel(RF24_PA_LOW);
radio.stopListening();
} //If sender
else { //If receiver
//Open reading pipe with given address and start listening for incoming data
radio.openReadingPipe(1, address);
radio.startListening();
} //If receiver
}
void loop() {
if (sender) { //If sender
//Get temperature from the sensor
int reading = analogRead(sensorPin);
float voltage = reading * 5.0;
voltage /= 1024.0;
temperature = (voltage - 0.5) * 100 ;
//Send the temperature wirelessly, print error if failed
if (!radio.write(&temperature, sizeof(temperature))) {
Serial.println(F("Sending failed"));
}
delay(1000);
} //If sender
else { //If receiver
//If data is available in radio's buffer
if(radio.available()) {
//While the data is available...
while (radio.available()) {
//Update temperature -variable with data from the radio module
radio.read(&temperature, sizeof(temperature));
}
Serial.println(temperature);
}
} //If receiver
}
하나의 소스로 Sender 와 Receiver 역할을 수행한다. 15행에 sender 변수값 1을 설정하면 Sender이고 0을 설정하면 Receiver 이다. 그러므로 두 개의 아두이노에 각각 1과 0 값으로 업로드 해야 한다.
10행을 보면 파이프 방식 통신을 하므로 마스터와 슬레이브 간에 같은 어드레스를 사용해야 한다.
26행을 보면 송신 전파 강도를 설정하는 부분이 있다. RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH and RF24_PA_MAX 으로 설정할 수 있으며 좌에서 우로 갈수록 전파가 강해진다. 공급 전류가 허용된다면 MAX로 그렇지 않다면 한 단계씩 줄여서 통신 상황을 관찰한다. 나는 아두이노 자체전원을 이용 했으므로 제일 작은 MIN으로 설정했다.
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
공지 | IR 리모콘 코드 따기 [1] | 묵묵이 | 2017.02.10 | 12 |
공지 | rc 카 작업용 [1] | 묵묵이 | 2017.02.07 | 11 |
공지 | [sketch_mydust] 미세멘지 측정기 작업 용 [2] | 묵묵이 | 2017.02.07 | 15 |
42 | RFID 정보를 읽고 쓸 수 있는 Proxmark3 | 묵묵이 | 2024.09.13 | 1 |
41 | [Android,Java] 안드로이드 - AES256 암호화 및 복호화 예제 소스 다운로드 | 묵묵이 | 2022.06.12 | 0 |
40 | 교류모터 속도제어킷 | 묵묵이 | 2021.05.02 | 7 |
39 | WiFiHTTPSServer test | 묵묵이 | 2020.03.02 | 7 |
38 | 8GLIB 유저매뉴얼 구글번역 | 묵묵이 | 2020.02.29 | 5 |
» | 아두이노 2.4G 통신 모듈 사용하기 | 묵묵이 | 2019.04.04 | 9 |
36 | 전기가용량 계산 방법 - 전압, 전류와 전력량 측정에 대한 내용 | 묵묵이 | 2017.07.27 | 9 |
35 | 초저렴 iot 모듈 | 묵묵이 | 2017.06.04 | 8 |
34 | 적정 습도 / 미세먼지 값보정 | 묵묵이 | 2017.05.11 | 8 |
33 | 5V동작 20A 전류 센서 모듈 측정하기 ... [6] | 묵묵이 | 2017.04.17 | 16 |
32 | 먼지 센서 구매 하는곳 ... | 묵묵이 | 2017.04.15 | 7 |
31 | 라즈베리파이 프로그램 자동 실행 | 묵묵이 | 2017.03.12 | 8 |
30 | 라즈베리파일 설정 | 묵묵이 | 2017.03.11 | 6 |
29 | [라즈베리파이] C언어를 이용한 GPIO 입출력 제어 [3] | 묵묵이 | 2017.03.07 | 5 |
28 | 와이파이 모듈(ESP8266) 공유기 연결 AT 명령어 [1] | 묵묵이 | 2017.02.26 | 6 |
27 | 아두이노 EEPROM 사용해보기 | 묵묵이 | 2017.02.20 | 6 |
26 | [아두이노] 0.96인치 OLED LCD 모듈 텍스트 출력 [2] | 묵묵이 | 2017.02.20 | 9 |
25 | HEX to DEC | 묵묵이 | 2017.02.10 | 5 |