#1 마음에 드는 Meshtastic 노드가 없어서 직접 만들었다 - ieum 제작기

목차

시작하며

Meshtastic에 대해 알고 계신가요?

Meshtastic는 LoRa를 이용해 인터넷이나 이동통신망 없이도 기기끼리 메시지를 주고받을 수 있는 오픈소스 메시 네트워크입니다. 저전력으로 수 킬로미터에서 수십 킬로미터까지 비교적 먼 거리를 통신할 수 있고, 여러 노드가 서로 패킷을 전달하는 메시 네트워크를 구성할 수 있다는 점이 흥미롭습니다.

처음에는 당연히 이미 판매되고 있는 Meshtastic 노드 중 하나를 구입해서 사용해 볼 생각이었습니다. 그런데 이것저것 찾아보다 보니 조금씩 아쉬운 부분이 보이기 시작했습니다.

Aliexpress에서 판매하고 있는 노드. 3만원에서 10만원 정도 사이에서 구매 가능하다. 

어떤 제품은 작고 간단하지만 배터리가 너무 작았고, 어떤 제품은 배터리는 충분하지만 화면이 없었습니다. 화면이 있는 제품도 작은 OLED나 LCD를 사용하는 경우가 많았고, GNSS가 빠져 있거나 제가 원하는 센서 구성이 아닌 경우도 있었습니다.

제가 원했던 것은 대략 이런 형태였습니다.

  • 한 번 충전하면 오랫동안 사용할 수 있을 것
  • 휴대폰을 꺼내지 않아도 상태를 확인할 수 있는 디스플레이가 있을 것
  • 자체적으로 위치를 측정할 수 있도록 GNSS가 들어갈 것
  • USB-C로 충전할 수 있을 것
  • 충전 과정에서 발생하는 발열과 손실이 적을 것
  • 온도, 습도, 기압 등의 데이터를 수집할 수 있을 것
  • 그래도 들고 다닐 수 있을 정도의 크기일 것

하나하나만 보면 특별한 조건은 아니었지만, 이 조건을 모두 만족하는 제품을 찾으려니 생각보다 선택지가 많지 않았습니다.

그러다 결국 이런 생각에 도달했습니다.

마음에 드는 게 없으면 그냥 직접 만들면 되지 않을까?

그렇게 시작한 것이 ieum입니다.

ieum은 RAK4630을 기반으로 E-ink 디스플레이와 GNSS, 여러 환경 센서, 그리고 3200mAh 배터리를 하나의 PCB에 구성한 휴대용 Meshtastic 노드입니다.

처음에는 단순히 Meshtastic를 사용해 보기 위한 작은 프로젝트 정도로 생각했지만, 회로를 구성하고 PCB를 그리고 실제 보드를 제작하다 보니 예상보다 꽤 본격적인 하드웨어 프로젝트가 되었습니다.

이번 글에서는 먼저 ieum을 왜 만들게 되었는지와 전체적인 구성부터 가볍게 소개하고, 이후 글에서 회로와 전원 설계, PCB 레이아웃과 제작 과정 등을 조금 더 자세히 다뤄보려고 합니다

어떤 노드를 만들고 싶었나

직접 만들어보기로 했다고 해서 처음부터 회로를 그리기 시작한 것은 아닙니다.

먼저 제가 실제로 들고 다니면서 쓰고 싶은 Meshtastic 노드가 어떤 모습인지부터 정리해 봤습니다. 기능을 많이 넣는 것도 중요했지만, 결국 배터리로 동작하는 휴대용 장치인 만큼 전력 소모와 크기, 사용 편의성 사이에서 적당한 균형을 잡는 것이 가장 중요했습니다.

가장 먼저 생각한 것은 배터리 사용 시간이었습니다.

Meshtastic 노드는 스마트폰처럼 계속 화면을 보고 사용하는 장치가 아니라, 대부분의 시간을 가방이나 주머니 안에서 보내면서 필요할 때 통신하는 장치에 가깝습니다. 심지어 우리나라는 노드 수가 매우 적은 편이라, 통신하는 시간보다 통신을 대기하는 시간이 압도적으로 길다는 슬픈 현실이 있습니다. 그렇다면 매일 충전해야 하는 것보다는 한 번 충전한 뒤 오랫동안 신경 쓰지 않고 사용할 수 있는 쪽이 훨씬 잘 어울린다고 생각했습니다.

그래서 처음부터 저전력 동작을 중요하게 생각했고, 비교적 큰 3200mAh 배터리를 넣는 방향으로 설계를 시작했습니다.

다음으로는 디스플레이가 있었으면 했습니다.

