메뉴 건너뛰기

XEDITION

아두이노

 

 

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(910);
 
//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으로 설정했다.

 

 

번호 제목 글쓴이 날짜 조회 수
공지 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 암호화 및 복호화 예제 소스 다운로드 file 묵묵이 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] file 묵묵이 2017.02.26 6
27 아두이노 EEPROM 사용해보기 묵묵이 2017.02.20 6
26 [아두이노] 0.96인치 OLED LCD 모듈 텍스트 출력 [2] file 묵묵이 2017.02.20 9
25 HEX to DEC 묵묵이 2017.02.10 5
위로