ESP for IOT open2018.09.11 19:15

ESPEasy는 나 처럼 프로그램어를 모르는 사람들도 원하는 디바이스를 이용하여 원하는 형태로 사용가능하도록 도와준다. ESPEasy는 여러 종류의 디바이스를 지원하지만 펌웨어형태로 배포하는 파일의 경우 제한된 장치만을 담고 있다. 하여 좀더 추가적인 장치를 사용하기위해서는 플러그인을 추가로 다운로드하여 커스텀 펌웨어를 만들어야 한다. 




1. 아두이노 IDE 설치 하기


커스텀 펌웨어를 만들기 위해서는 Arduino IDE가 필요하다. 다른 방법도 있는것으로 아는데 나는 이방법밖에 모른다. 

먼저 아래 처럼 아두이노 사이트에 들어가서 Arduino IDE 프로그램을 다운로드 한다. 






윈도 인스톨러를 클릭한 후 아래 처럼 Just Download를 클릭하여 파일을 받는다.




파일을 받은 후 설치한다. (설치과정은 생략)




2. ESP8266용 보드매니저 설치하기


설치가 끝나면 아두이노 IDE를 실행한다. 그리고 아래 사진 처럼 파일 - 환경설정을 클릭한다.






환경설정페이지에서 보드매니저 URL을 추가한다. 주소는 아래와 같다.


http://arduino.esp8266.com/stable/package_esp8266com_index.json






URL을 추가하고 나면 아래 그림 처럼 툴 - 보드 - 보드매니저 메뉴를 클릭한다.






보드매니저 창이 뜨면 제일 하단으로 스크롤한 후에 esp8266용 보드매니저를 최신버전으로 설치하면 된다.



이제 커스텀 펌웨어를 만들기위한 기본적인 준비는 끝났다. 




3. 펌웨어 소스 받기


커스텀 펌웨어를 만들기 위해서는 먼저 기본적인 ESPEasy의 소스가 필요하다. 소스는 아래의 ESPEasy 릴리즈 사이트에서 다운로드하면된다. 



먼저 원하는 릴리즈 버전을 선택한 후 아래 체크박스처럼 Source code(zip) 파일을 다운로드 하면 된다. 





소스 파일을 다운로드하면 적당한 위치로 옮긴 후 압축을 해제한다. 그리고 폴더에 들어가면 아래 처럼 src라는 폴더가 보인다. 





그러면 이 폴더의 이름을 ESPEasy 로 바꾼다. 이때 반드시 대소문자를 구분해서 써야한다.






다음으로 lib폴더로 이동한다.



lib폴더로 이동하면 펌웨어를 만드는데 필요한 라이버러리들이 있다. 이 라이버러리 폴더들을 모두 복사한다.





라이버러리를 복사한 후에는 아래 그림 처럼 아두이노의 libraries 폴더로 이동한 후 복사한 파일을 붙여넣기 해준다.






4. 원하는 추가 플러그인 다운로드 하기


이제 자신이 원하는 플러그인을 다운로드해야 하는데 아래 처럼 ESPEasyPluginPlayground 사이트를 이용하면 된다. 






 예를 들어 아래에 표시된 UV센서인 VEML6070을 추가하려면 _P213_VEML을 클릭하여 코드페이지로 이동한다.







그리고 아래 사진의 체크박스된 Raw를 클릭한다. 






Raw를 클릭하면 아래와 같이 텍스트형식의 페이지로 변하게된다. 그러면 화면에서 우클릭을 하여 다른이름으로 저장 하기를 누른다.





다른 이름으로 저장을 누르면 아래 처럼 다른이름으로 저장하는 창이 뜬다. 그러면 위에서 만들어둔 ESPEasy폴더로 이동하여 형식은 '모든 파일'로 선택하고, 파일이름은 뒤에 '.ino'를 붙여 '_213_VEML6060.ino'로 변경하여 저장한다.




파일을 저장한 후, 아래처럼 폴더에 파일이 생성되어있는지 확인한다.





5. 커스텀 펌웨어 컴파일하기



이제 아두이노 IDE를 이용하여 펌웨어를 컴파일 하면 모든 과정이 끝난다


먼저 위에서 받아놓은 소스코드의 ESPEasy폴더에 들어가서 ESPEasy.ino파일을 더블 클릭하여 실행한다. 







실행하면 아래 처럼 아두이노IDE가 실행된다. 그러면 상단 탭메뉴에서 아래화살표를 탭하여 더하기 메뉴를 불러온다.






아래에 체크박스에 표시된 ESPEasy-Globals.h 클릭하여 이동한다.



*참고로 아래로 이동하여 추가한 VEML6070이 리스트에 나오는지도 확인한다.