물론 Meshtastic는 스마트폰 앱과 Bluetooth로 연결해서 사용할 수 있지만, 배터리 상태나 현재 연결 상태, 위치 정보 같은 간단한 정보까지 확인하기 위해 매번 휴대폰을 꺼내는 것은 조금 번거롭게 느껴졌습니다.

그렇다고 LCD나 OLED를 계속 켜 두면 전력 소모가 커집니다. 그래서 화면 내용을 유지하는 동안에는 거의 전력을 사용하지 않는 E-ink가 이 용도에 잘 맞겠다고 생각했습니다.

또 하나 중요하게 생각한 기능은 GNSS였습니다.

스마트폰의 위치를 받아 사용하는 것도 가능하지만, 노드 자체적으로 위치를 측정할 수 있다면 휴대폰과 연결되지 않은 상태에서도 자신의 위치를 알 수 있습니다. 야외에서 독립적으로 사용하는 Meshtastic 노드라면 이쪽이 더 자연스럽다고 생각했습니다.

충전 방식도 조금 욕심을 냈습니다.

USB-C로 간단하게 충전할 수 있으면서도, 비교적 큰 배터리를 충전할 때 발생하는 열과 손실을 줄이고 싶었습니다. 그래서 흔히 소형 배터리 장치에서 사용하는 단순한 선형 충전 방식 대신 스위칭 방식의 충전 회로를 사용하기로 했습니다.

그리고 PCB를 직접 설계하는 김에 몇 가지 센서도 추가했습니다.

온도와 습도, 기압을 측정할 수 있는 환경 센서와 가속도계를 넣어 두면 Meshtastic의 Telemetry 기능에 활용할 수도 있고, 이후 펌웨어를 수정하면서 새로운 기능을 만들어 볼 여지도 생깁니다.

결국 ieum은 다양한 기능을 하나의 기기에 담으면서도, 평소 들고 다니며 오랫동안 켜 둘 수 있는 독립적인 Meshtastic 노드를 만드는 방향으로 정해졌습니다.

이제 필요한 기능이 어느 정도 정해졌으니, 다음으로는 이 요구사항을 실제로 구현하기 위해 어떤 부품들을 사용할지 결정해야 했습니다.

그래서 만들어진 ieum

앞에서 정리한 요구사항을 바탕으로 하나씩 부품을 고르고 회로를 구성하면서, ieum의 전체적인 형태가 정해지기 시작했습니다.

메인 모듈은 RAKwireless의 RAK4630을 사용했습니다. nRF52840과 SX1262를 기반으로 한 모듈로, Bluetooth와 LoRa 통신을 모두 지원하고 Meshtastic에서도 널리 사용되는 구성입니다. 전력 소모가 낮고 이미 검증된 모듈이라는 점도 휴대용 노드를 만드는 데 잘 맞았습니다.

디스플레이는 2.66인치 E-ink를 사용했습니다. 화면을 계속 갱신할 필요가 없는 Meshtastic 노드의 특성과 잘 맞고, 화면 내용을 유지하는 동안에는 거의 전력을 소비하지 않는다는 점이 가장 큰 이유였습니다.

위치 측정을 위해서는 ATGM336H 기반 GNSS 모듈을 추가했습니다. 스마트폰과 연결되지 않은 상태에서도 노드 자체적으로 위치를 측정할 수 있도록 하기 위해서입니다.

전원 구성에도 꽤 신경을 썼습니다.

배터리는 3200mAh 리튬 폴리머 배터리를 사용했고, 충전 회로에는 BQ25628E 스위칭 충전 IC를 적용했습니다. 단순히 충전 기능만 넣는 것보다는, 비교적 큰 배터리를 충전할 때 발생하는 발열과 손실을 줄이는 쪽을 선택했습니다.

시스템 전원은 SGM6036을 통해 3.3V로 공급하도록 구성했습니다. 배터리 전압이 변하더라도 주요 회로에는 안정적인 전압을 공급할 수 있도록 하기 위한 구성입니다.

여기에 몇 가지 센서도 추가했습니다.

  • AHT20 — 온도와 습도
  • BMP388 — 기압
  • MMA8652FC — 가속도

이 센서들은 Meshtastic의 Telemetry 기능에 활용할 수도 있고, 이후 직접 펌웨어를 수정하면서 다양한 기능을 추가할 수 있도록 여유를 두고 넣었습니다.

최종적으로 ieum은 다음과 같은 구성을 갖게 되었습니다.

항목구성
메인 모듈RAK4630
MCUnRF52840
LoRaSX1262
디스플레이2.66인치 E-ink
GNSSATGM336H
온습도 센서AHT20
기압 센서BMP388
가속도계MMA8652FC
배터리3200mAh Li-Po
충전BQ25628E 스위칭 충전
시스템 전원SGM6036 3.3V
충전 포트USB-C

