4상균형3진(벡터형) 통신 발신/수신 — +0/-0 소거 FEC (LoRa/WiFi)
개요
+0(양의 영)과 -0(음의 영)을 적용한 벡터형 4상균형3진 통신 프로토콜을 순수 한선씨로 구현.
WiFi(UDP)에서는 3사본 다수결 소거정정으로
가장자리 저품질 링크에서도 복원(원거리 효과),
LoRa에서는 15바이트 긴급비콘으로
SF12 최장거리 모드 여유 투과. 개발도상국 통신 포맷·
구급/긴급 지원 도구의 엔진 계층 완성.
핵심 설계 — +0/-0의 역할
| 상 | 값 | 심볼(2비트) | 의미 |
|---|
| T | +1 | 3 (11) | 데이터 참 |
| P | +0 | 2 (10) | 확정된 영 — 송신 데이터의 0 |
| N | -0 | 0 (00) | 소거(erasure) — 불확실 표식, FEC 기권표 |
| A | -1 | 1 (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 함정 (메모리+가드레일 템플릿 갱신 완료)
%는 균형 나머지 — 큰 모듈러스도 발동(195%243=-48, 60%16=-4) → 양수나머지 헬퍼 필수
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).