Loading the catalog…
Loading the catalog…
1. 프로젝트 기획 및 아키텍처 설계 0. 들어가기 전.. 보통 저는 잠에 들기 전 핸드폰을 보고 잡니다. 어릴 때부터 어두운 곳에서 핸드폰을 하면 눈이 나빠진다는 어머니의 가스라이팅 때문에 저는 잠에 들기 전까지 방에 불을 켜고 있습니다. 그렇기에 핸드폰을 하다가 잠이 오면 불을 끄러 침대에서 일어나 불을 끄고 자곤 했습니다. 하지만 불을 끄러 일어나는 순간 잠에서 깨곤 합니다. 이러한 불편함을 제거하면서 제가 배운 것을 사용할 기회라고 생각하며 이번 프로젝트를 진행하려고 합니다. 이번 포스팅은 프로젝트의 전체적인 기획과 시스템 아키텍처 설계 내용입니다. 1. 프로젝트 개요 및 목표 본 프로젝트의 공식 명칭은 'Siri 연동 스마트홈 스위치봇 시스템' 입니다. 주요 개발 목적은 다음과 같습니다. IoT 인프라 구축: Apple HomeKit(Siri) 생태계를 기반으로 물리 벽면 스위치를 원격 제어할 수 있는 시스템 구축. 펌웨어 설계 역량 확보: ESP-IDF(C/C++) 및 FreeRTOS 기반의 멀티태스킹 펌웨어 설계. 기구부 맞춤 설계: 3D 프린팅(PLA)을 활용한 맞춤형 기구부 설계 및 조립. QA 및 신뢰성 검증: ISTQB 표준에 입각한 임베디드 소프트웨어 단위/통합/시스템 테스트 파이프라인 구축 및 신뢰성 검증. 저는 아이폰 13미니를 사용 중이라 Apple HomeKit 생태계를 기반으로 시스템을 구축해보겠습니다. 2. 하드웨어 및 기구 설계 (Mechanical Design) 제한된 크기 안에서 배터리 구동 효율과 강력한 물리적 타격을 동시에 확보하기 위해 다음과 같은 하드웨어 및 기구부 구조를 설계했습니다. 2.1. 핵심 하드웨어 구성 MCU: 초소형 폼팩터와 Wi-Fi를 지원하는 ESP32-C3 Supermini 개발 보드. 전원 및 확장: 충전 회로 및 JST PH2.0 커넥터가 내장된 ESP32-C3 전용 Expansion board. 배터리: Soshine 3.7V 803040 1000mAh LIPO 배터리. 액추에이터: 내구성을 위해 모든 메탈 기어가 적용된 MG90S 서보 모터. 부품은 알리에서 주문했습니다. 2개 만들 생각으로 총 3만원 이내로 구매했습니다. 2.2. 3D 기구 설계 전략 Autodesk Fusion 360을 활용하여 설계하며, 출력 소재는 실내 기구물에 적합한 PLA를 사용합니다. 가장 중요한 스위치 대응 전략으로, 시소형(Rocker) 스위치의 가로 방향 구조를 고려하여 스위치의 좌측과 우측에 스위치봇을 각각 1개씩 부착하여 단방향 누름(Push)만 수행하도록 설계 했습니다. 설계된 파트는 총 4가지로 구성됩니다. Main Housing (본체 케이스): ESP32-C3 보드, 확장 보드, 배터리를 층상으로 수납하고 외부 Type-C 충전 포트가 노출되는 슬롯 구조. Motor Mount Bracket (모터 마운트): MG90S 서보모터를 흔들림 없이 고정하는 브래킷. Pusher Arm (구동부 레버): 서보모터 기어 축에 결합되어 회전 운동을 수직 누름 힘으로 변환하여 스위치를 직접 타격하는 모멘트 암. Base Plate (부착 베이스): 3M VHB 초강력 양면테이프를 이용하여 벽면 스위치 커버 프레임(좌/우)에 밀착 고정되는 마운팅 파트. 3. 소프트웨어 및 펌웨어 아키텍처 시스템은 크게 HomeKit 연동을 담당하는 '메인 허브'와, 실제 물리적인 동작을 수행하는 '스위치봇(Edge Device)'으로 나뉩니다. 3.1. 메인 허브 (Raspberry Pi) OS: Linux (Raspberry Pi OS). 핵심 서비스: Homebridge 구동 및 systemd 데몬 등록을 통한 자동 재시작 보장. 통신 브로커: Eclipse Mosquitto (MQTT Broker) 구동. 3.2. 스위치봇 펌웨어 (ESP-IDF C/C++) FreeRTOS 멀티태스킹 아키텍처를 적용하여 통신과 하드웨어 제어를 철저히 분리합니다. 네트워크 태스크 (MQTT Event Handler): Wi-Fi 연결을 유지하며 라즈베리파이 브로커로부터 특정 토픽(예: home/switch/left/set )의 메시지를 수신합니다. 명령 수신 시 큐(Queue)를 통해 제어 명령을 전달합니다. 하드웨어 제어 태스크 (Servo Control): 평소에는 대기(Block) 상태를 유지하다가, 큐를 통해 명령이 들어오면 ledc 하드웨어 타이머 드라이버를 이용해 지터(Jitter) 없이 고정밀 PWM 신호를 생성합니다. 지정된 각도로 스위치 타격 후 0도로 원복합니다. 전력 관리 전략: 배터리 구동 효율을 극대화하기 위해 Wi-Fi 연결을 유지한 채 전력 소모를 최소화하는 Modem Sleep (Light Sleep) 모드를 적용합니다. 4. 임베디드 SW 테스팅 및 QA 전략 단순히 동작하는 기기를 만드는 것을 넘어, 시스템의 신뢰성과 예외 상황 대처 능력을 입증하기 위해 체계적인 품질 보증 프로세스를 거칠 예정입니다. 4.1. 단위 테스트 (Unit Test) 도구 & 기법: ESP-IDF 내장 Unity Test Framework를 사용하며, 동등 분할(Equivalence Partitioning) 및 경계값 분석(Boundary Value Analysis) 기법을 적용합니다. 검증 대상: MQTT 페이로드 파서(Parser)가 정의되지 않은 문자열이나 특수문자, 초과된 길이의 데이터를 수신했을 때 버퍼 오버플로우나 예외 없이 안전하게 폐기(Drop)하는지 검증합니다. 또한 서보모터 회전 각도 산출 함수의 경계값 정상 처리 여부를 확인합니다. 4.2. 통합 테스트 (Integration Test) 도구: MQTT.fx, Postman, Wireshark. 검증 대상: 라즈베리파이(Mosquitto Broker)와 ESP32-C3 간의 Publish/Subscribe 통신 흐름을 검증합니다. 네트워크 순단 시 ESP32-C3의 자동 재연결(Auto-reconnect) 루틴 정상 작동 및 Homebridge 상태 동기화 지연 시간(Latency)을 측정합니다. 4.3. 시스템 및 신뢰성 테스트 (System/Stress Test) 결함 주입 (Fault Injection): 모터가 스위치를 누르는 순간 고부하로 인한 전압 강하(Brownout) 상황을 의도적으로 모사하여, ESP32-C3가 하드웨어 폴트 없이 안전하게 워치독(Watchdog) 리셋 후 정상 구동 상태로 복귀하는지(Fail-safe) 검증합니다. 메모리 누수 모니터링: 24시간 연속 운용 및 1,000회 이상의 연속 제어 명령 하달 시 esp_get_free_heap_size() 를 통해 Heap 메모리 누수(Leak)가 발생하는지 추적합니다.
What RADAR observed and classified to build this opportunity. It is what the source published, not a verification that the offer is still active.
1. 스마트홈 스위치봇(기획 및 설계). 1. 프로젝트 기획 및 아키텍처 설계 0. 들어가기 전.. 보통 저는 잠에 들기 전 핸드폰을 보고 잡니다. 어릴 때부터 어두운 곳에서 핸드폰을 하면 눈이 나빠진다는 어머니의 가스라이팅 때문에 저는 잠에 들기 전까지 방에 불을 켜고 있습니다. 그렇기에 핸드폰을 하다가 잠이 오면 불을 끄러 침대에서 일어나 불을 끄고 자곤 했습니다. 하지만 불을 끄러 일어나는 순간 잠에서 깨곤 합니다. 이러한 불편함을 제거하면서 제가 배운 것을 사용할 기회라고 생각하며 이번 프로젝트를 진행하려고 합니다. 이번 포스팅은 프로젝트의 전체적인 기획과 시스템 아키텍처 설계 내용입니다. 1. 프로젝트 개요 및 목표 본 프로젝트의 공식 명칭은 'Siri 연동 스마트홈 스위치봇 시스템' 입니다.…
Open source