# 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 파일이 성공적으로 생성되었습니다.")
To embed this project on your website, copy the following code and paste it into your website's HTML: