Smart Display는 HMI(Human-Machine Interface)로서 UART 시리얼 통신을 통해 ESP32-C3 모듈과 통신합니다. ESP32-C3는 WiFi 연결을 담당하며, Nanoleaf Shapes 스마트 라이트 패널의 Open API를 호출하여 조명 제어 및 장면 조회 테스트를 수행합니다. 본 문서는 Smart Display가 ESP32-C3로 사용자 정의 UART 명령을 전송하는 방식에 초점을 맞춰, UART 통신, WiFi 네트워킹, 그리고 Nanoleaf API 호출의 구현 가능성을 검증합니다. 이 단계는 향후 완전한 스마트 디스플레이 제어 시스템 개발의 기반이 되며, UART 브리지와 IoT API 연동의 신뢰성을 입증합니다.

시스템 구성
Smart Display ↔ UART ↔ ESP32-C3 ↔ WiFi ↔ Nanoleaf Shapes (Open API)

하드웨어 요구 사항
1.Smart Display
- WINSTAR Smart Display (TouchGFX GUI 지원)

2.ESP32-C3-DevKitC-02

3.Nanoleaf Shapes
- 통신 방식: WiFi (2.4 GHz b/g/n)
- 전압: 100VAC - 240VAC
- 최대 전력: 42W
- 패널당 최대 소비 전력: 2W

PC 제어 테스트
1.Nanoleaf Shapes 설정
⏹︎ 모바일 앱(iOS)을 통한 Shapes 장치 페어링
- 공식 Nanoleaf 앱은 App Store에서 찾을 수 있습니다.
- Shapes 장치 페어링
- Dashboard에서 오른쪽 상단의 연필 아이콘을 탭합니다.
- “Add Device +”를 탭합니다.
- 앱이 자동으로 페어링 창을 엽니다.
- 화면의 안내에 따라 다음 방법 중 하나로 진행합니다:
옵션 A: QR 코드 스캔
옵션 B: 전원 공급 장치, 컨트롤러 또는 Quick Start Guide/Welcome Card에 있는 8자리 페어링 코드를 입력
옵션 C: NFC 탭 사용. 모바일 기기 상단을 컨트롤러의 버튼 위에 가까이 대면 됩니다.
- 이제 Nanoleaf Shapes가 연결되어 바로 사용할 수 있습니다.
⏹︎ Nanoleaf Shapes에 장면 다운로드

2.ESP32-C3 설정
⏹︎ PC를 통한 ESP32-C3 설정
PC-->USB to UART converter-->esp32-c3

⏹︎ Station 모드 설정
ESP32-C3의 WiFi 모드는 ESP32 및 ESP8266과 유사하며, 다음의 세 가지 일반적인 모드를 지원합니다:
- Station mode (STA mode): ESP32-C3가 클라이언트로 동작하여 기존 WiFi 라우터(예: 가정용 네트워크)에 연결합니다. 이 모드에서는 인터넷에 접속하거나 네트워크 내 다른 장치와 통신할 수 있지만, 자체 핫스팟은 생성하지 않습니다. 적용 예: 센서가 클라우드로 데이터를 업로드하는 경우(예: MQTT, HTTP).
- SoftAP mode (AP mode, Soft Access Point): ESP32-C3 자체가 WiFi 핫스팟이 되어 다른 장치(예: 휴대폰, 컴퓨터)가 직접 연결할 수 있습니다. 일반적으로 초기 네트워크 설정이나 로컬 제어에 사용됩니다. 기본 SSID는 보통 "ESP32-AP"와 유사하며, 기본 IP는 192.168.4.1입니다. ESP32-C3는 최대 4개의 클라이언트 동시 연결을 지원합니다(ESP8266보다 약간 적음). 적용 예: 모바일 앱(예: EspTouch, 웹 설정 페이지)을 사용하여 가정용 WiFi 자격 정보를 입력하는 경우.
- Station + SoftAP mode (STA+AP concurrent mode): STA와 AP 모드를 동시에 활성화합니다. ESP32-C3는 라우터에 연결해 인터넷에 접속하는 동시에, 휴대폰이 직접 연결할 수 있는 자체 핫스팟도 제공합니다. 이는 스마트 홈 애플리케이션에서 가장 일반적인 모드입니다. 인터넷이 없더라도 휴대폰을 통한 로컬 제어를 가능하게 하면서 정상적인 클라우드 보고도 수행할 수 있습니다. 참고: ESP32-C3는 단일 안테나를 사용하므로 두 모드가 동일 채널을 공유하여 단일 모드 대비 성능이 약간 낮아질 수 있으나, 대부분의 애플리케이션에는 충분합니다.
AT: AT+CWMODE=1

