齢寿天任せ

写真付きで日記や趣味を書くならgooブログ

Si4703搭載FMラジオチューナ評価ボードによるFMラジオ その2

2021-01-30 11:45:33 | 電子工作

Si4703搭載FMラジオチューナ評価ボードを使ったFMラジオを製作したが、選局・音量の調節はパソコンが繋がっていないとできないという難点があった。
どうせパソコンを点けているならRadikoで聞けばと云われそうなので、パソコンなしで、選局・音量の調節ができるようにする。
最小スペックは、タクトスイッチを選局に1個、音量の大小に2個付ければ良いのだが、選局時には何回もタクトスイッチを押さなければならない上に、どの局を受信しているか分からなくなる。
そのため、放送局ごとに専用のタクトスイッチを割り当てることにした。この地方では、FM局がコミュニティ局も含めると10局以上あるので、音量調節も含めるとタクトスイッチが12個は欲しい。
問題点は、Arduinoでは、それだけのタクトスイッチを直接制御できない(おまけに配線の数がとんでもない)ことである。
そこで、Aitendo(パーツ屋さん)をサーチして、いいものを見つけた。16個のタクトスイッチを搭載したキーパッドである。このキーパッドには、PCF8574が載っているので、AruduinoからはI2Cで制御できる。配線は、4本で済む。
このキーパッドの制御には、ライブラリが2つ必要である。
Keypad_I2C.h (Github)
Keypad.h
プログラムでは、Keypad.hのexamplesフォルダにあるHelloKeypad.inoが3x4のキーパッド対応なので、4x4用に改修して利用している。


// keypad
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
char keys[ROWS][COLS] = {
  {'f','b','7','3'},
  {'e','a','6','2'},
  {'d','9','5','1'},
  {'c','8','4','0'}
};
// Digitran keypad, bit numbers of PCF8574 i/o port
byte rowPins[ROWS] = {0, 1, 2, 3}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {4, 5, 6, 7}; //connect to the column pinouts of the keypad

実際のキーパッドのタクトスイッチとの対応は、左上から右下へ、’0’、’1’、’2’、…、’e’、’f’の順に対応している。 ’0’から’b’までは、各FM局の選局に対応させ、’e’、’f’は音量調節に使用する。プログラムはGithubを参照(利用は自己責任でお願いします)。
なお、最後の選局結果と音量を記憶しておくため、ArduinoのEEPROM機能を利用している。

(注)このキーパッドは部品のキットなので、60か所位ハンダ付けが必要です。また、ICのソケットとピンヘッダは付属してませんでした。

100均のホビーケースに入れてみました。黒色のタクトスイッチで選局します。黄色と赤色のボタンは音量調整用です。電源には、壊れたマウスのUSBケーブルを使ってます。中身の写真も載せておきます。Si4703基板、Arduino NANO、レベル変換基板が並んでます。



最新の画像もっと見る

コメントを投稿