PC에 설치된 TCP 서버와 ESP8266과 TCP 데이터를 송수신합니다.
ESP8266 WIFI 모듈 2, 3편을 보신 분들은 아래 내용을 건너뛰고
(본 편 시작) 부터 참고하시면 됩니다. 참고하시면 됩니다.
설명에 앞서 참조할 문서는 "ESP8266 AT Instruction Set Ver.2.0.0" 입니다. Ver.3.0은 최근 버전인 만큼 지원되지 않는 AT 명령어가 있어 Ver2.0.0을 참조했습니다.
본 포스팅에 사용한 APPSKIT 구성은 U-HUB V1 허브-모듈과 PWR-ON V1 노드-모듈을 장착한 모듈과, WIFI-ON V1 노드-모듈을 NODE-STAND V1 확장-스탠드에 장착하여 구성했습니다.
(U-HUB V1과 WIFI-ON V1 두 모듈만 결합해서도 사용할 수 있습니다.)
[U-HUB V1, PWR-ON V1, WIFI-ON V1과 NODE-STAND V1 결합 사진]
본 예제는 PC 아두이노 시리얼모니터에서 AT-Command를 WIFI-ON V1 모듈로 직접 전송하려고 합니다. U-HUB V1의 Hardware Serial(RX, TX)를 통해 WIFI-ON V1 노드-모듈의 UART에 직접 연결해서 AT-Command를 테스트해보는 예시입니다.
다음은 위에서 설명한 하드웨어 연결을 도시하였습니다.
[U-HUB V1 허브모듈의 USB 기능을 경유한 WIFI-ON V1의 UART 연결 도시]
본 동작을 위해 U-HUB V1 허브-모듈은 아두이노 개발환경의 보드매니저에서 "Arduino PRO or PRO Mini"를 선택하고 빈 스케치를 업로드합니다.
해당 동작을 위해서 다음과 같은 조작이 필요합니다.
첫째, 빈 스케치를 U-HUB V1 허브-모듈에 업로드하기 위해 WIFI-ON V1 노드-모듈의 "시리얼 선택 스위치"를 위로 올립니다.
둘째, 아두이노 IDE 환경에서 빈스케치를 만들어 U-HUB V1에 업로드합니다.
세째, 아두이노의 Hardware Serial(0번 핀, 1번 핀)과 WIFI-ON V1 모듈의 시리얼 포트를 연결하기 위해 WIFI-ON V1 모듈의 "시리얼 선택 스위치"를 아래로 내립니다.
네째, 아두이노 IDE 환경 내 시리얼 모니터를 실행시키고 통신속도는 "9600"을 선택합니다.
(WIFI-ON V1 노드-모듈은 출고 시 9600bps로 설정되어 있습니다)
다섯째, AT Command를 전송합니다. AT-Command를 전송할 때 유의해야 할 점은 AT-Command 끝에 "Both NL & CR"을 붙여야 합니다.
[아두이노 IDE 환경 내 시리얼모니터 실행 후 옵션 설정 화면]
다음은 위에서 설명한 U-HUB V1 허브모듈의 USB를 경유하여 WIFI-ON V1 노드-모듈의 UART를 통해 AT 명령어를 테스트해 보는 예제 동작 영상입니다.
"AT" 명령어가 내려가면 "OK"로 응답합니다.
"AT+GMR" 명령어는 ESP-12E 모듈의 펌웨어 버전을 출력합니다. (제조사에 따라 (제조사에 따라 펌웨어 버전과 출력되는 메시지는 다를 수 있습니다.)
[아두이노 시리얼모니터에서 Hardware Serial을 통해 WIFI-ON V1 노드-모듈 직접 제어하기]
(본 편 시작)
먼저 PC에서 사용할 TCP 서버 프로그램을 설명하겠습니다.
다운로드 사이트와 프로그램 설정, TCP 송수신 과정을 같이 진행하겠습니다.
다양한 윈도우 PC용 프로그램이 있으나, 본 포스팅에서 사용할 프로그램은 "SerialPortMon.exe" 라는 유틸리티입니다.
상기 사이트로 이동하여 실행 파일을 다운로드 받습니다.
해당 프로그램을 다운로드 받으셨다는 전제로 다음과 같은 단계로 진행하겠습니다.
첫째, SerialPortMon 프로그램을 실행합니다.
프로그램이 실행되면 "Connect" 버튼을 누릅니다.
둘째, 연결 대화 상자가 나타나면 설정을 시작합니다.
연결형태는 "TCP Server", 네트워크 설정에서 지역 IP 주소는 PC가 공유기에서 할당 받은 주소가 화살표 버튼을 누르면 자동으로 나타나며 현재 사용자 PC의 주소를 선택합니다.
포트번호는 임의 지정이 가능하며 본 예에서는 "8080"으로 설정했습니다. 설정이 끝났으면 "Connect" 버튼을 누르면 SerialPortMon 프로그램의 설정이 완료됩니다.
세째, 이제 윈도우 PC에 TCP 서버가 실행되고 있습니다.
프로그램 상단에 TCP 서버 IP와 포트번호가 나타나며, Connection을 기다리고 있다는 메시지가 표시됩니다.
이제 아두이노 시리얼모니터를 실행하여 TCP 서버에 접속하여 데이터를 송수신하겠습니다.
네째, 준비된 APPSKIT을 PC에 연결하고 아두이노 IDE에서 시리얼모니터를 실행합니다.
WIFI-ON V1 노드-모듈과 AT 명령어를 주고 받기위해 "Both NL & CR"과 통신속도는 "9600"으로 설정합니다.
다섯째, WIFI-ON V1 노드-모듈의 WIFI 모드를 "station"으로 변경합니다.
<AT+CWMODE_CUR=1> AT 명령어로 현재 ESP8266의 WIFI 모드를 "station" 모드로 바꿉니다.
여섯째, 사용자 무선 공유기와 연결합니다.
<AT+CWJAP_CUR="TP-LINK_AD12","01110111">을 입력하여 무선 공유기와 연결합니다.
(해당 무선 공유기 이름과 암호는 사용자의 무선 공유기 정보를 입력합니다.)
여섯째, 무선 공유기에서 할당받은 IP를 확인합니다.
<AT+CIFSR> AT 명령어를 입력하여 할당 받은 IP를 확인합니다.
(해당 IP와 MAC 주소는 다를 수 있습니다.)
일곱째, PC의 TCP 서버와 연결합니다.
<AT+CIPSTART="TCP","192.168.0.104",8080> AT 명령어를 입력하여 PC의 TCP 서버와 연결합니다.
(서버 주소와 포트번호는 SerialPortMon에서 설정한 값을 입력합니다.)
시리얼모니터에서 "CONNECT"가 출력될 때, SerialPortMon 프로그램의 상단 정보가 "Connected"라고 바뀝니다.
여덟째, WIFI-ON V1 노드-모듈에서 전송할 문자의 길이를 입력합니다.
전송하고자 하는 문자는 "TEST" 입니다.
<AT+CIPSEND=6> AT 명령어를 통해 전송할 문자의 길이를 입력합니다. 전송할 문자 "TEST"는 길이가 4바이트인데 <6>인 이유는 시리얼모니터에서 "TEST"를 쓰고 전송하면 "Both NL & CR" 옵션으로 인해 "TEST" 뒤에 "\r\n" 두 바이트가 더 추가되기 때문입니다.
아홉째, WIFI-ON V1 노드-모듈에서 전송할 문자를 입력합니다.
WIFI-ON V1 노드-모듈은 TCP 전송 모드로 바뀌었기 때문에 AT 명령어 없이 전송할 문자를 바로 입력합니다.
전송과 동시에 SerialPortMon 창에 "TEST" 글자가 표시됩니다.
WIFI-ON V1 노드-에서 TCP 서버로 다시 전송하기 위해서는 <AT+CIPSEND=(전송문자길이)>를 입력 후 문자를 넣는 것을 반복합니다.
열번째, TCP 서버에서 WIFI-ON V1 노드-모듈로 문자를 전송합니다.
SerialPortMon 프로그램에서 보내는 문자열 편집창에 "HI, NICE TO SEE YOU!"라고 입력 후 "보내기" 버튼을 누르면 해당 문자가 메시지 차에 표시되고 WIFI-ON V1 노드-모듈에 전송됩니다.
아두이노 시리얼모니터 창에 "+IPD"를 시작으로 받은 문자길이와 ":" 기호 다음으로 문자가 출력됩니다.
받은 문자길이는 공백을 포함합니다.
다음은 위 TCP 서버와 WIFI-ON V1 노드-모듈과 TCP 데이터 송수신에 대한 동영상입니다.
[PC TCP 서버와 WIFI-ON V1 노드-모듈간 TCP 데이터 송수신 동영상]
지금까지 PC에 TCP 서버 프로그램을 구동하고, 해당 TCP 서버와 WIFI-ON V1 노드-모듈 간 TCP 데이터 송수신에 대해 알아보았습니다.
이상으로 포스팅을 마치겠습니다.
감사합니다.