발단 — 라즈베리파이 Zero 2 W 품절

ZPi Controller는 우리가 만드는 저가형 산업용 컨트롤러이고, 그 심장은 라즈베리파이 Zero 2 W입니다. 정가 15달러, 국내에서 3만원 언저리에 WiFi·블루투스· 쿼드코어를 다 주는, 소형 자동화에 딱 맞는 보드였습니다. 였습니다, 과거형인 이유는 간단합니다.

품절입니다. 그것도 한두 군데가 아니라 전방위로. 하나 재고 뜨면 금방 사라지고, 가격은 정가의 두세 배로 붙습니다. 제품을 만들어 파는 입장에서 “심장 부품을 구할 수 없다”는 건 그냥 못 판다는 뜻입니다.

그래서 대체품을 찾기 시작했습니다. 조건은 명확했습니다.

  • 비슷한 크기·가격 — Zero 2 W 폼팩터를 크게 벗어나지 않을 것
  • WiFi 내장 — 무선으로 붙는 게 ZPi의 전제라 필수
  • 리눅스 + .NET — 우리 소프트웨어 스택이 여기서 돕니다
  • 구할 수 있을 것 — 이게 사실 제일 중요했습니다

그러다 만난 게 Luckfox Lyra Zero W입니다.

후보 — RK3506B를 얹은 Luckfox Lyra Zero W

RK3506B SoC를 얹은 Rockchip 소형 SBC입니다. 이름부터 대놓고 “Zero W”라 라즈베리파이 Zero를 겨냥한 물건입니다. 스펙을 나란히 놓으면 이렇습니다.

라즈베리파이 Zero 2 WLuckfox Lyra Zero W
SoCBCM2710A1 (4×Cortex-A53)RK3506B (3×Cortex-A7)
비트64비트 가능32비트 전용 (ARMv7)
RAM512MB512MB
WiFi/BT2.4GHz + BT2.4GHz WiFi6 + BT5.2
화면 출력mini-HDMI + DSIDSI only (HDMI 없음)
CAN없음내장 2채널 (CAN-FD)
유선랜없음없음 (SPI로 확장 가능)
부팅SD 카드SD 카드 / 온보드 NAND

RAM은 같고, 무선은 오히려 최신(WiFi6). 결정적으로 눈에 들어온 건 맨 아래 두 줄이었습니다. CAN이 SoC에 내장돼 있습니다. 산업용 컨트롤러를 만드는 입장에선 이게 은근히 큰 차이입니다. Pi로는 CAN을 쓰려면 외부 칩을 SPI에 달아야 했는데, 이 녀석은 그냥 있습니다.

다만 공짜 점심은 없습니다. 32비트 전용이고 HDMI가 없습니다. 이 두 개가 나중에 발목을 잡는지 아닌지가 이 글의 절반입니다.

옮기기 1 — SDDiskTool로 굽는 법부터 다르다

이미지 굽기는 Pi를 쓰던 사람이 제일 먼저 당황하는 지점입니다. Raspberry Pi Imager로 안 됩니다. balenaEtcher로도 안 됩니다.

라즈베리파이는 SD 카드에 이미지를 통째로(raw) 굽는 방식이라 어떤 도구든 쓸 수 있습니다. 그런데 Rockchip 계열은 부트로더·파티션테이블·루트파일시스템이 한 덩어리로 묶인 전용 이미지(update.img)를 씁니다. 이걸 raw로 그냥 쓰면 부트롬이 인식을 못 합니다.

정답은 Rockchip 전용 도구입니다. microSD에 구울 때는 SDDiskTool, 온보드 NAND에 넣을 때는 RKDevTool. 이미지도 “SD용”과 “Flash용”이 따로 있어서 바꿔 쓰면 안 됩니다. 이거 하나 알기까지 반나절 날렸습니다. Pi에서 넘어온다면 이 대목만 기억하면 됩니다 — 굽는 도구가 완전히 다릅니다.

옮기기 2 — 32비트라서, HDMI 대신 DSI 패널이라서

리눅스 부팅은 이미지를 넣자 잘 됐습니다. 그런데 우리 소프트웨어를 올리려니 두 가지가 걸렸습니다.

첫째, 32비트. .NET은 문제없이 돌지만 linux-arm64가 아니라 linux-arm으로 빌드해야 합니다. Pi(64비트)에서 쓰던 빌드가 그대로 안 올라갑니다. 다행히 타깃만 바꾸면 되는 일이라 크진 않았습니다. 실행 시작 1초, 메모리 25MB 수준으로 잘 돌았습니다.

둘째, HDMI가 없습니다. 화면을 붙이려면 DSI 패널을 써야 합니다. 여기서 한 번 크게 헤맸습니다. 기본 설정이 특정 해상도 패널로 잡혀 있어서, 우리가 붙인 800×480 패널에는 아무것도 안 나왔습니다. 신호가 안 맞으면 백라이트만 켜지고 화면은 까맣습니다. 리눅스가 지원하는 패널 프로파일을 바꿔주고 나서야 화면이 들어왔습니다. HDMI 모니터 꽂으면 바로 나오는 Pi에 익숙하다면, 여기서도 한 번 멈칫하게 됩니다.

화면이 뜨고 나서는 오히려 재미있었습니다. GPU 없이 프레임버퍼에 직접 그리는 방식으로 상태 대시보드(네트워크·CPU·로그)를 띄웠는데, 2초 갱신 정도의 산업용 상태화면에는 충분했습니다.

Luckfox Lyra Zero W의 DSI 패널에 띄운 상태 대시보드 — 엔진 상태(RUN), 로드된 확장보드(io8·ad4), 실시간 로그가 2초마다 갱신된다

