Wizfi360과 PC 간 통신 설정 순서?

안녕하세요?

PC 프로그램에서 192.168.20.10 Port 331로 RQ 라고 보내면

STM32F103 과 연결된 Wizfi360에서 데이타를 보내주는 방식의 프로그램을 만들려고 합니다.

현재는 아래와 같이 설정을 하였는데요.

우선 아래와 같은 설정 순서가 맞는건지 궁금합니다.

  sprintf(cmd, "ATE0\r\n"); //ATE0=Echo Off ATE1= Echo On 

  sprintf(cmd, "AT+CWMODE_CUR=3\r\n"); //Setup MODE 1=Station, 2=SoftAP, 3=Station+SoftAP  

  sprintf(cmd, "AT+CWDHCP_CUR=1,0\r\n"); //Setup DHCP  

  sprintf(cmd, "AT+CWSAP_DEF=\"SMART FARM\",\"12345678\",5,3,4,0\r\n"); //Setup Wizfi360360 SoftAP  

  sprintf(cmd, "AT+CIPMODE=0\r\n");//Setup CIPMODE 

  sprintf(cmd, "AT+CIPMUX=1\r\n"); //Setup CIPMUX 0 = single 1 = multy 

  sprintf(cmd, "AT+CWHOSTNAME=\"SMART FARM\"\r\n"); //Setup HOST NAME 

  sprintf(cmd, "AT+CWJAP_CUR=\"%s\",\"%s\"\r\n",SSID , PW); 

  sprintf(cmd,"AT+CIPSTA_CUR=\"%d.%d.%d.%d\",\"192.168.1.1\",\"255.255.255.0\"\r\n", WIFI_IP[0], WIFI_IP[1],WIFI_IP[2],WIFI_IP[3]); //Setup IP

  sprintf(cmd,"AT+CIPSERVER=1,%d\r\n", WIFI_PORT); //Setup PORT

  sprintf(cmd,"AT+CIPSENDBUF=0,16\r\n"); //Send Data

지금은 AP+CIPMODE=0 설정에서
CIPMUX and CIPSERVER mustbe 0 이라고 회신이 옵니다.

=============================== 추가 ========================================

  sprintf(cmd, "ATE0\r\n"); //ATE0=Echo Off ATE1= Echo On 

  sprintf(cmd, "AT+CWMODE_CUR=1\r\n"); //Setup MODE 1=Station, 2=SoftAP, 3=Station+SoftAP  

  sprintf(cmd, "AT+CWDHCP_CUR=1,0\r\n"); //Setup DHCP  

  sprintf(cmd, "AT+CWJAP_CUR=\"%s\",\"%s\"\r\n",SSID , PW); 

  sprintf(cmd,"AT+CIPSTA_CUR=\"%d.%d.%d.%d\",\"192.168.1.1\",\"255.255.255.0\"\r\n", WIFI_IP[0], WIFI_IP[1],WIFI_IP[2],WIFI_IP[3]); //Setup IP

  sprintf(cmd, "AT+CIPMODE=0\r\n");//Setup CIPMODE 

  sprintf(cmd, "AT+CIPMUX=1\r\n"); //Setup CIPMUX 0 = single 1 = multy 

  sprintf(cmd,"AT+CIPSERVER=1,%d\r\n", WIFI_PORT); //Setup PORT

  sprintf(cmd, "AT+CWHOSTNAME=\"SMART FARM\"\r\n"); //Setup HOST NAME 

  sprintf(cmd,"AT+CIPSENDBUF=0,16\r\n"); //Send Data      

ATE
CWMODE
CWDHCP
CWJAP
CIPSTA 까지는 OK 나오고

CIPMUX and CIPSERVER mustbe 0 이라고 회신이 옵니다.

금일

이분의 자료를 토대로 따라 해봤습니다.

