ATP3011を使ってArduinoを喋らせよう [Arduino入門編]
おはようございます。雪、降ってますね
さて今日はArudinoを喋らせてみようと思います
使うのはこちら、ATP3011という音声合成LSIです。
このLSIは、Arduinoからメッセージをおくるだけで、
LSIに接続したスピーカーから、そのメッセージが音声として出力されます。
出力はUART,I2C,SPIの3種類をサポートしています。
要はArduinoで「Serial.println("aiueo");」と書くと、
「あいうえお」と喋るのです
しかも1個850円。これでロボットが喋ると考えると凄いです
さて、配線です。見ての通りピンがメチャクチャ多いです。
ただし使うのは以下のみで番号は左からです。
[下段]
2番目 RX
音声の受信ピンです。ArduinoのTX(送信)と接続すると送受信が成立して、
Arduinoが送ったメッセージが受信できます
4番目 SMOD#0 / 5番目SMOD#1
通信モードでArduinoから、どの形式でメッセージを送るかを制御します。
モードは以下で1だと5V、0だとGNDに接続します。
「S#0=1 / S#1=1でUART」「S#0=0 / S#1=1でI2C」
「S#0=1 / S#1=0 か S#0=0 / S#1=0でSPI」となります。
Serial.println("");を喋らすときはUARTモードになるので両方5Vに接続します
7,8番目 VCC/GND
7がVCCで8がGNDです。今回、VCCには普段の5Vではなく3.3Vを接続します。
理由ですが5vは他のサーボやセンサーなどで使用しているので、
同じにすると何かノイズ?が入って動作が不安定になりました。
抵抗・コンデンサを使って制御すれば大丈夫なんだろうけど
詳しくないので、他とは別の専用電源として3.3Vを使うことにしました
12番目 AOUT
音声出力端子でスピーカーに接続します。
データシートを読むと4KHzのローパスフィルタが追加が必要らしいです。
この辺りは詳しくないので、とりあえずスキップ。
14番目 PMOD#0、上段14番目 PMOD#1
動作モードでArduinoからのメッセージを喋らせるか、
LSI内部の固定メッセージを喋らせるかで以下のモードがあります。
「P#0=1 / P#1=1で基本:Arduinoからのメッセージで喋る」
「P#0=0 / P#1=1でセーフ:Arduinoからのメッセージで喋る」
「P#0=1/ P#1=0でスタンドアロン:LSI内部の固定メッセージを喋る」
「P#0=0 / P#1=0でデモ:LSI内部のメッセージを確認で喋る」
となります。
基本とセーフの違いはセーフの場合、送信ボーレートが9600固定となり、
Arduinoはデフォルトがボーレート9600固定なのでセーフモードにします。
こちらも1は5V,0はGNDへの接続になります
配線後の写真がこちら。
これで、「Serial.println("aiueo");」と書くと、
「あいうえお」と喋ってくれます
でも、ちょっと音量が小さいですよね?!この辺は次回で~
さて今日はArudinoを喋らせてみようと思います
使うのはこちら、ATP3011という音声合成LSIです。
このLSIは、Arduinoからメッセージをおくるだけで、
LSIに接続したスピーカーから、そのメッセージが音声として出力されます。
出力はUART,I2C,SPIの3種類をサポートしています。
要はArduinoで「Serial.println("aiueo");」と書くと、
「あいうえお」と喋るのです
しかも1個850円。これでロボットが喋ると考えると凄いです
さて、配線です。見ての通りピンがメチャクチャ多いです。
ただし使うのは以下のみで番号は左からです。
[下段]
2番目 RX
音声の受信ピンです。ArduinoのTX(送信)と接続すると送受信が成立して、
Arduinoが送ったメッセージが受信できます
4番目 SMOD#0 / 5番目SMOD#1
通信モードでArduinoから、どの形式でメッセージを送るかを制御します。
モードは以下で1だと5V、0だとGNDに接続します。
「S#0=1 / S#1=1でUART」「S#0=0 / S#1=1でI2C」
「S#0=1 / S#1=0 か S#0=0 / S#1=0でSPI」となります。
Serial.println("");を喋らすときはUARTモードになるので両方5Vに接続します
7,8番目 VCC/GND
7がVCCで8がGNDです。今回、VCCには普段の5Vではなく3.3Vを接続します。
理由ですが5vは他のサーボやセンサーなどで使用しているので、
同じにすると何かノイズ?が入って動作が不安定になりました。
抵抗・コンデンサを使って制御すれば大丈夫なんだろうけど
詳しくないので、他とは別の専用電源として3.3Vを使うことにしました
12番目 AOUT
音声出力端子でスピーカーに接続します。
データシートを読むと4KHzのローパスフィルタが追加が必要らしいです。
この辺りは詳しくないので、とりあえずスキップ。
14番目 PMOD#0、上段14番目 PMOD#1
動作モードでArduinoからのメッセージを喋らせるか、
LSI内部の固定メッセージを喋らせるかで以下のモードがあります。
「P#0=1 / P#1=1で基本:Arduinoからのメッセージで喋る」
「P#0=0 / P#1=1でセーフ:Arduinoからのメッセージで喋る」
「P#0=1/ P#1=0でスタンドアロン:LSI内部の固定メッセージを喋る」
「P#0=0 / P#1=0でデモ:LSI内部のメッセージを確認で喋る」
となります。
基本とセーフの違いはセーフの場合、送信ボーレートが9600固定となり、
Arduinoはデフォルトがボーレート9600固定なのでセーフモードにします。
こちらも1は5V,0はGNDへの接続になります
配線後の写真がこちら。
これで、「Serial.println("aiueo");」と書くと、
「あいうえお」と喋ってくれます
でも、ちょっと音量が小さいですよね?!この辺は次回で~
コメント 0