2014-04-18 3 views
0

마이크로 컨트롤러와 연결된 RN-171 wifly 모듈이 있습니다.UDP 패킷을 수신하도록 Wifly 모듈을 구성하십시오.

모듈과 통신하기 위해 UDP 프로토콜을 사용하고 있습니다. 또한 펌웨어의 UDP 자동 쌍 기능을 사용하여 호스트 IP를 설정합니다. 모듈은 UDP 패킷을 받자 마자 호스트 IP 주소를 데이터를 수신 한 IP 주소로 설정합니다. 이제이 호스트 ip는 명령 모드로 들어가기 전에는 변경할 수 없습니다.

모듈이 다음과 같은 방식으로 동작하기를 원합니다. UDP 패킷을 수신 할 때마다 호스트 신호를 해당 신호의 출처 인 IP 주소로 업데이트합니다.

또한 TCP 프로토콜을 사용할 수 있지만 한 번에 하나의 연결 만 허용합니다. TCP 프로토콜을 사용하여 직면 한 또 하나의 문제는 모듈과의 두 번째 TCP 연결을 시작하려고하면 두 번째 연결을 거절 할뿐만 아니라 첫 번째 안정 연결도 중단한다는 것입니다. 두 번째 연결 초기화가 모듈을 멈추지 않고 방금 거부 될지라도 TCP로 작업 할 준비가됩니다.

저는이 문제에 관해 웹에서 많은 연구를 해왔습니다.하지만이 모듈은 널리 사용되지 않았기 때문에 매우 제한적으로 지원됩니다.

답변

0

저는 RN-171을 광범위하게 사용했으며 지원 시스템에서 많은 해결 된 티켓을 받았습니다.

WiFly Command Reference, Advanced Features and Applications User’s Guide에 따르면 모듈과 함께 둘 이상의 TCP 포트를 열 수 없습니다. (기본 숫자는 2000입니다.)

유감스럽게도 UDP 기능에 관해서는별로 할 일이 없습니다. UDP를 통해 통신하려는 새 호스트가있는 경우 TCP를 통해 모듈에 연결하고 명령 모드로 이동하여 "$$$", "set ip host 0.0.0.0", "save", "exit"명령을 사용하여 주소를 설정하십시오. 또는 0.0.0.0 대신 "$$$", "set ip host ###.###.###.###", "exit"의 새 호스트 고유 IP 주소를 입력 할 수 있습니다. "###.###.###.###"을 장치의 IP 주소로 바꿉니다.

이렇게하면 둘 이상의 장치가 동시에 UDP를 통해 통신하는 경우 잘못된 호스트 IP가 발생하지 않습니다. 또한 "save"을 사용하지 않으면 자동 페어링이 EEPROM 메모리에 저장됩니다. 또한이 비트가 0으로 설정된 16 진수 값을 사용하여 비트 [6]을 0 (UDP 자동 페어링 사용 안 함)으로 일시적으로 설정할 수도 있습니다. 이렇게하면 ""앞에 "exit"을 보낼 수 있습니다.

마이크로 칩 기술 지원부가 2013 년 여름에 테스트 한 내 문제 중 하나는 RN-171을 다른 RN-171에 대한 액세스 포인트로 사용할 수 없다는 것입니다. 2014 년 1 월에 출시 된 펌웨어 v4.41에는 아직 수정이 없으며 계획도 없습니다.

나는 최신 펌웨어 버전 v4.41을 권장하지 않습니다. 대부분의 라우터에서 작동하지 않는 것으로 보입니다. 그러나이 소프트 AP 모드는 정상적으로 작동합니다. 반면 v4.00.1은 훨씬 더 호환이 가능하지만 플래시 쓰기가 진행 중일 때 전력을 차단하면 잠재적으로 치명적인 브리 킹 문제가 있으므로 전원을 차단할 때주의해야합니다. 모듈이 메모리를 영구히 잠글 수 있습니다 .

Microchip ticket을 등록하고 개봉하는 것이 좋습니다. 일반적으로 영업일 기준 2 일 이내에 답변을 드리며 매우 도움이됩니다. 그러나 펌웨어 업데이트주기는 상당히 길며 새 업데이트의 경우 보통 1 년 정도 걸립니다.

+0

그러나 모듈과 함께 여러 클라이언트를 연결하는 좋은 방법을 발견했습니다. 이제는 TCP 프로토콜을 사용하고 있지만 다른 접근 방법을 사용하고 있습니다. 기본적으로 내 프로젝트의 스마트 폰에서 데이터를 보내려고합니다. 따라서 앱이 모듈로 무엇인가를해야만하는 경우 TCP 연결을 시작하고 모듈에 구성된 비밀번호로 연결을 인증하고 데이터를 송수신 한 다음 즉시 연결을 닫습니다. 연결이 생성되기 전에 사용자 입력이 수행되기 때문에이 모든 프로세스에는 약 50-60ms가 소요됩니다. 이 문제를 해결하기위한 안정적인 솔루션을 느낍니까? – kayveesin

+0

동시에 장치에서 데이터를 보내고받을 필요가 없다면 실용적인 솔루션입니다. 애플리케이션이 파이프에서 데이터 지연을 처리 할 수 ​​있다면 모든 장치가 필요한 데이터를 전송할 때까지 다른 장치가 연결 재 시도를 수행하는 것이 합리적입니다 (연결 요청 충돌이 발생할 경우). 나는 많은 비 동시적인 연속적인 연결에 어떤 문제도 아직 가지지 않고있다. – wolf9000