본문 바로가기

Hardware/MCU(Arduino,ESP8266)53

ESPHome 개발환경 구축 ESPHome은 제가 참 좋아하는 IOT 설루션입니다. ESP8266 모듈과 함께 하면서 원래 아두이노로 하던 프로젝트까지도 모두 ESPHome으로 다시 뒤집어엎을 정도로 주로 사용하고 있습니다. 워낙 잘 만들어져 있고, 업데이트도 부지런히 이루어지고 있어서 뭐 더 바랄 게 없지만 가~끔 거의 1년에 1번 될까 말까 한 빈도로 소스를 좀 고쳐보면 어떨까 하는 그런 상황이 생길 때가 있습니다. 그러면 저 같은 경우 시도했던 방법이 ESPHome 공식 저장소를 포킹 한 다음 소스코드를 살짝 수정하고 Home Assistant(HA)에 수정한 저장소를 연결해서 새로운 Addon을 설치하고 잘 되는지 확인을 하는데요. 이렇게 하면 오타 나서 글자 하나 수정하려고 해도 HA에 깔아놓은 수정된 ESPHome을 지웠.. 2022. 4. 7.
TASMOTA 기초 사용법 저는 NodeMCU의 펌웨어로 ESPHome을 계속 사용해 왔습니다. 처음 접한 것이기도 하고 제가 활용하고자 하는 방향에 아주 딱이라서 다른 걸 써 볼 생각을 하지 않았습니다. 그런데 IOT관련 내용들을 보다 보면 Tasmota라는 이름을 쉽게 접할 수 있습니다. 그래서 Tasmota는 어떻게 사용하는 건가 궁금해서 한번 맛만 보려 합니다. ESP 모듈의 펌웨어로 사용할 수 있는 도구들은 Tasmota나 ESPHome 말고도 다양한 설루션이 존재합니다. 각각 기능별 특색이 있어서 목적에 맞게 골라서 사용하면 될 것 같은데요. 그중에서도 IOT, Home Automation에 잘 맞는 건 ESPHome과 Tasmota인 것 같았습니다. Tasmota가 ESPHome과 가장 큰 차이점이라고 다목적의 범용 .. 2021. 12. 31.
GUI로 esptool.py를 편리하게 (NodeMCU PyFlasher, ESPHome-Flasher) ESPHome을 사용하는 디바이스를 하나씩 늘려갈 때 귀찮은 작업 중 하나가 바로 컴파일 한 바이너리 파일을 디바이스로 업로드하는 과정입니다. 디바이스에 이미 OTA 서비스가 동작하고 있으면 문제가 안되지만, 새로 구매한 디바이스의 펌웨어를 새로 설치해야 할 때는 유선으로 업로드해줄 수밖에 없죠. 이런 귀찮은 상황에서 한 가지 반가운 것은 ESPHome dashboard가 최근에 업그레이드되면서 컴파일한 파일을 디바이스로 올릴 수 있는 옵션 하나가 추가가 되었습니다. 코드 편집 화면에서 "Install"버튼을 눌러보면 팝업창이 뜨면서 어떤 방법으로 설치를 할지 확인하는 절차가 생겼는데요. 그중에서 2번째 "Plug into this computer"라는 옵션이 있습니다. ESPHome dashboard를.. 2021. 12. 22.
아두이노 + ESP8266으로 무선으로 확인하는 오실로스코프 (Arduino -Web Oscilloscope 수정) 남아서 돌아다니는 아두이노와 wifi모듈을 이용해서 오실로스코프를 흉내 내 볼 수 있는 아주 재미난 설루션이 있어서 공유합니다. 배경 아두이노 등의 보드를 다루다 보면 디버깅이 지원되지 않는 환경에서 원하는 동작이 되지 않을 때 뭐가 문제인지 몰라서 답답하는 적이 있습니다. 이럴 때 아주 가~끔 오실로스코프가 있으면 확인해 볼 수 있을 것 같은데 라는 생각을 할 때가 있습니다. 물론 그 아주 가~끔의 활용도를 위해서 비싼 돈을 들여서 오실로 스코프를 사는 건 배보다 배꼽이 더 큰 상황이기 때문에 다른 방법을 찾게 되는데요. 오늘 소개할 설루션은 바로 이런 상황에서 사용해 볼 수 있을 유용한 팁 되겠습니다. Arduino - Web Oscilloscope (support trigger) - PHPoC Fo.. 2021. 12. 16.
벽돌이 된 wemos d1 mini 소생시키기 wemosd d1 mini 모듈이 벽돌이 되었을 때 해결하는 방법입니다. 컴퓨터에서는 모듈의 USB 인식에 아무런 문제가 없지만 esptool에서 모듈 정보를 전혀 읽어오지 못하고 펌웨어를 리셋하려고 해도 계속 에러만 발생합니다. Wemos D1 모듈은 USB로 연결을 했을 때 자동으로 펌웨어 프로그래밍 모드로 전환을 해주지만 부팅 모드 전환에 문제가 발생하기 때문에 이런 현상이 생기는 것 같습니다. 아두이노 IDE에서 가장 기본적인 옵션으로 업로드를 시도해봐도 아무런 효과가 없습니다. 해결책 만약 하드웨어상 문제가 없다면 이럴 때는 모듈을 부팅할 때 강제로 프로그래밍 모드로 진입할 수 있도록 해주면 됩니다. 방법 1 GND-D1포트를 연결한 상태에서 USB에 연결해줍니다. ESP8266을 다운로드 모드.. 2021. 12. 12.
온풍기용 스마트 콘센트 업그레이드 - WebSocket으로 동적 제어 및 센서값 기록하기 배경 ESP8266 모듈을 사용하는 데 있어서, 제 수준에서는 나름 끝판왕 프로젝트라고 할 수 있을 것 같습니다. 얼마 전에 캠핑장에서 사용하는 온풍기를 온도에 따라 자동으로 끄고 켜주기 위해서 릴레이를 ESP8266 모듈 중 하나인 wemos d1 mini에 연결하고 온습도 센서도 연결해서 온도 값에 따라서 온풍기가 연결될 릴레이를 컨트롤하는 프로젝트를 했던 적이 있었습니다. 프로젝트에 대한 상세는 아래 링크를 참고해 주세요. 온풍기 자동 온도조절용 스마트 콘센트 DIY 2021-06-03 update log: 캠핑장 실 사용 후기 추가 ESP8266 모듈을 활용한 새로운 프로젝트 캠핑용 온풍기를 온도조절이 가능하도록 하는 스마트 플러그를 만들어볼까 합니다. 지난번에 캠핑용 온풍기를 kwonkyo.ti.. 2021. 9. 18.
온풍기 자동 온도조절용 스마트 콘센트 DIY 2021-06-03 update log: 캠핑장 실 사용 후기 추가 ESP8266 모듈을 활용한 새로운 프로젝트 캠핑용 온풍기를 온도조절이 가능하도록 하는 스마트 플러그를 만들어볼까 합니다. 지난번에 캠핑용 온풍기를 리뷰한 적이 있었는데 이 온풍기의 단점은 전원 스위치 외에는 아무것도 없어서 주변 온도에 관계없이 전원이 켜져 있으면 따뜻한 바람이 계속 나온다는 겁니다. 온풍기를 사용하면 공기가 건조해지기 때문에 어느 정도 공기가 따뜻해지면 온풍기를 끄고 싶은데 그럴 수 없어서, 온도에 따라 온풍기의 전원을 제어할 수 있는 방법을 찾아보게 되었습니다. 캠핑 필수아이템 미니 온풍기, 툴콘 CODE26 후기 코로나 사태가 장기화되면서 캠핑 다니시는 분들 많으시죠? 저도 작년부터 캠핑을 시작한 캠린이입니다. 하.. 2021. 5. 28.
ESP8266, Watchdog (wdt reset error) Watchdog은 esp8266 시스템을 모니터링하는 도구로써 정해진 시간이 지나면 시스템을 리셋하는 기능을 합니다. 그래서 의도치 않은 에러가 발생하거나 무한루프에 빠져서 시스템 로직이 멈추게 되면 watchdog이 개입을 해서 esp8266 전체 시스템을 리부팅하게 됩니다. 반대로 말하면 시간이 오래 걸리는 로직을 수행할 때 시스템이 정상적으로 계속 작동하기 위해서는 watchdog이 발동하기 전에 watchdog timer(wdt)를 계속 리셋해주어야 합니다. ESP8266에는 두 가지 종류의 wahtchdog이 있는데 Software와 Hardware watchdog입니다. Software watchdog Software watchdog은 다음과 같이 무한루프에 빠지게 되면 발동이 되는데요. 꼭 .. 2020. 12. 9.
배터리를 사용하는 아두이노 프로젝트에 배터리 잔량 표시하기 리튬 폴리머 배터리를 사용해서 휴대용으로 만들어 본 미세먼지 측정기에 배터리 잔량을 표시하는 기능을 추가하였습니다. 배터리가 얼마나 남아있는지 알 수가 없었기 때문에 들고나갔다가 갑자기 꺼져버리게 되면 요즘은 micro-USB 단자를 충전할 수 있는 곳이 없기 때문에 난감해집니다. 아두이노 휴대용 미세먼지 측정기 만들기 완결편 - 아두이노 나노, PMS7003 센서, Nextion LCD, 3D프린� 2020-03-16 update log: 결선도 수정(아두이노 나노에서 5V외부입력 사용시 5V단자를 사용해야 함, Vin단자는 7V이상 전원 사용) 배경 지금 이 글을 쓰고 있는 2019년 7월 벌써 1주일이 넘게 미세먼지가 나�� kwonkyo.tistory.com 그래서 아두이노에 아날로그 단자를 이용.. 2020. 12. 7.
ESP8266 모듈로 무선(WiFi) 시리얼 모니터링 http://blog.daum.net/pg365/276 아두이노, ESP8266 등 MCU를 이용한 프로젝트를 할 때 디버깅의 중요한 툴 중 하나가 바로 시리얼 모니터입니다. 결과도 확인하고 컨트롤도 하고 여러 방면으로 많이 쓰이죠. 그런데 기본적으로 시리얼 연결은 USB를 통하는 방법을 가장 많이 사용하는데 유선으로 연결해야 하니 여러 가지 제약이 많습니다. 그래서 WiFi로 거리의 제약 없이 연결할 수 있는 방법을 찾아봤습니다. 무선 연결 방법으로는 BT나 WiFi를 이용하는 방법이 있을 수 있는데 BT를 이용하는 방법은 매우 간단합니다. BT에는 SPP(Serial Port Profile)란 프로파일이 있어서 Rx, Tx를 서로 연결만 해주면 간단하게 데이터를 주고받을 수 있기 때문에 BT모듈의 기.. 2020. 11. 23.
전압 분배 회로 계산기 동작전압이 3.3V 인 ESP8266 보드를 많이 사용하다보니 센서 전압이 높아서 전압 분배회로를 많이 사용하게 됩니다. 매번 찾아보기 귀찮아서 계산기를 만들어 봤습니다. Vs = V ↔ R1 = kΩ Vc = V I = mA R2 = kΩ 사용법 계산기는 강하해야할 전압을 정했을 때 필요한 저항값을 계산할 수도 있고 반대로 저항값을 정하면 강하되는 전압값을 구할 수도 있습니다. 저항 계산하기 Vs, Vc, I 값을 입력하고 "저항값 계산" 버튼을 클릭하면 오른쪽에 R1, R2값이 계산됩니다. 전류값은 20mA로 프리셋하였는데 필요에 따라 조정하시면 됩니다. 강하된 전압 계산하기 Vs, R1, R2를입력하고 "전압 역산" 버튼을 클릭하면 왼쪽에 Vc, I 값이 계산됩니다. 끝! 2020. 11. 20.
wemos D1 mini 기본사양 개요 wemos D1 mini는 ESP8266칩(ESP12) 기반의 4MB 플래시 메모리를 가진 보드입니다. 특징이라면 소형의 보드이지만 micro USB가 내장되어 있어 펌웨어를 올리기 편하도록 구성되어 있습니다. 기본사양 Operating Voltage 3.3V Digital IO Pins 11 Analog Input Pin 1 (최대 3.2V) Clock speed 80 / 160 MHz Flash size 4MB Pin Map Digital IO pinMode GPIO0~15: OUTPUT(default), INPUT, INPUT_PULLUP GPIO16: OUTPUT(default), INPUT, INPUT_PULLDOWN_16 Digital Input Level Low: < Vcc x 25% .. 2020. 11. 10.
ESP8266 웹서버+웹소켓+파일시스템(SPIFFS) 예제 ESP8266 모듈을 사용해서 전등을 컨트롤하는 프로젝트를 진행했었습니다. 컨트롤 인터페이스를 위해서 ESP8266 모듈을 웹서버로 활용할 수 있는 기능을 사용했었는데요. HTML 코드를 문자열로 저장하고 있다가 요청이 오면 그 문자열을 반환해서 웹페이지를 보여주는 방식이었습니다. 하지만 이런 방법으로는 웹페이지를 디자인하는데 제한사항이 너무 많습니다. 일단 웹페이지 디자인 수정이 필요한 경우 펌웨어 자체를 다시 올려야 하기 문제가 있습니다. 물론 OTA를 이용해서 나름 편리하게 수정을 할 수 있지만 업데이트 때마다 서버가 중단되어야 하는 문제는 해결하지 못합니다. 그리고 웹페이지에서 사용할 수 있는 소스에도 한계가 있습니다. 물론 ESP8266 모듈의 용량이 코딱지 만하기 때문에 물리적인 한계는 있지만.. 2020. 10. 24.
ESP01 모듈로 만드는 IoT 웹서버 2.0 - 웹소켓, 타이머 적용 오늘은 기존 프로젝트의 업그레이 후기입니다. ESP01 모듈과 릴레이를 활용해서 거실에서 사용하는 보조등을 와이파이로 켜고 끌 수 있는 컨트롤러를 만들어 봤었는데요. ESP01 모듈로 만드는 IoT 웹서버 - WIFI로 전등 켜기 요즘은 ESP8266 보드를 아두이노 보다 더 많이 사용하고 있습니다. USB 포트가 없어서 별도로 USB-UART 변환 도구가 있어야 하는 불편함이 있지만 크기도 작고 와이파이도 사용할 수 있기 때문에 실생 kwonkyo.tistory.com 내용을 보면 아시겠지만 기존의 방법은 웹서버를 구성하는 HTML 코드에 치환자를 넣어두고 HTTP 요청에 따라 치환자를 교체해 가면서 버튼이 눌려지는 효과를 흉내 내고 기능을 구현해 봤습니다. 그래서 일반적으로 우리가 인터넷을 사용하면서.. 2020. 10. 23.
ESP8266, NTP로 인터넷 시간 동기화 (feat. UDP, NTP 패킷 구조) NTP를 이용해서 현재시간을 동기화하는 예제입니다. 시간에 따라 동작 조건을 다르게 적용하고 싶은 프로젝트가 있을 때 현재시간 확인이 필요한데요. 그럴 때 사용할 수 있는 여러 가지 방법 중 하나입니다. 예제 코드는 이전 포스팅에서 소개한 적 있었던 "Beginners guide of esp8266"에서 가져왔고 가이드북에서 설명이 생략되어 있는 부분에 약간의 살을 더해서 NTP를 처음 접했던 제가 이해한 내용을 정리하였습니다. 시작하기 전에 먼저 알아두면 도움이 될 내용 코드에 상세하게 주석을 달아두어서 바로 코드를 보면서 이해해도 되겠지만 몇 가지 알아두면 이해하는데 도움이 될 내용부터 먼저 건들어 보겠습니다. UTC(협정 세계시) UTC는 쉽게 말하면 우리가 사용하는 시간의 표준으로 국제 기준입니다.. 2020. 10. 20.