사물인터넷(IoT)2016. 3. 14. 14:21

이전 포스팅 [아두이노] 와이파이 모듈 ESP8266 펌웨어 업데이트 에서 ESP8266 펌웨어를 아두이노와 연결하여 소프트웨어 시리얼을 통하여 펌웨어를 업데이트 하는 방법을 알아보았다. 이번엔 AT 커맨드를 이용하여 ESP8266을 와이파이 공유기에 연결하는 방법을 알아보겠다. ESP8266 AT Command에 대해서는 다음의 URL을 참고하면 자세히 할 수 있다.


http://room-15.github.io/blog/2015/03/26/esp8266-at-command-reference/#AT


아두이노와의 연결은 펌웨어 업데이트 시와 동일하지만 펌웨어 업데이트 모드로 진입하기 위해서 연결했던 GPIO0에 연결했던 선은 뽑아주어야 아래의 실습을 할 수 있다. 결선도를 다시 그리자면 아래과 같다. 만약 펌웨어 업데이트가 되어있지 않다면 [아두이노] 와이파이 모듈 ESP8266 펌웨어 업데이트 글을 참고하여 펌웨어를 먼저 업데이트 하여야 한다.


Fritzing 파일: 

ESP8266_AT_Command.fzz


연결


Arduino  /   ESP8266

Tx  ------- Tx

Rx  ------- Rx

3.3V ------ CH_PD & 3.3V (VCC)


위와 같이 연결하고 아두이노를 PC와 연결한다. 아두이노 IDE를 실행하고 시리얼모니터를 열어 Baud Rate를 9600으로 설정하고 표시방식을 'Both NL & CR'로 설정한다.


1. 동작확인과 펌웨어 버전의 확인

- 'AT' 를 입력하여 OK 메시지가 리턴되면 정상적으로 동작하고 있다는 뜻이다.

- 'AT+GMR' 을 입력하면 ESP8266 의 현재 펌웨어 버전을 알려준다.





2. 와이파이 연결

ESP8266은 아래와 같이 3가지 모드를 지정해 줄 수 있다.

1번 : Station(Client)

2번 : AP(Host)

3번 : Station / AP  Dual 모드


AP는 집에 있는 와이파이 신호를 제공해 주는 공유기(라우터)를 생각하면 되고 Station은 와이파이 신호를 연결해서 사용하는 스마트폰을 생각하면 된다.


모드의 변경은 다음의 명령어로 전환한다.

'AT+CWMODE=1'  --->  Station Mode

'AT+CWMODE=2'  --->  AP Mode

'AT+CWMODE=3'  --->  Dual Mode


현재 모드의 확인은 다음의 명령어로 한다.

'AT+CWMODE?'



우선, ESP8266을 Station 모드로 와이파이 공유기에 접속을 하기 위해 ESP8266을 Station 모드로 전환한다.


모드를 Station으로 변경했으면 연결 가능한 와이파이를 찾는다. 와이파이를 찾는 명령어는 'AT+CWLAP' 명령어로 찾을 수 있다.


위와 같이 연결 가능한 AP 리스트가 뜨게 된다. 괄호 안의 값의 의미는 좌측부터 다음과 같다.


검색된 AP 중에서 집에 있는 공유기인 deneb2.4g 에 연결을 하려고 한다.

연결 명령어는 AT+CWJAP="SSID of AP","Password" 이다. 현재 연결된 AP를 보려면 'AT+CWJAP?' 을 입력하면 된다.


공유기에 제대로 연결되었는지 IP 확인을 해보자. 연결된 IP의 확인은 'AT+CIFSR' 명령어를 이용하면 된다.



ESP8266에 Ping 을 해 보았다.


한 번 설정된 접속정보는 ESP8266 메모리에 저장되어 전원을 껏다 켜도 자동으로 접속하게 된다.


AT 커맨트 요약정리 - 출처: https://nurdspace.nl/ESP8266



위와 같이 공유기에 잘 연결이 되어 IP도 뜨고 ESP8266에 Ping 도 된다. 이제는 어떻게 서버 또는 클라이언트와 연결해서 활용하는냐만 남은 것이다. 유튜브나 인터넷을 검색해보면 많은 이들이 벌써 원격지에서 집의 전등을 ON/OFF 한다거나 릴레이를 컨트롤 하여 여러가지 전자제품을 컨트롤 하는데 활용하고 있다.


