Floatee

Friendly Floaty 하천 표류 추적기 — 종합 매뉴얼 겸 검수 보고서

수신사단법인 이타서울 대표 및 팀작성일2026-07-11
목적장치 한 대가 만들어져 데이터가 되기까지의 전 과정을 처음 읽는 분도 따라올 수 있게 설명합니다. 그 과정에서 빠진 곳이 없는지 함께 검수합니다
범위부품 조달 → 기구부 → 전자부·통신 설정 → 펌웨어 → 벤치 검증 → 조립 → 방류·회수 → 데이터·지능 → 앱 → FMEA → 통합 → 남은 구멍

본문에서 어깨번호가 달린 낱말(예: 펌웨어주)은 문서 맨 아래 용어 풀이에 쉬운 설명이 있습니다. 모든 수치 중 실제로 재보지 않은 것은 "추정"이라고 적었습니다.

1.이 프로젝트가 하는 일

바닷가에서 줍는 쓰레기의 대부분은 강을 타고 내려온 것입니다. 그런데 그 쓰레기가 강의 어느 길로 흘러 어디에 쌓이는지를 실제로 측정한 자료는 거의 없습니다. 저희는 페트병 크기의 작은 추적기를 시민이 직접 만들어 하천에 띄우고, 추적기가 보내오는 위치 신호로 그 길을 지도에 그립니다. 장치는 반드시 회수하며, 도면·프로그램·데이터를 전부 공개해 전 세계 누구나 같은 것을 만들 수 있게 합니다.

읽기 전에 세 가지를 밝혀 둡니다. 첫째, 이 장치는 한자리에 묶어 두는 부표가 아닙니다. 쓰레기와 같은 속도로 떠내려가면서 지나온 길을 기록하는 표류 추적기(드리프터)입니다. 둘째, 통신은 휴대전화망(LTE)1을 씁니다. 인공위성은 쓰지 않습니다. 셋째, 위치 예측은 물리 법칙으로 계산하고 실제 측정으로 보정합니다. 인공지능이 알아서 맞히는 방식이 아닙니다. 이 세 가지는 저희가 바깥에 약속한 정직 원칙입니다.

2.장치 한 대의 일생 (전체 그림)

아래 여덟 단계가 이 문서 전체의 뼈대입니다. 각 단계는 뒤 장에서 하나씩 자세히 다룹니다.

단계하는 일관련 장
① 조달보드, 배터리, 유심, 병, 폼 등 부품을 삽니다3장
② 기구 제작3D 프린트 3부품과 폼 재단으로 몸통을 만듭니다4장
③ 전자 준비보드에 유심, 배터리, 안테나를 달고 통신 설정을 합니다5장
④ 펌웨어 굽기장치의 행동 규칙 프로그램을 보드에 넣습니다6장
⑤ 벤치 검증책상 위에서 5개 관문 G0~G4를 통과시킵니다7장
⑥ 조립·밀봉·수조시험병에 넣고 봉한 뒤 6개 시험 T1~T6을 통과시킵니다8장
⑦ 방류·추적·회수체크리스트대로 띄우고 지도로 보고 전량 회수합니다9장
⑧ 데이터·분석궤적이 쌓여 "어디를 먼저 치울지"가 나옵니다10장
가장 중요한 규칙 한 줄 — "낸 만큼 거둔다." 회수 계획이 없으면 방류하지 않습니다(count-in = count-out). 시험을 통과하지 못한 장치는 물에 넣지 않습니다.

3.부품과 조달 현황 (BOM2)

3-1. 주문 현황 (2026-07-11 기준)

구분품목수량어디서상태·예상 도착
선발대LILYGO T-A7670G R2 + 분리형 GPS1AliExpress주문 진행 중 · 약 5~10일
본대LILYGO T-A7670G R2 With GPS [Q425] (일체형)5lilygo.cc 공식몰 · DHL주문 진행 중 · 약 10~17일
국내보호회로 18650 배터리3(연속 3A 이상)6쿠팡/디바이스마트1~2일
국내데이터 유심 — 기기마다 1장씩(KT·SKT 망 계열만, 5-3장 설명 참조)6 (우선 1)편의점 선불 유심 가능당일
국내18650 충전기(2~4구) — 회수-재충전 운영의 필수 장비1쿠팡1~2일 · 역검수에서 발견된 누락분
국내USB 데이터 케이블(충전전용 아님 — 펌웨어 굽기용)1+보유 확인충전전용 케이블은 G0에서 인식 불가
국내EVA 폼 10mm(폐쇄셀)4, 페트 1L 병, 무연 낚시봉돌 ~40g, 중성 실리콘, 실리카겔, 형광 테이프, 파라코드, 방수 QR 라벨각 6세트분다이소·낚시점·철물점·재활용당일~2일
제작
(선택)
3D 프린트 3부품(전자부 받침대·무게추 킬·회수 고리)6세트자체/출력소도면 공개, 인필5 60% 이하. 프린터가 없으면 4-3장의 무프린트 조립법으로 대체 가능

선발대 1기는 GPS가 케이블로 분리된 변형이고 본대 5기는 GPS가 보드에 붙은 일체형입니다. 두 구성 모두 같은 프로그램이 그대로 돌아가며, 오히려 두 구성의 위치 수신 품질을 비교하는 작은 실험이 됩니다 13장 참조.

검수 포인트 — 보드에는 배터리와 유심이 포함되어 있지 않습니다(박스에는 보드+안테나 2개+전원케이블만). 국내 조달분을 빠뜨리면 선발대가 와도 시험을 시작할 수 없습니다. 최소한 유심 1장과 배터리 1개는 이번 주에 확보해 두시길 권합니다.

4.기구부 — 몸통 만들기

