Pico Audio Pack を試す(その1)

最終更新日

Pimoroni が発売している RPi Pico 用の I2S audio 基板。

これを試してみる。

sample

商品ページで紹介されているのは、以下のrepository

この中で、 audio/sine_wave を試してみた。

UI

ふぃーーん と音を、標準入出力を利用してvolume制御したり、step(pitch?) を変更したりできる。

keycode operation
+ or = volume up
- volume down
[ step down
] step up
q quit

+ は、shiftを押さなくてもいいように、 = でもいいという気の配りようがいい。(英語キーボードのみ)

USB Serial

前回と同じように、USBシリアルを利用するためにsource code に変更を加える。

RPi Pico のC/C++ SDK 環境を使う

RPi Pico のC/C++ SDK 環境を使う

2021.07.23

audio/sine_wave/CMakeLists.txt

     target_link_libraries(sine_wave_i2s PRIVATE
             pico_stdlib
             pico_audio_i2s
            hardware_uart
             )
...

   # enable usb output, disable uart output
   pico_enable_stdio_usb(sine_wave_i2s 1)
   pico_enable_stdio_uart(sine_wave_i2s 0)

PIN 設定

商品ページの説明にもあるが、pico-playgroundで想定してるI2S PINと Pico Audio Pack の配置が違う。

Pico Audio Pack

上図をみると、 I2S_DATAPIN12 を利用している。
が、APIの呼出はGPIOの番号なので、PIN9 となる。

RPi Pico GPIO
よって、audio_i2s_config を変更しておく。

audio/sine_wave/sine_wave.c

    struct audio_i2s_config config = {
            /*
            .data_pin = PICO_AUDIO_I2S_DATA_PIN,
            .clock_pin_base = PICO_AUDIO_I2S_CLOCK_PIN_BASE,
            */
            .data_pin = 9,
            .clock_pin_base = 10,
            .dma_channel = 0,
            .pio_sm = 0,
    };

make

source code を変更したら、build

mkdir build
cd build
cmake ..
cd audio/sine_wave
make

i2s 用以外にpwm用、spif用のバイナリもできるが、i2sをPicoにinstall する。

demo

再起動したPico と Pico Audio Pack のheadphone端子にスピーカーでも繋いでおけば、いきなり音が鳴る。

USB Serial に screen でアクセスして、volumeやstepを変更。

こんな感じの音がなる。

シェアする