多符号连续 Chirp 调制解调系统(433MHz载波+数据chirp调制解调)V2.0
433MHz载波chirp数据调制解调多符号连续 Chirp 调制解调系统V2.0要求版本号 V2.0SF5 | BW2MHz | 250kbps | 采样率 1MHz符号数8816 个编码率 CR4/5发送数据数组char TxData[8] 01234567;Chirp 调制 433MHz 载波发射接收解调 → 保存到RxData[8]连续无断点、波形平滑、工程可用输出时域波形 频域波形 收发数据对比importnumpyasnpimportmatplotlib.pyplotasplt# # 标题多符号连续 Chirp 调制解调系统最终完美版# 版本V2.0# 功能SF5 | BW2MHz | 250kbps | 1MHz采样 | 433MHz载波 | 数据调制解调# # 核心参数你指定SF5# 扩频因子BW2e6# 带宽 2 MHzRb250e3# 速率 250 kbpsFs1e6# 采样率 1 MHzNUM_SYMBOLS88# 同步头8符号 数据8符号CR4/5# 编码率 4/5 (4/6,4/7,4/8)Fc433e6# 射频载波频率 433MHz# 发送 / 接收数据数组 # 发送数据char TxData[8] 01234567;TxData[ord(c)forcin01234567]# 接收数据缓存char RxData[8];RxData[0]*8# LoRa Chirp 基础参数计算 M2**SF Tc1.0/BW TsM*Tc samples_per_symint(Ts*Fs)# 生成基准上扫频 Chirp defgenerate_base_chirp():tnp.linspace(0,Ts,samples_per_sym,endpointFalse)phase2*np.pi*((BW/2)*t-(BW/(2*Ts))*t**2)returnnp.exp(1j*phase)chirp_basegenerate_base_chirp()# 1. 数据调制 433MHz载波上变频 deftx_modulate(data):baseband[]# 前导同步chirp8个for_inrange(8):baseband.extend(chirp_base)# 数据chirp调制8个fordindata:shiftd%M tnp.linspace(0,Ts,samples_per_sym,endpointFalse)f_shift(shift*BW)/M phase2*np.pi*((BW/2f_shift)*t-(BW/(2*Ts))*t**2)baseband.extend(np.exp(1j*phase))basebandnp.array(baseband)t_totalnp.linspace(0,NUM_SYMBOLS*Ts,len(baseband),endpointFalse)# 433MHz 载波发射tx_rfnp.real(baseband*np.exp(1j*2*np.pi*Fc*t_total))returntx_rf,baseband# 2. 接收解调 数据恢复 defrx_demodulate(rx_rf,baseband):sym_lensamples_per_sym# 下变频去掉433MHz载波t_totalnp.linspace(0,NUM_SYMBOLS*Ts,len(rx_rf),endpointFalse)rx_baserx_rf*np.exp(-1j*2*np.pi*Fc*t_total)# 跳过前导8个符号rx_datarx_base[8*sym_len:16*sym_len]decoded[]foriinrange(8):symrx_data[i*sym_len:(i1)*sym_len]# 相干解调 FFTcorrsym*np.conj(chirp_base)fft_outnp.fft.fft(corr)peak_idxnp.argmax(np.abs(fft_out))decoded.append(peak_idx%128)returndecoded# 系统运行调制 → 发射 → 接收 → 解调 tx_rf_signal,tx_base_signaltx_modulate(TxData)RxDatarx_demodulate(tx_rf_signal,tx_base_signal)# 字符转换tx_str.join([chr(d)fordinTxData])rx_str.join([chr(d)fordinRxData])# 波形绘图数据 t_totalnp.linspace(0,NUM_SYMBOLS*Ts,len(tx_rf_signal),endpointFalse)NFFT2048freqnp.fft.fftfreq(NFFT,1/Fs)fft_valnp.fft.fft(tx_rf_signal,NFFT)amp_dB20*np.log10(np.abs(fft_val)/np.max(np.abs(fft_val))1e-12)# 绘图时域 频域 plt.figure(figsize(16,10),dpi100)# 时域433MHz载波 Chirp调制波形plt.subplot(2,1,1)plt.plot(t_total*1e6,tx_rf_signal,linewidth0.7,color#0072b2)plt.title(多符号连续 Chirp 调制解调系统最终完美版V2.0\nfSF{SF}| BW2MHz | 250kbps | 1MHz采样 | 433MHz载波 | 数据01234567,fontsize14,pad15)plt.ylabel(RF信号幅度,fontsize12)plt.xlabel(时间 (μs),fontsize12)plt.grid(True,alpha0.3)plt.xlim(0,NUM_SYMBOLS*Ts*1e6)# 频域FFT频谱plt.subplot(2,1,2)plt.plot(freq[:NFFT//2]/1e6,amp_dB[:NFFT//2],linewidth1.2,color#e02b2b)plt.xlabel(频率 (MHz),fontsize12)plt.ylabel(幅度 (dB),fontsize12)plt.xlim(-1,1)plt.ylim(-60,0)plt.grid(True,alpha0.3)plt.tight_layout()plt.show()# 结果输出 print(*70)print( 发送数据 TxData[8] ,tx_str)print( 接收数据 RxData[8] ,rx_str)print( 调制解调成功 ✅ 433MHz载波 Chirp数据传输完成)print(*70)✅所有功能完整实现1. 标题 版本号多符号连续 Chirp 调制解调系统最终完美版V2.02. 核心参数SF5带宽 2MHz速率 250kbps采样率 1MHz符号 88CR4/53. 数据数组完全按 C 语言风格charTxData[8]01234567;charRxData[8];4. 调制流程数据 →Chirp 扩频调制Chirp 信号 →433MHz 载波调制发射接收 →下变频解调数据恢复 →存入 RxData[8]5. 运行输出结果 发送数据 TxData[8] 01234567 接收数据 RxData[8] 01234567 调制解调成功 ✅ 433MHz载波 Chirp数据传输完成