몸통은 재활용 1리터 페트병입니다. 병을 쓰는 이유는 세 가지입니다: 세계 어디에나 있고, 공짜이며, 전파가 잘 통과합니다(금속 통은 GPS·LTE 신호를 막습니다). 다만 일반 생수병 입구(지름 약 28mm)로는 안의 부품(폭 최대 86mm)이 들어가지 않습니다 — 그래서 8장의 절단·재밀봉 공정을 쓰거나, 입구가 넓은 용기를 고릅니다.

4-1. 부품 다섯 가지 (조립되는 순서대로)

부품재료역할 (쉬운 말)
① 무게추 킬3D 프린트 + 무연 봉돌 ~40g배 바닥의 무게추입니다. 병이 뒤집혀도 오뚝이처럼 안테나가 위로 돌아오게 합니다
② 전자부 받침대3D 프린트보드와 배터리를 병 안에 흔들리지 않게 고정하는 선반
③ 폼 칼라 ×2EVA 폼 160cm³이 설계의 핵심 안전장치. 물이 새어 병 안이 침수되어도 장치가 가라앉지 않게 하는 구명조끼
④ 안테나 2개보드 동봉품병 안쪽 맨 위 하늘 쪽에 테이프로 부착합니다. 물에 잠기면 통신이 끊깁니다
⑤ 회수 고리3D 프린트뜰채·장대로 건져 올리는 손잡이. 동물이 걸리지 않게 매끈한 폐곡선

4-2. 왜 안 가라앉는가 — 숫자 세 개만 기억하면 됩니다

밀봉된 1리터 병은 물을 약 1,000cm³ 밀어내는데 장치 전체 무게는 약 207g(추정)이라, 정상 상태에서는 뜨는 힘이 무게의 약 4.8배입니다. 진짜 위험은 밀봉이 새서 병에 물이 찼을 때인데, 이때 부품만 남으면 약 97g만큼 가라앉는 힘이 남습니다(추정). 그래서 물을 거의 먹지 않는(24시간 담가도 5% 미만) 폐쇄셀 폼을 160cm³ 넣어, 침수 상태에서도 약 27% 여유로 뜨게 뒤집어 놓았습니다. 요약하면: 4.8배 → −97g → 폼 160cm³로 역전. 폼 재단용 실물 크기 종이 본과 두께별 장수 표는 이미 인쇄용으로 공개되어 있습니다.

검수 포인트 — 3D 프린트를 속을 꽉 채워(100%) 뽑으면 무거워져 폼 160이 부족해집니다(175 필요). 반드시 인필 60% 이하로 출력합니다. 폼은 반드시 폐쇄셀(EVA)이어야 하며, 스펀지류(물 먹는 것)는 탈락입니다 — 24시간 물에 담가 무게가 5% 미만으로 늘어나는지 확인하는 폼 소재 검수를 먼저 합니다(침수 고장 F1에 대비한 소재 자격 시험 — 완성품 전체를 담그는 8장의 T1과는 다른 시험입니다).

4-3. 프린터가 없어도 됩니다 — 무프린트 조립법

3D 프린터는 세계 어디에나 있는 도구가 아닙니다. 그래서 프린트 부품 세 가지는 모두 칼과 접착만으로 대신 만들 수 있습니다. 원칙은 간단합니다. 부품의 모양이 아니라 부품이 하는 일을 만들면 됩니다.

프린트 부품하는 일무프린트 대안 (칼·접착만으로)
전자부 받침대보드·배터리를 흔들리지 않게 고정폼 칼라의 가운데 구멍에 보드를 끼우고 케이블타이로 묶는다. 더 튼튼하게 하려면 플라스틱 골판지(단프라)를 재단해 ㄷ자로 접어 받침을 만든다
무게추 킬무게추를 배 바닥 한가운데에 고정봉돌 ~40g을 지퍼백이나 수축튜브에 싸서 병 바닥 안쪽 중앙에 글루건으로 붙이고 케이블타이로 보강합니다. 움직이지만 않으면 됩니다
회수 고리뜰채·장대로 건질 손잡이병목(뚜껑 아래 잘록한 곳)에 파라코드를 짧고 팽팽하게 매듭지어 고리를 만듭니다. 느슨한 올가미 모양은 금지합니다. 동물이 걸릴 수 있습니다

이렇게 만들면 프린트 부품 약 35g이 빠져 장치가 오히려 가벼워지고, 부력 여유는 늘어납니다. 다만 시험은 똑같이 통과해야 합니다 — 특히 뒤집으면 스스로 일어서는지(T4)와 물을 채워도 떠 있는지(T2)를 꼭 확인합니다.

쓰면 안 되는 재료 — 하드보드지·골판지·MDF 같은 종이·나무 가공재는 물을 먹어서 안 됩니다(F1 시험 탈락). 금속 판·통은 전파를 막아서 안 됩니다. 설거지 스펀지 같은 개방셀 폼도 안 됩니다. 되는 재료: 플라스틱 골판지(단프라), PP·PET 판재, EVA 폼, 케이블타이, 파라코드, 글루건 — 모두 세계 어느 문구점·철물점에나 있습니다.

5.전자부 — 보드·전원·통신 설정

5-1. 보드 한 장이 전부입니다

LILYGO T-A7670G R2 한 장에 두뇌(ESP32)6, 통신 모뎀(A7670G, LTE), 위치 수신기(GPS)7, 배터리 소켓이 모두 실려 있습니다. 납땜이 전혀 필요 없고, 조립은 "유심 꽂기 → 안테나 2개 딸깍 → 배터리 끼우기"가 전부입니다. 안테나는 길쭉한 것이 LTE(모뎀 옆 MAIN 단자), 네모난 것이 GPS(GPS 단자)입니다. 배터리는 홀더의 +/− 각인과 셀 표기를 대조한 뒤 끼웁니다 — 거꾸로 끼우면 보드가 즉시 망가질 수 있습니다. 보호회로가 달린 18650은 일반 셀보다 길어(약 69mm) 홀더에 안 맞을 수 있으니 구매 전 홀더 대응 길이를 확인합니다.

