Arduino
Arduino
Arduino MCP 서버는 Claude AI와 Arduino 하드웨어(특히 ESP32, ESP8266 등)를 연결하여 AI 기반 로봇 공학 및 IoT 애플리케이션을 가능하게 하는 서버입니다. 이 서버를 통해 LLM은 센서 데이터를 읽고, 모터와 서보를 제어하며, GPIO(General Purpose Input/Output) 핀을 조작하고, 다양한 통신 프로토콜을 통해 Arduino 장치와 상호작용할 수 있습니다.
특징
- 실시간 센서 데이터 모니터링: 온도, 습도, 가속도, 조도 등 다양한 센서 데이터 실시간 수집
- 액추에이터 제어: 서보 모터, DC 모터, 스테퍼 모터, LED 등 제어
- GPIO 관리: 디지털/아날로그 핀 읽기 및 쓰기 기능
- 시리얼 통신: UART, I2C, SPI 등 다양한 통신 프로토콜 지원
- 원격 프로그래밍: 원격으로 Arduino 스케치 업로드 및 실행
- Wi-Fi 및 블루투스 연결: 무선 연결을 통한 데이터 송수신
- 데이터 시각화: 센서 데이터 실시간 그래프 및 시각화 지원
- AI 기반 의사 결정: 수집된 데이터를 기반으로 AI 의사 결정 및 제어 로직 실행
API
도구
보드 및 연결 관리
- list_boards: 연결 가능한 Arduino 보드 목록 조회
- 입력: 없음
-
출력: 연결 가능한 보드 목록(포트, 보드 유형)
-
connect_board: 특정 Arduino 보드에 연결
- 입력: 포트 이름, 보드 유형, 통신 속도(baudrate)
-
출력: 연결 성공 여부
-
disconnect_board: 현재 연결된 보드와의 연결 해제
- 입력: 없음
- 출력: 연결 해제 성공 여부
센서 및 데이터 수집
- read_sensor: 특정 센서에서 데이터 읽기
- 입력: 센서 유형, 핀 번호, 추가 파라미터
-
출력: 센서 데이터 값
-
monitor_sensor: 센서 실시간 모니터링 시작
- 입력: 센서 유형, 핀 번호, 샘플링 빈도, 콜백
-
출력: 모니터링 ID
-
stop_monitoring: 센서 모니터링 중지
- 입력: 모니터링 ID
- 출력: 중지 성공 여부
핀 및 출력 제어
- digital_read: 디지털 핀 상태 읽기
- 입력: 핀 번호
-
출력: HIGH 또는 LOW 상태
-
digital_write: 디지털 핀에 값 쓰기
- 입력: 핀 번호, 값(HIGH 또는 LOW)
-
출력: 성공 여부
-
analog_read: 아날로그 핀 값 읽기
- 입력: 핀 번호
-
출력: 0-1023 사이의 아날로그 값
-
analog_write: PWM 값 쓰기
- 입력: 핀 번호, 값(0-255)
- 출력: 성공 여부
액추에이터 제어
- servo_control: 서보 모터 제어
- 입력: 핀 번호, 각도(0-180)
-
출력: 성공 여부
-
motor_control: DC 모터 제어
- 입력: 모터 핀 설정, 속도, 방향
-
출력: 성공 여부
-
stepper_control: 스테퍼 모터 제어
- 입력: 핀 설정, 스텝 수, 속도
- 출력: 성공 여부
프로그래밍 및 스케치 관리
- upload_sketch: Arduino 스케치 업로드
- 입력: 스케치 코드 또는 파일 경로
-
출력: 컴파일 및 업로드 결과
-
run_command: 특정 명령 실행
- 입력: 명령 문자열
- 출력: 명령 실행 결과
사용 방법
설치
# npm을 통한 설치
npm install -g arduino-mcp-server
# 또는 Python 기반 구현
pip install mcp-arduino
구성
Claude Desktop에서 이 서버를 사용하려면 다음과 같이 설정합니다:
{
"mcpServers": {
"arduino": {
"command": "npx",
"args": ["arduino-mcp-server"],
"env": {
"DEFAULT_PORT": "/dev/ttyUSB0", // 기본 시리얼 포트
"DEFAULT_BAUDRATE": "115200" // 기본 통신 속도
}
}
}
}
필요 조건
- Arduino IDE 또는 Arduino CLI 설치
- 적절한 USB 드라이버 설치 (보드 타입에 따라 다름)
- Python 3.7 이상 (Python 기반 구현의 경우)
- Node.js v14 이상 (Node.js 기반 구현의 경우)
- ESP32/ESP8266의 경우 적절한 보드 매니저 설치
사용 예시
// 사용 가능한 Arduino 보드 목록 조회
const boards = await list_boards();
console.log(`사용 가능한 보드: ${boards.length}개`);
// 특정 보드에 연결
await connect_board("/dev/ttyUSB0", "esp32", 115200);
// DHT22 온습도 센서 데이터 읽기
const temperature = await read_sensor("DHT22", 4, { parameter: "temperature" });
const humidity = await read_sensor("DHT22", 4, { parameter: "humidity" });
console.log(`온도: ${temperature}°C, 습도: ${humidity}%`);
// LED 제어
await digital_write(13, "HIGH"); // LED 켜기
await digital_write(13, "LOW"); // LED 끄기
// 서보 모터 제어
await servo_control(9, 90); // 서보를 90도 위치로 이동
// 실시간 센서 모니터링 시작
const monitorId = await monitor_sensor("ANALOG", 0, 1000, (value) => {
console.log(`아날로그 값: ${value}`);
});
// 5초 후 모니터링 중지
setTimeout(async () => {
await stop_monitoring(monitorId);
console.log("모니터링 중지됨");
}, 5000);
연결된 구성 요소
- Everything Search - 아두이노 스케치 및 라이브러리 파일 검색
- KiCad MCP - 회로 설계 및 PCB 레이아웃과 연계 가능
- Terminal-Control - 터미널 명령을 통한 Arduino CLI 제어