⏹︎ Nanoleaf Shapes 핫스팟에 연결 (페어링 모드에서는 비밀번호 없음)
- AT+CWJAP: ESP32-C3(Station 모드)가 지정된 WiFi 액세스 포인트에 연결합니다.
- "Shapes 4992": Nanoleaf Shapes 라이트 패널의 WiFi SSID입니다.
- "": 빈 비밀번호(초기 설정 또는 재설정 후 페어링 모드의 Nanoleaf 패널은 일반적으로 비밀번호 없는 개방형 핫스팟입니다).
AT: AT+CWJAP="Shapes 4992",""

⏹︎ 할당된 IP 확인
ESP32-C3는 패널이 할당한 IP 주소(일반적으로 192.168.x.x 대역)를 획득합니다.
AT: AT+CIPSTA?

⏹︎ Nanoleaf 토큰 획득 (컨트롤러를 길게 눌러 페어링 모드 진입)
- 주소는 패널 핫스팟에서 http://192.168.2.1:16021/api/v1/new로 고정되어 있습니다.
- 성공하면 {"auth_token": "your long token"} 형식의 JSON이 반환됩니다. 먼저 Shapes를 페어링 모드로 전환합니다.
먼저 Shapes를 페어링 모드로 전환합니다.

Shapes 토큰 획득:
AT:AT+HTTPCLIENT=3,0,"http://192.168.2.1:16021/api/v1/new",,,1,""

⏹︎ Nanoleaf Shapes 장면 목록 가져오기
AT+HTTPCLIENT는 Nanoleaf API와 상호 작용(예: 정보 가져오기, 장면 목록 조회 등)하는 데 적합한, 일반적으로 사용되는 HTTP 클라이언트 명령입니다.
AT:AT+HTTPCLIENT=2,1,"http://192.168.2.1:16021/api/v1/FXzbb1CapQ3e0GJsxrga6RvVKWXVjrbA/effects/effectsList",,,1

⏹︎ Shapes 조명 켜기 제어
HTTP PUT을 사용하여 조명을 켜는 요청을 전송합니다.
AT:AT+HTTPCPUT="http://192.168.2.1:16021/api/v1/FXzbb1CapQ3e0GJsxrga6RvVKWXVjrbA/state",23,2,"connection: keep-alive","content-type: application/json"

AT: {"on": {"value": true}}


⏹︎ Shapes 조명 끄기 제어
HTTP PUT을 사용하여 조명을 끄는 요청을 전송합니다.
AT:AT+HTTPCPUT="http://192.168.2.1:16021/api/v1/FXzbb1CapQ3e0GJsxrga6RvVKWXVjrbA/state",24,2,"connection: keep-alive","content-type: application/json"

AT: {"on": {"value": false}}


통합 테스트 (Smart Display + ESP32-C3)
개발 환경:
- STM32CubeIDE: 1.16.0
- TouchGFX : 4.24.2 Designer
1.TouchGFX 설계 (버튼 생성)

2.프로그램 구현 (winstar_screenView.cpp)
사용자 정의 단순 명령 프로토콜을 적용한 UART 전송 기능을 추가합니다.

버튼 클릭 이벤트: 상태를 토글하고 해당 UART 명령을 전송합니다.

3.조명 켜기 및 끄기 테스트
Button1 클릭: 첫 번째 클릭으로 조명이 켜지고, 두 번째 클릭으로 조명이 꺼집니다.
Button1을 클릭하여 조명 켜기
Button1을 다시 클릭하여 조명 끄기
결론
이번 테스트를 통해 Smart Display가 UART 시리얼 명령을 통해 ESP32-C3 모듈을 효과적으로 제어하여 네트워크에 연결하고 Nanoleaf Shapes API를 호출함으로써, Nanoleaf Shapes 라이트 패널의 켜기/끄기 기능을 빠르게 구현할 수 있음을 성공적으로 검증했습니다. 이는 이후 터치 기반 그래픽 사용자 인터페이스(GUI)를 활용한 조명 제어 시스템 개발의 기반이 됩니다. 시스템은 낮은 지연 시간, 높은 안정성, 그리고 신뢰할 수 있는 통신 성능을 갖추고 있습니다. 향후에는 전체 조명 제어 기능(예: 밝기 조절, 색상 변경, 동적 장면 전환)으로 확장할 수 있으며, Smart Display에 패널 상태, 실시간 피드백 또는 사용자 정의 제어 패널을 표시하여 더 다양한 IoT 애플리케이션과의 통합이 가능합니다.
참고 자료