이렇게 놓고 보면 작은 Meshtastic 노드 치고는 꽤 많은 기능이 들어갔습니다.

다만 단순히 기능을 막 추가하는 데 그치지 않고, 각각의 부품이 배터리 사용 시간과 크기, 전력 소모에 어떤 영향을 주는지도 함께 고려하면서 구성했습니다.

그리고 이렇게 정해진 부품들을 실제 하나의 PCB 안에 배치하고 연결하는 과정부터 본격적인 하드웨어 설계가 시작되었습니다.

핵심은 RAK4630

ieum의 중심에는 RAK4630 모듈을 사용했습니다.

RAK4630은 Nordic의 nRF52840 MCU와 Semtech의 SX1262 LoRa 트랜시버를 하나의 모듈에 구성한 제품입니다. Bluetooth와 LoRa 통신을 모두 사용할 수 있고, Meshtastic에서도 널리 사용되는 하드웨어 중 하나입니다.

처음부터 MCU와 LoRa 회로를 모두 직접 구성하는 방법도 생각해 볼 수 있었지만, 첫 Meshtastic 노드를 만드는 과정에서 RF 회로까지 전부 새로 설계하는 것은 굳이 필요하지 않다고 판단했습니다.

특히 LoRa처럼 수백 MHz 대역에서 동작하는 RF 회로는 단순히 회로도만 맞게 연결한다고 끝나는 것이 아니라, PCB 레이아웃과 임피던스, 안테나 주변 구조까지 함께 고려해야 합니다. 반면 RAK4630은 이런 부분이 이미 모듈 내부에 구현되어 있어, 메인 보드에서는 안테나 연결과 주변 회로 구성에 좀 더 집중할 수 있습니다.

또 하나의 이유는 전력 소모였습니다.

nRF52840은 저전력 동작에 적합한 MCU이고, SX1262 역시 배터리 기반 LoRa 장치에서 많이 사용되는 칩입니다. 대부분의 시간을 대기 상태로 보내는 Meshtastic 노드 특성상 이런 저전력 특성은 전체 사용 시간을 늘리는 데 상당히 중요합니다.

Meshtastic에서 이미 잘 지원되는 하드웨어라는 점도 큰 장점이었습니다.

완전히 새로운 하드웨어를 사용할 경우 기본적인 드라이버부터 직접 추가해야 할 수 있지만, RAK4630은 기존 Meshtastic 생태계에서 널리 사용되고 있어 비교적 빠르게 실제 통신까지 확인할 수 있습니다. 덕분에 처음부터 펌웨어 전체를 새로 작성하기보다는, 하드웨어를 먼저 안정적으로 동작시키고 이후 필요한 기능을 추가하는 방향으로 진행할 수 있었습니다.

나머지 회로는 이 모듈을 중심으로 E-ink 디스플레이와 GNSS, 각종 센서, 전원 회로를 연결하는 형태로 구성했습니다.

배터리와 전원

ieum은 한 번 충전한 뒤 오랫동안 켜 둘 수 있는 노드를 목표로 했기 때문에, 3200mAh 리튬 폴리머 배터리를 사용했습니다.

충전 회로에는 BQ25628E 스위칭 충전 IC를 사용했습니다. 단순한 선형 충전 방식보다 회로는 조금 복잡해지지만, 비교적 큰 배터리를 충전할 때 발생하는 손실과 발열을 크게 줄일 수 있다는 점을 중요하게 봤습니다.

배터리 전압은 SGM6036을 통해 시스템에서 사용하는 3.3V로 변환하도록 구성했습니다. 여기에 E-ink와 저전력 MCU를 사용하고, 필요하지 않은 주변장치는 가능한 한 꺼 둘 수 있도록 설계해 전체 소비전력을 줄이는 방향으로 구성했습니다.

최종적으로는 한 번 충전으로 한 달 이상 사용할 수 있는 것을 목표로 했습니다. 실제 사용 시간은 펌웨어와 사용 환경에 따라서도 크게 달라지는 만큼, 이후 장기적인 실사용 테스트를 통해 확인해 볼 예정입니다.

하나의 PCB에 담기

필요한 기능과 주요 부품을 정한 뒤에는 이 모든 구성을 하나의 PCB에 담는 작업을 시작했습니다.

RAK4630을 중심으로 E-ink, GNSS, 센서, 충전 회로와 전원 회로를 배치하고, 배터리와 안테나까지 실제 사용 형태를 고려해 전체 구조를 잡았습니다.

