아두이노 MKR1000 핀아웃 완전 정복: IoT 개발의 필수 보드
아두이노 MKR1000은 와이파이 내장, 암호화 칩, 저전력 32비트 ARM 코어를 한 보드에 통합한 IoT 특화 개발 보드입니다. 컴팩트한 폼팩터(61.5×25mm)에 풍부한 I/O와 보안 기능을 갖춰 배터리 구동 IoT 노드, 센서 게이트웨이, 스마트 홈 기기 프로토타이핑에 최적화되어 있습니다. 이 글에서는 MKR1000의 핀아웃, 상세 사양, 전원 공급 방식, 개발 환경 설정, 실전 활용 팁까지 종합적으로 다룹니다.
MKR1000 핵심 사양 한눈에 보기
| 항목 | 사양 |
| 메인 MCU | ATSAMW25 (SiP: SAMD21 Cortex-M0+ + WINC1500 Wi-Fi + ECC508 Crypto) |
| 코어/클럭 | 32비트 ARM Cortex-M0+ @ 48MHz |
| 플래시/SRAM | 256KB / 32KB |
| EEPROM | 없음 (플래시 에뮬레이션 라이브러리 사용 가능) |
| 동작 전압 | 3.3V (모든 I/O 3.3V 로직, 5V 허용 안 됨!) |
| 입력 전압 (VIN) | 5V 정전압 (USB 또는 외부 5V) |
| 디지털 I/O | 15개 (0~14번, 모두 PWM 가능? → 12개 PWM: 0~8, 10~12) |
| 아날로그 입력 | 7개 (A0~A6, 12비트 ADC, 1MSPS) |
| 아날로그 출력 | 1개 (A0, 10비트 DAC) |
| 통신 인터페이스 | UART×1, SPI×1, I²C×1, I²S×1 |
| Wi-Fi | WINC1500: 802.11 b/g/n (2.4GHz), 내장 안테나 + u.FL 커넥터 |
| 보안 | ATECC508A: 하드웨어 TLS/SSL, 키 저장, 난수 생성 |
| RTC | 내장 (32.768kHz 크리스탈 필요, 배터리 백업 핀 있음) |
| 전류 소모 | 활성 ~15~20mA, 슬립 <1mA, 딥슬립 ~수 μA |
| 크기/무게 | 61.5 × 25mm, 약 5g |
핀아웃 상세 (Pinout Description)
MKR1000은 양면 14핀 헤더(좌 14, 우 14, 총 28핀) 구조입니다. 주요 핀 기능은 다음과 같습니다.
좌측 헤더 (USB 커넥터 기준 왼쪽)
| 핀 번호 | 이름 | 기능 | 비고 |
| 1 | VIN | 외부 5V 입력 (정전압) | 보드 내 LDO로 3.3V 변환 |
| 2 | GND | 그라운드 | - |
| 3 | VCC | 3.3V 출력 (최대 50mA) | 외부 센서 전원용, 과전류 주의 |
| 4 | D0 / RX | 디지털 0 / UART RX | Serial1 수신 |
| 5 | D1 / TX | 디지털 1 / UART TX | Serial1 송신 |
| 6 | D2 | 디지털 2 / PWM | 인터럽트 가능 |
| 7 | D3 | 디지털 3 / PWM | 인터럽트 가능 |
| 8 | D4 | 디지털 4 / PWM | - |
| 9 | D5 | 디지털 5 / PWM | - |
| 10 | D6 | 디지털 6 / PWM | - |
| 11 | D7 | 디지털 7 / PWM | - |
| 12 | D8 | 디지털 8 / PWM | - |
| 13 | D9 | 디지털 9 | PWM 아님 |
| 14 | D10 | 디지털 10 / PWM | SPI SS (하드웨어) |
우측 헤더 (USB 커넥터 기준 오른쪽)
| 핀 번호 | 이름 | 기능 | 비고 |
| 15 | D11 | 디지털 11 / PWM | SPI MOSI |
| 16 | D12 | 디지털 12 / PWM | SPI MISO |
| 17 | D13 | 디지털 13 / PWM | SPI SCK, 내장 LED 연결 |
| 18 | D14 / A0 | 디지털 14 / 아날로그 0 | DAC 출력 겸용 (10비트) |
| 19 | A1 | 아날로그 입력 1 | 12비트 ADC |
| 20 | A2 | 아날로그 입력 2 | 12비트 ADC |
| 21 | A3 | 아날로그 입력 3 | 12비트 ADC |
| 22 | A4 / SDA | 아날로그 4 / I²C SDA | 내부 풀업 없음, 외부 4.7kΩ 필요 |
| 23 | A5 / SCL | 아날로그 5 / I²C SCL | 내부 풀업 없음, 외부 4.7kΩ 필요 |
| 24 | A6 | 아날로그 입력 6 | 12비트 ADC, 배터리 전압 측정용 분압 회로 내장 |
| 25 | GND | 그라운드 | - |
| 26 | RST | 리셋 (Active Low) | 외부 리셋 버튼 연결용 |
| 27 | VBAT | RTC 백업 배터리 입력 | 코인셀(CR1220 등) 연결, 1.6~3.3V |
| 28 | LiPo | 리튬폴리머 배터리 커넥터 (JST-PH 2핀) | 내장 충전 회로 (3.7V LiPo, 최대 350mA 충전) |
전원 공급 4가지 방식 (Powering the MKR1000)
- USB 마이크로-B: PC/허브/충전기 연결 → 5V → 온보드 LDO(AP2112K-3.3) → 3.3V. 가장 간편. 시리얼 디버그 동시 가능.
- VIN 핀 (5V 정전압): 외부 5V 레귤레이터/USB 전원 보드 연결. 리버스 보호 다이오드 내장.
- VCC 핀 (3.3V 직접 입력): 외부 3.3V 레귤레이터 출력 직결. LDO 바이패스 → 효율 향상. 정확한 3.3V 필수, 과전압 시 MCU 손상!
- LiPo 배터리 커넥터 (JST-PH 2핀): 3.7V 리튬폴리머 배터리 연결. 내장 충전 IC(BQ24040 유사)로 USB 연결 시 자동 충전. 배터리 단독 구동 시 부스트 컨버터로 3.3V 생성. 배터리 극성 엄수!
전원 우선순위: USB > VIN > LiPo (자동 전환). 동시 연결 시 가장 높은 우선순위 소스 사용.
개발 환경 설정 (Getting Started)
- 아두이노 IDE 설치: 1.8.19 이상 또는 2.x 최신 버전 (공식 사이트)
- 보드 매니저 URL 추가: 파일 → 환경설정 → 추가 보드 매니저 URL에
https://downloads.arduino.cc/packages/package_index.json 입력 (보통 기본 포함)
- SAMD 보드 패키지 설치: 툴 → 보드 → 보드 매니저 → "Arduino SAMD Boards (32-bits ARM Cortex-M0+)" 검색 → 설치 (버전 1.8.x 이상)
- 보드 선택: 툴 → 보드 → Arduino SAMD Boards → Arduino MKR1000
- 포트 선택: 툴 → 포트 →
COMx (Arduino MKR1000) (Windows) 또는 /dev/ttyACMx (Linux/Mac)
- 테스트 업로드: 파일 → 예제 → 01.Basics → Blink → 업로드 → 내장 LED(D13) 점멸 확인
필수 라이브러리 (Library Manager에서 설치)
- WiFi101: WINC1500 와이파이 드라이버 (공식, 필수)
- ArduinoBearSSL / WiFi101OTA: TLS/SSL, OTA 업데이트
- RTCZero: 내장 RTC 사용
- ArduinoLowPower: 슬립/딥슬립 모드 제어
- ArduinoECCX08: ATECC508A 암호화 칩 제어
실전 활용 팁 (Practical Tips)
1. 배터리 전압 모니터링 (A6 핀 활용)
// A6은 내부 분압기(1:3)로 배터리 전압(~4.2V) → ADC 범위(~1.4V) 변환
float readBatteryVoltage() {
int raw = analogRead(A6);
// ADC 기준전압 3.3V, 12비트(4096), 분압비 1/3 → 배터리 전압 = raw * 3.3 / 4096 * 3
return raw * 3.3 * 3.0 / 4096.0;
}
2. 저전력 딥슬립으로 배터리 수명 연장
#include
#include
RTCZero rtc;
void sleepMinutes(int minutes) {
rtc.setAlarmMinutes(rtc.getMinutes() + minutes);
rtc.enableAlarm(rtc.MATCH_MMSS);
LowPower.deepSleep(); // RTC 알람으로 깨어남
}
딥슬립 시 전류 수 μA 수준. RTC 알람, 외부 인터럽트(D0~D8), 배터리 충전 완료 등으로 웨이크업 가능.
3. 보안 요소 활용: TLS 인증서 저장 & MQTT 보안 연결
#include
#include
#include
// ECCX08 슬롯 0에 개인키/인증서 저장 (별도 프로비저닝 필요)
// BearSSL로 WiFiClientSecure 생성 후 MQTT PubSubClient에 전달
하드웨어 보안 모듈로 개인키 노출 없이 TLS 핸드셰이크 수행. AWS IoT Core, Azure IoT Hub, Google Cloud IoT Core 등 주요 클라우드 인증 지원.
4. 와이파이 안테나 선택
- 내장 PCB 안테나: 기본, 소형, 방향성 없음
- 외장 안테나 (u.FL → SMA 케이블 + 2.4GHz 안테나): 금속 케이스 내부 장착 시 필수, 이득 2~5dBi 향상
- 안테나 다양성(Diversity) 미지원: 둘 중 하나만 사용
경쟁 보드와의 비교 (vs Other IoT Boards)
| 보드 | MCU | Wi-Fi | 보안칩 | 배터리충전 | 전압 | 가격대 |
| MKR1000 | SAMD21 (M0+) | WINC1500 (b/g/n) | ATECC508A | 내장 (LiPo) | 3.3V | $30~35 |
| MKR WiFi 1010 | SAMD21 (M0+) | NINA-W102 (b/g/n + BLE 4.2) | ATECC608A | 내장 (LiPo) | 3.3V | $32~38 |
| ESP32 DevKit | ESP32 (듀얼 M0+) | 내장 (b/g/n + BLE 5) | 없음 (소프트웨어) | 없음 | 3.3V | $8~12 |
| ESP8266 NodeMCU | ESP8266 (M0+) | 내장 (b/g/n) | 없음 | 없음 | 3.3V | $4~6 |
| Arduino Nano 33 IoT | SAMD21 (M0+) | NINA-W102 (b/g/n + BLE) | ATECC608A | 없음 | 3.3V | $18~22 |
MKR1000의 강점: 공식 아두이노 생태계, 하드웨어 보안 칩, 내장 배터리 충전, 3.3V 단일 전압(레벨 시프터 불필요), 검증된 라이브러리. 약점: 가격, BLE 미지원, 단일 코어, 느린 클럭. BLE 필요 시 MKR WiFi 1010, 가성비/성능 우선 시 ESP32 권장.
마무리
아두이노 MKR1000은 "보안, 배터리, 와이파이" 삼박자를 공식 보드로 해결해주는 IoT 개발의 스위스 아미 나이프입니다. 특히 TLS/SSL이 필수인 클라우드 연동 프로젝트, 배터리 구동 센서 노드, 빠른 프로토타이핑에 빛을 발합니다. 최신 프로젝트라면 BLE 지원하는 MKR WiFi 1010 또는 Nano 33 IoT도 함께 검토하시길 권장합니다. 즐거운 메이킹 되시고, 기술 문의는 언제나 환영합니다!