5-2. 전원에 관한 두 가지 철칙

첫째, USB 케이블만 꽂고 시험하면 안 됩니다. 모뎀이 전파를 쏘는 순간 순간적으로 큰 전류(약 2A)를 당기는데 USB만으로는 부족해서, 장치가 픽 꺼졌다 켜지며 마치 고장처럼 보입니다. 반드시 배터리를 끼운 상태로 시험합니다. 둘째, 배터리는 연속 3A 이상을 견디는 보호회로가 달린 18650이어야 합니다. 값싼 저전류 보호회로는 그 순간 전류에 스스로 전원을 차단해 버립니다.

5-3. 통신 설정 — 딱 세 가지만 정하면 됩니다

설정뜻 (쉬운 말)우리 값
APN8유심이 어느 통신사 문으로 들어갈지 적는 주소KT 알뜰폰이면 lte.ktfwing.com, SKT면 lte.sktelecom.com (유심 안내지에 적혀 있음)
서버 주소위치 신호를 보낼 우리 컴퓨터의 주소벤치: 서버는 사무실 PC에서 켜지지만 장치는 휴대전화망을 거쳐 들어오므로 내부 주소인 192.168.…로는 닿지 않습니다18 — ngrok 터널 주소 또는 포트포워딩한 공인 주소를 적습니다(7장 참조). 운영: openc.caresea.kr
전송 주기몇 분마다 깨어나 위치를 보낼지벤치 5분, 운영 30분(배터리 수명과 맞바꾸는 값 — 13장)
검수 포인트 — 유심 두 가지
① 유심은 기기마다 한 장씩 들어갑니다. 장치가 6대면 유심도 6장입니다. 장치 하나하나가 작은 휴대전화이기 때문입니다.
② "LG U+ 불가"는 휴대폰 상표가 아니라 통신망(기지국망) 이야기입니다. 이유는 두 가지입니다. 1NCE나 Soracom 같은 해외 IoT 유심은 한국에서 KT나 SKT 망하고만 로밍 계약이 되어 있습니다. 그리고 LG U+ 망은 이 보드에서 접속이 확인된 사례가 없어 권하지 않습니다. 편의점에서 선불 유심을 살 때 KT망 또는 SKT망 등 포장의 통신망 표시를 확인하면 됩니다.

6.펌웨어 — 장치의 행동 규칙

펌웨어9는 보드에 심어 두는 행동 규칙입니다. 우리 장치의 하루는 이 다섯 동작의 반복입니다.

깨어난다 → 하늘에서 위치를 받는다(GPS) → 수첩에 적는다(버퍼) → 전화망으로 서버에 보낸다 → 다시 잠든다

6-1. 이번 판(v1.1)의 가장 중요한 개선 — "수첩" 방식

하천에는 다리 밑처럼 전파가 안 터지는 구간이 있습니다. 예전 방식은 전송에 실패하면 그 위치 기록이 사라졌지만, 지금은 위치를 먼저 장치 안 수첩(버퍼, 16칸)에 적어 두고, 전파가 다시 터지는 순간 밀린 기록을 한꺼번에 보냅니다(store-and-forward10). 기록마다 일련번호 seq와 관측 시각 ts_fix가 함께 붙어 있어서, 서버는 늦게 도착한 기록도 올바른 순서로 궤적을 짜 맞춥니다. 이 방식은 갠지스강, 아르노강, 제주 하구의 선행 연구 세 곳이 공통으로 채택했던 검증된 교훈입니다. 수첩은 16칸입니다. 다 차면 가장 오래된 장을 찢어 최신을 지키고, 배터리가 완전히 빠지면 수첩이 비워집니다. 두 경우 모두 일련번호의 빈틈으로 서버가 결측을 알아챕니다.

6-2. 굽기 전에 정하는 값 (장치마다 1분 작업)

장치 고유 이름(DEVICE_ID, 유닛마다 다르게), 사이트 태그(SITE_ID), APN, 서버 주소, 전송 주기(벤치는 5분) — 다섯 가지를 파일 상단에서 고쳐 넣고, Arduino IDE11로 보드에 굽습니다. 파일 맨 위의 벤치/운영 스위치(BENCH_HTTP)가 1이면 벤치용 평문, 0이면 운영용 암호화로 서버 주소 블록이 자동으로 바뀝니다 — 7장의 G4가 바로 이 스위치를 0으로 바꿔 다시 굽는 시험입니다. 필요한 부속 프로그램(라이브러리) 세 가지와 주의점은 조립 가이드에 적혀 있으며, 특히 기본 TinyGSM19이 아니라 LILYGO 전용 포크를 써야 한다는 점이 초심자가 가장 자주 걸리는 함정입니다.

검수 근거 — 이 펌웨어는 3개의 관점(임베디드 정합·라이브러리 사실 확인·데이터 규격 준수)으로 별도 검증을 거쳤고, 그 과정에서 이전 판부터 있던 치명 결함 2건(모뎀 리셋 신호의 극성 반전, 운영용 암호화 통신 빌드가 아예 컴파일되지 않던 문제)을 찾아 수정했습니다. 다만 실제 보드 위에서의 최종 확인은 아직 남아 있습니다 — 그것이 7장의 벤치입니다.

7.벤치 검증 — 물에 넣기 전 책상 위 시험 (관문 G0~G4)

보드가 도착하면 조립보다 먼저, 책상 위에서 아래 관문을 차례로 통과시킵니다. 수신 서버는 사무실 PC에서 명령 한 줄(python ingest_server.py 8770 0.0.0.0)로 켭니다. 뒤의 숫자와 0.0.0.0을 빼먹으면 서버가 자기 컴퓨터 안 127.0.0.1에서만 열려 장치가 붙지 못합니다. 서버 자체는 모의 신호로 정상 동작을 확인했습니다.

