Tiny Alpaca Server
An Arduino Library providing a ASCOM Alpaca UDP and HTTP server, with examples for AAVSO AstroMakers devices.
🧩 프로젝트 개요
TinyAlpacaServer는
Arduino와 WIZnet Ethernet 칩을 이용해 Alpaca 표준 장치를 구현하는 프로젝트이다.
기존에는 PC나 Raspberry Pi에서만 동작하던
ASCOM Alpaca 서버를
👉 소형 MCU 환경에서도 실행 가능하도록 확장한 것이 핵심이다.
🚩 프로젝트 배경
천체관측 시스템에서는 여러 장비를 함께 사용한다:
- 망원경
- 날씨 센서
- 보조 장치 (조명, 캘리브레이터 등)
이 장비들은 보통 ASCOM Alpaca 표준을 통해 제어되는데,
- 대부분 고성능 시스템(PC, SBC)에 의존
- 소형 MCU에서는 구현이 어려움
👉 즉, 저비용 장비를 표준 시스템에 연결하기 어려운 구조
💡 핵심 아이디어
👉 “Arduino를 Alpaca 장비처럼 동작하게 만들자”
TinyAlpacaServer는 Arduino 위에서
Alpaca 서버를 직접 실행하고,
외부에서는 이 장치를
👉 정식 네트워크 장비처럼 인식할 수 있게 한다.
⚙️ 시스템 구조
🔹 동작 흐름
- Arduino가 센서/장치 상태를 처리
- TinyAlpacaServer가 Alpaca API 요청을 처리
- W5500이 네트워크 통신 수행
- 클라이언트가 HTTP/UDP로 접근
👉 결과적으로
Arduino가 하나의 Alpaca 서버로 동작
🌐 WIZnet(W5500)의 역할
이 프로젝트에서 W5500은 단순 통신칩이 아니라
👉 전체 시스템을 가능하게 만드는 핵심 요소
주요 기능
- Ethernet 기반 네트워크 연결
- TCP/UDP 통신 처리
- HTTP 서버 통신 지원
- 네트워크 스택 오프로드
👉 MCU가 직접 TCP/IP를 처리하지 않아도 되어
저사양 환경에서도 안정적인 서버 구현 가능
🧠 TinyAlpacaServer 내부 구조
TinyAlpacaServer는 단순 라이브러리가 아니라
요청 처리 엔진 역할을 한다.
- Alpaca 요청 수신 (HTTP/UDP)
- 요청 파싱 (RequestDecoder)
- 장치 로직으로 전달
- JSON 응답 생성
👉 실제 장치 동작은 Arduino 코드가 담당하고,
👉 서버 처리는 라이브러리가 담당
🔧 주요 기능
✔ Alpaca 서버 구현
- Discovery Protocol 지원
- Management API 제공
- Device API 구현
✔ 네트워크 기능
- HTTP 기반 요청 처리
- UDP 기반 장치 탐색
✔ 임베디드 최적화
- 동적 메모리 사용 최소화
- JSON 2-pass 생성 방식
- PROGMEM 활용
🚀 활용 사례
현재 이 라이브러리는 실제 장비에 사용되고 있다:
- Cover Calibrator (조명 제어 장치)
- Weather Station (기상 모니터링)
👉 단순 테스트가 아니라
실제 관측 환경에서 동작하는 수준
🎯 프로젝트의 의미
이 프로젝트는 단순 기능 구현이 아니라:
👉 “고가 장비 중심 구조 → 저가 임베디드 확장”
즉,
- 기존: PC 기반 Alpaca 장치
- 변화: Arduino 기반 Alpaca 장치
신규성 (Innovation)
- 저사양 MCU 기반 Alpaca 서버 구현
→ PC 없이도 표준 프로토콜 동작 - 경량 네트워크 구조
→ 제한된 메모리 환경에 최적화 - WIZnet 기반 네트워크 오프로드
→ MCU 부담 최소화, 안정성 확보 - 오픈 표준 기반 확장성
→ 다양한 장비와 즉시 연동 가능
외부 가치 (External Value)
- 저비용 시스템 구현
→ Arduino 기반으로 비용 절감 - 오픈소스 생태계 확장
→ Alpaca 표준 활용 범위 확대 - 다양한 분야 적용 가능
→ 천문, IoT, 원격제어 등 확장성 확보 - 실전형 설계 사례 제공
→ 교육·연구·제품 개발 활용 가능 - 실사용 검증 완료
→ 실제 장비에 적용된 기술
