Raspberry Pi Picoを入手したので、以前、”Arduino Pro Mini 3.3V”との組み合わせで製作したSI4732FP(オールウェーブ対応のDSPラジオIC、以下SI4732)を引っ張り出して検証してみた。Pi PicoはArduino IDE(2.0)環境での開発が可能である。開発環境の設定などはこちらを参考にすると良い。
Pi PicoはGPIOピンが多いので、多くのボタン(タクトスイッチ)が必要であるSI4732を制御するには都合が良い。ただし、Pi Picoの基板は長いので、5x7のブレッドボードは2枚必要になる。
スケッチは、PU2CLRさんのサイト(Github)の”SI47XX_02_ALL_IN_ONE_OLED.ino”がベースである。このスケッチは、”Pro Mini 3.3V”を想定しているが、以下に述べる変更を行えば、そのまま流用可能であることを確認した。
SI4732とディスプレイ(OLED 128x64 SSD1306)は、I2Cで接続するが、今回の環境ではPi Picoの既定のSDA、SCLは、GPIO4とGPIO5だったので、上記のスケッチのピンのアサインと衝突する。
Pi PicoのI2C対応のピンは複数グループあり、スケッチで指定することができる。ここでは、GPIO20とGPIO21を利用した。
”pinMode”の指定のコードの直後に以下のコードを追加した。
Wire.setSDA(20);
Wire.setSCL(21);
リセットのピンは、配線の都合上、GPIO22とした。
#define RESET_PIN 22
その他のGPIOピンは”Pro Mini 3.3V”と同じピンアサインでOKである。
なお、プルアップの抵抗は無くても動作した。
ロータリーエンコーダーは、出払っていたので、動作不良になったマウスを分解して、マウスホイール取り出し流用した。マウスホイールの”ボリューム(?)”にある3つの端子のうち、GNDを判別してGNDに接続し、残りをGPIO2とGPIO3に接続する(ハンダ付けが必要)。
ピン(GPIO)の割り当ては以下の通り。
Encoder 1 | 2 |
---|---|
Encoder 2 | 3 |
Mode Switch (AM/LSB/USB) | 4 |
BANDWIDTH switch | 5 |
Volume Up | 6 |
Volume Down | 7 |
Next Band (Up) | 8 |
Previous Band (Down) | 9 |
Step switch | 10 |
AGC Switch | 11 |
BFO Switch | 14 |
SDA | 20 |
SCL | 21 |
動作は確認できたが、以前の記事にも書いた様に、音質は良くなく、音声出力も不足なのは同じである。今後、これらをなんとかしてみたいと思う。