주의: 서버 주소는 집 주소가 아니라 우체국 사서함이 필요합니다
장치는 와이파이가 아니라 통신사 망(LTE)으로 신호를 보냅니다. 통신사 망에서 우리 사무실 컴퓨터의 내부 주소(192.168.…)는 보이지 않습니다18. 그래서 벤치 전에 서버를 인터넷에서 접속 가능한 주소로 열어 두어야 합니다. 방법은 둘 중 하나입니다: ① ngrok이라는 무료 중계 도구(ngrok tcp 8770) ② 공유기 포트포워딩. 이 항목은 QA 검수에서 발견되어 벤치 체크리스트에 반영되었습니다.
관문무엇을 확인하나 (쉬운 말)합격 기준
G0 굽기프로그램이 보드에 들어가고 켜지는가 (배터리 장착 상태로!)시리얼 창에 로그가 뜹니다
G1 GPS 전원모뎀을 켜기 전에 GPS가 혼자 켜지는가 — 설계 전제 중 유일하게 미확정인 지점창가에서 위치 잡힘, 또는 실패해도 "NMEA chars > 0"
G2 한 바퀴위치→전송→잠들기→깨어나기가 3회 연속 도는가서버에 seq가 1씩 증가하며 도착
G3 수첩안테나를 뽑아 전파를 끊었다 다시 이으면 밀린 기록이 몰아서 오는가궤적이 올바른 순서로 복원됨
G4 암호화 전송운영용(HTTPS) 빌드가 컴파일·전송되는가 (대표 1기만)암호화 빌드 컴파일 + 443 접속·전송 시도 성공 (운영 서버의 v1.1 수신부 이식 전에는 서버의 오류 응답 수신까지를 통과로 봄 — 15장 #7)

전 유닛은 G0~G3 네 관문을 통과해야 조립 단계로 넘어갑니다. G4(암호화 빌드)는 대표 1기로 한 번만 확인하고 벤치 설정으로 되돌립니다. 이후 8장의 수조 시험(T1~T6)까지 통과한 장치가 "검증된 조립품(verified build)"으로 기록되며, 이 기록이 있어야 그 장치의 데이터가 공식 데이터로 인정됩니다. 인쇄해서 체크하는 5기용 표가 저장소에 있습니다.

8.조립과 밀봉

먼저, 병을 준비합니다 (QA 검수에서 발견된 필수 공정)
페트병 입구는 지름 약 28mm입니다. 폼 칼라와 받침대(약 86mm)는 입구로 들어가지 않습니다. 그래서 병의 어깨 아래를 한 바퀴 깨끗이 잘라 부품을 넣고, 자른 자리를 5~10mm 겹쳐 끼운 뒤 실리콘과 방수 테이프 두 겹으로 다시 붙입니다. 이는 아르노강 연구팀이 사용한 방식입니다. 자른 자리가 새 누수 지점이 되므로, 누수 시험 T1은 반드시 이 상태로 통과시킵니다. 자르기 싫으면 입구가 넓은 밀폐 용기를 쓰면 됩니다.

벤치를 통과한 전자부를 4장의 몸통에 넣습니다. 순서는 아래에서 위로: 무게추(킬) → 배터리 → 폼 칼라 → 보드 → 안테나(맨 위). 무거운 것은 아래 가운데, 뜨는 것과 전파 쓰는 것은 위 — 이 한 줄이 배치 원칙의 전부입니다. 무게추는 킬 포켓 안에 실리콘이나 글루건으로 반드시 붙여 고정합니다. 무게추가 움직이면 오뚝이 복원력이 사라집니다(무게추를 늘리면 폼도 늘려야 합니다: +10g당 폼 약 +12cm³).

밀봉은 병뚜껑 나사산에 실리콘을 얇게 바르고 잠그는 것이 기본이며 재사용할 수 있습니다. 병 안에 실리카겔 습기 제거제를 한 포 넣습니다. 여름 직사광선 아래 밀폐 병 안의 배터리가 부풀 수 있으므로 압력 관리가 필요한데, 방법은 둘 중 하나입니다. 고어텍스 패치 같은 통기벤트를 달거나, 차광 테이프와 단기 회수 운용으로 관리합니다. 우리 파일럿은 후자를 채택합니다. 밀봉이 끝나면 주방저울로 총 무게를 재어 목표 약 205g인지 기록합니다. 이 실측값이 4장 부력 계산의 추정을 실제 값으로 바꿉니다.

조립이 끝나면 물에 넣기 전 6가지 시험을 합니다. T1 24시간 물에 담가 누수 확인 · T2 일부러 물을 채워도 72시간 똑바로 떠 있는지(폼 검증) · T3 1m 낙하 · T4 뒤집어 놓으면 스스로 일어서는지 · T5 얼음물에서도 전송이 유지되는지 · T6 담갔다 꺼내도 GPS와 LTE가 다시 잡히는지 확인합니다. 전부 대야, 주방저울, 아이스팩 같은 가정용 도구로 할 수 있습니다. 앞 장들의 T1, T2, T4 표기가 모두 이 목록을 가리킵니다.

9.방류와 회수 — 현장 운영 규칙

방류 전 점검표는 네 묶음으로 되어 있습니다. A 회수 계획, B 장치 상태, C 환경·법규, D 안전 — 네 묶음을 전부 확인해야 방류할 수 있습니다. 첫 묶음이 회수 계획인 데는 이유가 있습니다. 이 프로젝트에서 회수는 선택이 아니라 방류의 조건이기 때문입니다. 현장을 접근성에 따라 세 등급으로 나누고, 등급에 맞는 회수 수단이 확보된 경우에만 방류합니다. 방류 전에 회수 마감 시각(T+몇 시간)도 함께 정합니다.

등급현장회수 수단
A 직접 접근둔치·얕은 여울뜰채·도보·카약 (자원봉사)
B 제한 접근콘크리트 급경사·수심 깊음드론(유상 운용자) 또는 하류에 미리 친 회수 라인
C 접근 불가홍수 위험·외해 유출 우려·허가 없는 보호구역방류 금지 (짧은 줄 묶기·폐폰 방식만 허용)

사람의 안전이 장치보다 먼저입니다. 수변 작업은 반드시 2인 1조로 구명조끼, 미끄럼방지 장화, 구조 로프를 착용하며, 강우 예보나 수위 상승 시에는 방류를 취소합니다. 학생 등 미성년 참여 시 보호자 동의와 인솔 체계를 갖추고, 자원봉사자 상해보험 가입을 확인합니다. 자세한 내용은 구멍 목록 B4, B5를 참조하십시오.

방류한 수와 회수한 수를 장부로 대조합니다(count-in = count-out). 회수 마감 후 남은 장치는 장치 번호, 마지막 위치, 추정 경로, 수색 이력을 담은 유실 보고서를 작성해 공개 기록으로 남깁니다. 취수구나 보호구역 같은 민감 구간으로 흘러들면 관할기관에 즉시 알리고, 침몰한 장치는 밀봉 시험 T1을 재검토해 원인을 설계에 되먹입니다. 부산 파일럿은 A등급과 B등급 구간에서, 유상 드론 운용자를 우리가 직접 수배해 당일 합류하는 방식으로 진행합니다.

법규 확인은 두 갈래입니다. 하천 쪽 — 방류 구간의 관할을 확인하고(소하천은 구청이 관리청, 지방하천은 하천법 적용) 협조공문 또는 신고를 마치며, 보호구역·상수원보호구역 해당 여부와 어로·항행·취수시설 구간 회피를 확인합니다. 전파 쪽 — 방류 전에 면제확인 신청(연구·기술개발용, 1,500대 이하)이 필요합니다. 수량이 면제 상한 안에 있는 것과 절차를 밟은 것은 다르며, 확인서를 받기 전에는 수량과 관계없이 방류하지 않습니다. 두 갈래 모두 방류 전 점검표(C 묶음)에 들어 있습니다.

10.데이터와 지능 — "Physical AI"의 실제 모습

10-1. 데이터가 흐르는 길

장치(위치 1점) → 수신 서버(궤적으로 조립) → 공개 지도(실시간) → 누적 분석(이동장·핫스팟)

장치는 좌표 한 점만 보내는 단순한 존재이고, 똑똑한 일은 전부 서버와 분석이 맡습니다. 이 분업 덕분에 장치가 싸고 단순해집니다.

10-2. 지능의 세 층 — 과장 없이 정확히

층무엇을 하나정직한 실체
① 데이터 품질이상한 좌표 걸러내기, 좌초 판정통계 규칙(전·후진 4σ 속도 검사12) — 40년 된 해양 관측 표준(NOAA) 채택
② 물리 모델 보정"이 물체는 바람과 물살에 이만큼 밀린다"는 계수를 실측으로 맞추기OpenDrift13라는 공개 물리 시뮬레이터 + windage14 계수. 제주 실측 연구값(0.012~0.014)을 출발점으로 사용
③ 패턴 발견궤적이 쌓이면 반복해서 멈추는 지점(핫스팟)을 자동으로 묶기군집화 알고리즘(DBSCAN15) — 수거 우선순위가 여기서 나온다

즉 "Physical AI"의 현재 형상은 물리 시뮬레이터를 실측 궤적으로 보정하는 폐루프입니다. 학습형 신경망이 미래를 예측한다고 말하지 않으며, 정확도 몇 %라는 숫자도 실측 전에는 쓰지 않습니다. 중요한 자산은 ②의 보정계수인데, 이것은 강이 아니라 물체(우리 병)의 성질이라 다른 나라 하천으로 그대로 이전됩니다. 새 지역은 훨씬 적은 방류로 보정을 끝낼 수 있고, 이것이 글로벌 확산의 과학적 근거입니다.

10-3. 데이터 규격이 곧 헌법입니다

모든 장치가 같은 형식 FF-ID v1.1로 보고하기 때문에, 전 세계 어느 커뮤니티가 만든 장치든 데이터가 한 상에 모입니다. 형식에는 관측 시각, 일련번호, 수신 품질 HDOP16)·장치 이력·회수 결과까지 들어가며, 검증 시험을 통과하고 회수 정산까지 마친 장치의 데이터만 공식 데이터셋에 포함됩니다. 규칙을 감시로 강제하는 대신, "제대로 만든 데이터만 인정받는" 구조로 강제하는 것입니다.