아래 순서대로 작업 했을때 모두 OK 나오고

  sprintf(cmd, "ATE0\r\n"); //ATE0=Echo Off ATE1= Echo On 

  sprintf(cmd, "AT+CWLAP\r\n"); //Check WIFI List

  sprintf(cmd, "AT+CWJAP_CUR=\"%s\",\"%s\"\r\n",SSID , PW); 

  sprintf(cmd, "AT+CIPSTATUS\r\n"); //Show Current Status

  sprintf(cmd, "AT+CIFSR\r\n"); //Setup DHCP  


  sprintf(cmd, "AT+CWSAP_DEF=\"SMART FARM\",\"12345678\",5,3,4,0\r\n"); //Setup Wizfi360360 SoftAP  

  sprintf(cmd,"AT+CIPSERVER=1,%d\r\n", WIFI_PORT); //Setup PORT

  sprintf(cmd, "AT+CWMODE_CUR=3\r\n"); //Setup MODE 1=Station, 2=SoftAP, 3=Station+SoftAP  

  sprintf(cmd, "AT+CIPMUX=1\r\n"); //Setup CIPMUX 0 = single 1 = multy 

=== 아래 두가지중 어느 것을 써도 ERROR 가 회신 되어 나옵니다.

  sprintf(cmd,"AT+CIPSENDBUF=0,16\r\n"); //Send Data    

// sprintf(cmd,“AT+CIPSEND=0,6\r\n”); //Send Data

도대체 왜 안되는건지 ㅠ.ㅠ

안녕하세요.

첨부해주신 code에서 AT command 전송 후, 전송을 한 해당 AT command의 응답을 처리하지 않은 상태에서 다음 AT command를 전송하는 것으로 파악이 됩니다.

AT command 전송 후에 전송을 한 해당 AT command의 응답을 처리하지 않고 다음 AT command 전송하게 된다면 추후 문제가 될 수 있으므로 AT command 전송 후에 전송을 한 해당 AT command의 응답을 처리하고 다음 AT command를 전송하는 sequence로 구현하는 것을 추천 드립니다.

AT command 설정 시, 하기 그림 참고하여 진행 바랍니다.

안녕하세요?

소스를 전부 공개를 못해서 오해가 있으신거 같습니다.

1번 부터 10번 까지의 AT 코맨드를 실행 한다고 할경우.

OK 를 회신 받아야 1번에서 2번 2번에서 3번 3번에서 4번 순으로 명령어를 보냅니다.

아래 순서대로 작업 했을때 모두 OK 나오고 <== 라고 분명이 글을 올렸는데…

오늘 순서대로 화면 켑쳐 해서 정리 했습니다.

다시 질문 합니다.

설정 순서가 맞나요? (이거 벌써 3번째 물어 보는겁니다.)

12번 sendbuf 에러 원인이 뭔가요?

      sprintf(cmd, "ATE1\r\n"); //ATE0=Echo Off ATE1= Echo On 

      sprintf(cmd, "AT+CWMODE_CUR=3\r\n");//Setup CIPMODE 

      sprintf(cmd, "AT+CWDHCP_CUR=1,1\r\n"); //Setup DHCP  

      sprintf(cmd, "AT+CWJAP_CUR=\"%s\",\"%s\"\r\n",SSID , PW); 

      sprintf(cmd, "AT+CIPSTATUS\r\n"); //Show Current Status

      sprintf(cmd, "AT+CIFSR\r\n"); //Setup DHCP  

      sprintf(cmd, "AT+CWSAP_DEF=\"SMART FARM\",\"12345678\",5,3,4,0\r\n"); //Setup Wizfi360360 SoftAP  

      sprintf(cmd, "AT+CIPMUX=1\r\n"); //Setup CIPMUX 0 = single 1 = multy 

      sprintf(cmd,"AT+CIPSERVER=1,%d\r\n", WIFI_PORT); //Setup PORT

      sprintf(cmd, "AT+CIPSTATUS\r\n"); //Check WIFI List          

      sprintf(cmd,"AT+CIPSTA_DEF?\r\n"); //Send Data              

      sprintf(cmd,"AT+CIPSENDBUF=0,16\r\n"); //Send Data

안녕하세요.

네, code 순서는 문제가 없는 것으로 보여집니다.

상기 그림과 같이 'AT+CIPSENDBUF’에서 ‘link is not valid’ error가 발생하는 원인은 TCP 연결이 이뤄지지 않았기 때문입니다.

