본문 바로가기

Arduino25

아두이노 버튼 짧게 누르기/길게 누르기 구현(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.
github에서 비밀번호 숨기는 팁(--assume-unchanged) github에 코드를 올릴 때 비밀번호 등 개인정보를 숨기고 업로드하는 팁입니다. 와이파이 모듈을 사용한 아두이노 프로젝트나 API를 사용하는 웹 프로젝트 등을 하다 보면 비밀번호나 API 토큰 등을 하드코딩 할 때가 있습니다. 그런데 이런 정보를 숨기지 않고 github에 그대로 푸시하면 내 개인정보가 만천하에 노출되게 됩니다. 그래서 저는 그동안 코드 푸시하기 전에 비민번호를 지우거나 다른 임의의 문자로 교체한 뒤에 업로드하기도 했는데, 그런데 이렇게 해 놓으면 다음 작업을 위해서는 또다시 원래 비번으로 돌려야 하고 푸시할 때는 또다시 임의 문자로 교체해야 하고... 그러다가 가끔 까먹고 그냥 올려서 비밀번호가 올라가 버리기도 하고. 정말 환장할 노릇입니다. 컴파일러에서 환경변수를 별도로 지원하는 경.. 2023. 2. 15.
UART 시리얼 통신의 기본 아두이노에서 여러 기기들 간의 통신에 시리얼 통신(Serial Communication)을 많이 사용합니다. 저도 시리얼(Serial or UART)로 정보를 주고받는 기기들을 종종 사용하긴 하지만 대부분의 경우 라이브러리를 사용하기 때문에 깊이 있는 이해가 부족했습니다. 그러다 보니 문제가 생기면 어디서부터 접근해야 할지 막막한 경우가 생기더군요. 저도 이번에 시리얼 포트로 연속적으로 수신되는 데이터를 처리해야 하는데 생각처럼 잘 되지 않았고 그래서 시리얼에 대해서 되도록이면 기초부터 공부를 해야 할 필요를 느껴서 정리를 좀 했습니다. 시리얼 통신은 직렬 통신 시리얼(Serial) 통신이라는 건 전달해야 할 데이터를 직렬로 전달하는 방법을 지칭하는데요. 직렬이라는 건 데이터를 순서대로 차례차례 주고받는.. 2023. 1. 25.
아두이노 + 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.
Home Assistant, 더샵 아파트 월패드 연동 1편 - 설치환경 확인 및 홈오토메이션 관련 자료 수집 지금 살고 있는 아파트는 2014년도에 완공된 더샵 아파트입니다. 홈 네트워킹이 설치되어 있어서 월패드에서 전등을 켜고 끄거나 각방의 난방과 냉방을 조절하는 등 기본적인 기능이 가능합니다. 그런데 이게 흉내만 내다 말아서 편리하게 활용하기에는 너무 부족하고 그렇다고 아주 안 쓰자니 아쉽고 완전 계륵이라고 볼 수 있습니다. 어떤 식이냐면 제가 주로 취미생활을 하는 방에 전등 스위치는 이런 식으로 생겼습니다. 터치로 천장 형광등을 켜고 끌 수 있는 스위치가 하나 있고 그리고 방 좌우 벽에 설치된 콘센트를 차단하거나 연결하는 스위치 2개가 있습니다. 벽 콘센트는 사용 중인 전력량까지 표시가 되는 나름 스마트한 스위치입니다. 그런데 문제는 이 스위치는 홈네트워크에 연결되어 있지 않습니다. 그리고 원격으로도 집 .. 2020. 11. 16.
ESP8266 웹서버+웹소켓+파일시스템(SPIFFS) 예제 ESP8266 모듈을 사용해서 전등을 컨트롤하는 프로젝트를 진행했었습니다. 컨트롤 인터페이스를 위해서 ESP8266 모듈을 웹서버로 활용할 수 있는 기능을 사용했었는데요. HTML 코드를 문자열로 저장하고 있다가 요청이 오면 그 문자열을 반환해서 웹페이지를 보여주는 방식이었습니다. 하지만 이런 방법으로는 웹페이지를 디자인하는데 제한사항이 너무 많습니다. 일단 웹페이지 디자인 수정이 필요한 경우 펌웨어 자체를 다시 올려야 하기 문제가 있습니다. 물론 OTA를 이용해서 나름 편리하게 수정을 할 수 있지만 업데이트 때마다 서버가 중단되어야 하는 문제는 해결하지 못합니다. 그리고 웹페이지에서 사용할 수 있는 소스에도 한계가 있습니다. 물론 ESP8266 모듈의 용량이 코딱지 만하기 때문에 물리적인 한계는 있지만.. 2020. 10. 24.
아두이노 온습도 센서 - DHT11, DHT 22 온습도 센서 DHT11 그리고 DHT22를 사용해서 온도와 습도를 측정하는 방법입니다. DHT센서 기본 DHT11 센서와 DHT22 센서의 차이는 정밀도입니다. 많은 실습 키트 그리고 예제에서 DHT11 센서를 많이 사용하는데 DHT22는 DHT11보다 좀 더 정밀하게 온도와 습도를 측정할 수 있는 센서입니다. DHT11 센서와 DHT22 센서의 차이점을 간단히 비교해 보면 아래와 같습니다. 대표적인 차이는 DHT22 센서가 좀 더 넓은 범위의 온도와 습도를 좀 더 정확하게 측정할 수 있지만 대신 가격이 좀 더 비싸다는 겁니다. DHT센서는 내부에 온도와 습도를 측정할 수 있는 부품이 각각 들어있는데요. 온도 측정은 온도에 따라 저항이 변화는 성질을 가진 서미스터를 이용해서 측정합니다. 그리고 습도를 측.. 2020. 9. 28.
VS Code로 아두이노 업로드 - PlatformIO IDE 저는 Arduino IDE의 대안으로 Visual Studio(VS)에 Visual Micro라는 확장 프로그램을 깔아서 사용하고 있습니다. VS가 매우 무거운 프로그램이긴 하지만 그만큼 생산성을 높여주는 유용한 프로그램입니다. 그런데 Visual Studio Code(VS Code)에서도 아두이노를 코딩하고 업로드할 수 있는 "PlatformIO IDE(PIO)"라는 새로운 옵션을 알게 되어서 소개합니다. VS Code는 오픈소스의 텍스트 에디터라고 할 수 있는데요. 오픈소스답게 방대하고 막강한 확장 프로그램이 특징입니다. 그래서 다양한 플랫폼에서 사용 가능하고 다양한 코드 개발을 지원하기 때문에 단기간에 점유율이 급상승한 인기 프로그램입니다. 다양한 익스텐션을 활용하면 Visual Studio 못지않.. 2020. 7. 24.
PlatformIO IDE - UnicodeDecodeError 해결하기 Vsivual Studio Code + PlatformIO(PIO) 환경에서 아두이노 프로젝트 컴파일 할 때, 코드에 주석을 한글로 달아둔 경우 드물게 다음과 같은 에러가 발생하는 경우가 있습니다. "UnicodeDecodeError" 말 그대로 유니코드로 해석이 안됩니다 라는건데요. 뒤에 'cp949' 라는 부분은 윈도우에서 사용하는 인코딩의 한 종류로, 949번 코드페이지, 그러니까 한글 인코딩을 얘기하는 겁니다. cp949 말고 다른 메시지가 나올 수도 있는것 같습니다. 이 문제의 원인은, PIO가 파이썬3 기반으로 만들어져 있는데 파이썬에서 유니코드 인코딩의 텍스트를 읽어오는데 어떤 이슈가 있는것 같습니다. 대충 찾아본 바에 따르면 PIO차기 버전에서는 내장 파이썬 엔진 사용해서 이런 문제가 해결.. 2020. 7. 23.
안드로이드 스마트폰용 아두이노 IDE Arduinodroid의 업로드 에러 Arduinodroid는 스마트폰에서 아두이노 스케치를 편집하고 업로드하고 시리얼 모니터링도 할 수있는 스마트폰용 무료 IDE입니다. 그런데 간혹 몇몇 보드에서 컴파일은 잘되는데 아두이노로 업로드시에 에러가 발생하는 경우가 있습니다. ''ERROR: PROCESS RETURNED NOT ZERO RESULT CODE:1'' 이런 에러가 뜨면서 업로드가 되지 않는데 아무튼 관련된 찾아보니 역시나 솔루션이 있네요. 업로드를 할때 아두이노의 리셋버튼을 같이 눌러주면 된다고 합니다. 그러니까 컴퓨터로 업로드를 하면 업로드전에 자동으로 리셋이 되고 업로드가 이루어지는데 그 부분에서 이슈가 있는것 같습니다. 그래서 수동으로 리셋을 시켜주는거죠. 문제는 타이밍인데 업로드 직전에 기막힌 타이밍으로 눌러줘야지만 성공할 .. 2020. 1. 31.
아두이노, LCD 1602 I2C 모듈 사용하기 (feat. 주소에러) 아두이노와 LCD를 I2C로 연결해서 출력을 하는 방법입니다. 아두이노와 I2C 모듈이 있는 LCD 그리고 케이블들만 준비하시면 되겠습니다. (여기에서는 아두이노 나노 사용했습니다.) 하드웨어 LCD 1602 I2C 모듈 사용할 LCD 1602 i2c 모듈의 사진입니다. 생김새를 보면 앞면은 LCD만 떡하나 달려있고 뒷면에는 이렇게 i2c변환 모듈이 달려있습니다. 이 변환 모듈이 없다면 LCD의 16개 핀을 다 컨트롤 해줘야 하는데 800원짜리 변환모듈만 있으면 단 4개의 핀으로 모든일을 다 할 수 있으니 참 편합니다. 하드웨어 연결 결선은 4개의 각 핀을 아두이노와 LCD 모듈을 동일하게 연결해 줍니다. GND와 VCC는 잘 알겠는데 SDA, SCL은 뭐지 할 수 있을텐데요. i2c라는 통신방식을 이용.. 2019. 11. 20.