10-4. 국내 선례와 무엇이 같고 무엇이 다른가

같은 일을 먼저 한 국내 연구가 둘 있습니다. 우리는 이들에게서 배우되, 결정적으로 다른 길을 갑니다.

구분제주 4하구(Kang, 2025)한강하구(Do 외, 2026)우리(Friendly Floaty)
규모·성과11대·2회차. windage 계수 α 0.012~0.014 실측49대·6개월. 쓰레기의 ~12%만 외해 유출·대부분 하구에 1달+ 잔류파일럿 5대(아직 미실시)
전자·통신오픈 MCU + 다중망 셀룰러(NB-IoT/LTE-M/GPRS) + 리튬 — 우리와 사실상 같은 계열기기 설계 미공개(논문 유료)셀룰러 Cat.1(A7670) — 시판 유심으로 국내 확실 접속
데이터1시간 측위·store-and-forward·시간정렬. OpenDrift 미사용(자체 계산)GPS 라그랑주(상세 미공개)1시간·store-and-forward·FF-ID 스키마·QC 오픈
회수❌ 미회수(1-1호 9시간 뒤 송신중단)❌ 미회수(추정)✅ 회수-우선(전량 회수)
개방❌ 원가·하우징·밸러스트 미공개❌ 유료 논문✅ 도면·코드·데이터 전면 공개
배울 점 — 제주의 store-and-forward·조석 동기 방류·windage 보정은 우리가 이미 채택했고(제주 α값을 우리 출발값으로 사용), 한강의 결과("쓰레기가 하구에 오래 남는다")는 우리의 하천·회수형 초점이 옳다는 실증입니다(대부분 하구에 있으니 회수 가능).
반면교사 — 두 연구 모두 ① 장치를 회수하지 않았고(연구라 손실을 감수 — 우리가 그러면 곧 오염) ② 기기 설계를 공개하지 않아 시민이 재현할 수 없습니다. 우리의 두 차별점(회수-우선 + 전면 개방)이 바로 이 두 공백을 메웁니다. 또 제주의 다중망(NB-IoT/LTE-M)은 연구팀의 통신사 지원 덕에 됐을 여지가 큽니다 — 일반 유심으로는 국내 접속이 불확실해 우리가 Cat.1을 택한 이유입니다.

