キノコの自省録

日々適当クリエイト

RaspberryPi ZeroでGPIOを使って音声出力するお話

RaspberryPi Zero(W)は3.5φジャックがないので、音声出力はHDMIかGPIOを利用して頑張るしかありません。GPIOを使って音声出力するお話は、既にいくつかの方々がまとめられています。

Raspberry Pi Zero のGPIOを利用した音声出力 – Roguer

https://learn.adafruit.com/adding-basic-audio-ouput-to-raspberry-pi-zero/pi-zero-pwm-audio

が、外部ソースについて説明がなかったりリンク切れしてたりしたので、ちょっと補足しておきます。

最も簡単な方法

dtoverlayを使用します。/boot/config.txtに、以下を追加します。ちなみに/boot/config.txtは、ラズパイSDをPCに挿すと見えます。

# GPIO18とGPIO13の組み合わせ
dtoverlay=pwm-2chan,pin=18,func=2,pin2=13,func2=4

あるいは、

# GPIO12とGPIO13の組み合わせ
dtoverlay=pwm-2chan,pin=12,func=4,pin2=13,func2=4
既にdtoverlayが別に定義されている場合はどうすればいいの?

ただ下に書き足してください。こんな感じで。

dtoverlay=dwc2
dtoverlay=pwm-2chan,pin=18,func=2,pin2=13,func2=4

gpio_altを利用して実行時に書き換える方法

WiringPiとgpio_altを使ってPWMが利用可能になるよう動的に変更します。詳しい手順は冒頭のリンク先を参照してください。下記はWiringPiとgpio_altのインストール方法補足です。

WiringPi

drogon氏のプロジェクトの1つです。Adafruitのページではtar.gzをbootの下に入れようみたいな説明を書いていますが、普通にgit cloneしても構わないと思います。

Drogon Projects | Git

このページのトップに書いてある通り、git clone git://git.drogon.net/ + project name.なので、

git clone git://git.drogon.net/wiringPi

でcloneできます。tar.gzで欲しい場合はsnapshotをクリックするとダウンロードできます。

2018. 2. 28追記

wiring-piは、apt-getでもインストールできるようです。

$ sudo apt-get install wiringpi

gpio_alt

konsuktaner氏のプロジェクトの1つです。githubに置いてあります。

GitHub - konsultaner/word-clock-raspberry-pi-zero-neopixels: This is a project to construct and build a word clock using a raspberry pi zero and the adafruid neopixels.

README.mdに書いてある通り、gccでビルドすると、gpio_altのバイナリが生成できます。WiringPiについても書いてあるので、実はここを紹介すれば終わりとも言えなくもない。

gccを利用するので、動かない場合はsudo apt-get install build-essentialを実行しましょう。

何をしてるのかの解説

ちょっとした解説を書きました。PWMとALTの話です。

RaspberryPi ZeroでGPIOを使って音声出力をするお話(2) - キノコの自省録