2016-11-10 5 views
1

저는 데이터를 웹 페이지에 지속적으로 기록하는 프로젝트를 위해 Esp8266 Wifi 모듈을 사용해 왔습니다. 지금까지 AT 명령을 사용하여 목표를 달성하기 위해 다음 코드를 사용했습니다 (미리 만들어진 라이브러리를 사용하고 싶지 않기 때문에).ESP8266에서 CIPSEND 동안 특정 채널 선택

AT 
AT+CWMODE=3 
AT+CWJAP="MY_SSID","MY_PASSKEY" 
AT+CIPMUX=1 
AT+CIPSERVER=1,80 
AT+CIFSR 
AT+CIPSEND=CHANNEL_NO,NO+OF_CHARACTERS_TO+BE_SENT 
AT+CIPSEND=CHANNEL_NO,NO+OF_CHARACTERS_TO+BE_SENT 
AT+CIPSEND=CHANNEL_NO,NO+OF_CHARACTERS_TO+BE_SENT 
AT+CIPSEND=CHANNEL_NO,NO+OF_CHARACTERS_TO+BE_SENT 
AT_CIPCLOSE=0 

는 지금은 지속적으로 웹 페이지에와 AT+CIPCLOSE을 사용하여 프로세스를 종료 아아 데이터를 전송하고 있습니다. 지금은 매번 AT_CIFSR 명령에서 얻은 포트 번호 (내 경우에는 80)와 함께 고정 IP를 입력해야합니다. 이 명령을 실행하면 채널 정보가 직렬 터미널에 표시됩니다. 그리고 해당 채널 번호에 따라 AT+CIPSEND 명령에서 채널 번호 매개 변수를 변경해야합니다. 그래서 내 질문은 ESP를 특정 채널 번호로 한 번 구성한 다음 채널 번호에 대해 신경 쓰지 않고 계속 데이터를 보낼 수 있습니까?

+0

과 같이 더 이상 채널 번호를 지정하지 않아도 AP는 STA – dandavis

+0

과 동일한 채널을 사용해야 함을 유의하십시오. 웹 페이지, ESP에서 서버를 실행하는 이유는 무엇입니까? 어떤 종류의 "채널"에 대해 이야기하고 있습니까? 'AT + CIFSR'는 IP와 MAC만을 반환합니다. –

+0

예'AT + CIFSR'은 IP 주소를 반환하고 그 IP 주소 중 하나를 사용하여 데이터를 보냅니다. CIFSR 명령에 입력 한 스테이션 IP 주소를 사용하고 있습니다. 그래서 그 IP를 브라우저에 놓으면 그 때 열려있는 (연결되어있는) 채널 번호를 나타내는 ESP에 대한 응답이 있습니다. 그래서 그 채널 번호에 대해 이야기하고 있습니다. –

답변

0

AP 802.11b/g/n의 채널은 동일한 매체에 여러 개의 통신 장치를 생성하고 간섭을 피하기위한 것입니다. 클라이언트가 구성 할 수 없습니다. AP 설정에서 변경할 수 있습니다.

ESP8266이 AP 모드에서 다른 클라이언트를 지원할 때만 특정 채널을 설정할 수 있습니다.

+0

그렇다면 매번 특정 채널로 데이터를 보내려면 어떤 변화가 있어야합니까? 내 목적을 직접적으로 해결할 수있는 명령이 없기 때문에 이러한 변경을 제안 할 수 있습니까? –

+0

설정은 라우터 설정 아래에 있습니다. 브라우저에 IP를 입력하여 라우터/모뎀/AP 웹 인터페이스로 실행하십시오. 채널 설정이 무선 또는 WAN 섹션 아래에있을 수 있습니다. – cagdas

+0

오케이. 그래서 우리는 모듈 측에서 아무 것도 할 수 없습니까? –

1

나는 당신이 ESP의 연결 번호가 아닌 wifi 채널 번호를 말하는 것이라고 생각합니다. gre_gor의 의견을 듣고 웹 페이지의 위치를 ​​완전히 이해하고 있는지 확신 할 수 없습니다. ESP8266은 최대 4 개의 연결을 지원할 수 있으므로 서버가 처리해야합니다. 원격 호스트의 요청에 응답하는 경우 올바른 연결 번호를 사용하여 응답해야합니다. Here is an example python program은 요청에서 연결 번호를 가져와 응답에서 사용하는 방법을 보여줍니다.

실제로 원격 서버의 웹 페이지로 데이터를 전송하는 경우 하나의 채널 만 있음을 알리는 1 대신에 AT+CIPMUX=0을 시도하십시오. 채널 문제가있는 경우 AT+CIPSEND=NO+OF_CHARACTERS_TO+BE_SENT

+0

[CIPMUX = 1] (https://github.com/espressif/ESP8266_AT/wiki/) 설정시에만 [서버 생성] (https://github.com/espressif/ESP8266_AT/wiki/CIPSERVER) 할 수 있습니다 CIPMUX). –

+0

아마도이 문제를 잘못 읽었을 것입니다. 네가 진술 한 것이 사실이다. 그러나 그가 웹 페이지에 데이터를 보내면 실제로 클라이언트 일 수 있습니다. 그가 정말로 서버라면 그는 연결 번호를 관리해야 할 것입니다. – leetibbett

+0

여기에 물건을 옮기는 데 오해가있을 것 같습니다. 죄송합니다. 내가 더 분명하게 만들자. Esp 모듈을 사용하여 로컬 네트워크에 연결합니다 (예 : 집에 WiFi 연결) 이제 일부 데이터를 보내고 그 데이터를 추출합니다. 그래서 Esp는 그것이 데이터를 보내는 것처럼 클라이언트가 될 것입니다. 그래서 나는'CIPMUX = 1'을 사용하고 포트 80에서 서버를 시작했습니다. 그러면'CIFSR' 명령을 사용하여 스테이션 IP 주소를 얻었고 브라우저에 IP를 실행하여 연결에 대한 터미널에서 응답을 얻었습니다. 채널 번호 등. 그래서'CIPMUX = 0'을 사용하면 어떻게 데이터를 보낼 수 있습니까? –