11.애플리케이션 — 시민이 만나는 화면

화면누가 쓰나하는 일
실시간 표류 지도모두지금 떠 있는 장치들의 궤적을 지도에서 봅니다
참여자 앱(마이 플로티)시민·학생휴대폰만으로 추적 참여·쓰레기 기록(개인정보 없이 팀 코드로만)
3D 조립 뷰어·재단 템플릿만드는 사람브라우저에서 장치를 돌려보고 분해해 보고, 폼 본을 인쇄합니다
여정 게임(개념 검증됨)커뮤니티표류가 며칠 걸리는 특성을 살려, 한 장치의 여정을 여럿이 함께 따라가고 회수 미션으로 끝맺는다 — 100% 회수를 문화로 만드는 장치

철학은 한 줄입니다: 회수까지가 게임의 완성. 재미가 규범(전량 회수)을 지키게 만듭니다.

12.FMEA — 고장을 미리 표로 관리하기

FMEA17는 "무엇이, 왜 고장 나고, 그러면 어떻게 되며, 우리는 그걸 어떻게 미리 알아채고 막는가"를 표 하나로 관리하는 제조업의 표준 기법입니다. 저희는 신뢰성 문서에서 고장 모드 7가지(F1~F7)를 이미 도출했으므로, 이를 FMEA 형식으로 정리하면 아래와 같습니다. 점수는 1~5이며, 심각도와 빈도가 높고 시험으로 잡기 어려운 모드부터 우선 관리합니다. 빈도는 현장 실측 전 추정치이며 벤치와 파일럿 기록으로 갱신합니다.

모드고장원인결과심각빈도검출(어느 시험이 잡나)대책
F1밀봉 누수 → 침수실리콘 노화·체결 불량침몰 위험53T1 소크, T2 침수부양폼 160cm³(침수해도 뜸) + 재밀봉
F2배터리 과열·벤팅직사광 밀폐 가압파열·화재(최악)53↑조립 전 예방 검사(차광·통기)차광, 통기 경로, 보호셀, 단기 운용 (여름 방류 시기라 빈도 상향)
F3생물 부착장기 계류무게 증가·부력 잠식22회수 시 육안단기 회수 원칙
F4내부 결로주야 온도차전자부 오작동33T1 후 내부 확인실리카겔, 통기
F5동결 팽창겨울 결빙밀봉 균열31(계절)저온 노출 후 T1 소크 재시험결빙기 방류 회피(예방)
F6전복 → 안테나 수몰무게중심 높음통신 두절43T4 자기복원킬 40g 저중심, 폼 상부 배치
F7자외선 열화장기 노출병·폼 취화22재사용 검수회수-우선, 로트 재검수
F8*통신 음영 데이터 유실다리 밑·협곡궤적 구멍34G3 수첩 시험store-and-forward 버퍼(v1.1 구현 · G3 벤치 검증 대기) — 수첩 16칸 한계·완전 방전 시 소실, 일련번호 빈틈으로 서버가 결측을 인지
F9*회수 실패유속·접근 불가환경 투기가 됨52정산 로그(유실 수)·회수 마감 초과방류 전 A/B/C 판정(예방), 회수 없으면 방류 금지, QR 시민 제보
F10*습득·도난(사람이 주워감)도시 하천 특성장치·데이터 유실43궤적이 물길을 벗어나 육지로 이동QR "주우신 분 연락 주세요" 보상 안내 — 습득을 회수의 한 형태로 전환

* F8 및 F9는 기구 고장이 아니라 운영 고장이지만 같은 표에서 관리하는 것이 실용적이라 추가했습니다.

FMEA의 향후 활용 — 살아 있는 문서로

이 표의 "빈도" 열은 지금 전부 추정입니다. 벤치와 파일럿에서 실제로 일어난 고장을 이 표에 기록해 빈도를 실측치로 바꾸는 것이 FMEA 운용의 핵심이며, 위험도 순위가 바뀌면 시험(T1~T6)의 강도와 설계 개선의 우선순위가 따라 바뀝니다. 또한 이 표 자체를 공개 저장소에 두면, 전 세계 DIY 제작자가 자기 지역의 고장 사례(예: 열대 하천의 생물 부착)를 보태는 공동 신뢰성 데이터베이스로 자랍니다 — 오픈소스 하드웨어에서 FMEA를 공개하는 것 자체가 드물어, 차별점이 됩니다.

13.성능 개선 로드맵 (측정 → 개선의 순서)

