로그인회원가입

[카테고리:] 스마트홈

홈 오토메이션 관련 DIY

  • [전자회로] SI2302 MOSFET으로 ESP32-CAM 전원 제어하기 (허용 소비전력 vs 제어 전력의 차이)

    [전자회로] SI2302 MOSFET으로 ESP32-CAM 전원 제어하기 (허용 소비전력 vs 제어 전력의 차이)

    ESP32-CAM처럼 순간 피크 전류가 높거나 LED 사용 시 전력 소비가 커지는 모듈을 제어할 때, 소형 SOT-23 패키지의 SI2302 MOSFET을 전원 스위치로 사용할 수 있는지, 발열 문제는 없는지 정리해 봅니다.

    1. SI2302 주요 제원 요약

    SI2302는 3.3V Logic 전압으로도 충분히 Turn-On 시킬 수 있는 대표적인 N-Channel MOSFET입니다.

    • 드레인-소스 내압 (VDS​): Max 20V
    • 연속 드레인 전류 (ID​): 2.8A ~ 3.6A
    • 도통 저항 (RDS(on)​): 약 65mΩ (0.065Ω) @ VGS​=4.5V
    • 자체 허용 소비전력 (PD​): 0.35W∼1.25W (패키지 및 방열 조건 기준)

    2. ESP32-CAM 전원 스위칭 적합성

    ESP32-CAM은 동작 상태에 따라 전류 소비 변동이 큽니다.

    • 평상시 (Wi-Fi 스트리밍): 약 160mA∼220mA (0.8W∼1.1W)
    • 플래시 LED 최대 켜짐: 약 310mA∼400mA (1.5W∼2.0W)
    • 최대 순간 피크 전류: 약 0.7A (3.5W)

    SI2302의 연속 허용 전류는 최소 2.8A 이상이므로, 0.7A 수준의 피크 전류는 스펙 대비 4배 이상의 여유가 있어 전원 스위칭용(Low-side Switch)으로 충분히 사용 가능합니다.

    3. 가장 흔히 혼동하는 개념: “허용 소비전력” vs “제어 스위칭 전력”

    “LED를 켜면 2W가 소모되는데, SI2302의 허용 소비전력이 0.85W~1.25W라면 탄 것 아닌가요?”

    회로 설계 시 가장 자주 발생하는 착각 중 하나입니다. 데이터시트에 명시된 MOSFET의 허용 소비전력(PD​)은 부하 전체가 쓰는 전력이 아니라, MOSFET 내부 저항으로 인해 열로 사라지는 손실 전력을 의미합니다.

    실제 MOSFET 내부 손실 전력 계산

    ESP32-CAM + LED가 5V에서 $2\text{W}$를 소비할 때 회로에 흐르는 전류 I는:

    이 때 SI2302 내부 도통 저항(RDS(on)​≈0.065Ω)에 의해 MOSFET 자체에서 발열로 소모되는 전력(PMOSFET​)은:

    • 부하 전체 사용 전력: 2W (ESP32 및 LED가 소모)
    • SI2302 자체 손실 전력: 0.0104W
    • SI2302 최대 허용 전력: 0.85W∼1.25W

    즉, MOSFET이 버텨야 하는 손실 전력(0.0104W)은 허용치(0.85W)의 약 1.2%에 불과하므로, 발열 걱정 없이 안정적으로 동작합니다.

    4. SI2302가 제어할 수 있는 실제 최대 부하 전력

    SI2302가 스위칭할 수 있는 부하의 최대 전력은 내압(VDS​) × 전류(ID​)로 결정됩니다.

    • 이론상 최대 스위칭 전력: 20V×2.8A=56W
    • 실제 안전 권장 스위칭 전력 (70~80% 마진 적용):
    공급 전압 (VDS​)안전 권장 전류실제 제어 가능 부하 전력주요 용도
    3.3V약 2.5A8.25WESP32, Raspberry Pi Pico
    5V약 2.5A12.5WESP32-CAM, 아두이노, 5V LED
    12V약 2.5A30.0W12V DC 팬, 솔레노이드, 12V LED

    5. 회로 설계 시 체크리스트

    1. Low-side 스위칭 구성: N-Channel MOSFET이므로 ESP32-CAM의 GND 라인을 제어하도록 배치합니다.
    2. 게이트 풀다운 저항: MCU 초기화 시 핀 플로팅으로 인한 의도치 않은 ON 동작을 방지하기 위해 Gate와 GND 사이에 10kΩ 풀다운 저항을 연결합니다.
    3. 전원 단 바이패스 콘덴서: Wi-Fi 송신 시 순간 전압 강하(Brownout) 방지를 위해 MOSFET 출력 단(ESP32-CAM VCC-GND 사이)에 100μF∼470μF 콘덴서를 배치합니다.

    요약

    SI2302는 단 0.01W 수준의 미세한 전력만 자체 소모하면서, 외부의 최대 30~50W급 부하를 손쉽게 ON/OFF 제어할 수 있는 가성비 뛰어난 SOT-23 N-Channel MOSFET입니다.

  • [MicroPython] 라이브러리 없이 IR 수신기(적외선 센서) 제어하기 – 원리부터 실전까지

    [MicroPython] 라이브러리 없이 IR 수신기(적외선 센서) 제어하기 – 원리부터 실전까지

    안녕하세요, Mana’s Lab입니다!

    오늘은 ESP32-C3나 ESP32-S3 같은 보드에서 흔히 사용하는 IR 수신기(적외선 센서)를 다뤄보려고 합니다. 보통은 만들어져 있는 라이브러리를 가져다 쓰지만, 외부 라이브러리 의존성을 줄이고 싶거나 통신 프로토콜의 원리를 직접 파악하고 싶을 때가 있습니다.

    오늘은 라이브러리 없이 마이크로파이썬(MicroPython)의 기본 기능만으로 리모컨 신호를 읽어오는 방법을 알아보겠습니다.

    1. IR 수신기의 하드웨어 연결

    가장 흔하게 사용되는 IR 수신 모듈(예: VS1838B)은 3개의 핀으로 구성되어 있습니다.

    연결 방법은 매우 간단합니다:

    • VCC: 보드의 3.3V (또는 5V)
    • GND: 보드의 GND
    • OUT (또는 S): ESP32의 GPIO 핀 (이번 예제에서는 GPIO 4를 사용합니다)

    주의: IR 수신기의 OUT 핀은 평소(대기 상태)에 **HIGH(1)**를 유지하다가, 적외선 신호가 들어오면 **LOW(0)**로 떨어지는 ‘Active Low’ 방식을 사용합니다.

    2. NEC 프로토콜의 이해

    우리가 집에서 흔히 쓰는 TV나 셋톱박스 리모컨의 90% 이상은 NEC 프로토콜을 사용합니다. 리모컨 버튼을 누르면 적외선이 특정 시간 간격으로 깜빡이며 데이터를 전송하는데, 그 규칙은 다음과 같습니다.

    1. Lead Code (시작 신호): 9ms 동안 LOW, 이후 4.5ms 동안 HIGH를 유지하며 “이제 데이터 보낸다!”라고 알립니다.
    2. Data (32비트): 총 32개의 0과 1을 보냅니다.
      • 숫자 ‘0’: 560µs LOW + 560µs HIGH
      • 숫자 ‘1’: 560µs LOW + 1.69ms HIGH (HIGH 구간이 훨씬 깁니다)
    3. End (종료 신호): 짧은 펄스로 통신을 마칩니다.

    라이브러리 없이 이 신호를 해독하려면, OUT 핀의 상태가 변할 때마다 시간차(펄스의 길이)를 마이크로초(µs) 단위로 정밀하게 측정하기만 하면 됩니다.

    3. 마이크로파이썬 코드 (라이브러리 없이 구현)

    인터럽트(IRQ)를 사용하면 메인 루프를 방해하지 않고 핀의 상태 변화(RISING/FALLING)가 일어난 정확한 시간을 배열에 기록할 수 있습니다.

    아래 코드를 ESP32-C3 등에 업로드하고 리모컨을 눌러보세요.

    Python

    코드 리뷰 및 활용 포인트

    이 방식의 핵심은 time.ticks_us()time.ticks_diff()를 이용해 상태가 변한 시점 간의 마이크로초 단위 시간차를 구하는 것입니다.

    출력된 durations 배열을 확인해보면, 대략 9000, 4500, 560, 1690, 560, 560... 과 같은 숫자들의 나열을 볼 수 있습니다. 이 숫자들을 if/else 문으로 01로 치환한 뒤 비트 연산을 해주면, 라이브러리 없이도 완벽한 나만의 IR 디코더를 만들 수 있습니다.

    단순한 제어가 필요할 때 무거운 라이브러리를 통째로 올리는 대신, 이처럼 펄스 폭을 직접 측정하는 방식을 사용해보시면 임베디드 하드웨어의 통신 원리를 이해하는 데 큰 도움이 될 것입니다.

    • 응용 예제 코드: 리모콘으로 LED 램프를 토글식으로 켜고 타이머로 30초만 켜짐. 자동 모드로 랜덤으로 깜빡이는 촛불 모드로 5초 켜기

  • [ESP32 라인업 총정리] 나에게 딱 맞는 ESP32 칩셋 선택 가이드 (Original부터 C6, P4까지)

    [ESP32 라인업 총정리] 나에게 딱 맞는 ESP32 칩셋 선택 가이드 (Original부터 C6, P4까지)

    IoT 개발부터 메이커 프로젝트까지, 이제 ESP32는 전 세계 개발자들에게 없어서는 안 될 대표 마이크로컨트롤러(MCU)가 되었습니다.

    하지만 Espressif에서 매년 새로운 라인업을 내놓으면서 ESP32 Original, S2, S3, C3, C6, H2, P4 등 이름만 봐서는 무엇을 골라야 할지 헷갈리는 경우가 많습니다.

    이번 글에서는 지금까지 출시된 ESP32의 주요 라인업별 특징, 목적, 성능을 깔끔하게 비교해 드립니다.

    1. ESP32 주요 라인업 계보 한눈에 보기

    Espressif의 칩 라인업은 CPU 아키텍처와 핵심 목적에 따라 크게 Classic, S 시리즈(성능/멀티미디어), C 시리즈(RISC-V/저전력), H 시리즈(스마트홈 전용), P 시리즈(고성능 계산)로 나뉩니다.

    2. 칩셋별 핵심 특징 & 목적 비교

    ① Original ESP32 (Classic) — [원조 최고존엄 & 레거시]

    • CPU: Xtensa Dual-Core 32-bit (최대 240MHz)
    • 무선 통신: Wi-Fi 4 (2.4GHz) + Bluetooth Classic (BR/EDR) + BLE 4.2
    • 주요 목적: 일반적인 IoT 개발, 오디오 스트리밍, 기존 Bluetooth 레거시 장비 연동
    • 특징: ESP32 라인업 중 유일하게 블루투스 클래식을 지원합니다. 오디오 스피커나 레거시 블루투스 장비와 통신해야 한다면 여전히 대체 불가한 선택지입니다.

    ② ESP32-S3 — [플래그십 성능 & AI·멀티미디어]

    • CPU: Xtensa Dual-Core 32-bit (최대 240MHz)
    • 무선 통신: Wi-Fi 4 + BLE 5.0
    • 주요 목적: 카메라(ESP32-CAM 계열), LCD 디스플레이 UI, 음성 인식, TinyML (온디바이스 AI)
    • 특징: MCU급 프로젝트의 올라운더 최강자입니다. Native USB-OTG를 지원하며, AI 가속을 위한 vector 명령 집합(PIE)을 내장하고 있어 간단한 이미지 분류나 음성 키워드 감지가 가능합니다.

    ③ ESP32-C3 — [갓성비 센서 노드 & RISC-V 표준]

    • CPU: RISC-V Single-Core (160MHz)
    • 무선 통신: Wi-Fi 4 + BLE 5.0
    • 주요 목적: 스마트 스위치, 센서 데이터 수집, ESP8266 대체용
    • 특징: ESP8266의 자리를 대체하기 위해 나온 저전력·저비용 칩셋입니다. 하드웨어 기반 Secure Boot와 암호화 엔진이 탑재되어 보안성이 뛰어나며, 가격이 매우 저렴합니다.

    ④ ESP32-C6 — [차세대 스마트홈 & Matter / Wi-Fi 6]

    • CPU: RISC-V Single-Core (160MHz)
    • 무선 통신: Wi-Fi 6 (2.4GHz) + BLE 5.3 + IEEE 802.15.4 (Zigbee / Thread)
    • 주요 목적: Matter 규격 지원 스마트홈 기기, Zigbee/Thread 허브 및 센서
    • 특징: 스마트홈 단말 제작의 필수 칩셋입니다. Wi-Fi 6의 Target Wake Time(TWT) 기능으로 배터리 효율이 크게 좋아졌으며, Thread와 Zigbee를 지원하여 최신 Smart Home 규격인 Matter 디바이스 제작에 최적화되어 있습니다.

    ⑤ ESP32-H2 — [Wi-Fi 없는 저전력 Mesh 전용]

    • CPU: RISC-V Single-Core (96MHz)
    • 무선 통신: IEEE 802.15.4 (Zigbee / Thread) + BLE 5.3 (Wi-Fi 없음)
    • 주요 목적: 코인 배터리 기반 온·습도 센서, 문열림 감지기, Zigbee 엔드디바이스
    • 특징: Wi-Fi 라디오를 아예 제거하고 초저전력 Mesh 통신(Thread/Zigbee)과 BLE에만 집중한 모델입니다. 배터리 하나로 수개월~수년을 버텨야 하는 스마트홈 센서 노드에 적합합니다.

    ⑥ ESP32-P4 — [무선 통신 탈피, 연산 성능 극대화]

    • CPU: RISC-V Dual-Core (최대 400MHz) + HP/LP 코어
    • 무선 통신: 없음 (On-Chip Wireless 없음)
    • 주요 목적: 고해상도 Touch HMI 디스플레이, H.264 비디오 코덱, 복잡한 Edge AI 연산
    • 특징: 기존 ESP32의 틀을 깬 고성능 컴퓨팅 전용 칩셋입니다. 무선 기능 대신 MIPI-CSI/DSI, H.264 인코더, JPEG 코덱, 고속 Ethernet 등을 내장하여 고성능 그래픽 UI 및 영상 처리에 집중했습니다.

    3. 한눈에 보는 핵심 사양 비교표

    모델명코어 아키텍처동작 클럭주요 무선 통신USB 지원추천 사용 분야
    ESP32Xtensa Dual240MHzWi-Fi 4 / BT Classic / BLE 4.2X블루투스 오디오, 레거시 프로젝트
    ESP32-S3Xtensa Dual240MHzWi-Fi 4 / BLE 5.0Native디스플레이, AI 비전, 카메라, USB HID
    ESP32-C3RISC-V Single160MHzWi-Fi 4 / BLE 5.0CDC/JTAG가성비 IoT 센서, 소형 자동화 기기
    ESP32-C6RISC-V Single160MHzWi-Fi 6 / BLE 5.3 / Thread / ZigbeeCDC/JTAGMatter 스마트홈, 차세대 IoT 센서
    ESP32-H2RISC-V Single96MHzBLE 5.3 / Thread / ZigbeeCDC/JTAG초저전력 배터리 센서 (Zigbee)
    ESP32-P4RISC-V Dual400MHz없음 (유선 Ethernet 등 지원)Native고급 Touch GUI, 비디오 처리, MPU 대용

    4. 내 프로젝트엔 어떤 ESP32를 골라야 할까?

    • “일반적인 센서 제어, 디스플레이 연동, 다양한 용도로 쓰고 싶다” 👉 ESP32-S3를 추천합니다 (가장 생태계가 넓고 성능이 여유롭습니다).
    • “스마트홈(Home Assistant, Matter) 센서를 만들고 싶다” 👉 ESP32-C6을 추천합니다 (Wi-Fi 6 + Zigbee/Thread 내장).
    • “크기가 작고 전력을 적게 먹는 가성비 센서 노드가 필요하다” 👉 ESP32-C3가 단연 최적의 선택입니다.
    • “블루투스 스피커나 레거시 BT 기기를 통제하고 싶다” 👉 여전히 Original ESP32를 써야 합니다.

  • [ESP32-C3] TF 카드(MicroSD) 용량 한계와 추천 포맷 완전 정리 (64GB 인식법 포함)

    [ESP32-C3] TF 카드(MicroSD) 용량 한계와 추천 포맷 완전 정리 (64GB 인식법 포함)

    안녕하세요!

    ESP32-C3 Mini 모듈을 활용해 데이터 로깅, 센서 값 저장, 파일 서버 구축 등 다양한 프로젝트를 진행하다 보면 외부 저장 장치로 TF 카드(MicroSD 카드)를 자주 연결하게 됩니다.

    이때 “TF 카드는 몇 GB까지 꽂아도 될까?”, “포맷은 무조건 FAT32로 해야 하나?” 궁금하셨던 분들을 위해 ESP32-C3 환경에서의 TF 카드 용량 한계, 지원 포맷 규격, 그리고 64GB 이상 대용량 카드 인식법까지 깔끔하게 정리해 드립니다.

    1. TF 카드(MicroSD) 용량, 몇 GB까지 쓸 수 있을까?

    결론부터 말씀드리면, 가장 안정적인 실사용 권장 용량은 32GB 이하(SDHC)입니다.

    규격용량 범위기본 출하 포맷ESP32-C3 호환성
    TF (SD)~2GBFAT16완벽 지원
    TF (SDHC) ⭐4GB ~ 32GBFAT32완벽 지원 (가장 추천)
    TF (SDXC)64GB ~ 2TBexFAT기본 인식 불가 (강제 FAT32 포맷 필요)

    왜 32GB 이하를 권장할까?

    ESP32의 기본 라이브러리(SD.h, FS.h)는 FAT32 파일 시스템을 기준으로 동작합니다. TF 카드 규격상 32GB 이하 제품(SDHC)은 공장 출하 시 FAT32로 포맷되어 나오기 때문에, 꽂자마자 오류 없이 즉시 인식됩니다.

    2. 파일 시스템 포맷 지원 현황

    파일 시스템지원 여부상세 설명
    FAT16 / FAT32완벽 지원아두이노 IDE, MicroPython 기본 라이브러리 완벽 호환
    exFAT조건부 지원기본 라이브러리 미지원. 외부 전용 라이브러리(SdFat 등) 사용 시 가능하나 RAM 메모리 소모가 큼
    NTFS / ext4지원 불가PC/리눅스 전용 포맷으로 마이크로컨트롤러 환경 지원 불가

    3. 집에 남아도는 64GB 이상 TF 카드를 쓰려면?

    64GB 이상의 TF 카드(SDXC)를 ESP32-C3에 꽂으면 기본적으로 Card Mount Failed 에러가 발생합니다. 카드가 exFAT 상태로 포맷되어 출시되기 때문입니다.

    이 경우 PC 전용 강제 포맷 프로그램을 이용해 카드를 FAT32로 변경하면 정상 사용할 수 있습니다.

    강제 FAT32 포맷 방법

    1. 윈도우 기본 포맷 기능은 32GB 초과 용량에서 FAT32 옵션을 제공하지 않습니다.
    2. 무설치 포맷 프로그램인 GUIFormat (fat32format)을 다운로드합니다.
    3. 대상 드라이브를 선택하고, Allocation unit size(할당 크기)를 32768 (32KB)로 지정한 뒤 포맷합니다.

    ⚠️ 주의사항: ESP32-C3의 내부 SRAM 용량 한계로 인해, 64GB 이상 대용량 카드를 FAT32로 포맷해 쓰면 파일 탐색/읽기 속도가 느려지거나 간헐적인 읽기 에러가 발생할 수 있습니다. 가급적 8GB ~ 32GB 카드를 사용하는 것을 권장합니다.

    4. ESP32-C3 TF 카드 사용 실전 팁

    1. 포맷 할당 크기 최적화
      • PC에서 FAT32 포맷을 진행할 때 ‘할당 단위 크기(Cluster Size)’를 32KB로 설정하면 ESP32-C3가 데이터를 읽고 쓰는 속도 효율이 가장 좋아집니다.
    2. SPI Pinout 구성 주의
      • ESP32-C3 Mini는 사용 가능한 GPIO 핀 수가 적기 때문에, TF 카드 모듈 연결 시 기본 SPI 핀(SCK, MISO, MOSI, CS)을 올바르게 할당해야 합니다.
      • SPI 통신 클럭 속도는 10MHz ~ 20MHz 이하로 안정화해서 사용하는 것을 권장합니다.

    💡 3줄 요약

    • 가장 추천하는 TF 카드: 32GB 이하 (FAT32 포맷)
    • 64GB 이상 카드를 쓰려면: PC에서 GUIFormat 등으로 FAT32 강제 포맷 후 사용
    • 추천 포맷 옵션: FAT32 / 할당 크기(Cluster Size) 32KB

    ** 클러스터 관련

    일반적인 PC 환경에서는 4KB가 유리하지만, ESP32-C3 같은 마이크로컨트롤러(MCU) 환경에서는 32KB가 훨씬 유리합니다.

    이유를 정리해 드릴 테니 블로그 글에 ‘보너스 팁: 클러스터 크기(4KB vs 32KB) 선택 기준’ 섹션으로 활용해 보세요.

    1. 용량 절약 관점 (4KB의 장점)

    • 4KB 세팅: 파일 하나당 최소 4KB 공간을 차지합니다. 100바이트짜리 작은 센서 로그 파일 1,000개를 저장할 때 불필요하게 버려지는 낭비 공간(Internal Fragmentation)이 최소화됩니다.
    • 텍스트 위주의 매우 작은 로그 파일만 수만 개 만드는 프로젝트라면 4KB가 저장 공간 효율 면에서 유리합니다.

    2. 성능 및 RAM 소모 관점 (32KB가 권장되는 이유)

    ESP32-C3는 메모리(SRAM)가 약 400KB 정도로 매우 제한적인 임베디드 시스템입니다. 이 환경에서는 4KB보다 32KB 클러스터가 갖는 이점이 훨씬 큽니다.

    1. FAT 테이블 메모리 관리 (SRAM 절약)
      • 클러스터 단위가 작아지면(4KB), 동일한 용량의 SD 카드를 관리하기 위해 필요한 FAT(File Allocation Table) 관리 항목 수가 8배로 증가합니다.
      • ESP32-C3가 파일 위치를 찾거나 읽을 때 RAM에 올려야 하는 인덱스 정보가 커져 메모리 부족(OOM)이나 파일 인덱싱 지연이 생길 수 있습니다.
    2. 읽기/쓰기 속도 및 I/O 오버헤드 감소
      • SD 카드의 물리적 최소 기록 단위(페이지/블록)는 보통 512B~4KB 이상이며, Flash 메모리 내부 삭제 단위(Block)는 훨씬 큽니다.
      • 32KB 세팅: 한 번에 데이터 덩어리를 큼직하게 읽고 쓰기 때문에 SPI 통신 횟수(오버헤드)가 대폭 줄어들어 전반적인 파일 읽기/쓰기 속도가 크게 향상됩니다.
    3. SD 카드 수명 보호 (Wear Leveling)
      • 작은 단위로 자주 고쳐 쓰는 것보다 큰 단위로 뭉쳐서 쓰기를 수행할 때 SD 카드 내부 컨트롤러의 플래시 메모리 마모 분산(Wear Leveling) 알고리즘이 훨씬 효율적으로 동작합니다.

    💡 블로그용 한 줄 요약 정리

    “소형 텍스트 파일 다수를 저장해 용량 낭비를 줄이는 게 최우선이라면 4KB, ESP32-C3의 처리 속도 향상과 시스템 안정성이 목적이라면 32KB를 추천합니다.”

  • MicroPython 멀티태스킹: 비동기(asyncio)와 멀티스레드, 언제 뭘 써야 할까?

    MicroPython 멀티태스킹: 비동기(asyncio)와 멀티스레드, 언제 뭘 써야 할까?

    ** 비동기와 멀티 스레드 차이

    🥊 한눈에 보는 핵심 차이점

    구분비동기 (uasyncio)멀티스레드 (_thread)
    작업 방식협력적 (Cooperative)
    내가 await으로 쉴 때 다른 일 함
    선점형 (Preemptive)
    OS/CPU가 강제로 작업 전환함
    메모리(RAM) 사용매우 적음 (메모리 절약)많이 듦 (스택 메모리 각각 할당)
    자원 공유/충돌안전함 (내가 쉴 때만 전환되므로)위험함 (변수/하드웨어 동시 접근 충돌)
    동시 작업 수수십~수백 개 가능보드에 따라 보통 2개(코어 수 제한)

    💡 주요 차이점 상세 설명

    1. 작업 switching(전환) 제어권: 내가 넘기느냐 vs 강제로 빼앗기느냐

    • 비동기 (uasyncio):
      • 작업이 진행되다가 await을 만나는 순간 “나 지금 대기 중이니까 다른 일 해~” 하고 스스로 제어권을 넘깁니다.
      • 코드 예측이 쉽고, 내가 원하는 순간에만 작업 전환이 일어나므로 데이터가 꼬일 일이 적습니다.
    • 멀티스레드 (_thread):
      • CPU가 일정 시간(몇 밀리초)마다 코드를 실행 중인 중간에 강제로 멈추고 다른 스레드로 넘겨버립니다.
      • 만약 스레드 A가 센서 값을 읽어서 전역 변수에 쓰는 중에, 스레드 B가 그 변수를 읽으려고 접근하면 데이터가 깨지거나 보드가 다운(Crash)될 수 있습니다. (이를 막으려면 Lock, Mutex 같은 복잡한 장치가 필요함)

    2. 메모리(RAM) 소비량 (마이크로파이썬에서 가장 중요한 이유!)

    마이크로컨트롤러는 PC와 달리 RAM이 수백 KB 정도로 매우 적습니다.

    • 멀티스레드:
      • 스레드를 하나 생성할 때마다 독립적인 메모리 공간(Stack)을 최소 수 KB씩 크게 떼어서 할당해줘야 합니다.
      • 스레드를 3~4개만 띄워도 메모리 부족(MemoryError)이 발생하기 쉽습니다.
    • 비동기:
      • 하나의 스레드(Single Thread) 안에서 “스케줄표”만 가지고 번갈아 돌기 때문에 메모리를 거의 먹지 않습니다. 수십 개의 비동기 루틴을 돌려도 메모리가 여유롭습니다.

    3. 멀티코어 활용 유무

    • 멀티스레드:
      • ESP32나 RP2040 같은 듀얼코어 보드에서 진짜 물리적인 2개의 코어를 동시에 각각 돌리고 싶을 때 유용합니다. (예: 코어 0은 모터 제어, 코어 1은 화면 출력)
    • 비동기:
      • 기본적으로 1개의 코어 안에서 효율적으로 시간을 쪼개 쓰는 방식입니다.

    🎯 결론: 언제 뭘 써야 할까?

    ✅ 이럴 땐 uasyncio (비동기)를 쓰세요!

    • 센서 값 주기적 읽기, LED 깜빡이기, 버튼 입력을 받으면서 네트워크(Wi-Fi/Web) 통신 처리하기 등 “대기 시간(Delay/Sleep/네트워크 응답)”이 많은 대부분의 IoT 작업
    • 메모리가 아슬아슬하거나 여러 개의 단순 루틴을 동시에 돌려야 할 때

    ✅ 이럴 땐 _thread (멀티스레드)를 쓰세요!

    • 지연 시간 없이 CPU를 100% 써서 연산만 주구장창 하는 두 작업을 물리적으로 분리하고 싶을 때
    • 타임 크리티컬해서 한쪽 코어가 멈추지 않고 오직 하드웨어/모터 제어만 전담해야 할 때 (예: 듀얼 코어의 코어 1개를 전용 엔진으로 쓸 때)

    한 줄 요약:

    간단한 대기 작업이 많다면 **메모리가 적게 들고 안전한 uasyncio**가 정석이고, 물리적 듀얼코어를 써서 하드웨어를 극한으로 굴려야 할 때만 제한적으로 **_thread**를 씁니다.

  • 마이크로파이썬으로 Wi-Fi 신호 강도(RSSI) 측정하는 방법 (ESP32 / ESP8266)

    마이크로파이썬으로 Wi-Fi 신호 강도(RSSI) 측정하는 방법 (ESP32 / ESP8266)

    마이크로파이썬(MicroPython)에서는 network 모듈을 사용하면 현재 연결된 Wi-Fi의 RSSI(신호 강도)를 아주 쉽게 측정할 수 있습니다.

    보통 ESP32나 ESP8266 보드에서 많이 사용하는 코드 패턴을 정리해 드릴게요.

    1. 이미 Wi-Fi에 연결된 상태에서 RSSI 측정하기

    현재 Wi-Fi에 연결되어 있는 상태라면 wlan.status('rssi') 메서드를 사용해 실시간 신호 강도를 숫자로 받아올 수 있습니다.

    Python

            
    import network
    import time
    
    # Wi-Fi 스테이션 모드 활성화
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    
    # Wi-Fi가 연결될 때까지 대기 (실제 코드에서는 공유기 접속 코드가 필요합니다)
    while not wlan.isconnected():
        print("연결 대기 중...")
        time.sleep(1)
    
    print("연결 완료!")
    
    # 1초마다 RSSI(신호 강도) 측정하기
    while True:
        if wlan.isconnected():
            # RSSI 값 가져오기 (단위: dBm)
            rssi = wlan.status('rssi')
            print(f"현재 Wi-Fi 신호 강도 (RSSI): {rssi} dBm")
        else:
            print("Wi-Fi 연결이 끊어졌습니다.")
        
        time.sleep(1)
    
    

    2. 주변 Wi-Fi를 스캔하면서 RSSI 측정하기

    공유기에 접속하지 않고, 주변에 있는 모든 Wi-Fi 채널을 검색(Scan)하여 각각의 RSSI를 확인하고 싶을 때는 wlan.scan()을 사용합니다.

    Python

            
    import network
    
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    
    print("주변 Wi-Fi 스캔 중...")
    # 주변 AP 검색
    access_points = wlan.scan()
    
    print(f"{'SSID (이름)':<20} | {'BSSID (Mac)':<18} | {'채널':<5} | {'RSSI':<5}")
    print("-" * 60)
    
    for ap in access_points:
        # scan() 결과 구조: (ssid, bssid, channel, rssi, security, hidden)
        ssid = ap[0].decode('utf-8', 'ignore')
        bssid = ':'.join('%02x' % b for b in ap[1])
        channel = ap[2]
        rssi = ap[3]
        
        print(f"{ssid:<20} | {bssid:<18} | {channel:<5} | {rssi:<5} dBm")
    
    

    💡 RSSI 값 읽는 팁 (참고용)

    RSSI는 음수(dBm)로 표시되며, 0에 가까울수록 신호가 강한 것입니다.

    • -30 ~ -50 dBm: 아주 훌륭함 (공유기 바로 옆)
    • -60 ~ -67 dBm: 양호함 (유튜브 스트리밍, 웹서핑 문제 없음)
    • -70 ~ -80 dBm: 신호가 약함 (연결이 불안정하거나 속도가 느려질 수 있음)
    • -90 dBm 이하: 연결 불가 수준

  • PID 제어의 시대는 끝났다? 차세대 제어 알고리즘 ADRC

    PID 제어의 시대는 끝났다? 차세대 제어 알고리즘 ADRC

    제어 공학에서 오랜 기간 왕좌를 지켜온 PID(Proportional-Integral-Derivative) 제어와 차세대 제어 알고리즘으로 주목받는 ADRC(Active Disturbance Rejection Control, 능동 장해 거부 제어)는 각각의 뚜렷한 철학과 장단점을 가지고 있습니다.

    두 제어 방식의 핵심 개념, 성능 비교, 그리고 앞으로의 제어 트렌드를 상세히 정리해 드립니다.

    1. PID vs ADRC 핵심 개념 이해

    PID 제어: “과거와 현재의 오차만 보고 달린다”

    PID는 시스템의 수학적 모델 없이도, 제어 대상의 ‘출력 값’과 ‘목표 값’의 오차(Error)만을 바탕으로 제어 입력을 생성합니다.

    • P (비례): 현재 오차에 비례해 제어 (속도 결정)
    • I (적분): 누적된 과거 오차를 제거 (정상상태 오차 제거)
    • D (미분): 오차의 변화 추세를 보고 미래를 예측 (오버슈트 억제)

    💡 한계: 시스템 내부에 급격한 외란(Disturbance)이 발생하거나, 모터의 부하가 갑자기 바뀌는 등 ‘동적 특성 변화’가 생기면 PID는 이에 즉각 대응하지 못하고 오차가 커진 후에야 사후 약방문식으로 제어를 시작합니다. 또한 미분(D) 성분은 센서 노이즈를 증폭시키는 고질적인 문제가 있습니다.

    ADRC 제어: “외란을 실시간으로 감시하고 즉시 상쇄한다”

    중국과학원 한징칭(Han Jingqing) 교수가 제안한 ADRC는 “모델의 불확실성과 외부 외란을 실시간으로 추정하여 제어 신호에서 빼버리면, 시스템은 단순한 적분기 형태로 변한다”는 철학에서 출발합니다. 핵심은 ESO(Extended State Observer, 확장 상태 관측기)입니다.

    • 확장 상태 관측기 (ESO): 시스템의 내부 상태뿐만 아니라, ‘수학적 모델의 오류’와 ‘외부 외란’을 하나의 ‘총체적 외란(Total Disturbance)’이라는 새로운 상태 변수로 정의하고 실시간 추정합니다.
    • 외란 상쇄: ESO가 외란을 알아내는 즉시, 제어 입력에서 그만큼을 상쇄(Feedforward 방식)시켜 버립니다.
    • 선형 피드백: 외란이 사라진 깨끗한 시스템에 단순한 에러 피드백을 적용합니다.

    2. 두 제어 방식의 정밀 비교 (어떤 게 우세한가?)

    결론부터 말씀드리면 “제어 성능과 강인성(Robustness) 측면에서는 ADRC가 압도적으로 우세하지만, 구현의 단순함과 범용성 측면에서는 여전히 PID가 우세하다”고 볼 수 있습니다.

    비교 항목PID 제어ADRC 제어우세 승자
    외란 대응 능력오차가 발생한 후 제어 (느림)ESO를 통해 외란을 실시간 상쇄 (매우 빠름)ADRC
    모델 의존도없음 (완전 블랙박스 가능)대략적인 시스템 차수만 알면 됨무승부
    매개변수 튜닝3개 (Kp​,Ki​,Kd​) / 직관적임ESO 대역폭, 제어기 대역폭 등 2~3개 (대역폭 기반 튜닝으로 발전하여 생각보다 쉬움)무승부 (최신 LADRC 기준)
    센서 노이즈 영향미분(D) 항이 노이즈를 증폭시킴ESO가 필터 역할을 하여 노이즈에 강함ADRC
    연산 복잡도매우 낮음 (MCU 자원 거의 안 먹음)관측기(ESO) 상태 방정식을 풀어야 하므로 연산량 많음PID
    산업계 범용성전 세계 산업계의 90% 이상 사용고성능 임베디드 장비를 중심으로 급격히 확산 중PID

    왜 ADRC가 우세한가? (예시)

    모터 제어를 예로 들면, 로봇 팔이 물건을 집어서 갑자기 무게(부하)가 늘어나는 상황이 발생했을 때:

    • PID: 속도가 떨어지고 나서야 Ki​ 항이 서서히 차올라 모터 출력을 높입니다. (응답 지연, 오버슈트 발생 가능)
    • ADRC: 부하가 걸리는 순간 ESO가 이를 ‘외란’으로 즉시 감지하여 한두 스텝 만에 모터 전류를 올려버립니다. 속도 저하가 거의 발생하지 않습니다.

    3. 앞으로의 제어 방식은 어디로 가는가?

    앞으로의 제어 패러다임은 “PID의 점진적 세대교체”와 “지능형 제어의 융합”으로 요약할 수 있습니다.

    ① 하드웨어 성능 향상으로 ADRC의 급부상

    과거에는 ADRC의 복잡한 행렬 연산과 관측기 루프를 저가형 MCU(마이크로컨트롤러)에서 돌리기 부담스러웠습니다. 하지만 최근 하드웨어(Cortex-M 시리즈, ESP32, RP2040 등)의 성능이 비약적으로 상승하면서 ADRC를 탑재하기 매우 유리해졌습니다.

    • 텍사스 인스트루먼트(TI) 사의 모터 제어 칩셋에는 이미 InstaSPIN-MOTION이라는 이름으로 ADRC 기술이 내장되어 상용화되었습니다.
    • 드론(Betaflight 등 프레임워크), 정밀 CNC, 서보 드라이브, 스마트 가전(인버터 컴프레서) 등 외란이 많고 정밀 제어가 필요한 영역에서 PID를 빠르게 대체하고 있습니다.

    ② 데이터 기반 및 AI와의 융합

    전통적인 제어 이론에 딥러닝이나 강화학습(Reinforcement Learning)을 융합하는 시도가 활발합니다.

    • AI 기반 자동 튜닝: PID나 ADRC의 파라미터를 사람이 맞추는 것이 아니라, AI가 시스템의 거동을 보고 실시간으로 최적의 파라미터(Gain)를 찾아주는 방식입니다.
    • 신경망 외란 관측기: ADRC의 핵심인 ESO 자리에 딥러닝 모델을 넣어 복잡한 비선형 외란을 예측하는 연구가 진행 중입니다.

    ③ 현실적인 공존: PID는 죽지 않는다

    ADRC가 아무리 좋아도 밸브 제어, 단순 온조기, 유량 제어처럼 빠른 응답이 필요 없고 정밀도가 적당해도 되는 수많은 산업 현장에서는 여전히 PID가 굳건히 자리를 지킬 것입니다. 싸고, 직관적이며, 유지보수가 편하기 때문입니다.

    요약

    • 현재: 단순하고 범용적인 제어는 여전히 PID가 지배하고 있지만, 고성능·강인 제어가 필요한 곳에서는 한계에 부딪히고 있습니다.
    • 미래: 시스템의 성능을 극대화해야 하는 정밀 제어 분야(로봇, 드론, 전기차 모터 등)에서는 외란 저항성이 압도적인 ADRC가 사실상의 표준(Standard)으로 자리 잡아가고 있습니다.

    💡 여기서 잠깐! 실무 엔지니어링 팁

    앞서 PID와 ADRC의 이론적인 개념을 비교해 보았는데요. 이번에는 실제 임베디드 현업이나 DIY 프로젝트에 적용할 때 꼭 알아야 할 현실적인 실무 포인트 4가지를 짚고 넘어가겠습니다.

    1. ADRC는 쓰기 어렵다? 편견을 깨버린 ‘LADRC’의 등장

    “관측기(ESO)에 행렬식에… 수식이 너무 복잡해서 현업에서 못 쓰겠다” 하시는 분들이 많습니다. 실제로 한징칭 교수가 처음 제안한 초창기 ADRC는 비선형 수식이 많아 튜닝해야 할 파라미터가 10개가 넘어 다들 고개를 저었죠.

    하지만 가오(Gao) 교수가 이를 선형화한 LADRC(Linear ADRC)를 발표하면서 판도가 완전히 바뀌었습니다.

    • 복잡한 파라미터를 단 2개로 압축: 최신 LADRC는 관측기 대역폭(ωo​)과 제어기 대역폭(ωc​)이라는 딱 두 가지만 조절하면 튜닝이 끝납니다.
    • 직관적인 튜닝: 시스템의 주파수 대역폭만 슥슥 조절하면 되기 때문에, 어설프게 Kp​,Ki​,Kd​ 세 개를 붙잡고 수십 번 밤새워 튜닝하는 PID보다 오히려 셋팅이 훨씬 직관적이고 빠릅니다.

    2. 하드웨어 리소스, 내 칩(MCU)에서 돌아갈까?

    제어 알고리즘을 고를 때 가장 중요한 건 결국 “내가 가진 하드웨어 성능으로 커버가 되느냐”입니다.

    • PID 제어: 코드 몇 줄이면 끝납니다. 이산화(Discretization) 과정도 매우 간단해서 아주 저렴한 8비트 아두이노(AVR 계열) 칩에서도 넘치도록 가볍게 돌아갑니다.
    • ADRC 제어: 매 루프마다 내부 상태 방정식 오차를 계산하고 예측하는 연산(오일러 적분 등)이 포함되기 때문에 소수점(Floating Point) 연산이 끊임없이 일어납니다.

    🛠️ 실무 팁: 따라서 연산 성능이 떨어지는 8비트 MCU보다는, 하드웨어 **FPU(부동소수점 연산 장치)**가 탑재된 32비트 MCU(예: Cortex-M4 시리즈, ESP32, RP2040 등) 환경에서 구현하는 것을 적극 권장합니다. 최근에는 워낙 고성능 MCU가 저렴하게 잘 나와서 하드웨어 제약은 거의 사라진 편입니다.

    3. 직관적인 비유로 이해하는 두 방식의 차이

    이해를 돕기 위해 우리가 매일 타는 ‘자동차 운전’으로 두 제어 방식을 비유해 보겠습니다.

    • PID 제어는 ‘운전면허 시험장 코스’를 도는 것과 같습니다. 바람도 안 불고 노면도 고른 완벽한 통제 환경이라면, 엑셀과 브레이크만 적당히 밟아도 자율주행 차가 선을 넘지 않고 완벽하게 목적지까지 달립니다.
    • ADRC 제어는 ‘돌풍이 몰아치는 대관령 고갯길’을 달리는 것과 같습니다. 차가 코너를 돌 때 갑자기 측면에서 강한 돌풍이 불면, 차가 차선 밖으로 밀려나기 전에 운전자가 본능적으로 핸들을 반대 방향으로 확 꺾어 버리죠(외란 상쇄). 외란이 발생해도 차체는 거의 흔들리지 않고 중심을 유지하며 안정적으로 주행하게 됩니다.

    4. 이미 구축된 오픈소스 생태계와 상용화 트렌드

    “이 좋은 걸 나 혼자 맨땅에 헤딩하며 코딩해야 하나?” 걱정하실 필요 없습니다.

    이미 GitHub 등에 Alternative PID, Arduino ADRC, LADRC C++ 같은 키워드로 검색해 보면 잘 짜여진 오픈소스 라이브러리를 쉽게 찾을 수 있습니다. 또한, 오픈소스 드론 플라이트 콘트롤러(PX4, Betaflight)나 로봇 운영체제(ROS) 진영에서도 이미 외란에 강한 ADRC 알고리즘이 메인 제어기로 녹아들고 있는 추세입니다.

    칩 제조사들도 발 빠르게 움직이고 있습니다. 모터 제어 칩의 명가인 텍사스 인스트루먼트(TI) 사의 모터 제어 IC 라인업에는 이미 InstaSPIN-MOTION이라는 이름으로 ADRC 기술이 칩 내부에 하드웨어적으로 탑재되어 상용화되어 있습니다.

    🏁 결론: 나의 프로젝트에는 무엇을 골라야 할까?

    과거에는 연산량 부담 때문에 그림의 떡이었던 ADRC였지만, 이제는 32비트 고성능 MCU를 누구나 수천 원에 구하는 시대가 되었습니다.

    내가 만드는 자동화 장비나 IoT 기기가 ‘갑작스러운 부하 변동이 많고, 외부 노이즈나 바람 같은 환경 변수에 민감한 영역(드론, 정밀 서보 모터, 로봇 팔 등)’에 속한다면, 이제 익숙했던 PID를 잠시 내려놓고 차세대 표준으로 자리 잡고 있는 ADRC(LADRC)를 적용해 보시는 건 어떨까요? 여러분의 장비가 한 차원 더 스마트해지는 것을 경험하실 수 있을 것입니다.

  • 신형 센서가 무조건 좋다? AHT20, BMP280 쓰다가 아차한 ‘통신 거리’의 비밀 (vs DHT11/DHT22)

    신형 센서가 무조건 좋다? AHT20, BMP280 쓰다가 아차한 ‘통신 거리’의 비밀 (vs DHT11/DHT22)

    안녕하세요! 디바이스를 설계하고 IoT 프로젝트를 진행하다 보면 누구나 한 번쯤 “더 정확하고, 더 최신인 센서”를 찾게 마련입니다.

    저 역시 최근 프로젝트를 진행하면서 기존에 흔히 쓰던 DHT11이나 DHT22 대신, 비교적 최신 칩셋이면서 정밀도가 높은 AHT20이나 기압까지 측정되는 BMP280을 적극적으로 도입했습니다. 당연히 스펙이 더 좋으니 결과물도 완벽할 줄 알았죠.

    하지만 실전 배치 단계에서 예상치 못한 복병을 만났습니다. 바로 ‘전선 연장 거리(통신 거리)’ 문제였습니다.

    오늘은 실전에서 직접 삽질하며 깨달은 AHT20/BMP280(I2C 방식)과 DHT11/DHT22(1-Wire 방식)의 통신 거리 제약과 그 이유에 대해 생생하게 공유해 보려고 합니다.

    1. 발목을 잡은 주범, I2C 통신 (AHT20, BMP280)

    AHT20과 BMP280은 성능이 정말 뛰어납니다. 반응도 빠르고 소수점 아래 단위까지 기가 막히게 잡아내죠. 하지만 이 녀석들은 I2C(아이스퀘어드씨) 통신 방식을 사용합니다.

    I2C는 원래 하나의 회로 기판(PCB) 위에서 아주 가까이 있는 칩들끼리 데이터를 주고받으라고 만든 규격입니다. 즉, ‘태생적으로 장거리용이 아니다’라는 뜻입니다.

    • 실전 한계 거리: 별도 조치 없이 일반 전선(점퍼선)으로 연결할 때 안정적인 거리는 30cm ~ 50cm 내외입니다.
    • 1m 넘게 늘리면 어떻게 될까? 선 길이가 1~2m를 넘어가는 순간, 전선 자체의 정전용량(Capacitance)과 주변 노이즈 때문에 데이터가 심하게 왜곡됩니다. 센서 값이 멈춰버리거나 통신 에러가 나면서 MCU가 먹통이 되는 현상을 목격하게 됩니다.

    💡 I2C 센서로 거리를 늘려야만 한다면? 꼭 이 센서들을 멀리 떨어뜨려야 한다면, 통신 속도(Clock Speed)를 기본 400kHz에서 100kHz 이하로 대폭 낮추고, 풀업 저항(2.2kΩ~4.7kΩ)을 보강해야 합니다. 5미터 이상이라면 P82B715 같은 전용 I2C 버스 확장 IC를 추가하는 번거로운 하드웨어 작업이 수반됩니다.

    2. 느리지만 멀리 간다! 1-Wire 통신 (DHT11, DHT22)

    반면, 초보자용으로 분류되거나 구형 취급을 받기도 하는 DHT11과 DHT22는 어떨까요? 이 녀석들은 독자적인 1선(Single-Bus) 디지털 통신 방식을 씁니다.

    데이터 선 딱 하나로 통신을 주고받는데, 데이터 갱신 속도는 1~2초 주기로 다소 느리지만 거리 면에서는 엄청난 깡패입니다.

    • 실전 한계 거리: 기본적으로 5m ~ 10m는 선을 그냥 늘려도 아무 문제 없이 짱짱하게 돌아갑니다.
    • 조건만 맞추면 20m~30m도 거뜬: 전원을 3.3V 대신 5V로 인가해 전압 강하를 막아주고, 데이터 선에 달리는 풀업 저항 값을 4.7kΩ 수준으로 낮춰주면 랜선(UTP)이나 실드선을 타고 수십 미터 밖에서도 온습도 데이터를 안정적으로 쏘아 보내줍니다.

    📊 한눈에 보는 센서별 통신 거리 사양

    센서 명통신 방식정밀도 체감기본 권장 거리한계 극복 방법
    AHT20 / BMP280I2C훌륭함 (0.1∘C 단위)50cm 이내통신 속도 다운, 풀업 저항 매칭, 확장 IC 필수
    DHT111-Wire아쉬움 (1∘C 단위)5m 이내5V 전원 사용, 풀업 저항 조절
    DHT221-Wire준수함 (0.1∘C 단위)5m ~ 10m5V 전원 사용, 풀업 저항 조절, 실드선 활용

    💡 실전에서 얻은 결론: 맹신은 금물, 환경이 우선이다

    부화기 내부나 스마트팜 챔버처럼 제어 장치(MCU)와 센서의 거리가 수 미터 이상 떨어져야 하는 환경이라면, 아무리 최신형 AHT20이나 BMP280이 정밀하다고 해도 배선 작업과 회로 보완 때문에 배보다 배꼽이 더 커질 수 있습니다.

    반면 DHT22는 적당한 정밀도(±0.5∘C)를 보장하면서도, 풀업 저항 하나만 손보면 긴 선을 빼서 원거리 환경을 제어하기에 압도적으로 편리합니다.

    • MCU와 센서가 같은 케이스나 기판에 붙어있다? ➡️ 무조건 AHT20, BMP280 추천 (고정밀, 고속)
    • 수 미터 밖의 먼 곳의 온습도를 끌어와야 한다? ➡️ 뒤도 돌아보지 말고 DHT22 추천 (원거리 안정성)

    기술 스펙 시트에 적힌 정밀도 수치에만 현혹되지 말고, 내가 만들 장치의 ‘물리적 거리와 배선 환경’을 먼저 고려하는 것이 실패 없는 메이킹의 지름길이라는 것을 이번에 배웠네요.

    구형이라고 안 쓰고 중고로 팔까 하다가 아차했습니다.

  • [생활정보] 에어컨 켰는데 습도가 더 높아지는 이유! 배수 문제일까?

    [생활정보] 에어컨 켰는데 습도가 더 높아지는 이유! 배수 문제일까?

    안녕하세요! 여름철 무더위를 피해 에어컨을 켰는데, 온도는 분명 22~24도로 시원해졌음에도 불구하고 오히려 몸이 끈적거리고 습도가 치솟는 경험 해보신 적 있으신가요?

    “어? 에어컨 켜면 제습도 같이 되는 거 아니었나?” “혹시 에어컨 물이 안 빠져서(배수 불량) 그런가?”

    하고 걱정하시는 분들을 위해, 오늘은 에어컨 가동 시 습도가 높아지는 진짜 이유와 해결법을 시원하게 정리해 드리겠습니다!

    1. 배수가 안 돼서 그런 걸까요?

    많은 분들이 가장 먼저 의심하시는 게 바로 ‘배수관 막힘’입니다.

    결론부터 말씀드리면, 물이 방바닥으로 넘쳐흐르지 않는다면 배수관이 완전히 막힌 것은 아닙니다. 다만, 완전히 막히지 않았더라도 실내기 내부 물받이(드레인 팬)에 물이 원활하게 흐르지 않고 고여 있다면 습도 상승에 일부 영향을 줄 수는 있습니다.

    하지만 진짜 주범은 배수가 아니라 ‘에어컨의 운전 원리’에 있습니다.

    2. 온도는 내려가는데 습도는 왜 오를까? (진짜 이유 2가지)

    ① 실외기가 멈추면서 일어나는 ‘역증발 현상’

    에어컨이 제습을 하는 원리는 찬물이 담긴 컵 표면에 물방울이 맺히는 것과 같습니다. 에어컨 내부의 냉각판이 차가워지면서 공기 중의 수분을 머금고, 이 물이 배수관을 통해 밖으로 빠져나가는 것이죠.

    문제는 방 온도가 내가 설정한 온도(예: 23도)에 도달했을 때 발생합니다. 목표 온도에 도달하면 에어컨은 찬 바람을 만드는 실외기(컴프레셔) 가동을 멈추거나 최소화하고 ‘송풍’ 상태로 바뀝니다. 이때, 냉각판에 맺혀 있던 축축한 수분들이 바람을 타고 다시 방 안으로 증발(역증발)해 버립니다. 온도는 낮은데 수분이 대량으로 공급되니 습도가 80~90%까지 순식간에 올라가게 됩니다.

    ② 방 크기에 비해 에어컨 용량이 너무 큰 경우

    방은 작은데 에어컨이 너무 강력하면, 켜자마자 순식간에 목표 온도에 도달합니다. 에어컨이 충분한 시간 동안 실외기를 돌리며 공기 중의 수분을 짜내야 하는데, 너무 일찍 일을 끝내고 실외기를 꺼버리기 때문에 온지만 낮고 습한 상태가 유지되는 것입니다.

    💡 끈적함 탈출! 쾌적하게 에어컨 쓰는 꿀팁

    첫째, 설정 온도를 1~2도만 더 낮춰보세요 이미 온도가 낮아서 춥다면 바람 세기를 ‘약풍’이나 ‘미풍’으로 줄이더라도, 실외기가 멈추지 않고 계속 돌아갈 수 있도록 설정 온도를 조금 더 낮추는 것이 좋습니다. 실외기가 돌아야 수분이 밖으로 계속 배출됩니다.

    둘째, ‘제습 모드’도 설정 온도를 낮게 잡으세요 많은 분들이 오해하시는데, 인버터 에어컨의 제습 모드 역시 설정 온도에 도달하면 송풍으로 바뀌며 습도가 다시 올라갑니다. 제습 모드를 쓰실 때도 희망 온도를 현재 온도보다 2~3도 낮게 설정해야 제습 효과를 제대로 볼 수 있습니다.

    셋째, 끄기 전 ‘송풍’ 또는 ‘자동 건조’는 필수! 에어컨 내부 물받이에 물이 오래 고여 있거나 먼지가 많으면 수분을 더 많이 머금게 됩니다. 에어컨을 끄기 전에는 반드시 ‘자동 건조’ 기능을 켜두시거나, ‘송풍 모드’로 20~30분간 내부를 바짝 말려주셔야 다음 가동 때 습기와 꿉꿉한 냄새를 줄일 수 있습니다.

    에어컨을 켰는데도 끈적거렸던 이유, 이제 궁금증이 풀리셨나요? 실외기가 멈추지 않도록 온도 설정을 지혜롭게 조절하셔서, 올여름은 온도와 습도 둘 다 잡는 쾌적한 여름 보내시길 바랍니다!

  • 스마트홈 온습도/IR 리모콘 제어 “통합 관리 데시보드” 디자인 리뉴얼

    스마트홈 온습도/IR 리모콘 제어 “통합 관리 데시보드” 디자인 리뉴얼

    안녕하세요! 스마트홈 구축의 끝은 결국 ‘UX/UI’와 ‘시각적 만족’이 아닐까 싶습니다. 기존에 사용하던 온습도 모니터링과 에어컨/TV 등 가전 제어용 IR 리모콘 페이지가 슬슬 지겨워지기 시작하더군요. 그래서 이번에 큰맘 먹고 여러 가지 버전의 디자인으로 리모델링을 진행했습니다!

    • 기존 UI의 문제점: 기능은 잘 작동하지만, 한눈에 들어오지 않거나 인테리어와 어울리지 않음.
    • 변화된 핵심 기능: 온습도 데이터 시각화 개선 + IR 리모콘 버튼의 직관적 배치.
    • 여러 가지 디자인 테마 소개:
      • Type A. 모던 다크 모드: 밤에 봐도 눈이 편안하고 테크니컬한 감성.
      • Type B. 미니멀 화이트: 깔끔한 화이트 인테리어에 녹아드는 감성 UI.
      • Type C. 대화면 대시보드형: 거실 월패드나 태블릿에 띄워두기 좋은 한눈에 보기 테마.
    • 색상 테마 5~6개 정도를 선택할 수 있도록 기능 추가
    • 온습도 수치 테이블과 그래프와 온습도를 보고 바로 에어컨 조절을 한페이지에서 할 수 있도록 통합
    • 최근 2시간동안 1분 온습도 추이 기능 추가. 에어컨 온도 조작시 몇분내로 온습도 추이를 볼 수 있다.
    • 기존에 1시간 마다의 온습도 기록은 유지하고 2년 이상의 전체 데이타를 그래프화 해서 볼 수 있다.

    마무리 디자인을 여러 개로 바꿔가며 적용해 보니, 계절이나 기분에 따라 스마트홈 분위기를 바꿀 수 있어 만족도가 200%입니다.