WizFi360으로 server 생성 후, server에 client를 접속시켜 TCP 연결을 정상적으로 생성하셨는지요?..

확인 부탁드립니다.

안녕하세요?

상기 순서대로 다 하고 12번 SENDBUFF 명령 이 OK 이가 될때 까지 계속 실행 하는 중에.

J1C라는 프로그램을 실행하여 접속을 하려고 하지만 TCP에서도 UDP에서도 접속이 안되네요.

아 그리고.

      sprintf(cmd,"AT+CIPSTA_CUR=\"192.168.20.10\",\"192.168.1.1\",\"255.255.255.0\"\r\n"); //Setup IP

CIPSTA 가 빠져 있길래 추가 해줬습니다.
그래도 같은 증상.

안녕하세요.

      sprintf(cmd,"AT+CIPSTA_CUR=\"192.168.20.10\",\"192.168.1.1\",\"255.255.255.0\"\r\n"); //Setup IP

상기와 같이 설정을 하시게 되면 설정하시는 IP와 gateway 간의 IP 대역이 맞지 않으므로 IP 대역을 맞추어 설정해주시기 바랍니다.

'AT+CIPSENDBUF’ AT command 입력 전에 client가 정상적으로 접속을 하였는지요?

첨부해주신 그림에서 ‘link is not valid’ error가 발생하는 것을 보아 TCP 연결이 정상적으로 이뤄지지 않은 것으로 파악이 됩니다.

client가 접속을 하여 TCP 연결이 정상적으로 이뤄지면, 하기 그림과 같이 'x, CONNECT’라는 응답이 출력됩니다.

image

확인 부탁드립니다.

안녕하세요?

첨부된 그림 처럼 접속 잘 됩니다.

마이컴의 IP? Gateway와 PC 의 IP? Gateway 가 틀려서 안되었던 증상입니다.

그림과 같이 접속이 되면 메세지가 나오네요.

그리고 궁금한게 하나 더 있습니다.

PC에서 아무런 데이타를 보내지 않고.

    sprintf(cmd,"TEMP=%dHUMI=%d\r\n",WS3_Temp,WS3_Humi); 
    Serial_PutMulti_5(cmd,strlen(cmd));

이렇게 TEMP 값과 HUMI 값을 계속 보낼수는 없는건가요?

다시 말해서 마이컴과 연결된 WIZFI360(서버) 와 PC(클라이언트) 동작시 PC 에서 요구 신호 같은걸 보내야 만 데이타를 보낼수 있는건가요?

요구 신호 없이 WIZIFI360(서버)에서 계속 데이타를 보내는데… 상기 그림 젤 아래 처럼 에러 메세지가 나옵니다.

========================= 추가 질문 ==================
현재 PC에서 데이타를 보내면 STM32F 에서는 잘 받습니다.
받고 바로
sprintf(cmd,“TEMP=%dHUMI=%d OK!!!\r\n”,WS3_Temp,WS3_Humi);
Serial_PutMulti_5(cmd,strlen(cmd));
라고 보내도 뭔가 PC로 오는게 없네요.

안녕하세요.

TCP 연결이 정상적으로 되었고 유지가 된다면, client에서 request 신호 없이 server로 계속 data를 송신 할 수 있습니다.

첨부해주신 그림에서는 data는 server에서 정상적으로 16Bytes 송신을 하였으며, client에서 16Bytes에 대한 data를 정상적으로 수신을 하였습니다.

다만 ‘AT+CIPSENDBUF=0,16’ AT command 입력 후에 온/습도 값을 입력하여 송신한 것이 아니며, 'AT+CIPSENDBUF=0,16’를 한번 더 입력하고 송신하여 client에서 16Bytes에 대한 data 값으로 'AT+CIPSENDBUF=0,'까지 수신 한 것으로 파악이 됩니다.

그리고 ‘AT+CIPSENDBUF’ AT command 입력을 하지 않은 상태에서 온/습도 값을 송신하여 'ERROR’가 발생한 것으로 보여집니다.

확인 부탁드립니다.