본문 바로가기

Hardware/MCU(Arduino,ESP8266)57

아두이노 버튼 짧게 누르기/길게 누르기 구현(ezButton 라이브러리) 아두이노 프로젝트에서 버튼은 프로젝트 기능을 풍부하게 만들어 줄 수 있는 중요한 요소입니다. 그러나, 하드웨어 적으로는 입력 핀에 연결된 스위치를 통해서 High/Low 전압 값을 읽어 들이는 간단한 메커니즘이지만 스프트웨어 적으로는 인터럽트, 디바운싱, 풀업/다운 저항 등 입문자 입장에서는 부담스러울 수 있는 여러 가지 고려사항이 있는 까다로운 요소입니다. 오늘은 이런 난감한 상황을 시원하게 해결해 줄 수 있는 "ezButton"이라는 라이브러리를 알아보겠습니다. ezButton 라이브러리 ezButton은 debounce, 버튼의 닫힘, 열림 이벤트 등을 지원하는 아두이노 라이브러리입니다. 지원기능 지원되는 기능은 다음과 같습니다. Uses the internal pull-up resistor to .. 2023. 10. 3.
아두이노 + 자외선(UV)센서 모듈 사용법2 - SZH-CH025 예전에 UV센서 모듈을 구입해서 간단히 사용해 본 적 있었는데(아두이노 + 자외선(UV) 센서 모듈 사용법), 불량이었는지 금방 고장이 나서 이번엔 비슷하지만 다른 제품을 구매해 봤습니다. UV센서 자체는 동일한 모델(GUVA-S12SD)을 사용하는 것 같고 출력 회로만 살짝 다른데 사용법도 동일하고 스펙도 거의 동일합니다. 자외선 센서 제품 사양 살펴보면 다음과 같습니다. 자외선의 탐지범위는 이전에 사용했던 것보다 약간 더 좁은 약 240~370nm 파장이라고 되어있네요. 센서자체는 동일한데 이전에 사용했던 모델은 왜 200nm부터가 탐지범위라고 했는지 지금에서야 좀 의문스럽네요. ㅎ (판매하시는 분들도 워낙 많은 물건을 다루시다 보니 정확한 스펙을 기재하기 어려운 점이 있는 것 같습니다.) 사양(Sp.. 2023. 8. 19.
ESPHome 커스텀 컴포넌트 추가해서 Home Assistant에 설치 ESPHome 커스텀 컴포넌트가 필요했던 이유 ESPHome 처음 접했을 때가 한 3년 전인가 그랬던 거 같은데 그때도 참 대단한 프로젝트라고 생각을 했었습니다. 그런데 쉬지 않고 업데이트가 거듭되면서 시간이 지난 지금도 개선되는 내용을 보면서 놀라움을 금치 못하고 있습니다. 지원되는 컴포넌트만 해도 400가지가 넘고 사용성도 좋아져서 범용 솔루션이라고 할 수 있을 것 같습니다. ESPHome에 대한 경험이 많지는 않지만 그중에서도 유용하게 사용하는 프로젝트가 바로 ESP8266 모듈에 RS485 변환모듈을 연결해서 아파트 월패드 컨트롤러로 사용하는 건데요. 한동안 뭣도 모르면서 따라 하느라 고생 좀 했던 거라서 블로그에도 시리즈로 3편이나 포스팅을 했었더랬죠. (Home Assistant, 더샵 아파트.. 2023. 1. 29.
UART 시리얼 통신의 기본 아두이노에서 여러 기기들 간의 통신에 시리얼 통신(Serial Communication)을 많이 사용합니다. 저도 시리얼(Serial or UART)로 정보를 주고받는 기기들을 종종 사용하긴 하지만 대부분의 경우 라이브러리를 사용하기 때문에 깊이 있는 이해가 부족했습니다. 그러다 보니 문제가 생기면 어디서부터 접근해야 할지 막막한 경우가 생기더군요. 저도 이번에 시리얼 포트로 연속적으로 수신되는 데이터를 처리해야 하는데 생각처럼 잘 되지 않았고 그래서 시리얼에 대해서 되도록이면 기초부터 공부를 해야 할 필요를 느껴서 정리를 좀 했습니다. 시리얼 통신은 직렬 통신 시리얼(Serial) 통신이라는 건 전달해야 할 데이터를 직렬로 전달하는 방법을 지칭하는데요. 직렬이라는 건 데이터를 순서대로 차례차례 주고받는.. 2023. 1. 25.
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) 시리얼 모니터링 아두이노, 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.