인터넷 라디오 기능까지 넣고 나니, 이 기기를 다른 장소에 가져갔을 때 휴대폰 핫스팟에 연결하여 음악을 듣고 싶어졌다. 하지만 키보드나 터치 입력이 원활하지 않은 환경에서 Wi-Fi 암호를 직접 입력하는 UI를 만드는 것은 꽤 번거로운 일이다. 그래서 이미 알고 있는 네트워크 정보를 별도의 설정 파일(/etc/wpa_supplicant/wpa_supplicant-wlan0.conf)에 저장해 두고, 현재 검출되는 SSID 중에서 하나를 선택하는 단순한 방식을 구현해 보았다.
![]() |
| Wi-Fi 선택 화면. '설정'이라고까지는 이야기하지 못하겠다. 암호를 입력하지는 못하므로. 상판으로 사용할 아크릴판도 오늘 도착하였다. 가공을 의뢰한 전후판만 배송되면, 수일 내로 완성품을 만들게 될 것이다. |
개발을 이어가면서 네트워킹 가이드 문서도 함께 정리하였다. Raspberry Pi OS의 실제 동작 방식과 systemd 기반 Wi-Fi 설정 구조를 반영하여 내용을 다듬었는데, 일반적인 라즈베리 파이 네트워크 설정 가이드로 보아도 크게 어색하지 않을 정도로 완성도가 높아진 것 같다.
가끔 Raspberry Pi 3 Model B 와 Arduino Uno 의 연결 상태가 끊어져 기기가 통제 불능 상태에 빠지기도 한다. 대부분은 아두이노 우노를 리셋하면 문제가 해결되지만, 그렇지 않은 경우에는 라즈베리 파이에 SSH로 접속하여 서비스를 재시작해야 한다. 또한 CP2102 기반의 시리얼 콘솔(PuTTY 등)을 이용하면 네트워크가 동작하지 않는 상황에서도 시스템 복구가 가능하다. 시리얼 콘솔은 이미 지금도 사용하고 있다.
사실 사운드 모듈이라는 본래 목적에만 충실하다면 네트워킹 기능은 전혀 필요하지 않다. MIDI 입력과 음원 재생만으로도 독립적인 전자 악기처럼 동작할 수 있기 때문이다. 하지만 인터넷 라디오 기능까지 추가하다 보니, 결국 외부 세계와 연결되는 최소한의 통로는 유지할 수밖에 없다. Wi-Fi는 가장 일상적인 통로이고, 비상 사태에 쓰기 위한 통로는 다음의 글을 참고하라.
휴대폰을 비상 콘솔로 쓰기
라즈베리 파이 기반 장비를 헤드리스(headless)로 운영하다 보면, 가끔 SSH 접속조차 불가능한 상황이 발생한다. 특히 Fluid Ardule처럼 TFT-LCD와 아두이노 우노 기반의 전용 UI를 사용하는 시스템에서는 입력 장치 연결이 끊어지면 사실상 조작이 불가능해질 수도 있다.
이럴 때 라즈베리 파이의 UART 시리얼 콘솔은 매우 강력한 비상 복구 수단이 된다. 나는 GPIO UART에 연결된 CP2102 USB-UART 모듈을 항상 장착해 두고 있으며, 평소에는 노트북에서 PuTTY를 이용하여 접속한다. 그런데 같은 작업은 휴대폰만으로도 가능하다고 한다.
준비물
- Android 스마트폰
- USB OTG 어댑터
- CP2102 USB-UART 모듈
- 시리얼 터미널 앱(예: Serial USB Terminal)
연결 구조
Raspberry Pi UART
↓
CP2102
↓ USB
Android Phone
휴대폰에 OTG 어댑터를 연결한 뒤 CP2102를 꽂고, 시리얼 터미널 앱을 실행한다. 보통 baud rate는 115200bps로 설정하면 된다. 연결이 성공하면 라즈베리 파이의 Linux 콘솔 로그인 프롬프트가 휴대폰 화면에 나타난다.
간단한 복구 명령
sudo systemctl restart fluid_ardule.service
journalctl -u fluid_ardule.service -n 3
이 방식의 장점
가장 큰 장점은 네트워크 상태와 무관하다는 점이다. Wi-Fi가 죽었거나 SSH가 동작하지 않아도, UART 콘솔만 살아 있으면 시스템 복구가 가능하다. 서비스를 재시작하거나 로그를 확인하는 정도의 유지보수는 휴대폰만으로도 충분히 수행할 수 있다.
또한 Bluetooth나 VNC 같은 무거운 기능을 다시 활성화하지 않아도 된다. 최소 기능만 유지한 경량 appliance 스타일의 시스템에서는, 이런 단순한 UART 콘솔 방식이 오히려 가장 안정적이고 확실한 유지보수 수단인지도 모른다.







