前回の対応でPIC時計に時刻を設定できるようになったので、今度はいよいよ時刻を喋らせるところにチャレンジしました。PIC だけで喋らせるのはちょっと敷居が高そうなので、今回はAquesTalk pico LSIという音声合成LSIを使用することにしました。秋月電子で850円で購入できます。今回は男性の声のものを購入しましたが、女性版もあるみたいです。ちなみに使い方はここを参考にさせていただきました。
まずはやりたいことを整理して仕様を決め、大体の実現方法を検討しました。そのメモが下記です。
音声合成の仕様上記を踏まえて、回路図は下記のようにしました。相変わらず適当です。左下はリモコンから発せられる赤外線をキャッチするためのセンサー(フォトトランジスター)、右下は音声合成LSIとスピーカーです。スピーカー(ipod用のものを使用)には保護のため直列に100Ωの抵抗をつけただけで、特にアンプは使っていません。音声合成LSIにはパスコンを両サイドにつけています。これがないと、動作が不安定になりました。
PICの方のプログラムですが、音声合成LSIにテキストを送り込むため、前回作ったUARTの送信機能をそのまま流用することにしました。いくつかサンプルデータを流したところ、問題なく音声LSIで合成音を鳴らすことができました。リモコン信号はフォトトランジスターからの信号を抵抗で適当に調整して入力ピンに入力しています。今回は、正確なデータを読み取るのではなく、単にボタンが押されたことを検出するためだけのものですので、データの内容を読み取るところまでは行っていません。
完成したソースはこのようになりました。とりあえず、仕様は満たしているはずなので、これで一旦フィックスです。アラーム時刻を設定するためには、PICにプログラムを書き込むプログラムでEEPROM領域を直接編集する必要があるのが難点ですが、当面は設定時刻を変更しないで済みそうなので、このままにしておこうと思います。あと回路的には、スピーカーの音量、音質がイマイチなので、このあたりを弄るかもしれません。
今回の反省点です。
- PICはスタックメモリが小さいので、入れ子のCALLはできるだけ控える
- マイコンにはパスコンを必ずつける(できるだけマイコンの電源、GNDのピンに近いところに)
- 負荷に電流が流れ過ぎないように気をつける(必要に応じて抵抗をつける)

