2015년 2월 17일 화요일

ESP8266 동작시키기 3

먼저 자신의 PC에서 ip주소를 확인하고 ESP8266을 PC와 동일한 무선 네트웍에 연결시켜 준다.

맥 터미널에서 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

이제 맥의 화면에서 엔터를 누르면 시리얼 터미널 화면에 수신된 데이터가 표시된다.

+IPD,4,1:         4번 connection으로 1 바이트 데이터가 수신되었음. 내용은 엔터라 화면에는 따로 표시된 내용은 없음

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


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 이다.




댓글 없음:

댓글 쓰기