정보나눔

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

와이파이 모듈간의 통신
윤재 | 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);
  }
}

프로필사진

수박쨈 2019-01-22 09:30:35

시리얼모니터에 str를 출력시키는 부분이 2부분이 있습니다.

어느 구역에 있는 Serial.println()이 깨지는지 설명이 필요합니다.

 

대부분의 통신 중 데이터 소실, 손실 발생 문제는 타입 변경, 데이터 전달을 위한 동기화과정 중 발생합니다.

 

한꺼번에 돌리기보다는

1. 블루투스통신을 통해 데이터가 정상적으로 들어오는지 확인

2. 라디오통신을 통해 데이터가 정상적으로 전달되는지 확인 후

동시에 시도해보시기 바랍니다.

  

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