정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

와이파이 모듈간의 통신
윤재 | 2019-01-17

제가 아두이노 2개를 이용해서 아두이노는 와이파이 모듈로 연결하고 안드로이드는 각각의 블루투스와 연결해서 안드로이드 끼리 무선으로 텍스츠를 전달하기위해 만든 코드입니다. 와이파이 모듈간 전달에서 문제가 생겼는지 시리얼모니터에도 영어나 한글이 깨져서 출력 됩니다. 혹시 어떤점이 문제인지 알려주세요. 참고로 한개는 아래의 소스코드를 나머지 하나는 radioNumber을 1이 아닌 0으로 하여 코딩했습니다. 그리고 와이파이 모듈은 nrf24l01을 사용했습니다.

#include <SPI.h>
#include "RF24.h"
#include <nRF24L01.h>
#include <SoftwareSerial.h>
bool radioNumber = 1;
RF24 radio(7,8);
byte addresses[][6] = {"1Node","2Node"};
SoftwareSerial BTSerial(2, 3);
void setup() {
  Serial.begin(9600);
  while (!Serial) {

    ;
  }  

  radio.begin();
  radio.setPALevel(RF24_PA_LOW);
  if(radioNumber){
    radio.openWritingPipe(addresses[1]);
    radio.openReadingPipe(0,addresses[0]);
  }else{
    radio.openWritingPipe(addresses[0]);
    radio.openReadingPipe(0,addresses[1]);
  }
  radio.startListening();
  BTSerial.begin(9600);
}
void loop() { 
  if(BTSerial.available()){
    radio.stopListening();
    String str;
    while(BTSerial.available()>0){
      char ch=BTSerial.read();
      str.concat(ch);
      delay(10);
    }
    Serial.println(str);
    if(!radio.write(&str,(unsigned int)sizeof(str))){
      Serial.println("success");
    }
    else { Serial.println("failed");}
    delay(100);
    radio.startListening();
  }
  else if(radio.available()){
    String str;
    Serial.println("success");
    radio.read(&str,sizeof(str));
    Serial.println(str);
    BTSerial.print(str);
  }
}

이전글   |    nrf24l01과 안드로이드 2019-01-15
다음글   |    안드로이드 폰의 NFC로 도어락 사용자 등록을 어떤 방법으로 해야 할까요?... 2019-01-18