안녕하세요.
지난번 ESP8266 관련해서 질문하셨던 분이 있어서 간단히 테스트 해보고 올려봅니다.
팁이라 올려놓고 너무 불친절한것 같아 요번에는 사진 좀 첨부 합니다..
원래 sonoff 스위치 라는 놈은 모델이 다양하게 있습니다. (찾아보니..듀얼부터 4개짜리, RF, 온도까지..)
https://www.itead.cc/sonoff-wifi-wireless-switch.html
제가 구입한 놈은 이놈이고 알리에서 싼거로 구매하였습니다.
***주의 사항***
장치 프로그래밍 시, 테스트 중에는 전원 연결을 가능한 하지 마시기 바랍니다.
감전의 우려가 있습니다. 전원 연결 후 사용시에는 너무 쉽게 분해되는 구조라 가능한 같이 들어있는
덮개를 나사로 고정후에 사용 바랍니다.
3.3v단자만 연결해주어도 동작은 잘하니, 테스트 시에는 가능한 전원연결은 삼가시는 걸로...
반드시 주의 바랍니다.
가장 기본적인 모델이고 펌웨어 수정 방법이 자세하게 인터넷에 알려져 있는 것 같습니다.
시작해봅시다. 작업시간은 약 15분 정도? 익숙해지면 업로드 시간이 더걸릴것 같습니다...
그나저나 글 사이에 사진 어떻게 넣나요...웹에디터 사용법을 모르니 불편하네요...
1. 사전 준비
- 하드웨어
첨부한 사진(준비물.jpg)의 준비물을 준비하시면 됩니다.
1) sonoff 스위치 (타입은 상관없습니다. 일반형도 다른 것도 동일한것 같습니다. GPIO만 확인하셔서 사용하시면 됩니다.)
2) USB-TTL 컨버터 (아두이노 가지고 계신분은 아두이노로 사용하시면 됩니다. 저도 아두이노로..)
3) 핀헤더 (그냥 선으로 납땜 하셔도 상관없습니다만 재사용 편의성을 위해서..)
4) 점퍼선 (프로그램 업로드시 사용, 선으로 하셔도 상관없습니다.)
- 소프트웨어 (제 이전글을 참고하시면 됩니다...)
1) 아두이노 IDE 환경 (ESP8266 보드 환경 추가 필요)
2) 관련 라이브러리 (fauxmo, asyncTCP... 생각나는건 이정도...
2. 하드웨어 구성하기
1) sonoff 스위치 분해 (쉽게 분해됩니다. 분해사진.jpg 참고)
2) 시리얼 통신용 구멍이 5개 보입니다.
3) 핀헤더를 납땜합니다.
4) 스위치 측 부터 3.3V, TX?, RX?, GND, GPIO14순입니다.
3. 프로그램 넣기
1) USB-TTL 컨버터 연결
1-1) 아두이노 사용하기
1-2) 아두이노의 RST 핀과 GND를 연결합니다.
1-3) 사용할 점퍼 선을 3.3V, GND, TX, RX에 연결해 놓습니다.
1-4) 이제 아두이노를 USB-TTL 컨버터로 사용이 가능합니다.
2) sonoff 스위치의 핀헤더 TX, RX, GND 를 컨버터 와 연결합니다.
3) sonoff 스위치의 핀헤더에 3.3v를 그냥 연결해봅니다. [동작점검]
(LED 가 깜빡거리거나, 켜져있으면 아마도 정상동작 하는 것으로...전 깜빡였습니다..)
4) 3.3V 선을 다시 뺍니다.
5) sonoff 에 불쑥 솟아있는 버튼을 누른 상태로 3.3V 선을 연결합니다. [플래싱 모드]
(제대로 되면 녹색 LED가 들어오지 않습니다.)
6) USB-TTL컨버터(아두이노)를 PC에 연결합니다.
7) 아두이노 IDE를 실행합니다.
8) 첨부된 소스(.ino 확장자) 또는 작성한 프로그램을 엽니다.
9) 첨부된 사진 (아두이노환경설정.jpg) 대로 설정을 합니다.
10) 첨부된 소스를 사용하였다면 소스의 세가지 항목을 변경합니다.
10-1) WIFI_SSID 느낌표 안에 접속할 공유기의 ssid
10-2) WIFI_PASS 느낌표 안에 접속할 공유기의 패스워드
10-3) SWITCH_NAME 느낌표 안에 에코에서 사용될 장치의 호칭(이름)
11) CTRL-U를 눌러 컴파일+업로드를 실행합니다.
12) 커피 한잔 마시고 옵니다...(좀 걸려요.)
13) 업로드 도중에 아두이노 쓰시는 분들은 RX,TX가 깜빡이는지 확인합니다.
14) 업로드가 실패하였다면 RX,TX선을 서로 바꾸어 연결한 후 5번 부터 다시 시작합니다.
15) 업로드가 성공하였다면 LED 램프가 깜빡이고 있을 겁니다..
4. 테스트
1) 아두이노의시리얼 모니터 (근데 가끔씩 시리얼 모니터가 안될때가 있네요..)
또는 공유기에서 sonoff가 접속된 IP를 확인합니다.
2) 익스프로러 또는 크롬에서 접속된 IP를 ㅇㅂ력하여 웹페이지를 띄워 놓습니다..
3) 에코에 장치 찾기를 명령합니다. (알렉사, 파인드 마이 디바이시즈)
4) 장치 찾기가 끝나면 명령해봅니다..
"알렉사, 턴 온 장치이름" 또는 "알렉사, 턴 장치이름 온"
5) 웹에서 조작 가능하도록 넣어놨습니다.
끄기 http://장치IP/change?name=장치명&state=OFF
켜기 http://장치IP/change?name=장치명&state=ON
상태 얻기 (JSON) http://장치IP/poll
메인 페이지 접속 http://장치IP
6) 반짝이는 LED 가 거슬리다면 소스 중 LED_DELAY_TIME 시간을 수정합니다.
ms 단위 입니다. 그냥 켜놓을려면 0으로 하시면 될것 같기도..
아무리 봐도 그냥 따라하는 수준은 아닌거 같고... ㅠㅠ
ESP8266용 개발 환경 좀 찾아봐야 겠네요~
개인적으로도 HUB 없는 Wifi 기반 IOT를 구축중이었던지라...
다만 wifi device가 매우 늘어나도 홈 라우터가 잘 버틸지와, 보안 문제가 걸였었었네요.
좋은 정보 감사합니다
https://bitbucket.org/xoseperez/espurna/wiki/Home 이것도 따라해 볼계획입니다.
막히면 문의좀 드리겠습니다
------------------------------------------------------------------------------------------------
In file included from C:\esp_iot_sw_rev2\esp_iot_sw_rev2.ino:2:0:
C:\Users\User\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\ESP8266WebServer\src/ESP8266WebServer.h:30:19: note: previous declaration 'HTTPMethod HTTP_ANY'
enum HTTPMethod { HTTP_ANY, HTTP_GET, HTTP_POST, HTTP_PUT, HTTP_PATCH, HTTP_DELETE, HTTP_OPTIONS };
^
exit status 1
보드 Generic ESP8266 Module 컴파일 에러.
시력이 떨어진 것일까요? ^^