구글 AI ‘제미나이’와 협업해서 DIY 스마트홈 모니터링 시스템을 완전히 리뉴얼했습니다.
집 내부 장치는 10초마다 외부 Open Weather, Naver 는 10분마다 자동 업데이트 되는 정보.
BMP 센서도 두개 있어서 집 대기압도 측정중

홈 오토메이션 관련 DIY

구글 AI ‘제미나이’와 협업해서 DIY 스마트홈 모니터링 시스템을 완전히 리뉴얼했습니다.
집 내부 장치는 10초마다 외부 Open Weather, Naver 는 10분마다 자동 업데이트 되는 정보.
BMP 센서도 두개 있어서 집 대기압도 측정중


최근 스마트홈 구축에 가장 주력으로 사용하는 부품은 단연 ESP32-C3 Super Mini 보드입니다. 2~3년 전부터 꾸준히 구입해왔는데, 최근에는 가격이 1~2달러 수준까지 떨어져 가성비 면에서 압도적이죠. 하지만 가격이 저렴한 만큼 치명적인 단점이 하나 있는데, 바로 불안정한 WiFi 통신 문제입니다.
재미있는 점은 납땜 전에는 잘 되던 보드가 핀 헤더를 납땜하거나 브레드보드에 끼우기만 하면 WiFi 연결이 불안정해진다는 것입니다.
최근 생산되는 양품은 안테나 단자와 진동소자 사이가 1mm 이상 떨어져 있지만, 초기 모델이나 일부 제품은 이 간격이 매우 좁아 진동소자와 간섭이 발생하는 것으로 보입니다. 구입시 제품 사진으로 확인하고 구입하기를 추천하고 이미 불량을 받았다면 아래 팁을 활용해 보세요.
직접 수십 개의 보드를 다루며 찾아낸 WiFi 통신 불량 해결 트릭을 소개합니다.

안테나와 가장 인접한 마지막 핀(Antenna 근처)이 간섭의 주범인 경우가 많습니다. 이 마지막 핀을 제외하고 납땜하는 것만으로도 WiFi 신호가 몰라보게 안정됩니다.
브레드보드에 보드를 끼웠을 때만 통신이 안 된다면 전파 간섭이 극대화된 상태입니다. 이때 사진처럼 마지막 핀과 안테나 단자를 와이어로 가볍게 단락(Short) 시켜보세요. 의외로 브레드보드 환경에서 수신율이 개선되는 것을 확인할 수 있습니다. 단락할 경우 브레드보드에서 빼면 오히려 수신율이 떨어지니 단락할지 말지는 브레드보드 쓸지 말지로 결정해야 됩니다.
하드웨어 수정이 어렵다면 소프트웨어적으로 접근할 수 있습니다. WiFi 출력 세기(TX Power)를 의도적으로 한 단계 낮게 설정해 보세요. 전파 간섭이 줄어들면서 오히려 끊김 현상이 줄어듭니다.
cpp
python
ESP32-C3 Super Mini 보드에는 8번 핀에 내장 LED가 달려 있습니다.
연결 시도중일때 LED를 깜빡이게 하고 연결 완료시 꺼지게 하는 코드를 넣으면 시각적으로 바로 확인 할 수 있어서 좋습니다.
논리 반전 주의: ESP32-C3 Super Mini의 내장 LED는 보통 Low(0)일 때 켜지고 High(1)일 때 꺼지는 방식(Active Low)입니다.
무한 루프 방지: 만약 보드 불량이 심해 WiFi가 영영 안 잡히면 LED가 계속 깜빡이며 다음 코드로 넘어가지 않습니다. 테스트용으로는 좋지만, 실제 배포용 코드에서는 while문에 횟수 제한(타임아웃)을 두는 것이 좋습니다.
Python set_blink(ms)
ESP32-C3 Super Mini는 분명 매력적인 보드이지만, 초기 불량 제품 구입하신 분들께 이 경험이 작은 도움이 되길 바랍니다.

안녕하세요! 오늘은 마이크로파이썬을 활용해 인터넷에서 실시간 기상 데이터를 가져오는 방법을 알아보겠습니다. 센서가 없어도 Wi-Fi만 연결되어 있다면 OpenWeather API를 통해 내 동네의 온도와 습도를 정확하게 받아올 수 있습니다.

