맥 터미널에서 ifconfig 명령으로 자신의 IP를 확인. (여기서는 192.168.1.5임)
$ ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
....
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 20:c9:d0:80:91:19
inet 192.168.1.5 netmask 0xffffff00 broadcast 192.168.1.255
nd6 options=1<PERFORMNUD>
...
$
시리얼 터미널에서 ESP8266을 맥이 연결된 공유기에 연결 (ESP8266의 IP는 192.168.1.6)
AT
OK
AT+CWMODE=3
OK
AT+CWLAP
...
+CWLAP:(0,"ollehWiFi",-84,"00:1d:93:23:d6:2e",1)
+CWLAP:(0,"TESTAP",-89,"00:08:5b:77:e8:da",3)
+CWLAP:(3,"starbucks_ap_2.4g",-70,"30:52:5a:11:2d:43",3)
...
OK
AT+CWJAP="TESTAP","testpassword"
OK
AT+CIFSR
+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"1a:fe:34:98:83:3b"
+CIFSR:STAIP,"192.168.1.6"
+CIFSR:STAMAC,"18:fe:34:98:83:3b"
OK
1. TCP 클라이언트로 동작하기
먼저 맥에서 nc(netcat)를 사용해 TCP 서버를 실행시켜 논다.
$ nc -l 8000
그 다음 시리얼 터미널에서 ESP8266을 클라이언트로 동작시킨다.
AT+CIPMUX=1 multiple connection이 가능하도록 설정
OK
AT+CIPSTART=4,"TCP","192.168.1.5",8000 192.168.1.5의 8000번 포트로 TCP 커넥션을 연결. connection 번호는 4
4,CONNECT
OK
AT+CIPSEND=4,5 4번 connection으로 5바이트의 데이터를 전송
> hello 전송할 데이터 입력
SEND OK
hello의 마지막 'o'를 누르는 순간 hello라는 5바이트의 데이터가 전송되고 맥의 화면에 hello라는 글자가 찍히게 된다.
$ nc -l 8000
hello
이제 맥의 화면에서 엔터를 누르면 시리얼 터미널 화면에 수신된 데이터가 표시된다.
OK
맥에서 welcome을 입력하고 엔터를 누르면 시리얼 터미널 화면에 8 바이트 데이터가 수신되었다는 표시와 함께 수신된 데이터(welcome)이 표시된다.
+IPD,4,8:welcome
OK
맥에서 Ctrl-C를 눌러 nc를 종료시키면 connection이 종료된다.
4,CLOSED
OK
2. TCP 서버로 동작하기
기본적으로 클라이언트로 동작하기와 동일하게 공유기에 연결한 후 시리얼 터미널에서 명령을 입력한다.
AT+CIPMUX=1 multiple connection이 가능하도록 설정
OK
AT+CIPSERVER=1,5000
OK
5000번 포트에 TCP서버를 오픈해서 연결을 기다리는 상태 (첫번째 파라미터는 모드로 1로 해 줌) 이제 맥에서 netcat을 이용해 ESP8266의 서버에 연결한다.
$ nc 192.168.1.6 5000
시리얼 터미널에 클라이언트(맥)와 연결이 되었음을 알려준다.
0,CONNECT
이제 맥에서 보내고 싶은 데이터를 입력한 후 엔터를 입력
$ nc 192.168.1.6 5000
hello from mac
시리얼 터미널에 0번 connection으로 15바이트의 데이터가 수신되었고 내용은 'hello from mac'임이 표시됨
+IPD,0,15:hello from mac
OK
서버(ESP8266)에서 클라이언트로 데이터를 보내기 위해서 시리얼 터미널에서 다음과 같이 입력
AT+CIPSEND=0,8
> welcome
SEND OK
맥 화면에 수신된 데이터가 표시됨
$ nc 192.168.1.6 5000
hello from mac
welcome
이런식으로 데이터를 송수신하면 된다. 맥에서 Ctrl-C를 눌러 nc를 종료하면 connection이 종료된다.
0,CLOSED
OK
5000번 포트에 TCP서버를 오픈해서 연결을 기다리는 상태 (첫번째 파라미터는 모드로 1로 해 줌) 이제 맥에서 netcat을 이용해 ESP8266의 서버에 연결한다.
$ nc 192.168.1.6 5000
시리얼 터미널에 클라이언트(맥)와 연결이 되었음을 알려준다.
0,CONNECT
이제 맥에서 보내고 싶은 데이터를 입력한 후 엔터를 입력
$ nc 192.168.1.6 5000
hello from mac
시리얼 터미널에 0번 connection으로 15바이트의 데이터가 수신되었고 내용은 'hello from mac'임이 표시됨
+IPD,0,15:hello from mac
OK
서버(ESP8266)에서 클라이언트로 데이터를 보내기 위해서 시리얼 터미널에서 다음과 같이 입력
AT+CIPSEND=0,8
> welcome
SEND OK
맥 화면에 수신된 데이터가 표시됨
$ nc 192.168.1.6 5000
hello from mac
welcome
이런식으로 데이터를 송수신하면 된다. 맥에서 Ctrl-C를 눌러 nc를 종료하면 connection이 종료된다.
0,CLOSED
3. Wifi Access Point로 동작하기
AP에 필요한 설정을 해 준다.AT+CWSAP="myesp8266","testpassword",3,0
OK
첫번째 myesp8266은 무선랜의 SSID이고 두번째 파라미터 testpassword는 암호, 세번째 파라미터는 무선랜 채널(여기서는 채널 3), 마지막 파라미터는 암호화 방법이다. 0은 암호화를 하지 않는것이다. 다만 아직까지의 펌웨어에서는 암호화를 지원하지 않는다.
AT+CWMODE=3
OK
CWMODE는 2 또는 3으로 설정. 이제 컴퓨터나 스마트폰에서 무선랜을 검색해 보면 myesp8266이라는 SSID의 무선랜이 보이게 된다.
AT+CWLIF
OK
AT+CWLIF는 현재 AP에 연결된 디바이스의 목록을 보여준다. 위에서는 아직 하나도 연결한 디바이스가 없어 빈칸이 출력되었다. 장치가 연결되면 위의 서버 예제나 클라이언트 예제를 사용해 연결된 디바이스와 통신을 할 수 있다.
그리고 ESP8266이 AP로 동작하는 경우 ESP8266의 IP는 항상 192.168.4.1 이다.
댓글 없음:
댓글 쓰기