본문 바로가기
Hardware/Home Assistant(라즈베리파이)

DIY IoT 부품 - Sonoff pow r2 개봉기 및 펌웨어 백업(feat. esptool.py 사용법)

by lovey25 2020. 11. 6.
반응형

DIY IoT 환경을 꾸미는데 가장 기본적인 부품은 바로 스마트 스위치인데요. ESP8266 모듈에 릴레이를 붙여서 간단한 스마트 스위치를 만들어 사용해보기도 했습니다만, Sonoff라는 기성품이 있어서 몇 가지 모델 구매해 봤습니다.

Sonoff 제품은 ESP8266 칩셋을 사용하기 때문에 기존 개발 모듈과 거의 동일한 구성을 하고 있습니다. 그리고 제품 내부에 UART 단자도 노출되어 있기 때문에 쉽게 나만의 펌웨어로 교체하고 디버깅이 가능한 장점을 가진 그런 제품입니다. 부품을 하나씩 사서 DIY 스위치를 만들어도 되지만 이미 직접 만드는 것보다 훨씬 높은 수준으로 만들어져 있는 제품이기 때문에 귀찮은 납땜이나 케이스 제작 같은 일을 피하는 대신 몇 천원만 더 쓰면 되기 때문에 나쁘지 않은 옵션이라 많은 분들이 사용을 하시는 것 같습니다.

오늘은 그 중에서도 Sonoff POW R2라는 스위치에 전력 측정 기능이 같이 포함된 제품 살펴보겠습니다.

개봉기

컨트롤 가능한 전류는 최대 15A로 전력값으로는 3500W까지 사용 가능한 제품입니다. 사용방법은 아주 간단합니다. 컨트롤하고 모니터링 하고싶은 전선이 있으면 중간을 싹둑 자르고 Sonoff Pow R2를 끼워 넣으면 됩니다. 

그러면 WIFI 네트워크를 통해서 컨트롤 할수 있는데 공식 어플인 "eWeLink"를 통해서 핸드폰으로 쉽게 사용할 수 있도록 되어있습니다.

제품에는 상태를 표시하는 LED와 리셋버튼이 달려있습니다. 그리고 제품을 보면 하단에 나사가 열수 있는 덮개가 있는데 그 아래로 전선이 지나다닐 수 있는 홈이 있어서 여기를 열어서 입출력 전선을 연결해 주면 됩니다. 일단 테스트를 위해서 전원을 연결해 보겠습니다. 설명서에 나와 있는대로 극성에 주의해서 연결을 해 줍니다.

홈오토메이션을 공부하면서 알게된 사실인데 집에서 사용하는 220V 콘센트에 극성이 있다는 사실입니다. 상식으로 가정에서 사용하는 전기는 교류이기 때문에 코드를 뒤집든 똑바로 끼든 아무런 관계가 없다고 알고 있었는데 그게 아니었습니다. 요즘 대부분 가정집에 콘센트는 이렇게 생겼습니다. 돼지콧구멍 2개 말고 가장자리에 접지를 위한 핀이 양쪽으로 2개가 있습니다. 생긴 모양은 상하 좌우 대칭이라서 플러그를 방향에 관계없이 꽂을 수 있게 되어 있습니다. 그리고 아무렇게나 꽂아도 전자제품이 잘 작동해서 전혀 신경을 쓰지 않았었죠. 하지만 전기력이 실리는 활성선이 있고 그렇지 않은 중성선이 있다고 합니다. 확인하는 방법은 멀티미터로 전지와 각 단자 간의 전압을 찍어보면 되는데요. 활성선은 220V가 나오지만 그렇지 않은 중성선은 약 3V내외의 낮은 전압이 측정됩니다. 이를 기반으로 플러그의 극성을 표시하면 아래 그림과 같습니다. 물론 중성과 활성선은 시공상황에 따라 달라질 수 있어서 확인해 보는 게 좋다고 하네요.