우리는 urequests 라이브러리를 통해 JSON 데이터를 받아올 겁니다. API 호출 주소는 다음과 같은 형식입니다.
https://api.openweathermap.org/data/2.5/weather?q={도시이름}&appid={내API키}&units=metric
아래 코드는 Wi-Fi에 접속한 뒤, API 데이터를 분석하여 온도와 습도를 추출하는 핵심 코드입니다.
Python “openweather.py”
urequests 라이브러리: 파이썬의 requests와 유사하지만 메모리가 적은 마이크로컨트롤러에 최적화된 라이브러리입니다.data['main']['temp'] 처럼 계층적으로 접근하여 필요한 값만 쏙쏙 뽑아내는 것이 중요합니다.time.sleep()을 이용해 적절한 간격(5~10분)으로 데이터를 요청하는 것이 매너입니다.단순히 외부 날씨만 보여주는 건 조금 아쉽죠? 기능을 한 뼘 더 확장하면 내 방의 중심을 잡는 **’스마트 홈 통합 제어기’**가 탄생합니다. 제가 구상한 일석삼조의 기능은 이렇습니다.

리튬 이온 배터리는 완충 시 약 4.2V, 방전 시 약 3.0V~3.2V 사이의 전압을 가집니다. 하지만 ESP32-C3의 ADC 입력 전압은 보통 0V~2.5V(내부 설정에 따라 다름) 정도로 제한되어 있어, 배터리 전압을 직접 연결하면 MCU가 손상될 수 있습니다.
이때 가장 간단하고 효과적인 해결책이 바로 분압 저항을 사용하는 방법입니다.

100kΩ 저항 두 개를 직렬로 연결하면 전압이 정확히 **절반(1/2)**으로 줄어듭니다. 배터리 전압이 4.2V일 때 ADC 핀에는 2.1V가 입력되므로 ESP32-C3에서 안전하게 읽을 수 있습니다.
ESP32-C3에서 ADC 값을 읽어 실제 배터리 전압으로 환산하는 코드입니다.
Python “battery.py”
2 대신 2.05와 같이 미세하게 조정(Calibration)하면 더 정확합니다.adc.read() 값을 여러 번 읽어 평균을 내면 값이 훨씬 안정적으로 출력됩니다.전원을 직접 연결하기 힘든 위치에 온습도계를 둘 때는 배터리를 쓰게 되죠. 이때 배터리 전압을 실시간으로 체크해주면 정말 편리해요. ‘배터리가 다 됐어요!’라고 기기가 스스로 알려줄 수 있도록 이번 강좌의 ADC 측정 회로를 꼭 적용해 보시기 바랍니다.

온습도 모니터링과 IR(적외선) 리모컨 제어 시스템은 우리가 흔히 말하는 ‘스마트 홈’의 가장 기초적이면서도 핵심적인 요소입니다. 이 시스템이 물리적인 환경에서 디지털 신호로, 다시 물리적인 동작으로 이어지는 과정을 단계별로 정리해 드릴게요.

센서가 방 안의 상태를 감지하고 사용자에게 보여주기까지의 과정입니다.

