Categories: 工作・開発

ラズパイ5のピン1本がFMステレオ送信機に、ソフト「txengine」公開

ラズパイのGPIOピン1本から、FMラジオで受信できるステレオ放送の電波を出すソフトウェア「txengine」が、GitHubで公開された。同ソフトはRaspberry Pi 5と、マイコンボードのRaspberry Pi Pico/Pico 2でも動く。作ったのはJosef Miegl氏で、同氏が以前公開したラズパイ用FM送信ソフト「PiFmAdv」を一から書き直した。

ラズパイのチップには、内部で使うクロック信号を作るPLLという回路がある。txengineは、このPLLの周波数を音声に合わせて細かく変え、その信号をピンから出すことでFMの電波にする。局名や曲名などの文字情報を電波に乗せる規格「RDS」にも対応している。

旧作のPiFmAdvは、Pi 5に対応していなかった。txengineは、Pi 5では周辺チップ「RP1」の音声用か映像用のPLLを変調する。Miegl氏は、Pi 5、Pi 2(v1.1)、Zero 2 W、Pico、Pico 2で、実際に電波を受信して動作を確かめたとしている。Pi 3と4は対応しているものの、実機では未試験だ。

Pi 2やZero 2 Wでは、PLLの選び方に工夫がある。Miegl氏は、SDカードやWi-Fiのクロック元になるPLLについて、周波数を動かす幅を±3%に抑えた。一方、GPUの映像と3D描画のブロックだけにクロックを送るPLLは送信中は使われないため、最大15%まで下げてよいとした。これで87.5〜108MHzのFM帯全体に届く。

PicoとPico 2のPLLは、周波数を決める設定値に整数しか使えない。そこでtxengineのファームウェアは、隣り合う2つの設定値を毎秒300万回切り替えて、その中間の周波数を作る。PicoをUSBでつなげば、ラズパイ以外のLinuxパソコンからも送信できる。

基板の水晶の周波数は数〜数十ppm(ppmは100万分の1)ずれており、温度でも変わる。旧作では、利用者が自分で誤差を測って指定する必要があった。txengineは送信しながら、ネットワークから得た時刻やGPSと比べて誤差を測り、自動で補正する。

ライセンスはGPL-3.0-or-laterで、ビルドにCのコンパイラーは要らない。READMEは、免許なしの送信は多くの国で違法だと警告し、出力が高調波を多く含む矩形波だとして、受信機とはシールド線と減衰器を挟んでつなぐか、電波を出さない負荷(ダミーロード)につなぐよう求めている。日本国内で送信する場合は、電波法の確認が必要だ。

関連情報

¥19,200 (2026/10/11 11:04時点 | Amazon調べ)
FabScene編集部

FabScene編集部