편집 메뉴에서 Go to line을 탭하거나 'Ctrl + l'을 눌러 실행창에 154를 입력후 '확인'을 클릭한다.






이곳에서는 펌웨어를 만들때 버전을 선택하는 곳이다. 커스텀 펌웨어로 원하는 플러그 인을 추가할때는 아래처럼 DEV버전으로 만들어 지도록 설정해야 한다. 


154라인으로 이동하면 아래 처럼 코드가 되어있는데 이를 

//build all the normal stable plugins (on by default)

#define PLUGIN_BUILD_NORMAL


//build all plugins that are in test stadium

//#define PLUGIN_BUILD_TESTING


//build all plugins that still are being developed and are broken or incomplete

//#define PLUGIN_BUILD_DEV



다음과 같이 수정한다.

//build all the normal stable plugins (on by default)

//#define PLUGIN_BUILD_NORMAL


//build all plugins that are in test stadium

//#define PLUGIN_BUILD_TESTING


//build all plugins that still are being developed and are broken or incomplete

#define PLUGIN_BUILD_DEV








컴파일하기 전에 먼저 자신이 만들 펌웨어를 적용할 보드를 설정해야 한다. 아래처럼 '툴'메뉴에서 자신이 사용할 보드와 플래시메모리 사이즈와 업로드 스피드, 포트등을 맞게 설정한다. 








이제 마지막으로 상단 '스케치'메뉴에서 '컴파일된 바이너리 내보내기'를 클릭한다. 물론 실제 보드가 컴퓨터에 연결되어있고 포트가 설정되어있으면 '업로드' 메뉴를 이용하여 바로 보드로 펌웨어를 업로드할 수도 있다.






별다른 에러 메세지 없이 아래와같이 컴파일 완료라는 메세지가 뜨면 정상적으로 펌웨어가 만들어 진 것이다.






이제 ESPEasy 폴더로 이동해보면 아래처럼 커스텀 펌웨어가 만들어진것을 확인할 수 있다. 




이렇게 만들어진 커스텀 펌웨어는 배포용 펌웨어에 포함된 FlashESP8266.exe 를 사용하여 배포용 펌웨어를 업로드하듯이 보드에 업로드할 수있다. 단 같은 폴더에 커스텀펌웨어파일이 함께 있어야 한다.

Posted by ShinJjang
ESP for IOT open2018.09.11 14:21

ESP모듈을 사용하다보면 펌웨어오류나 모듈 접속 암호를 잊어버리거나 등등... 으로 초기화 해야하는 경우가 있다.

이경우 esptool.py를 이용해서 초기화하면 된다.


1. Python 2.7설치하기 


먼저 링크로 이동하여 2.7.xx버전을 자신의 윈도우에 맞는 버전으로 설치한다. 




2. esptool 설치


설치후 윈도우의 명령 프롬프트 창을 아래와 같이 띄운후 esptool 을 설치한다.




상위폴더로 이동

C:\Users\Administrator>cd\


파이썬 scripts폴더로 이동

C:\>cd Python27\scripts


esptool 설치

C:\Python27\Scripts>pip install esptool



3. esptool을 이용하여 flash메모리 삭제하기


아래와 같이 삭제 명령어를 이용하여 플래쉬를 초기화 하면 끝이다.


esptool.py --port COM3 erase_flash





Posted by ShinJjang
홈 자동화(lot)2018.09.04 22:50

더운 여름이 이제 거의 지나갔지만 이번 여름은 정말 더웠던것 같다. 에어컨이 없으면 어떻게 했을까? 라는 생각을 이번 여름 내내 했다. 하지만 한편으로는 전기세 걱정때문에 틀고도 마음이 편하지 않았다.



그러다 ST까페에서 에어컨 실외기 수냉시키기 글을 보고 예전에 킥스타터에서 본 미스트 장치(아래)가 떠올랐다. 



댓글에도 링크가 있지만 미스트박스는 가격이 너무 비싸다. 그래서 '한번 만들어 보면 어떨까?' 생각하고 실행에 옮겼다. 





1. 미스트 장치 만들기



먼저 미스트 박스를 만들기 위해서 인공적으로 미스트를 만들어야하고 아래와 같은 장치가 필요하다.


     


미스트 장치 : 미스트 노즐과 펌프, 그리고 정수기용 호스와 이음관, 필터, 밸브 등등





그리고 미스트 장치를 컨트롤하기 위해 Wemos D1, 12V 파워서플라이, 5V 릴레이를 이용해서 아래와 같이 만들었다. 