사용자가 버튼을 눌러 에어컨이나 TV를 끄고 켜는 과정입니다.
| 단계 | 온습도 모니터링 (Read) | 가전 리모트컨트롤 (Write) |
| 방향 | 가전/환경 → 사용자 | 사용자 → 가전 |
| 매개체 | 센서 소자 (SHT, DHT 등) | 적외선 LED (IR Transmitter) |
| 핵심 기술 | 데이터 로깅, 그래프 시각화 | IR 프로토콜 분석 (Samsung, LG 등) |
가전제품마다 리모컨 신호가 다르기 때문에, 시스템을 구축할 때는 각 제조사의 IR 신호를 미리 ‘학습’시키거나 공개된 라이브러리(DB)를 사용하는 것이 중요합니다.
![[상위고정] 온습도 모니터링 & IR 리모콘](https://micro2iot.com/wp-content/uploads/2026/01/s_simple_i_ai-1-e1770417672962.jpg)
“가장 소중한 사람을 위한 DIY” (실용적/따뜻함)
“아이 방의 습도는 적당한지, 부모님 방이 너무 춥지는 않은지 매번 문을 열어 확인하고 계셨나요? 이제 직접 만든 작은 센서들이 당신을 대신해 집안 구석구석을 살핍니다. **’방마다 온습도 모니터링’**은 소중한 사람들의 건강을 위해 시작된 가장 따뜻한 DIY 프로젝트입니다. 부품 하나, 코드 한 줄로 시작하는 우리 집의 작은 변화를 기록합니다.”



공간별 온습도 실시간 모니터링 및 가전 기기 원격 통합 제어











스마트홈의 두뇌 역할을 하는 **’홈 웹서버(Home Web Server)’**의 필요성에 대한 설명글입니다. 초보자도 이해하기 쉽게 비유를 곁들여 작성했습니다.
스마트홈을 구축할 때 가장 먼저 마주하는 질문은 “센서와 전등만 있으면 되는 거 아니야?”라는 의문입니다. 하지만 진정한 자동화를 위해서는 이 모든 장치를 하나로 묶어 관리하는 ‘관제 센터’, 즉 홈 웹서버가 반드시 필요합니다.
각 방에 흩어진 ESP32-C3 보드들은 각각 온도나 습도를 측정할 뿐, 서로 대화할 수 없습니다. 홈 서버는 모든 보드로부터 데이터를 수집하고, “온도가 26도가 넘었으니 에어컨을 켜라”라는 명령을 내리는 지휘관 역할을 수행합니다.
서버가 없다면 현재 온도는 볼 수 있지만, ‘어제 밤 우리 집 온도 변화’는 알 수 없습니다. 홈 서버는 1분 1초의 데이터를 저장하여, 우리 가족의 생활 패턴을 분석하고 최적화된 에너지 관리를 가능하게 합니다.
집 밖에서 스마트폰으로 에어컨을 켜고 싶을 때, 각 장치에 일일이 접속하는 것은 보안상 위험하고 번거롭습니다. 홈 서버는 외부와 내부를 잇는 단 하나의 안전한 통로가 되어, 당신이 어디에 있든 집안 상태를 한눈에 보여줍니다.
MaNa’s LAB Tip: > 처음에는 거창한 서버 장비가 없어도 괜찮습니다. 남는 노트북이나 저렴한 라즈베리 파이에 Home Assistant 같은 오픈소스 플랫폼을 설치하는 것만으로도 훌륭한 스마트홈 서버를 가질 수 있습니다.

아두이노(C++)와 마이크로파이썬(MicroPython)은 임베디드 개발에서 가장 인기 있는 두 가지 선택지입니다. 결론부터 말씀드리면, “세밀한 제어와 성능이 중요하다면 아두이노”, **”빠른 개발과 쉬운 학습이 우선이라면 마이크로파이썬”**을 추천합니다.


주요 차이점을 네 가지 핵심 포인트로 정리해 드립니다.
| 구분 | 아두이노 (Arduino C++) | 마이크로파이썬 (MicroPython) |
| 언어 | C++ 기반 (컴파일 언어) | Python 3 기반 (인터프리터 언어) |
| 실행 방식 | 코드를 기계어로 변환해 업로드 | 보드 내부의 인터프리터가 코드를 즉시 해석 |
| 속도/효율 | 매우 빠름. 하드웨어 자원을 100% 활용 | 상대적으로 느림. 메모리 사용량이 많음 |
| 난이도 | 포인터, 메모리 관리 등 초기 학습이 다소 어려움 | 문법이 간결하고 직관적이라 입문자에게 유리 |
led.on() 입력 시 즉시 불이 켜짐)이런 분께는 아두이노를 추천합니다:
- 드론 제어, 고속 모터 제어 등 **실시간성(Real-time)**이 매우 중요한 프로젝트
- 메모리가 적은 아주 작은 칩을 사용해야 하는 경우
- 임베디드 엔지니어로서의 기초(C/C++)를 탄탄히 다지고 싶은 경우
이런 분께는 마이크로파이썬을 추천합니다:
- 이미 파이썬에 익숙하거나, 코딩을 처음 시작하는 입문자
- 데이터 로깅, 간단한 IoT 기기(웹 서버 등)를 빨리 만들고 싶은 경우
- 복잡한 알고리즘이나 AI 관련 기능을 기기 내에서 처리하고 싶은 경우
“스마트 홈 제어는 고도의 연산 성능보다 다양한 시나리오의 적용이 핵심입니다. 따라서 신속한 프로토타이핑과 반복 테스트에 유리한 마이크로파이썬(MicroPython)을 활용하는 것이 개발 효율성 측면에서 가장 적합합니다.”