音声合成LSI ATP3012 を使ってみる 2024.4.20 | |
AQUESTが製作した音声合成LSI ATP3012 を入手した(秋月電子で1100円)。ローマ字テキストで音声を発するというのが面白いので、購入してみた。ATP3012には、発する音声の違いによる種類があり、女性、男性、ロボットなどがある。私はロボットのプラモデルに組み込むという計画からロボットの声を選んだ。このLSIはArduinoで使われているATmega328Pというマイコンを使用している。 コントロール用のマイコンにはArduino互換のSeeeduinoを使用した。以前Arduinoはよく使っていたため慣れていることや、Arduino IDEが使用できるのもよい。Seeeduinoは、中国深圳にある会社「矽递科技股份有限公司」(英語名:Seeed Technology Co.,Ltd)が2000年に発売したマイコンシリーズSeeed Studio XIAOの1つで、約2cm角の大きさで、性能はArduinoをはるかに上回っている。値段も850円(秋月電子)と安い。組み込むにはたいへん良いと思われた。 図1 SeeeduinoとATP3012 1.最初につまづいた! ネット上にはSeeeduinoとATP3012を使用した記事がいくつかあったので、これを参考にプログラムを行ってみた。ところが一向にLSIはしゃべってくれない。試しにArduinoでやってみるとちゃんとしゃべるのである。ここで1週間ほど悩み、ようやくわかったのが、SeeeduinoとArduinoは完全互換ではないということだった。ATP3012とマイコンはシリアル通信(UART)、SPI、I2Cのどれかでデーターのやりとりを行うようになっている。私はシリアル通信でやっていたのだが、実はSeeeduinにはArduinoIDEのシリアルモニタとやりとりをする系統と、もう一つ別に外部機器とシリアル通信を行うことができる系統があることがわかった。モニタとのやりとりに使うシリアル通信には通常の「Serial.・・・」が使われるが、外部機器とのシリアル通信用には「Serial1.・・・」が使われる。そういう視点でSeeeduinoの説明書を見ると、確かに「Serial1.・・・」という命令を使っている。Arduinoと同じという先入観で使っていたことがミスだったのである。Seeeduinoのピン接続図には7ピンがTX、8ピンがRXと書かれているが、これは外部機器との接続用であった。 これをクリアしたところ、無事音声が発せられ、うまく動作するようになった。思い込みは恐ろしい。 https://smtengkapi.com/engineer-seeeduino-serial/ さん、感謝! 2.回路図 回路図を図2に示した。LSIのPMOD0、PMOD1、SMOD0、SMOD1端子は、内部でプルアップされているようなので、特に接続をしていない。極力接続部品を減らしてみた。XTALは以前PICで使った10MHzのセラロックがあったのでこれを流用した。音声出力は2SC1815で増幅している。スピーカーは16Ω,0.2Wを使用した。 図2 SeeeduinoとATP3012の接続図 図3 実体図 プログラムは、タクトスイッチを押すごとに音声メッセージが変わるというたあいのないものである。ロボットに組み込んだときにはランダムにメッセージが出るようにしたいと考えている。プログラムを以下に示す。
【参考】 ・『音声合成LSI「AquesTalk pico LSI」 ATP3012』AQUEST https://www.a-quest.com/archive/manual/atp3012_datasheet.pdf ・『Getting Started with Seeed Studio XIAO SAMD21』 https://wiki.seeedstudio.com/Seeeduino-XIAO/ |
|
<ものづくりのページに戻る> <HOMEに戻る> |