전원을 켜고 리셋버튼을 7초 이상 누르면 페어링 모드로 진입하는데 LED가 3번씩 깜빡깜빡하면 페어링 대기상태입니다.

앱스토어에서 eWeLink라는 앱을 깔아서 가입을 하고 로그인합니다.

그리고 Add버튼을 눌러서 Sonoff Pow R2 를 추가합니다. 와이파이 네트워크를 연결하는 화면은 좀 헷갈리게 되어있는데 SSID를 직접 입력하는 게 아니라 현재 핸드폰이 연결된 네트워크를 자동으로 감지하도록 되어 있습니다. 그래서 Sonoff는 5 GHz 와이파이는 지원하지 않기 때문에 핸드폰을 2.4 GHz 주파수의 와이파이에 연결한 상태에서 진행을 해야 합니다. 전 여기서 어떻게 하는지 몰라서 한참을 헤매었어요. ㅠㅠ

연결이 되고나면 핸드폰에서 전원을 켜고 끌 수 있고 타이머를 사용하거나 조건부 동작을 설정할 수 있습니다. 그리고 Cse7766 센서가 내장되어 흐르는 전력량, 전압, 전류 등 확인이 가능한데 어플에서 수집된 데이터를 바탕으로 통계를 보여주기도 합니다. 아주 편리하게 만들어져 있지만 음... 이 제품을 사용하는 이유는 eWeLink가 아닌 Home Assistant를 컨트롤타워로 이용할 수 있게 개조가 용의 하다는 거니까 어플은 여기까지만 알아보고 하드웨어 쪽으로 더 자세히 알아보겠습니다. 일단 뜯어 뜯어~

케이블 포트 뚜껑을 열어놓은 상태에서 케이스 하판과 상판을 살짝 힘을 주어 당기면 쉽게 분리가 되도록 되어 있습니다. 그리고 보드가 고정되어 있는 나사 4개를 풀면 보드와 케이스 하판이 분리됩니다.

Sonoff Pow R2를 우리 입맞에 맞게 사용하기 위해서는 펌웨어를 새로 올려주어야 하는데요. 그러기 위해서는 컴퓨터와 통신할 포트가 필요합니다. ESP8266 모듈이 그렇듯 UART 단자를 통해서 작업이 가능한데 감사하게도 Sonoff제품은 보드에 UART 포트가 노출되어 있습니다. 연결이 편리하도록 여기에 헤더 핀을 붙여주겠습니다.

케이스 내부 공간이 충분하기 때문에 핀을 달아도 아무런 지장이 없어요.

그럼이제 컴퓨터에 연결해서 어떤 신호가 나오나 살펴볼까요? 컴퓨터에 연결을 하기 위해서 USB to TTL 아답터가 필요합니다. 아두이노에 연결해도 되지만 3.3V 레벨 맞추기 귀찮아서 하나 구입해서 잘 쓰고 있어요.

아답터의 레벨 점퍼를 3.3으로 맞추고 Sonoff와 결선을 VCC, GND 각각 연결해주고 Rx와 Tx는 서로 교차되게 연결합니다. 사실 뭐가 맞는 거다 얘기는 못하는 게 PCB에 적힌 라벨이 잘못된 경우도 있다 하기 때문에 연결해보고 안 되면 Rx/Tx 바꿔서 다시 연결해보는 게 가장 정확합니다.

전 이렇게 연결하고 UART신호를 받으면 바로 뭔가 의미있는 디버그 신호를 볼 수 있으려니 기대를 했었는데요. Sonoff Pow R2 모델은 UART 단자에 전력을 측정하는 센서인 Cse7766이 연결되어 있어서 디버그 신호를 확인할 수 없다는 얘기가 있던데 뭐 중요한 거 아니니까 그냥 넘어가겠습니다.

펌웨어 백업/복구

펌웨어를 백업하고 다시 복구하는 방법은 아래 사이트를 참고했습니다.

 