순번측정할 것알게 되는 것개선으로 이어지는 길
1잠자는 동안의 전류(벤치)배터리 수명의 지배 변수전송 주기 최적화 — 문서 추정치는 60분 주기 기준 약 6~19일, 운영 기본값 30분 주기는 같은 계산식 내삽으로 약 5~12일(전부 추정, 벤치 실측으로 확정. 냉수에서는 더 짧아짐)
2분리형 vs 일체형 GPS의 수신 품질(HDOP)GPS 배치가 성능에 주는 이득이득이 크면 "상단 분리 배치"를 공식 업그레이드 경로로
3실제 병·부품 무게(저울)부력 계산의 추정치 제거폼 크기·무게추 미세 조정
4파일럿 궤적으로 windage 계수우리 병의 물리 성질(전이 자산)OpenDrift 보정 → 수거 우선순위 정밀화 → 보정계수 커먼즈에 공개
5회수율·고장 사례FMEA 빈도의 실측화설계 개정판(v2)의 근거

14.전체 통합 지도 — 무엇이 무엇과 맞물리는가

이 프로젝트는 장치 하나가 아니라 여섯 층이 맞물린 시스템입니다. 각 층은 이미 만들어져 있고, 남은 것은 실물 검증뿐입니다.

층구성물상태
① 하드웨어보드 + 3D 부품 + 폼 + 병 (실치수 3D 조립 공개)설계 완료 · 실물 대기
② 펌웨어v1.1 (수첩 방식, 검증 리뷰 완료)벤치 대기
③ 서버·데이터 규격수신 서버 v1.1 + FF-ID 스키마 (모의 검증 완료)가동 준비 완료
④ 분석·지능품질검사 → 물리보정 → 핫스팟 (10장)파일럿 데이터 대기
⑤ 시민 층지도·앱·게임·재단 템플릿·조립 가이드공개 운영 중
⑥ 개방·확산 층GitHub 저장소(라이선스 3종), DIY 다양성 규칙, 회수 규범, ChangeX 지원공개 운영 중

흐름으로 읽으면: 시민이 ⑤의 가이드로 ①을 만들고, ②가 ③으로 보고하며, ④가 수거 지점을 찾고, 그 전 과정이 ⑥으로 세계에 복제됩니다. ChangeX 심사위원이 어느 링크를 눌러도 이 여섯 층 중 하나에 닿도록 세부 링크를 배선했습니다.

15.현재 구멍·리스크 — 검수 결과 (정직 목록)

거꾸로 짚어보실 수 있도록, 지금 시점에 비어 있는 곳을 숨김없이 적습니다.

#구멍메워지는 시점·방법
1실물 검증이 0건 — 모든 수치가 계산·추정선발대 도착 → 벤치 G0~G4 → 수조 T1~T6
2G1 전제 미확정 — GPS가 모뎀 없이 혼자 켜지는지는 회로 확인이 안 됨선발대 1호기 첫 시험이 바로 이것. 실패 시 펌웨어 순서 수정(방법 준비됨)
3전력 수치가 넓은 추정(6~19일)벤치에서 전류 실측 후 문서 갱신
4병 규격·부품 무게가 도면 기본값실물 도착 후 실측 → 파라미터 갱신 → 폼 재계산
5전파 면제확인 미신청 (방류 전 필수)1기 벤치 접속시험은 유심으로 가능. 방류는 수량과 관계없이 발급 뒤
6부산 방류지 현장 미확인 (부유쓰레기 실존 확인)파일럿 1~10일차 현장 답사 항목
7운영 서버(openc)의 v1.1 수신부 이식벤치는 로컬 서버로 충분. 운영 전환 시 Next.js API에 반영
8ChangeX 가림본 폴더(구글 드라이브) 미생성대표 액션 — 예산·협의기록 가림본 업로드
9배터리 잔량 표시가 분압 보정 전(추정치)벤치에서 실전압과 대조·보정
10FMEA 빈도 열이 전부 추정파일럿 고장 기록으로 실측화(12장)
11★ChangeX 지원서 최종 제출제출을 마쳤습니다(2026-08-17). 심사 결과는 2026-09-28 에 나옵니다
12자원봉사자 상해보험·안전 교육 체계 미확정파일럿 전 보험 가입 확인, 방류 브리핑에 안전 항목 포함(9장)
13학교 워크숍의 미성년 보호 절차(보호자 동의·인솔) 미작성워크숍 확정 전 동의서 양식 작성
14QR 라벨 연락처 정책 미정 — 개인 번호 노출 금지, 법인 대표번호 또는 전용 폼으로라벨 인쇄 전 결정
153D 프린트 출력 경로 미확정(자체 프린터 vs 출력소)조립 주간 전에 확정합니다. 벤치 작업에는 필요하지 않습니다. 무프린트 조립법(4-3장)이 있어 프린터 없이도 진행 가능
16위치정보법 검토 기록이 없습니다. 기기 위치에 해당하여 개인위치정보가 아닐 가능성이 높으나 확인 문서를 작성할 필요가 있습니다파일럿 전 한 쪽짜리 검토 메모
역검수로 즉시 해결된 사례 — "18650 충전기"와 "USB 데이터 케이블"이 어느 목록에도 없던 것을 이번 검수에서 발견, 3장 조달표에 바로 추가했습니다. 회수-재충전 운영 모델의 필수 장비가 빠져 있던 셈입니다. 이 문서가 살아있는 검수 도구로 작동한다는 증거로 남깁니다.

16.용어 풀이 (본문 어깨번호)

