← 목록
기타 2026-07-03 5KB 읽기 4분

4상균형3진(벡터형) 통신 발신/수신 — +0/-0 소거 FEC (LoRa/WiFi)

개요

+0(양의 영)과 -0(음의 영)을 적용한 벡터형 4상균형3진 통신 프로토콜을 순수 한선씨로 구현. WiFi(UDP)에서는 3사본 다수결 소거정정으로 가장자리 저품질 링크에서도 복원(원거리 효과), LoRa에서는 15바이트 긴급비콘으로 SF12 최장거리 모드 여유 투과. 개발도상국 통신 포맷· 구급/긴급 지원 도구의 엔진 계층 완성.

핵심 설계 — +0/-0의 역할

심볼(2비트)의미
T+13 (11)데이터 참
P+02 (10)확정된 영 — 송신 데이터의 0
N-00 (00)소거(erasure) — 불확실 표식, FEC 기권표
A-11 (01)데이터 거짓
U구분자프레임 프리앰블 0xA5 0x3C 로 물리화
+0/-0은 값이 같은 0이지만 확신도가 다르다. 수신/중계가 손상 심볼을 -0으로 표시하면 다수결에서 기권표가 되어 깨끗한 사본의 표만 반영 → 소거정정 > 오류정정. 3사본 중 2사본만 살아도 복원(실측: 사본 1개 완전 유실 + 30% 소거 주입에도 체크섬 무결).

프레임 (packed bytes — UDP/LoRa UART 공용)

[A5][3C][버전<<4|타입][시퀀스][사본0-2][심볼수H][심볼수L][페이로드 4심볼/바이트...][체크섬 mod243]
타입: 1=텍스트 2=긴급비콘 3=ACK · 텍스트=바이트당 균형3진 6트릿
긴급비콘 27트릿=1큐브: 유형3+위도9(±90.00°)+경도10(±180.00°)+인원4+예비1 → 프레임 15바이트

산출물 (전부 컴파일+실행 검증)

파일내용
/Users/ef/CrownyOS/crownyc/libs/4상통신.한선코어 라이브러리: 균형3진 인코딩·2비트 심볼 패킹·프레임·체크섬243·다수결 FEC(-0 기권)·소거주입 시뮬·LoRa 헥사·긴급비콘
libs/4상통신.rpn.한선RPN 변환본 (헌법 준수, high2rpn.sh)
apps/4상통신/4상발신.한선TX: 텍스트→3사본 UDP + LoRa헥사 출력. 설정 /tmp/4상통신_{메시지,대상,잡음}.txt
apps/4상통신/4상수신.한선RX: 0.0.0.0:9660 대기→다수결 복원→체크섬 판정→/tmp/4상수신로그.txt
apps/4상통신/긴급비콘.한선SOS 비콘 TX (유형 8종: SOS/의료/화재/침수/지진/조난/식수/식량)

검증 결과 (2026-07-03 실측)

  • 라이브러리 단위검증 13/13 통과 (왕복·체크섬·FEC·유실·헥사·비콘)
  • E2E UDP 루프백 3종: ①무손상 312트릿 무결 ②사본0·1에 30% 소거 주입 → 완전 복원·무결 ③비콘(의료·37.57N·126.98E·5명) 필드 정확 복원
  • 긴급비콘 프레임 15바이트 = LoRa SF12(51바이트 한도) 여유. 헥사 예: A53C120100001B7BEF976DF675EA16

실행

bashcd /Users/ef/CrownyOS/crownyc
./crownyc run apps/4상통신/4상수신.toau &          # 수신 대기 :9660
echo -n "메시지" > /tmp/4상통신_메시지.txt
./crownyc run apps/4상통신/4상발신.toau            # 3사본 발신
echo -n "2 3757 12698 5" > /tmp/4상비콘.txt
./crownyc run apps/4상통신/긴급비콘.toau           # SOS 비콘

크라우니 플랫폼 연동

  • 크라우니메신저: 수신 로그를 릴레이 — tail -f /tmp/4상수신로그.txt | while read l; do ~/.claude/scripts/크라우니메신저연동.sh "4상통신" "$l"; done
  • 포트 레지스트리: 4상통신 → :9660 등록 완료 (gateway.yaml SSOT)
  • LoRa 하드웨어: 버퍼헥사(프레임) 출력을 E22/RAK 계열 UART AT 모듈에 그대로 투입. 수신측은 헥사버퍼() 역변환

발견한 VM 함정 (메모리+가드레일 템플릿 갱신 완료)

  1. %는 균형 나머지 — 큰 모듈러스도 발동(195%243=-48, 60%16=-4) → 양수나머지 헬퍼 필수
  2. UDP수신(op385)은 스택 3값 푸시로 고수준 대입 오염 → UDP버퍼수신+UDP최근발신자 사용

잔여 이슈 / 다음 단계

  • 크라우니브라우저 데모 페이지(발신폼+수신 실시간 표시) — game.crowny.org 스타일 서비스화 후보
  • RX 수신 타임아웃(소켓옵션) — 현재 3프레임 블로킹, 실손실 환경은 타임아웃+부분복원 필요
  • 실 LoRa 모듈(E22-900T22D 등) UART 왕복 실측, WiFi 브로드캐스트(255.255.255.255) 다중 수신 실측
  • 인터리빙(버스트 오류 분산)·가변 사본수(2~5) 협상
  • 메시지 680바이트 초과 시 멀티프레임 분할(배열 4095 한도)

비중

패턴DB 직접매칭 2건(UDP 소켓 관용·포함=인덱스), 클로드 생성 5건 → 전부 학습DB 등록(다음부터 lookup HIT).