로그인회원가입

[카테고리:] 부품 리뷰

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를 추천합니다.”

  • ESP32-CAM 무한 리셋 없는 전원 제어! 소형 MOSFET SI2302 완벽 가이드 (특성 및 회로도)

    ESP32-CAM 무한 리셋 없는 전원 제어! 소형 MOSFET SI2302 완벽 가이드 (특성 및 회로도)

    안녕하세요! 메이커 여러분. 오늘은 IoT 프로젝트를 진행할 때 필수적으로 마주하게 되는 ‘전력 관리(Power Management)’에 대해 이야기해보려고 합니다.

    cam 은 사용할 때만 켜고 평상시는 아예 전원을 끊어 놓는게 보안상 좋습니다.

    배터리로 구동되는 가젯이나 스마트 장치를 만들 때, 평소에는 전원을 완전히 차단했다가 필요할 때만 특정 모듈을 켜고 싶을 때가 많죠. 특히 ESP32-CAM처럼 카메라와 Wi-Fi를 동시에 사용하며 순간 피크 전류를 500mA 이상 잡아먹는 헤비한 모듈은 일반 트랜지스터(TR)로 제어하기가 까다롭습니다. “어? 트랜지스터를 달았더니 ESP32가 무한 리부팅(Brownout)에 빠지네?” 하시는 분들이 많으셨을 텐데요.

    오늘은 그 해결사이자, 소형 표면실장(SMD) 타입으로 메이커들 사이에서 가성비 최고로 불리는 N-채널 Logic Level MOSFET, SI2302에 대해 자세히 알아보고 실전 회로까지 마스터해 보겠습니다.

    1. 왜 일반 TR이 아니라 MOSFET(마스펫)일까?

    우리가 흔히 쓰는 2N2222 같은 일반 트랜지스터(BJT)는 ‘전류’로 ‘전류’를 제어하는 부품입니다. 컬렉터와 에미터 사이에 전류가 흐를 때, 필연적으로 약 0.2V ~ 0.6V 수준의 전압 강하(Voltage Drop)가 발생합니다. 5V 전원을 공급했는데 모듈에는 4.5V만 들어가는 현상이 생기죠. 이 때문에 전류를 많이 쓰는 ESP32-CAM은 전압 부족으로 리셋이 걸리게 됩니다.

    반면, MOSFET(전계효과트랜지스터)은 ‘전압’으로 ‘전류’를 제어합니다. 완전히 켜졌을 때(Turn-on), MOSFET은 단순히 ‘저항이 매우 낮은 도선’처럼 작동합니다. 전압 강하가 거의 없어서 저전압 대전류 스위칭에 완벽한 솔루션이 됩니다.

    2. SI2302 핵심 성능 사양 (Datasheet 정밀 분석)

    SI2302(주로 SOT-23 패키지)는 아주 작은 크기임에도 불구하고 놀라운 사양을 자랑합니다. 왜 이 녀석이 ESP32-CAM 스위칭에 제격인지 데이터시트 수치로 증명해 드립니다.

    주요 항목사양 (Specification)메이커를 위한 의미 해석
    소자 타입N-Channel MOSFET부하의 GND 라인을 끊고 맺는 ‘로우 사이드’ 스위치에 적합
    드레인-소스 전압 (VDS​)Max 20V3.3V, 5V, 12V 회로까지 넉넉하게 커버 가능
    연속 드레인 전류 (ID​)Max 2.8AESP32-CAM의 피크 전류(약 0.5A)의 5배 이상 감당!
    게이트 문턱 전압 (VGS(th)​)0.65V ~ 1.2V전압이 매우 낮아도 켜지기 시작함
    도통 저항 (RDS(on)​)@4.5V : 0.045Ω
    @2.5V : 0.070Ω
    핵심 포인트! 3.3V GPIO를 넣으면 저항이 약 0.055Ω으로 극도로 낮아짐

    🧮 옴의 법칙으로 보는 실제 전압강하와 발열량

    ESP32-CAM이 Wi-Fi 전송으로 최대 500mA(0.5A)를 당길 때, SI2302에서 발생하는 손실을 계산해 볼까요? (ESP32-C3의 3.3V 제어 기준, 저항은 0.055Ω 적용)

    • 실제 전압 강하 (V=I×R):0.5A×0.055Ω=0.0275V5V 전원을 통과시켜도 고작 0.027V만 깎입니다. ESP32-CAM에는 4.97V 이상이 그대로 전달되므로 브라운아웃 리셋 걱정이 없습니다.
    • MOSFET 자체 발열량 (P=IR):0.5A2×0.055Ω=0.01375W(13.75mW)소모 전력이 미미하여 방열판은커녕 만져봐도 온기가 느껴지지 않을 정도로 쾌적하게 작동합니다.

    3. ESP32-C3를 이용한 ESP32-CAM 전원 제어 실전 회로도

    메인 컨트롤러인 ESP32-C3의 GPIO 1번 핀을 사용하여 ESP32-CAM의 5V 전원을 켜고 끄는 로우 사이드(Low-Side) 스위칭 회로입니다.

    SI2302 브레드보드 호환 개조

    Plaintext

    💡 회로 구성 핵심 팁!

    1. 게이트 보호 저항 (100Ω): MCU의 GPIO 핀에서 MOSFET 게이트로 순간적으로 흘러 들어가는 서지 전류를 제한하여 핀을 보호합니다.
    2. 풀다운 저항 (10kΩ): MCU가 부팅되거나 핀이 플로팅(불안정) 상태일 때, 게이트 전압을 GND로 잡아두어 ESP32-CAM이 제멋대로 켜지는 것을 방지합니다.
    3. 돌입 전류 방지용 콘덴서 (470μF): 가장 중요합니다! MOSFET이 딱 켜지는 나노초(ns) 단위의 순간, 회로 전체 전압이 휘청이는 것을 콘덴서가 댐퍼 역할을 하며 막아줍니다. 이 콘덴서가 있어야 안정적인 구동이 가능합니다.

    4. 하드웨어 메이커를 위한 최종 주의사항 (UART 역류)

    이 회로는 구조가 간단한 대신 ESP32-CAM의 GND 라인을 차단하는 방식입니다. 만약 ESP32-C3와 ESP32-CAM 사이에 TX, RX 같은 통신선이 직접 연결되어 있다면, MOSFET을 꺼서 GND를 차단하더라도 5V 전원이 내부 회로와 통신선을 타고 ESP32-C3의 3.3V 핀으로 역류할 수 있습니다.

    이를 방지하기 위해 소프트웨어 코드를 작성하실 때는 “전원을 차단하기 직전, 통신선 핀 모드를 INPUT으로 변경하거나 LOW로 떨어뜨리는 로직”을 반드시 추가해 주시는 것이 좋습니다.

    SI2302는 알리익스프레스나 국내 부품몰에서 개당 수십 원 단위로 구할 수 있는 초가성비 아이템이니, 배터리 기반의 IoT 가젯을 설계 중이시라면 꼭 한 번 활용해 보세요!


    컨트롤 MCU와 게이트 사이 저항값에 대해서

    마이크로컨트롤러(MCU)의 GPIO 보호 목적만 본다면 100Ω은 충분한 값이며, 1kΩ으로 올려도 정상 작동은 하지만 스위칭 속도가 미세하게 느려집니다. 그리고 아예 저항을 걸지 않으면(직결하면) 최악의 경우 MCU의 GPIO 핀이 고장 날 위험이 있습니다.

    왜 그런지 MOSFET 게이트의 독특한 구조인 ‘기생 커패시턴스(Cgs)’ 특성을 바탕으로 쉽게 설명해 드릴게요.

    1. 아예 저항을 안 걸면 어떻게 될까? (0Ω 직결)

    MOSFET의 게이트(Gate)는 내부적으로 완벽히 절연되어 있어서, 전류가 계속 흘러 들어가지 않습니다. 대신 아주 작은 콘덴서(커패시터)가 들어있다고 보시면 됩니다.

    • 스위칭 순간의 문제: 텅 비어있는 콘덴서에 전압을 거는 그 ‘찰나의 순간’에는 저항이 0인 쇼트 상태와 같습니다.
    • MCU의 위험: ESP32-C3의 GPIO 1번이 HIGH로 바뀌는 순간, 순간적으로 수십~백 mA 이상의 과전류(돌입 전류)가 게이트로 왈칵 흘러 들어갑니다. ESP32-C3의 GPIO가 안전하게 버틸 수 있는 최대 전류는 보통 20mA ~ 40mA 수준이기 때문에, 저항 없이 직결하면 이 순간적인 과전류 스트레스가 누적되어 GPIO 핀이 타버리거나 고장 날 수 있습니다.

    따라서 단 100Ω이라도 직렬로 달아주면, 옴의 법칙(I=V/R)에 의해 최대 피크 전류가 3.3V / 100Ω = 33mA 수준으로 제한되므로 MCU를 완벽하게 보호할 수 있습니다. 그래서 100Ω이 결코 작은 값이 아닙니다.

    2. 1kΩ 저항을 걸면 어떻게 될까?

    1kΩ을 걸면 피크 전류가 3.3V / 1kΩ = 3.3mA로 줄어드니 MCU 입장에서는 훨씬 더 안전하고 편안합니다. ESP32-CAM 전원 제어 같은 일반적인 ON/OFF 스위칭용으로는 1kΩ을 써도 아무런 문제 없이 잘 작동합니다.

    다만, 기술적으로 한 가지 트레이드오프(개념적 손해)가 발생합니다.

    • RC 시상수(Time Constant)의 증가: 앞서 게이트가 ‘소형 콘덴서’ 같다고 말씀드렸죠? 저항(R)의 크기가 커지면 콘덴서(C)에 전압이 완전히 충전되는 데 걸리는 시간(τ=R×C)이 늘어납니다.
    • 스위칭 속도 저하와 발열: 저항이 100Ω일 때는 나노초(ns) 단위로 순식간에 켜지던 MOSFET이, 1kΩ일 때는 켜지는 시간이 살짝 늘어납니다. MOSFET이 ‘어정쩡하게 켜져 있는 구간(과도기)’이 길어지면, 그 순간만큼은 도통 저항(RDS(on)​)이 높기 때문에 MOSFET 자체에 순간적인 발열과 전압 강하가 발생할 수 있습니다.

    3. 상황별 추천 가이드

    게이트 저항 값MCU 안전성스위칭 속도 (효율)한줄평
    0Ω (직결)❌ 위험 (핀 고장 가능성)⚡ 초고속절대 비추천 (테스트할 때나 잠깐 사용)
    100Ω ~ 220Ω안전 (전류 제한)⚡ 고속가장 추천 (PWM 제어나 고속 스위칭에 필수)
    1kΩ ~ 10kΩ둥글게 안전 (매우 안전)느림일반 ON/OFF용으론 무난 (단단한 안전 제일주의)

    요약하자면, ESP32-CAM을 단순히 하루에 몇 번, 혹은 몇 분에 한 번씩 껐다 켰다 하는 용도라면 부품 박스에 굴러다니는 1kΩ을 쓰셔도 아무런 지장이 없습니다. 다만 모터 제어처럼 고속으로 ON/OFF를 반복하는 회로(PWM)라면 MOSFET의 발열을 줄이기 위해 확실히 100Ω~220Ω 정도의 작은 저항을 써야 효율이 좋습니다.

  • [ESP8266] 구형이라도 괜찮아! 여전히 현역인 NodeMCU 보드의 매력과 핀맵 정리

    [ESP8266] 구형이라도 괜찮아! 여전히 현역인 NodeMCU 보드의 매력과 핀맵 정리

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

    최근 ESP32-C3나 S3 같은 고성능 신형 마이크로컨트롤러(MCU)들이 쏟아져 나오면서, 예전에 유행하던 구형 ESP8266(NodeMCU) 보드는 서랍 구석에 잠들어 있는 경우가 많습니다.

    하지만 단순히 센서 데이터를 수집하고, 무선(Wi-Fi)으로 서버에 전송하는 홈 자동화나 데이터 로깅 프로젝트라면 어떨까요? 비싸고 복잡한 신형 칩셋 대신, 서랍 속 ESP8266을 꺼내야 할 이유는 충분합니다.

    오늘은 구형이지만 여전히 매력적인 ESP8266 NodeMCU 보드의 장점과, 작업할 때마다 매번 찾아보게 되는 핵심 핀맵(Pinout)을 깔끔하게 정리해 드립니다.

    1. 왜 아직도 ESP8266인가? (구관이 명관인 이유)

    • 검증된 Wi-Fi 안정성: 수년간 전 세계 수많은 메이커들에 의해 필드 테스트를 거쳤습니다. 2.4GHz 대역에서 끊김 없는 데이터 송수신을 보여주며, 단순 TCP/UDP 통신이나 MQTT, HTTP 요청 환경에서는 신형 칩셋 못지않게 매우 견고하고 안정적으로 동작합니다.
    • 압도적인 가성비와 콤팩트함: 복잡한 멀티코어나 블루투스 기능이 필요 없는 단순 IoT 기기(예: 온습도 모니터링, 스마트 인큐베이터 등)를 대량으로 구축할 때 이보다 경제적인 대안은 없습니다.
    • 풍부한 라이브러리와 레퍼런스: 아두이노 IDE든 MicroPython이든, 문제가 생겼을 때 구글링 한 번이면 전 세계 개발자들이 미리 겪고 해결해 둔 코드 템플릿을 쉽게 찾을 수 있습니다.

    2. ESP8266 NodeMCU 핵심 핀맵 (Pinout) 바로보기

    개발 보드의 실크 인쇄(D0, D1 등)와 아두이노/MicroPython에서 제어하는 실제 GPIO 번호는 다릅니다. 코딩할 때 헷갈리지 않도록 핀맵을 표로 정리했습니다.

    ◼️ 상단 핀 라인 (안테나가 왼쪽일 때 위쪽)

    핀 이름주요 기능GPIO 번호비고
    D0GPIO1616Deep Sleep 해제 시 RST 핀과 결선하는 핀
    D1GPIO5 / SCL5**I2C 통신(SCL)**으로 가장 권장하는 핀
    D2GPIO4 / SDA4**I2C 통신(SDA)**으로 가장 권장하는 핀
    D3GPIO00Flash 버튼 연결 핀 (부팅 모드 관여, 내부 풀업)
    D4GPIO2 / TXD12부팅 시 High 상태, 보드 내장 LED와 연동
    3V / G3.3V / Ground전원 및 접지
    D5GPIO14 / HSCLK14SPI 통신 (SCK)
    D6GPIO12 / HMISO12SPI 통신 (MISO)
    D7GPIO13 / HMOSI13SPI 통신 (MOSI)
    D8GPIO15 / HCS15SPI 통신 (CS) / 부팅 시 Low 상태여야 함
    RX / TXUART0 RX / TX3 / 1PC와의 시리얼 통신 및 펌웨어 다운로드용

    ◼️ 하단 핀 라인 (안테나가 왼쪽일 때 아래쪽)

    핀 이름주요 기능GPIO 번호비고
    A0ADC0ADC0유일한 아날로그 입력 (입력 범위 0V ~ 1.0V 주의)
    VVVBUS (5V)USB 연결 시 5V 전원 출력 핀
    S3 ~ SKSDIO 라인10, 9, 8, 11, 7, 6⚠️ 사용 금지: 내부 플래시 메모리 전용 핀
    ENCH_PD칩 활성화 (기본 High, Low 시 칩 종료)
    RSTReset리셋 핀 (RST 버튼과 연동)
    UINVIN외부 5V 전원 입력 공급 핀

    3. ESP8266 사용 시 꼭 기억해야 할 주의사항 (Troubleshooting)

    1. SD 라인 핀(S3, S2, S1, SC, S0, SK)은 건드리지 마세요! 보드 중앙 하단에 나열된 이 핀들은 내부 플래시 메모리와 통신하는 통로입니다. 이곳에 센서를 연결하거나 풀업/풀다운을 걸면 보드가 부팅되지 않고 무한 루프에 빠집니다. 일반 GPIO가 부족하더라도 이 핀들은 비워두셔야 합니다.
    2. 부팅 모드 핀 (Boot Pins) 매핑 주의 GPIO0(D3), GPIO2(D4), GPIO15(D8) 핀은 전원이 켜질 때 칩이 어떻게 작동할지 결정하는 부팅 설정 핀입니다. 예를 들어, D8 핀이 부팅 순간에 High 상태가 되면 정상 동작(Flash 실행)을 하지 않습니다. 따라서 부팅 시 전위에 영향을 주는 릴레이나 특정 센서 모듈을 연결할 때는 가급적 이 핀들을 피하고 D1, D2, D5, D6 등을 우선적으로 사용하는 것이 정신 건강에 좋습니다.
    3. 아날로그 전압 범위 ESP8266의 아날로그 핀(A0)은 기본적으로 0~1V까지만 측정할 수 있습니다. NodeMCU 보드 자체에 전압 분배 저항이 내장되어 있어 대략 0~3.3V까지 입력받을 수 있게 설계되어 있긴 하지만, 정밀한 전압 센싱이나 그 이상의 전압을 다룰 때는 반드시 외부에 저항 분배 회로를 추가해야 안전합니다.

    📝 마치며

    블루투스(BLE)나 고성능 AI 연산이 필요한 프로젝트가 아니라면, Wi-Fi 네트워크를 통해 데이터를 주기적으로 쏘아주는 웹 서버나 데이터 로거 역할로 ESP8266은 여전히 훌륭하고 차고 넘치는 성능을 보여줍니다.

    무엇보다 오랜 기간 다듬어진 네트워크 스택 덕분에 Wi-Fi 연결 안정성 하나만큼은 신형 못지않게 탄탄하다는 점이 가장 큰 무기입니다.

    집 안 서랍 속에서 잠자고 있는 구형 NodeMCU 보드가 있다면, 이번 기회에 가벼운 가전 제어나 온습도 모니터링 시스템으로 다시 숨을 불어넣어 보는 건 어떨까요?


    ** esp8266 에 마이크로 파이썬 설치가 안될때

    플래시 메모리 모드(DIO vs QIO) 설정 차이

    ESP8266칩과 내장 메모리가 통신하는 방식(Flash Mode)에는 QIO, QOUT, DIO, DOUT 등이 있습니다.

    • 아두이노 IDE는 스마트하게 보드에 맞춰 이 모드를 자동으로 조절해 컴파일하는 경우가 많지만, 마이크로파이썬 펌웨어를 직접 구울 때는 이 모드가 맞지 않으면 펌웨어 쓰기가 실패하거나, 써지더라도 무한 부팅(Boot loop)에 빠집니다.
    • 안 되는 보드가 유독 구형이거나 다른 제조사 칩이라면 플래시 모드를 DIO 또는 DOUT으로 낮추어 구워보아야 합니다.

    대량 생산되는 저가형 ESP8266 보드들은 묶음 상품이라도 내부에 들어가는 플래시 메모리 칩셋(Winbond, BergMicro 등)을 섞어서 쓰는 경우가 많습니다. 아두이노는 컴파일 시점에 이 칩셋 특성을 덜 타지만, 이미 만들어진 파일(바이너리)을 통째로 굽는 마이크로파이썬은 칩셋 특성을 심하게 탑니다.

    dout 모드로 체크하고 구우시면 대부분 정상적으로 >>> 프롬프트가 뜨며 작동할 것입니다!


    Thonny 내부 도구가 특정 PC 환경이나 드라이버 상태에 따라 플래싱 에러를 자주 뿜기도 합니다. 이럴 땐 역시 수동으로 날리는 esptool.py 명령어가 제일 확실하고 속편하죠!

    cmd(명령 프롬프트)에서 esptool.py를 사용할 때 dout 모드로 지정하는 방법은 아주 간단합니다. 명령어 옵션에 --flash_mode dout를 추가해 주시면 됩니다.

    그리고 마이크로파이썬을 구울 때는 앞서 말씀드린 erase_flash(전체 지우기)를 먼저 실행해 주는 것이 실패율을 극적으로 낮춰줍니다. 안 되는 1개의 보드를 위해 아래 순서대로 cmd에 입력해 보세요.

    🛠️ cmd에서 안전하게 다시 굽는 명령어 (2단계)

    1步. 먼저 플래시 메모리를 완전히 비웁니다.

    Bash

    (성공적으로 완료되면 Chip erase completed successfully 문구가 뜹니다.)

    2步. dout 모드 옵션을 넣어서 마이크로파이썬을 굽습니다. 기존 명령어에 --flash_mode dout를 추가한 버전입니다.

    Bash

    ✍️ 명령어 핵심 요약

    • --flash_mode dout: 플래시 메모리 통신 방식을 가장 호환성이 높은 호환 모드(Dual Output)로 강제 지정합니다. 속도는 QIO보다 미세하게 느리지만, 칩셋 특성을 타지 않아 먹통 보드를 살릴 때 직효약입니다.
  • [DIY IR 리모컨 만들기] IR LED 크기 3mm vs 5mm, 파장(940nm/850nm) 완벽 선택 가이드

    [DIY IR 리모컨 만들기] IR LED 크기 3mm vs 5mm, 파장(940nm/850nm) 완벽 선택 가이드

    IR(적외선) 송신용 LED를 선택할 때 3mm와 5mm의 크기 차이는 단순히 외형뿐만 아니라 송신 거리(출력)와 지향각(신호가 퍼지는 범위) 측면에서 성능 차이를 만들어냅니다.

    상황에 맞는 최적의 부품을 선택하실 수 있도록 핵심 차이점을 정리해 드립니다.


    1. 주요 성능 비교

    구분3mm IR LED5mm IR LED
    송신 거리상대적으로 짧음 (약 3~5m)상대적으로 긺 (약 5~10m 이상)
    지향각 (빔 각도)약 20° ~ 45° (넓은 편)약 15° ~ 30° (좁고 집중됨)
    정격 전류 (IF​)약 20mA ~ 50mA약 50mA ~ 100mA (고출력 가능)
    물리적 내구성작고 정밀한 실장 가능방열 및 고정 안정성이 좋음

    2. 상세 성능 분석

    가. 출력과 거리 (Power & Range) 5mm LED는 3mm에 비해 내부 다이(Die)의 크기가 크거나, 더 높은 전류를 견딜 수 있도록 설계된 경우가 많습니다.

    • 5mm: 더 높은 순방향 전류를 흘릴 수 있어 적외선 강도가 높고, 신호가 더 멀리 도달합니다. 거실처럼 넓은 공간에서 가전제품을 제어할 때 유리합니다.
    • 3mm: 출력이 낮아 근거리 제어에 적합합니다.

    나. 지향성 (Directivity)

    • 5mm (좁은 각도): 렌즈 역할을 하는 상단 돔이 크기 때문에 빛을 한곳으로 모으는 집광 능력이 좋습니다. 특정 방향으로 신호를 강하게 쏘기에 좋지만, 수신부와 각도가 맞지 않으면 수신율이 떨어질 수 있습니다.
    • 3mm (넓은 각도): 상대적으로 빛이 넓게 퍼집니다. 거리는 짧지만 각도 조절에 덜 민감하여, 수신 장치가 LED 정면에 있지 않아도 신호가 전달될 확률이 높습니다.

    다. 하드웨어 설계 편의성

    • 3mm: 공간이 협소한 소형 가전, 웨어러블 기기, 혹은 여러 개의 LED를 촘촘하게 배치해야 하는 경우에 유리합니다.
    • 5mm: 일반적인 리모컨이나 아두이노/ESP32 프로젝트용 모듈에서 가장 흔하게 쓰이며, 브레드보드나 만능기판에 고정하기가 더 수월합니다.

    요약 및 추천

    • ESP32 등을 이용한 스마트 홈 허브 제작 시: 거실 전체를 커버해야 하므로 5mm 고출력 LED를 권장합니다. 특히 출력을 극대화하려면 트랜지스터(TR)를 이용해 구동 전류를 높여주는 것이 좋습니다.
    • 컴팩트한 센서 노드나 소형 장치 제작 시: 공간 효율성을 위해 3mm LED를 사용하되, 부족한 거리는 LED 개수를 늘리거나 지향각을 조절하여 보완할 수 있습니다.

    회로 설계 시 전류 제한 저항을 계산할 때, 5mm 제품이 허용 전류가 더 높더라도 사용하시는 ESP32의 GPIO 핀 출력 한계(일반적으로 20~40mA)를 고려하여 적절한 TR(예: 2N2222)을 사용하는 것이 안정적입니다.


    적외선 LED에서 940nm850nm는 파장의 길이를 의미하며, 이 미세한 차이가 ‘가시성’과 ‘용도’에서 큰 차이를 만들어냅니다.


    1. 주요 차이점 비교

    구분940nm (불가시 적외선)850nm (저가시 적외선)
    가시성완전 무색. 육안으로 확인 불가붉은 광원. LED 소자가 빨갛게 보임
    감도 (효율)상대적으로 낮음상대적으로 높음 (약 30~40% 우수)
    주요 용도리모컨, 은밀한 감시용 CCTV일반 보안 CCTV, 야간 투시용
    도달 거리짧음동일 전력 대비 더 멂

    2. 상세 성능 분석

    가. 가시성 (Visibility)

    • 850nm: 인간의 가시광선 영역(약 380~750nm)에 가깝기 때문에, 어두운 곳에서 LED를 바라보면 소자 자체가 희미하게 붉은색 점으로 보입니다. 이를 ‘Red Glow’ 현상이라고 합니다.
    • 940nm: 가시광선 영역에서 완전히 벗어나 있어, 작동 중에도 육안으로는 아무런 빛이 보이지 않습니다. 스마트폰 카메라로 비춰보아야만 보라색 빛으로 작동 여부를 확인할 수 있습니다.

    나. 수신 감도와 효율

    • 850nm: 대부분의 CMOS 이미지 센서(CCTV 카메라 등)는 850nm 파장에 더 민감하게 반응합니다. 따라서 야간에 사물을 더 밝고 선명하게 비추기에 유리합니다.
    • 940nm: 공기 중의 수분에 의해 흡수되는 성질이 850nm보다 강하고 센서의 반응도도 낮아, 같은 거리의 영상을 얻으려면 850nm보다 더 많은 개수의 LED가 필요합니다.

    3. 상황별 추천 선택

    리모컨(IR Sender) 제작 시

    • 추천: 940nm
    • 이유: 가전제품 리모컨의 표준 파장은 대부분 940nm입니다. 리모컨을 누를 때마다 눈에 붉은빛이 보이면 사용자에게 거부감을 줄 수 있고, 수신부(IR Receiver) 모듈들 또한 대부분 940nm에 최적화되어 설계되어 있습니다.

    CCTV 및 야간 조명(IR Illuminator) 제작 시

    • 성능 중심이라면: 850nm. 더 적은 전력으로 더 멀리, 더 밝게 비출 수 있습니다. (흔히 보는 보안 카메라들이 밤에 빨갛게 보이는 이유입니다.)
    • 은밀함이 중요하다면: 940nm. 카메라가 작동 중임을 들키지 않아야 하는 야생동물 관찰이나 특수 보안용으로 적합합니다.

    💡 팁

    만약 IR 수신 모듈(TSOP 시리즈 등)을 사용하여 프로젝트를 진행하신다면, 반드시 해당 모듈의 데이터시트를 확인하여 매칭되는 파장을 선택해야 합니다. 대부분의 리모컨 수신용 IC는 940nm에서 최대 감도를 가지도록 튜닝되어 있습니다.

  • [엔코더 리뷰] 가성비 AS5600 탈출기? 이제는 MT6701을 써야 하는 이유

    [엔코더 리뷰] 가성비 AS5600 탈출기? 이제는 MT6701을 써야 하는 이유

    AS5600과 MT6701은 모두 비접촉식 자기식 엔코더(Magnetic Encoder)로, DIY 프로젝트나 로봇 관절 제어 등에 널리 사용됩니다. 하지만 두 칩은 성능과 기능 면에서 몇 가지 결정적인 차이가 있습니다.

    1. 주요 사양 비교

    항목AS5600 (ams OSRAM)MT6701 (MagnTek)
    해상도 (I2C)12-bit (4096 CPR)14-bit (16384 CPR)
    최대 회전 속도낮음 (정적 위치 제어에 적합)높음 (최대 55,000 RPM 지원)
    인터페이스I2C, 아날로그, PWMI2C, SSI, ABZ(증분형), UVW, PWM
    샘플링 속도약 150µs (느린 편)약 5µs (매우 빠름)
    전압 범위3.3V / 5.0V3.3V / 5.0V

    2. 핵심 차이점 상세 분석

    해상도 및 정밀도

    • AS5600: 12비트 해상도를 가집니다. 일반적인 각도 측정에는 충분하지만, 매우 미세한 제어가 필요한 경우에는 한계가 있을 수 있습니다.
    • MT6701: 14비트 해상도로 AS5600보다 4배 더 정밀합니다. 정밀한 서보 모터 제어나 고해상도 피드백이 필요한 경우 유리합니다.

    반응 속도와 RPM (가장 큰 차이)

    • AS5600: 내부 신호 처리 속도가 느려 고속 회전 시 오차가 커집니다. 주로 밸브 조절, 다이얼, 저속 로봇 관절 등 ‘위치’를 측정하는 용도에 적합합니다.
    • MT6701: 고속 샘플링을 지원하여 수만 RPM의 고속 회전에서도 안정적으로 데이터를 출력합니다. BLDC 모터 제어나 빠른 반응이 필요한 동적 시스템에 훨씬 적합합니다.

    출력 모드 (유연성)

    • AS5600: 주로 I2C나 아날로그 전압 출력을 사용합니다.
    • MT6701: I2C 외에도 ABZ 위상(엔코더 모드) 출력을 지원하므로, 일반적인 하드웨어 카운터 인터럽트를 사용하는 MCU(예: ESP32, STM32)에서 활용도가 더 높습니다.

    3. 프로젝트별 추천

    • AS5600을 선택해야 할 때:
      • 회전 속도가 느리고 정적인 각도 확인이 주 목적인 경우 (예: 스마트 팜 환기창 개폐 각도, DIY 볼륨 노브).
      • 라이브러리가 풍부하고 예제가 많아 구현이 쉬운 것을 원할 때.
      • 정밀도보다는 가성비와 단순 구현이 중요할 때.
    • MT6701을 선택해야 할 때:
      • 고속으로 회전하는 모터의 속도나 위치를 실시간으로 제어해야 할 때 (예: FOC 모터 제어, 드론).
      • 12비트 이상의 높은 정밀도가 필요할 때.
      • ABZ나 SSI 같은 다양한 통신 프로토콜을 사용해야 할 때.

    요약

    단순히 각도만 읽는 용도라면 저렴하고 익숙한 AS5600이 편하지만, 모터 제어나 정밀한 동적 움직임이 포함된다면 MT6701이 압도적으로 성능이 좋습니다. 최근 오픈 소스 하드웨어 씬(SimpleFOC 등)에서는 MT6701로 넘어가는 추세입니다.


    AS5600과 MT6701 외에도 프로젝트의 성격(정밀도, 가격, 인터페이스)에 따라 고려해 볼 만한 훌륭한 자기식 엔코더들이 더 있습니다. 주로 산업용 수준의 신뢰성이나 더 높은 해상도를 원할 때 사용하는 칩들입니다.


    1. AS5048 (A/B 타입)

    AS5600의 상위 버전 격으로, 고성능 DIY 프로젝트에서 가장 표준적으로 사용되는 칩입니다.

    • 해상도: 14-bit (16,384 CPR)
    • 특징: AS5600보다 훨씬 정밀하며, 노이즈에 강합니다.
    • 인터페이스: AS5048A는 SPI, AS5048B는 I2C를 지원합니다.
    • 추천 용도: 고정밀 짐벌(Gimbal) 모터 제어, 로봇 관절.

    2. TLE5012B (Infineon)

    가성비와 성능의 균형이 매우 뛰어나 고성능 모터 제어 커뮤니티(SimpleFOC 등)에서 매우 선호하는 칩입니다.

    • 해상도: 내부적으로 최대 15-bit 수준의 연산을 수행합니다.
    • 특징: 데이터 업데이트 속도가 매우 빠르고, SSC(SPI 호환), PWM, Encoder(IIF) 출력을 동시에 지원합니다.
    • 추천 용도: 고속 BLDC 모터의 정밀 위치 제어.

    3. MA730 (Monolithic Power Systems)

    속도와 지연 시간(Latency)에 극도로 민감한 프로젝트라면 최적의 선택입니다.

    • 해상도: 14-bit
    • 특징: 지연 시간이 매우 짧아 고속 회전 시에도 위상 차이가 거의 없습니다. 칩 크기가 매우 작아 소형 모듈화에 유리합니다.
    • 추천 용도: 초고속 모터 제어, 소형 서보 액추에이터.

    💡 선택을 위한 가이드

    요구 사항추천 부품이유
    “가장 대중적이고 정밀한 것”AS5048A라이브러리가 가장 많고 검증된 성능을 보여줍니다.
    “가성비와 속도 모두 챙기고 싶다”TLE5012B저렴한 모듈이 많으면서도 산업용급 성능을 냅니다.
    “초소형/초고속 제어가 필요하다”MA730반응 속도가 압도적으로 빠릅니다.

    추가 팁: 자기식 엔코더를 선택할 때는 칩 자체의 성능도 중요하지만, 자석(Magnet)과의 거리 및 정렬(Alignment)이 정밀도에 큰 영향을 미칩니다. 만약 축이 어긋날 가능성이 있다면, 어느 정도 오차를 보정해주는 기능이 있는 AS5047P 같은 모델도 좋은 대안이 됩니다.


    2026년 5월 현재, 알리익스프레스와 주요 부품 시장의 시세를 기준으로 한 5가지 엔코더의 가격대 비교입니다. (모듈 1개, 자석 포함 기준 대략적인 원화 환산 가격)


    💰 자기식 엔코더 5종 가격 비교

    부품명가격대 (대략)특징 요약가성비 평가
    AS5600약 1,500원 ~ 2,500원12-bit, I2C 전용, 저속용입문용 최저가. 단순히 각도만 읽을 때 가장 경제적입니다.
    MT6701약 2,500원 ~ 4,000원14-bit, 고속 RPM 지원, SSI/I2C/ABZ현재 압도적 1위. AS5600과 가격 차이는 적으면서 성능은 훨씬 뛰어납니다.
    AS5048A약 8,000원 ~ 12,000원14-bit, SPI/PWM, 높은 신뢰성표준형 중고가. 정밀도와 검증된 라이브러리가 필요한 고급 프로젝트용입니다.
    TLE5012B약 10,000원 ~ 25,000원15-bit, 초고속 데이터 갱신, 산업용전문가용. 고성능 FOC 모터 제어 등에 쓰이며 가격대가 높은 편입니다.
    MA730약 15,000원 ~ 30,000원14-bit, 초저지연(Latency), SPI/SSI하이엔드. 지연 시간이 극도로 짧아야 하는 정밀 로봇 관절용입니다.

    📊 블로그용 가격 분석 팁

    1. 가성비 깡패는 MT6701: AS5600보다 불과 1,000~2,000원 정도만 더 투자하면 4배의 해상도(14-bit)와 50,000 RPM급 속도 대응 능력을 얻을 수 있습니다. DIY 개발자들에게 가장 추천하기 좋은 포인트입니다.
    2. 가격 차이의 이유: * AS5600: 생산량이 어마어마하고 구조가 단순해 가장 저렴합니다.
      • TLE5012B / MA730: 내부 연산 속도가 훨씬 빠르고, 노이즈 필터링 및 고속 통신 프로토콜(SPI/SSI)을 지원하기 때문에 칩 단가가 비쌉니다.
    3. 번들 구매 팁: 알리익스프레스 등에서 5개 또는 10개 묶음으로 구매하면 개당 가격이 20~30% 정도 더 저렴해집니다. ‘Mana’s Lab’ 구독자들에게 “여러 개 사서 쟁여두고 쓰기에는 MT6701이 가장 합리적”이라고 조언해 주시면 좋을 것 같네요.

    MT6701은 I2C와 SSI(SPI와 유사) 방식을 모두 지원하지만, 14비트의 높은 해상도와 속도를 온전히 활용하기 위해 SSI(SPI) 방식을 사용하는 예제를 준비했습니다.


    1. ESP32 – MT6701 연결 (SSI 방식)

    MT6701 핀ESP32 핀 (예시)설명
    VDD3.3V전원
    GNDGND접지
    CSNGPIO 5Chip Select (Active Low)
    CLKGPIO 18Serial Clock
    DOGPIO 19Data Out (MISO)

    2. MicroPython 예제 코드

    이 코드는 하드웨어 SPI를 사용하여 MT6701로부터 14비트 각도 데이터를 읽어와 도(Degree) 단위로 변환합니다.

    Python

    3. 코드 포인트

    • 14비트 처리: raw_value >> 2 부분이 핵심입니다. MT6701은 16비트 통신 프레임을 사용하지만 실제 데이터는 상위 14비트에 들어있기 때문에 오른쪽으로 2비트 시프트(Shift)가 필요합니다.
    • SPI 설정: polarity=1, phase=1 (SPI Mode 3) 설정은 MT6701 데이터시트에서 권장하는 방식 중 하나입니다. 만약 값이 튀거나 이상하다면 polarity=0, phase=0으로 변경하며 테스트하면 된다.
    • 성능: I2C 라이브러리를 쓸 때보다 SPI 방식이 훨씬 빠르기 때문에, 고속 RPM 측정이나 SimpleFOC 연동 시 이 방식이 유리합니다.

    MT6701을 I2C 방식으로 사용하는 MicroPython 예제 코드입니다.

    I2C 방식은 SSI(SPI) 방식보다 배선이 간편하고, 다른 센서들과 버스를 공유할 수 있다는 장점이 있습니다. 다만, 고속 회전 제어 시에는 통신 속도가 병목 현상이 될 수 있으므로 정밀한 각도 판독용으로 추천합니다.


    1. ESP32 – MT6701 연결 (I2C 방식)

    MT6701 핀ESP32 핀 (예시)설명
    VDD3.3V전원
    GNDGND접지
    SCLGPIO 22I2C 클럭 라인
    SDAGPIO 21I2C 데이터 라인

    주의: MT6701의 I2C 주소는 기본적으로 0x06입니다. (칩 버전이나 설정에 따라 다를 수 있으니 i2c.scan()으로 확인하는 것이 좋습니다.)


    2. MicroPython 예제 코드 (I2C)

    Python


    3. 보충 설명

    • 레지스터 구조: I2C 방식은 SSI와 달리 특정 메모리 주소(레지스터)를 지정해서 읽습니다. MT6701의 경우 각도 데이터가 들어있는 레지스터 주소가 0x03번부터 시작하는 경우가 많습니다.
    • Pull-up 저항: 만약 모듈 형태가 아닌 칩 자체를 사용하신다면, SCL과 SDA 라인에 4.7kΩ 정도의 풀업 저항이 연결되어 있는지 확인해야 한다고 언급해 주시면 초보자들에게 큰 도움이 됩니다.
    • I2C vs SSI 비교: 배선이 복잡해도 성능을 원하면 SSI(SPI), 간단한 연결과 범용성을 원하면 I2C를 선택하면 됩니다.
  • ESP32-C3와 MicroPython으로 구현한 정밀 위치 제어 시스템 (PID 제어 및 WebSocket GUI)

    ESP32-C3와 MicroPython으로 구현한 정밀 위치 제어 시스템 (PID 제어 및 WebSocket GUI)

    단순한 모터 회전을 넘어, 엔코더 신호를 정밀하게 분석하여 원하는 각도에 정확히 멈추는 절대 위치 제어 시스템을 구축했습니다. 특히, 저해상도 엔코더의 한계를 극복하기 위한 PID 튜닝 과정과 브라우저에서 실시간으로 조작 가능한 WebSocket 기반의 현대적인 웹 GUI 구현 과정을 공유합니다.


    1. 하드웨어의 한계를 소프트웨어로 극복하기

    처음 사용한 펄스당 2회(PPR 2)의 저해상도 엔코더와 높은 기어비(666:359) 환경에서 발생하는 오차를 줄이기 위해 PID(Proportional-Integral-Derivative) 제어를 도입했습니다.

    • Kp(비례): 목표치에 빠르게 도달하는 힘
    • Ki(적분): 누적된 미세 오차를 제거
    • Kd(미분): 목표 지점 근처에서 브레이크를 걸어 오버슈트 방지 사용자 맞춤형 튜닝을 통해 모터가 부드럽고 정확하게 멈추는 최적의 값을 찾아가는 과정을 담았습니다.

    2. WebSocket을 이용한 실시간 웹 컨트롤러

    HTTP 방식의 느린 반응 속도를 해결하기 위해 WebSocket 핸드쉐이크를 직접 구현했습니다.

    • 실시간성: 브라우저의 슬라이더를 움직이는 즉시 모터가 반응합니다.
    • 다크 모드 GUI: 터치가 용이하도록 큼직한 버튼과 직관적인 슬라이더 디자인을 적용하여 사용자 편의성을 극대화했습니다.
    • 제로 포인트 설정: 물리적 위치가 틀어졌을 때 언제든 현재 위치를 0도로 고정할 수 있는 ‘SET ZERO’ 기능을 추가하여 실용성을 높였습니다.

    3. 고해상도 상상(Quadrature) 엔코더로의 진화

    더 정밀한 제어를 위해 Phase A/B 두 개의 신호를 사용하는 상상 엔코더 방식으로 시스템을 업그레이드했습니다. ESP32-C3의 인터럽트 기능을 활용해 방향 판별과 카운팅을 실시간으로 처리하며, 촘촘한 엔코더 디스크 환경에서도 데이터 누락 없이 안정적으로 동작하는 코드를 완성했습니다.

    4. 주요 설정 팁: Duty_u16과 속도 제한

    마이크로파이썬의 duty_u16이 가진 0~65535 범위를 효율적으로 배분했습니다. 기구부의 수명과 안정성을 고려해 MAX_DUTY를 제한하고, 모터가 멈추지 않고 돌아갈 수 있는 최소 전압인 MIN_DUTY를 설정하여 제어의 품질을 한 단계 끌어올렸습니다.


    IR 엔코더에서 두개 신호로 정회전 역회전 구분하는 원리

    IR 엔코더(일반적으로 광학식 인크리멘탈 엔코더)에서 회전 방향을 구분하는 핵심 원리는 **’위상차가 있는 두 개의 신호’**를 사용하는 것입니다. 보통 이 신호를 **A상(Phase A)**과 **B상(Phase B)**이라고 부릅니다.

    상세한 원리는 다음과 같습니다.

    1. 쿼드러처(Quadrature) 신호의 생성

    엔코더 내부에는 슬릿(구멍)이 있는 디스크와 이를 감지하는 두 개의 IR 센서가 약간 어긋난 위치에 배치되어 있습니다. 디스크가 회전하면 두 센서는 각각 독립적인 펄스 신호를 만들어내는데, 이때 센서의 배치 덕분에 두 신호는 정확히 **90도(1/4 주기)**의 위상차를 갖게 됩니다.


    2. 회전 방향에 따른 파형의 변화

    정회전과 역회전일 때 A상과 B상 중 어느 것이 먼저 “상승”하느냐에 따라 방향을 판별합니다.

    • 정회전 (Clockwise): A상 신호가 B상 신호보다 앞서서 발생합니다. 즉, A상이 ‘High’가 된 직후에 B상이 ‘High’가 됩니다.
    • 역회전 (Counter-Clockwise): B상 신호가 A상 신호보다 앞서서 발생합니다. 즉, B상이 ‘High’가 된 직후에 A상이 ‘High’가 됩니다.

    3. 상태 변화 판별 로직

    실제 마이크로컨트롤러(MCU)에서 방향을 읽을 때는 특정 시점의 신호 상태를 비교합니다. 예를 들어, **A상이 상승 에지(Low → High)**일 때 B상의 상태를 확인하는 방식입니다.

    기준점 (A상의 상승 에지)B상의 상태판별 결과
    A: ↑ (Rising)B: Low (0)정회전
    A: ↑ (Rising)B: High (1)역회전

    이처럼 두 신호의 조합을 통해 현재 바퀴나 모터가 어느 쪽으로 돌고 있는지, 그리고 펄스의 개수를 세어 얼마나 돌았는지(변위)를 동시에 계산할 수 있습니다.

    센서가 하나만 있다면 속도는 알 수 있지만 방향은 알 수 없기 때문에, 정밀 제어가 필요한 모터 시스템에서는 반드시 이 두 개의 신호(A, B상)를 활용하는 것이 표준입니다.

    과학상자 모터에 엔코딩

    프린터에서 추출한 엔코더 DC모터

  • 가변 저항과 뭐가 다를까? 무한 회전 EC11 엔코더 기초 가이드

    가변 저항과 뭐가 다를까? 무한 회전 EC11 엔코더 기초 가이드

    EC11은 가전제품이나 DIY 전자 기기에서 흔히 볼 수 있는 로터리 엔코더(Rotary Encoder) 부품입니다. 볼륨 조절기처럼 계속 돌아가면서 회전 방향과 클릭 여부를 감지할 수 있는 인터페이스 소자입니다.


    1. 주요 특징

    • 무한 회전: 가변 저항(Potentiometer)과 달리 끝없이 계속 회전할 수 있습니다.
    • 디지털 신호: 회전할 때마다 ‘딸깍’하는 느낌(Detent)과 함께 펄스 신호를 발생시켜 마이크로컨트롤러(MCU)가 회전 수와 방향을 읽게 합니다.
    • 푸시 스위치 내장: 축(Shaft)을 누르면 버튼 스위치로도 동작하여 메뉴 선택 등에 유용합니다.

    2. 핀 구성 (5핀 기준)

    일반적으로 한쪽에 3개, 반대쪽에 2개의 핀이 있습니다.

    회전 감지 (3개 핀)

    • A상 (Phase A): 회전 시 펄스가 나오는 출력 핀 1.
    • GND: 접지. 보통 가운데 핀에 해당합니다.
    • B상 (Phase B): 회전 시 펄스가 나오는 출력 핀 2. A상과의 위차 차이를 통해 회전 방향을 판단합니다.

    스위치 (2개 핀)

    • 축을 눌렀을 때 연결되는 독립된 스위치 단자입니다.

    3. 작동 원리: 증분형 엔코더

    EC11은 **그레이 코드(Gray Code)**를 사용하여 방향을 판별합니다.

    • 시계 방향(CW): A상이 B상보다 먼저 변합니다.
    • 반시계 방향(CCW): B상이 A보다 먼저 변합니다.

    4. 주요 사양 및 선택 가이드

    부품을 구매하거나 설계할 때 다음 사항을 확인해야 합니다.

    • 축의 길이 및 형태: 15mm, 20mm 등 길이와 ‘D’자형 혹은 별 모양(Knurled)인지 확인.
    • 디텐트(Detent): 한 바퀴 회전 시 ‘딸깍’하는 걸림이 몇 번 있는지 (보통 15회, 20회, 30회 등).
    • 전압: 대개 DC 5V 이하에서 작동합니다.

    5. 활용 예시

    • 오디오 기기: 볼륨 조절 및 곡 선택.
    • 3D 프린터: LCD 제어 패널의 메뉴 이동 및 선택.
    • 스마트 홈 장치: 조명 밝기 조절이나 온도 설정.

    회전 시 발생하는 채터링(Bounce) 현상을 방지하기 위해 소프트웨어적으로 디바운싱 처리를 하거나 10nF 정도의 커패시터를 연결하여 하드웨어적으로 필터링하는 것이 일반적입니다.


    EC11 로터리 엔코더는 단순한 회전 이상의 정밀한 제어가 가능해서 임베디드 프로젝트DIY 가전에서 활용도가 매우 높습니다. 특히 마이크로컨트롤러(MCU)와 결합했을 때 다음과 같은 응용이 가능합니다.


    1. 정밀 메뉴 내비게이션

    가장 대표적인 활용 사례입니다. 버튼을 눌러 메뉴에 진입하고, 회전시켜 항목을 이동하며, 다시 눌러 선택하는 ‘All-in-one’ 인터페이스를 구현할 수 있습니다.

    • 3D 프린터 제어반: 설정 온도 변경, 출력 파일 선택.
    • 스마트 홈 허브: 조명 색상 선택, 모드 전환.

    2. 값의 미세 조정 (Parameter Tuning)

    가변 저항은 회전 범위에 한계가 있지만, EC11은 무한 회전이 가능하므로 매우 넓은 범위의 값을 세밀하게 조정할 때 유리합니다.

    • 디지털 볼륨 컨트롤: 오디오 기기의 음량을 0부터 100까지(혹은 그 이상) 부드럽게 조절.
    • 모터 속도 제어: PWM 신호의 듀티 사이클을 1단위로 정밀하게 조절.
    • 타이머 설정: 분, 초 단위를 빠르게 돌려 설정.

    3. 입력 장치 커스텀 (HID 장치)

    PC와 연결하여 특정 소프트웨어의 단축키나 기능을 매핑한 전용 컨트롤러를 만들 수 있습니다.

    • 영상 편집용 조그 셔틀(Jog Shuttle): 프레임 단위로 영상을 앞뒤로 넘기거나 타임라인 스크롤.
    • 매크로 패드: 회전 시 브라우저 탭 전환, 줌 인/아웃, 화면 밝기 조절.

    4. 상태 모니터링 및 피드백 시스템

    엔코더의 회전 펄스를 계산하여 물리적인 움직임을 수치화할 수 있습니다.

    • 로봇 암(Arm) 관절: 관절이 회전한 각도를 계산하여 위치 제어.
    • 디지털 각도기/측정기: 회전축에 연결하여 회전한 거리나 각도를 LCD에 표시.

    실전 구현 팁: 활용성을 높이는 법

    • 가속도 알고리즘: 천천히 돌리면 1씩 변하고, 빨리 돌리면 10이나 100씩 변하도록 코딩하면 사용자 경험(UX)이 훨씬 좋아집니다.
    • LED 링 결합: 엔코더 주변에 LED 링을 배치하여 현재 설정된 값의 수준을 시각적으로 표현하면 고급스러운 UI를 만들 수 있습니다.