Backup & Restore Official Firmware of Sonoff WiFi Smart Switches - DO IT YOURSELF BLOG - HOBBYTRONICS PK

Contents: Hardware Requirements Software Requirements Step-by-Step Procedure — Step A — Step B — Step C —- Determine the Flash Size —- Backup / Download Official Firmware ——– Official Sonoff Firmware Binary Files — Step D —- Erase Fla

hobbytronics.com.pk

펌웨어 다운로드 업로드에 esptool이라는 파이썬 프로그램을 사용합니다. 그래서 파이썬이 설치되어 있어야 하는데요. 요즘 파이썬은 거의 다 설치되어 있으니까 파이썬 설치는 넘어가겠습니다. (명령 프롬포트 열어서 "python --version"이라고 입력해서 반응이 있으면 설치가 된 거예요.)

명령 프롬프트를 관리자 권한으로 열어서 아래 명령어를 입력해줍니다. 관리자 권한이 필요한 이유는 펌웨어를 받아서 하드에 저장할 때 읽기 권한이 필요할 수 있어서입니다.

pip install esptool

아래와 같이 후루룩~ 하면서 esptool이 알아서 설치됩니다.

이제 Sonoff를 USB에 다시 연결해주는데요 연결할 때 리셋 버튼을 누른체로 연결하고 마음속으로 3초정도 기다렸다가 리셋버튼을 놓습니다. 이렇게 하면 Sonoff의 esp8266 칩이 프로그래밍 모드로 진입한다고 합니다. 그리고 아래 명령어를 입력해 줍니다.

esptool.py -p COM5 flash_id

연결된 포트번호는 상황에 따라 다르기 때문에 확인해서 맞는 번호로 고쳐주세요.

여기까지 이상이 없다면 위와 같은 결과를 볼 수 있는데요. 여기서 확인해야 할 부분은 바로 플래시 메모리 크기입니다. 맨 아래에서 두 번째 줄에 메모리 크기는 4MB라고 나와있죠. 여기에 맞게 펌웨어를 백업하고 다시 복구하고 하면 됩니다.

Sonoff 펌웨어 백업

이번에는 위에서 알아낸 플래시 크기를 바탕으로 기계에 설치된 펌웨어를 백업받아 보겠습니다. 먼저 Sonoff를 USB에서 분리했다가 다시 리셋 버튼을 누르고 연결해서 프로그래밍 모드로 진입합니다.

esptool.py -p COM5 read_flash 0x00000 0x400000 image4M.bin

위 명령어를 입력하면 설치되어 있는 펌웨어를 내려받을 수 있습니다. 여기서 우리는 플래시 사이즈가 4MB란 걸 확인했으니 두 번째 주소 값 인자가 0x400000가 되었습니다. 마지막 인자는 내려받은 펌웨어를 저장할 때 사용할 파일명입니다. 적당한 이름을 지정하면 됩니다.

이제 펌웨어 백업이 완료되었습니다.

Sonoff_Pow_R2_4M.bin
4.00MB

이제 백업된 펌웨어를 다시 업로드 해서 문제가 없는지 확인해 보겠습니다.

펌웨어를 올리기 전에는 플래시를 한번 깨끗이 청소해 주는 게 좋습니다. 메모리를 지우는 명령을 입력합니다.

esptool.py --p COM5 erase_flash

이제 백업된 펌웨어를 다시 올려보겠습니다. 아래 명령어를 입력하기 전에 Sonoff가 프로그래밍 모드에 진입해 있는지 확인해주세요.

esptool.py --p COM5 write_flash -fs 4MB -fm dout 0x0 image4M.bin

업로드가 완료되고 나서 리부팅을 시켜보니, 처음 구매 시와 동일한 상태로 잘 동작하네요. 이제 펌웨어도 바꾸고 마음대로 활용해 볼 준비가 끝난 것 같습니다.

 

끝!

반응형

댓글