단순히 회로를 연결하는 것뿐만 아니라 RF 영역과 전원부의 배치, 스위칭 전원 주변 레이아웃, 배터리와 디스플레이가 차지하는 공간까지 함께 고려해야 했기 때문에 생각보다 신경 쓸 부분이 많았습니다.

최종적으로는 주요 기능을 모두 하나의 보드에 담은 형태로 PCB를 완성했고, 이후 JLCPCB를 통해 실제 제작까지 진행했습니다.

회로 구성과 PCB 레이아웃 과정은 다음 편에서 조금 더 자세히 다뤄보려고 합니다.

실제 보드가 도착하다

완성한 PCB는 JLCPCB에 제작과 조립을 맡겼습니다.

5장을 주문했고 대부분의 부품은 JLCPCB의 PCBA 서비스를 이용해 부품 실장까지 맡겼습니다.

다만 모든 부품을 PCBA로 조립한 것은 아니었습니다. JLCPCB는 자체 부품 라이브러리에서 "Extended" 로 분류된 부품은 종류당 약 $3의 Fee가 붙는데, 당시에는 몇 개 정도는 직접 납땜해도 별문제 없을 거라고 생각해서 가능해 보이는 거는 따로 구매해서 납땜하려 했습니다만..

스스로 불러온 재앙이었습니다.

가지고 있는 인두기도 출력이 약한 편이 아닌데, GND Via를 충실하게 뚫어놓은 탓에 GND 핀 납땜할 때마다 열이 다 GND 레이어로 뺏겨서 납이 녹지를 않는가 하면
가속도계가 예상보다 너무 작아서(심지어 무려 DFN 패키지) 납땜하는데 아주 애먹었습니다.

이 부분도 다음 편에서 자세하게 다뤄보도록 하겠습니다.

5대를 전부 만들 생각은 없었기에 추가 부품은 2대분만 샀고 2대를 만드는 데 시도했지만.. 그래도 작동하는 보드 하나 만드는 데는 성공했습니다.

이후 배터리와 E-ink 디스플레이, 안테나 등을 연결해 실제 사용 형태로 조립했습니다.

물론 조립이 끝났다고 해서 모든 것이 바로 동작한다는 보장은 없습니다. 각 전원 레일과 주변장치가 예상대로 동작하는지 하나씩 확인하는 과정이 남아 있었습니다.

하나의 프로토타입이 되기까지

현재 ieum은 기본적인 하드웨어 테스트를 넘어, 케이스까지 포함한 하나의 완성된 프로토타입 형태가 되었습니다.

RAK4630을 비롯해 E-ink 디스플레이와 GNSS, 각종 센서가 정상적으로 동작하고 있으며, 배터리 충전과 전원 회로 역시 실제 사용이 가능한 상태입니다. Meshtastic 펌웨어를 올린 뒤에는 Bluetooth를 통한 스마트폰 연결과 실제 LoRa 송수신도 확인했습니다.

PCB만 완성했을 때도 꽤 뿌듯했지만, 배터리와 디스플레이, 안테나를 모두 넣고 직접 제작한 케이스까지 조립하고 나니 처음 생각했던 '들고 다닐 수 있는 독립적인 Meshtastic 노드'​의 모습에 훨씬 가까워졌습니다.

실제로 들고 다니며 사용하면서 다른 Meshtastic 노드의 신호를 수신하는 데도 성공했습니다. 화면 속 회로도와 PCB에서 시작했던 것이 실제로 전파를 주고받는 하나의 기기가 된 순간이었습니다.

물론 아직 끝난 것은 아닙니다. E-ink 화면 구성과 펌웨어 개선, 소비전력 최적화, 실제 배터리 사용 시간 측정 등 앞으로 확인하고 개선할 부분도 남아 있습니다.

그래도 첫 번째 프로토타입이라는 관점에서는, 처음 계획했던 기능들을 실제 하나의 기기로 구현하는 데까지 도달했습니다.

다음 편에서는

처음에는 단순히 마음에 드는 Meshtastic 노드를 직접 만들어 보자는 생각에서 시작했지만, 회로와 PCB를 설계하고 실제 보드를 제작해 케이스까지 완성하면서 하나의 제대로 된 프로토타입이 되었습니다.

이번 글에서는 ieum이 어떤 생각에서 시작됐고 어떤 모습으로 만들어졌는지를 전체적으로 소개했습니다. 다음 편부터는 지금까지 가볍게 넘어갔던 회로와 전원 설계를 하나씩 뜯어보려고 합니다. 생각보다 고민한 부분도 많았고, 예상하지 못했던 삽질도 꽤 있었습니다. ㅎㅎ

 

This article was updated on