그리고 아래 처럼 구성하였다. 20리터 물통에 첫번째 사진 처럼 장치를 하고 방수를 위해 하이박스에 펌프를 넣었다. 왼쪽은 침실용 미스트 장치 펌프이고 오른쪽은 거실용 미스트 장치 펌프이다.

 




그리고 미스트 노즐을 케이블 타이로 적절한 위치에 배치하였다. 

 


참고로 처음 3장의 사진은 2주전에 1차로 만들었을때 사진이다. 처음에는 노즐 6개로 만들었는데 이번에 12개로 업그레이드하였고 펌프도 60W에서 15W로 낮추어서 다시 만들었다. 노즐은 조금 작은것 같아 늘렸는데 12개는 너무 많은것 같다. 펌프는 60W는 너무 시끄럽고 출력이 높아서 15W로 낮추었는데 이것도 전혀 모자라지 않은것 같다. 





2. 미스트 장치 제어하기


미스트 장치를 만드는것도 중요하지만 제어하는것 또한 중요하다. 제어를 위해서 Wemos D1에 릴레이를 달아 ST에 연결하였다. 



아래 사진 처럼 ST에서 제어하기 위해 Wemos용 DTH를 만들어 등록했다.


DTH를 만들때 미스트 장치에서 미스트를 계속해서 뿌리는 것은 비효율적이라 작동할때 미스트 작동시간과 휴지 시간을 정할수 있도록 하였다.  그리고 ESPeasy를 이용해서 릴레이를 연결한 후 ESP의 IP주소와 릴레이에 연결된 Pin만 설정해주면 된다. 



또한 에어컨의 전원에 따라 미스트 장치가 작동하는 것이 아니라 실외기가 작동 할때만 미스트 장치가 작동하도록 해야한다. 



그래서 처음에는 도어센서를 이용해 실외기의 작동유무 판단하도록 했는데 아기나무집님의 미커넥터가 샤오미 AC Partner의 실시간 전력량을 리포팅하는 것을 이용해서 가상 스위치로 실외기(시각적 편의를 위해)를 만들었다. 그리고 난 후 Web Core를 통하여 실외기가 켜질때만 미스트 장치가 켜지도록 자동화 하였다.





아래 영상을 통해 확인해보면 알겠지만 실외기가 작동할때만 미스트 장치가 켜지고, 실외기가 작동하지 않으면 미스트 장치는 꺼지게된다. 영상에서는 중간에 리모컨을 이용하여 온도를 올려 실외기가 작동하지 않도록 하였다.




아래 영상은 미스트 장치가 작동하는 영상이다. (뒤쪽 공간이 부족하여 촬영 각도가 좋지 못함)






3. 실제 전기 에너지 사용 비교



무엇보다도 전기에너지 절감에 효과가 있는지가 가장 중요하다. 테스트 결과는 아래와 같다. 


먼저 실험실과 같은 통제된 환경에서 테스트되지 못하기 때문에 정확하지 않을수 있다. 

하지만 변인을 최소화하기 위해 외부 온도 변화가 적은 시간대와 방문을 통해 외부인(가족들)의 출입이 없는 시간대를 택했다. 



아래 두장의 사진을 통해 테스트 시간대에 실외와 실내의 온도변화 그래프이고 거의 변화가 없음을 알 수 있다. 




아래는 미스트 장치를 켜지 않았을때 에어컨의 전력 소비량그래프이다.



아래는 미스트 장치를 작동 시켰을때 에어컨의 소비전력량 그래프이다.



아래는 시각적으로 파악하기 쉽도록 포토샵을 이용하여 두개의 그래프를 중첩하였다. 



프로그램에서 구간의 소비전력량을 구해 주지 않기때문에 위의 그래프를 픽셀단위로 계산하여 면적값을 구하여 전력량을 비교하였다. 

면적값을 일일이 계산하고 더한 값을 종이에 적어두었는데(2주전에) 모르고 버려버렸다. 그래서 결과 값만 알고있다.



미스트 장치를 사용하지 않을때 전기 소비량을 100이라 하면


미스트 장치를 사용할때 전기 소비량은 80이었다.


하지만 미스트 장치(60W)를 사용함으로써 발생하는 전기 소비량이 2였다. 하지만 지금은 15W 펌프로 교체하였기 때문에 0.5로 줄었다. 



따라서 결론적으로 19.5%의 전기 에너지 절감효과가 있었다. 



미스트 박스에서는 20~30%의 에너지 절감효과를 볼수있다고 말한다. 실제로 실험 시간대가 새벽이고 물의 기화열 효과가 적은것을 감안하면 한 낮에는 더 큰 효과가 있을것이라 생각된다.


차후에 추가 테스트를 하게되면 결과를 추가하도록 하겠다.

Posted by ShinJjang