Wizfi210 관련 문의 드립니다

아두이노 우노에 사용중이고 노트북을 AP로 사용하여 센서의 신호값을 WIZFI210을 이용하여 전송하고 있습니다.

AT+WSTATUS

AT+NSTAT=?

AT&F RESTORE PROFILE TO FACTORY DEFAULT VALUES

AT+WD

AT+WM=0 STATION MODE

AT+WRXPS=0 POWER SAVE MODE DISABLE

ATB=9600

AT+WWPA=13791379 Set WPA passphrase

AT+NDHCP=1 Enable

AT+WAUTO=0,ARDUINO Set WiFi Configuration, <MODE,SSID,[BSSID,CHANNEL]>

AT+NAUTO=0,1,192.168.123.1,80 <CLIENT, TCP, IP, PORT>

ATC1 Auto connection next reboot

AT+XDUM=1 Disable UART Message

AT&Y0 Set Default Profile

AT&W0 Save Profile

AT+XAR=10 Auto reconnect interval

ATA Start Auto Connect, including association.

위와 같이 접속하였고 ATA 입력후 서버와의 통신은 잘됩니다. 하지만 서버의 80번 포트를 닫았다가 다시 열면 AP(노트북)에는 접속중이지만 보내고자하는 데이터를 보내주지 못합니다.

포트가 닫기면 데이터 모드에서 커맨드 모드로 다시 돌아오는 이유때문에 재접속이 안되는거 같은데 ATA를 입력해주면 다시 접속은 가능하구 통신도 됩니다.

저의 능력 부족때문인지 아두이노로 커맨드 모드로 돌아왔을때 다시 ATA를 명령해 주면 될것 같은데 하는 방법을 잘 모르겠습니다.

혹시 설정으로 포트가 닫기더라도 커맨드 모드로 돌아오지 않고 데이터 모드를 유지하는 설정이 없는지 궁금하여 질문 드립니다.

++++++++++아두이노 명령으로 재접속 가능하게 수정하였습니다.+++++++++++++

코드는

const int TrigPin = 2;
const int EchoPin = 3;
float m;

void setup()
{
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
}
void loop()
{
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
m = pulseIn(EchoPin, HIGH) / 58.0 / 100;
Serial.print(“B”);
Serial.print(" ");
Serial.println(m);
delay(3000);
//Serial.print(“AT\r\n”);
//delay(1000);
Serial.print(“ATA\r\n”);
}

이렇게 되어있는건데…

시리엏 모니터 상에도…

B 0.03
ATA
B 0.02
ATA
B 0.12
ATA
B 0.12
ATA
B 0.12
ATA
B 0.12
ATA
B 0.12
ATA
B 0.12
ATA
B 0.12
ATA
B 0.12
ATA
B 0.12
ATA
B 0.12
ATA

이러한 형태로 출력이 되어버리는 군요…

질문의 요지는

  1. 서버의 포트가 닫기더라도 커맨드모드로 돌아오지 않게 할수 있는 방법이 있는지???

  2. 아니면 아두이노 코드를 수정하여 센서값 사이에 ATA가 출력되지 않게 할수있는 방법이 있는지 궁금합니다.ㅠㅠ

되도록이면 커맨드 모드로 돌아가지 않고 데이터 모드를 유지할수 있는 방법이 있는지가 궁금합니다.

안녕하세요.

서버의 포트가 닫혔다가 다시 오픈되더라도, WizFi210은 소켓 커넥션이 끊겼다고 판단하고 소켓을 닫아버리기 때문입니다.
데이터모드가 커맨드모드로 전환되었기 때문이 아닙니다.
AT+PSPOLLINTRL=n 명령으로 TCP keep alive time interval을 조정해보시길 바랍니다.