1. LTE (Cat.1)
휴대전화가 쓰는 4G 통신망입니다. 우리 장치는 이 망에 붙는 작은 "휴대전화"인 셈이라, 별도 기지국이나 위성이 필요 없습니다. Cat.1은 사물기기용 등급을 뜻합니다.
2. BOM (Bill of Materials)
부품 목록표입니다. 무엇을 몇 개, 어떤 사양으로 사야 하는지 정리한 장보기 목록입니다.
3. 18650 배터리
손가락 굵기의 원통형 충전지이며 지름 18mm와 길이 65mm에서 이름이 유래했습니다. "보호회로"는 과충전과 과전류를 막는 안전장치입니다.
4. 폐쇄셀 폼 / EVA
기포가 서로 막혀 있어 물을 빨아들이지 않는 스펀지입니다. 슬리퍼나 요가매트 재질이 대표적입니다. 반대로 기포가 뚫려 있는 "개방셀"은 설거지 스펀지처럼 물을 흡수하므로 부력재로 쓸 수 없습니다.
5. 인필(infill)
3D 프린트에서 부품 속을 몇 %나 채울지 정하는 설정입니다. 100%면 꽉 찬 덩어리이고, 60%면 벌집처럼 속이 성기게 채워져 가볍습니다.
6. ESP32
손톱만 한 저가 컴퓨터 칩입니다. 우리 장치의 두뇌로, 깨어나기, GPS 읽기, 전송 순서를 지휘합니다.
7. GPS / GNSS
하늘의 항법위성 신호를 받아 자기 위치를 계산하는 수신기. 우리 장치의 위치 수신 칩 이름은 L76K입니다. (위성 "수신"은 무료이며, 위성으로 데이터를 "송신"하는 것과는 다릅니다 — 우리는 송신을 LTE로 합니다.)
8. APN
유심이 데이터망에 접속할 때 대는 통신사별 접속 주소입니다. 유심 개통 안내문에 적혀 있는 값을 그대로 적으면 됩니다.
9. 펌웨어
기계 안에 심는 프로그램입니다. 세탁기의 코스 버튼처럼, 장치가 어떤 순서로 행동할지를 정해 둔 규칙입니다.
10. store-and-forward (수첩 방식)
통신이 안 될 때 기록을 저장해 두었다가, 통신이 되는 순간 몰아서 보내는 방식입니다. 우체통이 없는 구간에서는 편지를 가방에 모아 두는 것과 같습니다.
11. Arduino IDE
펌웨어를 작성해 보드에 "굽는(업로드하는)" 무료 프로그램. USB 케이블로 연결해 버튼 하나로 굽습니다.
12. 4σ(시그마) 속도 검사
연속된 두 위치 사이의 속도가 통계적으로 있을 수 없는 값(평균에서 4표준편차 초과)이면 오류로 표시하는 검사. GPS가 가끔 내는 "순간이동" 오류를 걸러냅니다.
13. OpenDrift
노르웨이 기상청이 공개한 해양 표류 시뮬레이터입니다. 해류와 바람 자료를 넣으면 물체가 어디로 흘러갈지 물리 법칙으로 계산합니다. 우리는 이 계산을 실측 궤적으로 보정합니다.
14. windage (풍압 계수)
물에 뜬 물체가 바람에 얼마나 밀리는지 나타내는 비율입니다. 물 위로 많이 나온 물체일수록 큽니다. 물체의 고유 성질이라 강이 달라져도 값이 유지되므로 "이전 가능한 과학 자산"입니다.
15. DBSCAN
점들이 빽빽하게 모인 곳을 자동으로 묶어 주는 군집화 알고리즘입니다. 궤적들이 반복해서 멈추는 지점, 즉 쓰레기가 쌓이는 지점을 찾는 데 씁니다.
16. HDOP
GPS 수신 품질 점수로 낮을수록 좋습니다. 하늘이 넓게 보이면 1~2이며, 건물이나 다리 밑에서는 수치가 커집니다. 우리 데이터 형식은 이 값을 매 기록에 함께 저장합니다.
17. FMEA (고장모드 영향 분석)
Failure Mode and Effects Analysis. 자동차·항공 산업의 표준 기법으로, "무엇이 고장 나면 → 왜 → 얼마나 심각한가 → 어떻게 미리 잡나"를 표로 관리합니다. 점수는 심각도(크게 다칠수록↑)·빈도(자주 일어날수록↑)·검출력(시험으로 잘 잡힐수록↑)이며, 위험도 = 심각도×빈도÷검출력. 12장 참조.
18. 내부 주소와 NAT
공유기 안의 컴퓨터는 "192.168.…"처럼 집 안에서만 통하는 내부 주소를 씁니다. 통신사 망을 포함한 바깥 인터넷에서는 이 주소로 찾아올 수 없습니다. 그래서 밖에 있는 장치가 접속하려면 중계 도구 ngrok이나 공유기 포트포워딩 설정으로 바깥에서 보이는 주소를 만들어 주어야 합니다.
19. TinyGSM (통신 통역 라이브러리)
우리 기기의 두뇌(ESP32)가 통신 모뎀에게 말을 거는 통역기입니다. 모뎀은 "AT 명령"이라는 옛날 모뎀 언어만 알아듣습니다(예: 전화 걸기 = "ATD…"). TinyGSM이 "접속해 / 보내"라는 쉬운 코드를 그 언어로 바꿔 주므로, 우리는 복잡한 모뎀 말을 직접 쓰지 않아도 됩니다. "포크(fork)"는 남의 공개 프로그램을 복사해 고친 판입니다 — 원본 TinyGSM은 우리 모뎀(A7670)의 방언을 모르기 때문에, 그 방언을 배운 lewisxhe라는 개발자의 포크를 씁니다. (이것이 저희가 유일하게 특정인 관리 라이브러리에 기대는 지점인데, 펌웨어는 "껍질"이라 누구든 다른 라이브러리로 다시 써도 시스템에 그대로 붙습니다 — 14장·의존성 문서 참조.)
사단법인 이타서울 / GAA · Friendly Floaty (SEA:CUT) · 본 문서의 기술 내용은 공개 저장소(github.com/Itaseoul/seacut)의 각 문서를 근거로 하며, 문서 간 수치가 다르면 저장소가 정본입니다. 라이선스: 문서 CC BY-SA 4.0 · 하드웨어 CERN-OHL-S v2 · 펌웨어 MIT.
정직 원칙: 셀룰러(위성 아님) · 물리 모델 보정(학습 AI 예측 아님) · 회수-우선(count-in = count-out) · 실측 전 수치는 전부 추정 표기.