예전에 본 미드 빅뱅이론의 한 장면이 생각난다. 공학도인 주인공들이 미국에서 지구반대편에 있는 전등을 인터넷을 통해서 켜고 끄면서 즐거워 하던 장면이다.  ESP8266을 잘 활용하면 이런 것이 가능한 것이다. IoT로 들어가는 첫단계 라고나 할까?


이제 와이파이 모듈이 어떻게 동작하고 연결되는지 기본적인 것은 익혔으니 다음 부터는 작은 프로젝트들을 실행해 볼까 한다.

반응형
Posted by 대네브 (deneb)

댓글을 달아 주세요

  1. 티나포야

    올려주신 포스팅으로 esp8266펌웨어 성공했습니다.
    제가 인체감지 센서로 감지 후 esp8266으로 와이파이 통신을 통해 모바일로 확인 가능한 제작을 하고자하는데
    펌웨어 완료후 다음 단계가 이 단계가 맞는지 궁금합니다

    2016.11.16 22:57 [ ADDR : EDIT/ DEL : REPLY ]
    • 제 블로그가 학습순서에 맞게 쓰여진건 아니지만 아두이노+esp8266을 하고 계신다면 펌웨어 업데이트 후 이 단계에서처럼 통신을 테스트 해 보는게 좋겠죠. 통신원리 파악 후 원하는 센서를 하나 하나 붙여가면서 공부하시면 됩니다.

      2016.11.17 08:32 신고 [ ADDR : EDIT/ DEL ]
  2. 프로페서킴

    올료주신자료 정말 도움이 많이 되고 있습니다. 감사합니다. 다 잘되는데 마지막 AT+CWJAP wifi연결 OK 후 AT+CIFSR하면 뻗어버리네요 AT 조차도 안먹힙니다. 몇번을 초기화 후 펌웨어를 해도 동일증상이네요 ESP8266이 손상됐다고 봐야할까요?

    2016.11.25 14:05 [ ADDR : EDIT/ DEL : REPLY ]
    • http://deneb21.tistory.com/269 이 글 보고 펌웨어 설치 하셨나요? 이게 좀 위험한 방법이라서요. 다행히 저는 계속 해도 이상이 없었지만... 초기화해도 계속 그렇다면 결국 모듈의 이상을 생각하지 않을 수 없네요. 다음에 하실땐 http://deneb21.tistory.com/345 이 글에 나오는 FT232RL 칩을 이용한 USB UART 모듈을 사용해서 펌웨어 작업을 해 주시는게 안전합니다.

      2016.11.25 17:06 신고 [ ADDR : EDIT/ DEL ]
  3. 도토리

    덕분에 와이파이 연결 무사히 완료 하였습니다.
    질문이 하나 있는데 장치를 다른 와이파이가 있는 장소로 옮길 경우
    개발자 입장에서는 같은 방법으로 계속 설정해주면 되지만 사용자 입장에서는 그게 힘들다고 생각됩니다.
    휴대폰 와이파이처럼 공개된 와이파이신호라면 자동으로 잡을수 있는 방법은 없을까요?

    2017.05.20 12:47 [ ADDR : EDIT/ DEL : REPLY ]
    • 저도 거기까지는 생각을 안 해봤습니다. 하지만 위에 있는 at 커맨드와 다른 at 커맨드를 적절하게 이용하면 가능할것 같네요. at 커맨드도 꽤 다양한 명령들이 있거든요.

      2017.05.20 13:34 신고 [ ADDR : EDIT/ DEL ]
  4. 와이파이 모듈에 관해서 아주 자세히 적어주셔서 열심히 참고하고 있습니다.

    다만 여기서 '핑을 해보았다' 라는 문장이 이해가 안가는데 혹시 무슨 뜻인지 알 수 있을까요?

    2020.09.10 16:52 [ ADDR : EDIT/ DEL : REPLY ]
    • 답변은 링크로 대신할께요 ^^
      https://m.terms.naver.com/entry.nhn?docId=1180204&cid=40942&categoryId=32852

      2020.09.10 17:26 신고 [ ADDR : EDIT/ DEL ]
  5. 탈모증상초기

    안녕하세요! 좋은 글 정말 감사합니다. 다름이 아니라 저는 ESP-01 Adapter를 사용하고 있어서 펌웨어는 따로 업데이트를 하지 않았고 바로 AT명령어를 사용하였는데요, 시리얼 모니터 내에서는 모든 게 정상적으로 OK라고 나오는데 ping test 시, 보냄 4개 중 손실 4개로 100% 손실이 나는 상황인데 무엇이 문제일까요..?

    2020.11.26 02:52 [ ADDR : EDIT/ DEL : REPLY ]