# Princeton 24bit RAW SubGHz File Generator for Flipper Zero

frequency = 310000000  # 310.00 MHz
preset = "FuriHalSubGhzPreset2FSKDev238K"  # FM 변조 방식 (이미지의 AM/FM 설정에 맞춰 조정 가능)
te = 500  # TE 값: 500us
repeats_per_key = 3  # Key당 3회 반복

# 시작 Key 값 설정 (예시: 0x00C6A7E2부터 100개 증가)
start_key = 0x00C6A7E2  

def key_to_raw_samples(key_int, te_us):
    # Princeton 24bit Protocol Timing
    # Bit '0': HIGH 1*TE, LOW 3*TE
    # Bit '1': HIGH 3*TE, LOW 1*TE
    # Sync Bit: HIGH 1*TE, LOW 31*TE
    
    samples = []
    
    # 24bit 데이터 변환
    for i in range(23, -1, -1):
        bit = (key_int >> i) & 1
        if bit == 1:
            samples.extend([3 * te_us, -1 * te_us])
        else:
            samples.extend([1 * te_us, -3 * te_us])
            
    # Sync pulse (Pilot)
    samples.extend([1 * te_us, -31 * te_us])
    return samples

# 100개 Key에 대한 RAW 데이터 생성
all_raw_samples = []

for k in range(100):
    current_key = start_key + k
    # 각 Key당 3회 반복 전송
    for _ in range(repeats_per_key):
        all_raw_samples.extend(key_to_raw_samples(current_key, te))

# RAW 데이터를 플리퍼 제로 서식에 맞춰 줄바꿈 처리
raw_lines = []
chunk_size = 512
for i in range(0, len(all_raw_samples), chunk_size):
    chunk = all_raw_samples[i:i + chunk_size]
    raw_lines.append("RAW_Data: " + " ".join(map(str, chunk)))

# .sub 파일 작성
file_content = f"""Filetype: Flipper SubGhz RAW File
Version: 1
Frequency: {frequency}
Preset: {preset}
Protocol: RAW
""" + "\n".join(raw_lines)

with open("princeton_100keys.sub", "w") as f:
    f.write(file_content)

print("princeton_100keys.sub 파일이 성공적으로 생성되었습니다.")

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: