일회용 전자담배 마이크로컨트롤러를 활용한 초소형 웹 서버 구축 실험
🤖 AI 추천
하드웨어 리소스 제약 환경에서의 임베디드 시스템 개발, 저전력 IoT 장치 개발, 펌웨어 엔지니어링, 임베디드 웹 서버 구현에 관심 있는 개발자 및 연구자에게 추천합니다.
🔖 주요 키워드
핵심 기술
이 프로젝트는 버려진 일회용 전자담배 내부의 저가형 ARM Cortex-M0+ 마이크로컨트롤러(PUYA C642F15, PY32F002B 계열)를 활용하여 제한된 자원(24KiB Flash, 3KiB RAM) 내에서 HTTP 웹 서버 기능을 구현한 실험입니다. semihosting과 SLIP 프로토콜을 조합하여 네트워크 연결을 구축하고, uIP TCP/IP 스택을 포팅하여 웹 서비스가 가능함을 입증했습니다.
기술적 세부사항
- 하드웨어: PUYA ARM Cortex-M0+ 기반 칩 (24KiB Flash, 3KiB RAM)
- 네트워킹 프로토콜: uIP TCP/IP 스택, SLIP (Serial Line Internet Protocol)
- 통신 방식: semihosting을 통한 가상 시리얼 연결
- 주요 구현: 링버퍼 및 배치 전송을 통한 성능 개선
- 웹 서버 기능: uIP 기반 HTTP 서버, JSON API 엔드포인트 제공 (접속 수, 칩 고유값 반환)
- 운영체제 지원: Linux, macOS에서
slattach
를 통한 가상 네트워크 인터페이스 등록 - 개발 도구: pyOCD, socat 등 활용
개발 임팩트
- 매우 제한적인 임베디드 환경에서도 웹 서버 구축이 가능함을 보여줍니다.
- 저비용, 저전력 IoT 장치 개발에 대한 새로운 가능성을 제시합니다.
- 기존 하드웨어의 재활용 및 새로운 기능 부여를 통한 창의적 개발 사례를 보여줍니다.
- 성능 개선을 위한 링버퍼 및 배치 전송 기법 적용은 다른 임베디드 프로젝트에도 활용될 수 있습니다.
커뮤니티 반응
- 게시글 중복 게시 및 댓글 이동에 대한 문의가 있었습니다.
- 초기 서버가 트래픽을 견디지 못하고 다운되었던 경험이 공유되었습니다. (vapeserver -> 서버가 트래픽에 굴복)
- 동일한 내용의 글이 개발자 커뮤니티에 더 많이 논의되었음이 언급되었습니다.
성능 개선
- 초기 문제: 바이트 단위 송수신으로 인한 과도한 오버헤드로 패킷 손실 50%, 페이지 로딩 20초 발생.
- 해결 방안: 링버퍼 및 배치 전송 적용.
- 개선 결과: 핑 20ms, 페이지 로딩 160ms 이하 달성.
📚 관련 자료
uIP
이 프로젝트의 핵심 TCP/IP 스택인 uIP의 공식 소스 코드를 포함하고 있습니다. 프로젝트에서 uIP를 마이크로컨트롤러에 포팅하고 HTTP 서버를 구현하는 데 기반이 됩니다.
관련도: 95%
pyOCD
ARM Cortex-M 마이크로컨트롤러를 디버깅하고 프로그래밍하는 데 사용되는 도구입니다. 이 프로젝트에서 semihosting 및 디버그 핀을 통한 분석 및 개발에 활용되었을 가능성이 높습니다.
관련도: 85%
socat
다양한 종류의 통신을 연결하고 터널링하는 데 사용되는 범용 프록시 도구입니다. 이 프로젝트에서 semihosting과 SLIP 프로토콜을 활용하여 가상 시리얼 포트를 생성하고 네트워크 연결을 설정하는 데 사용되었을 수 있습니다.
관련도: 70%