위 화면이 실제로 이 보드의 DSI 패널에 나오고 있는 대시보드입니다. 별도 모니터도, 데스크톱 환경도 없이 프레임버퍼에 바로 그린 것이라 부팅하자마자 켜집니다.

옮기기 3 — WiFi 절전 모드와 안테나 문제

WiFi 무선 연결은 필수 조건이었는데, 이게 은근히 속을 썩였습니다. 연결은 되는데 몇 분 지나면 통신이 죽는 현상이 있었습니다. 원인은 WiFi 칩의 절전 모드였고, 절전을 끄는 옵션으로 잡았습니다.

그리고 하나 더 — 기본이 외장 안테나였는데, 외장 안테나가 불량이라 신호가 약했습니다. 온보드 칩 안테나로 바꾸니 신호가 확 좋아졌습니다(−58dBm → −32dBm). 소형 보드는 안테나 선택이 생각보다 성능을 크게 가릅니다.

여기서 교훈 하나. 리눅스에서 ping이 안 된다고 통신이 안 되는 게 아닙니다. 우리 공유기는 ICMP(핑) 응답을 막아둬서, 핑은 실패해도 실제 TCP 통신은 멀쩡했습니다. 한동안 이걸 통신 장애로 오해하고 엉뚱한 데를 팠습니다. 핑 말고 실제 포트로 확인합시다.

없는 건 직접 만들었다 — 커널 재빌드

커널 재빌드가 이 프로젝트의 하이라이트입니다. ZPi 급으로 쓰려면 유선 이더넷추가 CAN을 표준 리눅스 인터페이스(eth0, SocketCAN)로 붙이고 싶었습니다. 캐리어 보드에는 이더넷 칩(W5500)과 CAN 컨트롤러(MCP2515)가 SPI로 달려 있는데, 기본 커널에는 이 드라이버가 빠져 있었습니다.

방법은 두 가지. 하나는 실행 중에 장치트리 조각을 끼워 넣는 것, 다른 하나는 아예 커널을 다시 빌드하는 것. 전자를 먼저 시도했는데 드라이버가 계속 인터럽트를 못 잡았습니다. 원인을 파고드니 실행 중 오버레이 방식이 참조 번호를 재배치하면서 인터럽트 연결이 어긋나는 문제였습니다. 정공법은 커널 소스에 직접 넣고 다시 빌드하는 것이었습니다.

SDK를 받아 커널 설정에 이더넷·CAN 드라이버를 켜고, 장치트리에 두 칩을 정확한 핀으로 기술한 뒤 다시 빌드했습니다. 결과는 깔끔했습니다.

  • eth0 — 유선 이더넷이 표준 리눅스 인터페이스로 올라옴
  • can0 — 추가 CAN이 SocketCAN으로 동작
  • 여기에 SoC 내장 CAN까지 더하면 CAN 채널이 넉넉합니다

Pi에서는 CAN 하나 붙이기도 번거로웠는데, 이쪽은 오히려 CAN이 남아도는 상황이 됐습니다. 산업 현장에서 이건 분명한 장점입니다.

마무리 — Senbrix로 CAN 확장보드까지 제어

실제 제어 테스트 없이 세팅만 하고 끝내면 반쪽입니다. 우리 산업용 PLC 소프트웨어(Senbrix)를 올리고, CAN 확장보드를 실제로 붙였습니다. 아날로그 입력 보드와 디지털 IO 보드 두 대를 CAN 버스에 물리고, 마지막에 릴레이가 딸깍 하고 떨어지는 것까지 확인했습니다.

여기서도 소소한 삽질이 있었습니다. 확장보드 한 대가 안 붙길래 통신을 들여다보니, 그 보드에 펌웨어를 다른 종류로 잘못 구워 놨더군요. 맞는 펌웨어로 다시 넣으니 바로 붙었습니다. 하드웨어 문제가 아니라 사람 실수였다는, 늘 있는 그런 이야기입니다.

어쨌든 결과는 이렇습니다. HMI 화면 → PLC 로직 → CAN 확장보드 → 릴레이로 이어지는 제어 체인이 라즈베리파이가 아니라 Luckfox Lyra Zero W 위에서 끝까지 돌았습니다.

라즈베리파이 대체 가능한가 — 정리

헤드리스 산업용 컨트롤러라면 — 충분히, 오히려 낫습니다.

  • CAN이 내장이라 산업 통신에 유리합니다
  • 커널을 만질 수 있으니 유선랜·CAN을 표준 인터페이스로 붙일 수 있습니다
  • WiFi6에 온보드 안테나까지, 무선도 준수합니다
  • 구할 수 있습니다 (이게 제일 큽니다)

단, 이런 경우엔 주의:

  • HDMI 모니터를 꽂아 쓰던 용도라면 DSI 패널로 넘어가야 합니다. 꽂으면 나오는 편의는 없습니다.
  • 64비트 소프트웨어를 쓰던 프로젝트라면 32비트로 다시 빌드해야 합니다.
  • 굽고 세팅하는 방법이 Pi와 다릅니다. Rockchip 생태계를 처음 만진다면 러닝커브가 있습니다.

정리하면, “라즈베리파이를 그대로 꽂아 쓰던 사람”에게는 낯선 구석이 많습니다. 하지만 CAN·유선랜을 붙여 제대로 된 산업용 컨트롤러로 쓰려는 사람에게는, 품절된 Pi를 기다리는 것보다 이쪽이 더 나은 선택일 수 있습니다. 우리는 ZPi의 다음 세대를 이 위에서 준비해 보기로 했습니다.

CAN이 내장이고 커널을 만질 수 있어, 헤드리스 산업용 컨트롤러라면 품절된 Pi를 기다리는 것보다 나은 선택입니다.

문의