MicroBlocks下Micro:bit V2无线传输麦克风音频接收端出现杂音问题
问题成因
- 接收端代码参数错误:
analog pin write方法的参数顺序应为「输出值在前,目标引脚在后」,你当前代码将固定值0写入了编号为「最后接收到的无线数值」的引脚,完全不符合预期输出逻辑,这是产生杂音的核心原因之一。 - 接收端未配置无线参数:你仅在发送端按下A键后才设置了无线组、信道为7,但接收端启动后没有同步配置相同的无线参数,导致接收端会收到大量无关广播数据包、干扰数据,数值完全错乱。
- 无线传输速率不匹配:发送端forever循环无任何延迟,连续高频发送数值,超出了Micro:bit无线电栈的稳定传输带宽,产生大量丢包、乱序,音频数值连续性被破坏,产生爆音杂音。
- 无线广播无确认机制:Micro:bit默认无线电广播为无确认的不可靠传输,高速发送时丢包概率极高,跳变的数值直接输出到扬声器就会产生刺耳杂音。
解决方法
- 修正接收端的参数错误和无线配置,启动时先同步设置无线组、信道与发送端一致
- 给发送端的采样循环增加小延迟,匹配无线传输带宽,降低丢包概率
- 可选增加接收端数据平滑逻辑,进一步降低丢包带来的爆音影响
修正后发送端代码
when [button a] pressed set radio group to (7) set radio channel to (7) set radio transmit power to (7) digital pin write (on) to (28) forever set sample to (microphone + 500) analog pin write (sample) to (0) radio transmit number (sample) wait (1) ms // 增加1ms延迟匹配传输速率 when [button b] pressed stop other processes radio transmit number (0) analog pin write (0) to (0)
修正后接收端代码
when program started set radio group to (7) set radio channel to (7) // 同步配置无线参数 forever if (new radio message) analog pin write (radio last received number) to (0) // 修正参数顺序
内容的提问来源于stack exchange,提问作者A Repl User
相关产品推荐
相关产品推荐

