AquesTalk pico LSI into the Grove of M5
「AquesTalk pico LSI用Grove(M5)接続基板」は、市販の音声合成専用LSI「AquesTalk pico LSI」(別売)をGroveコネクタでM5シリーズに接続するための基板です。
AquesTalk pico LSIの詳細は、データシートを参照ください。
2022年10月から基板V03を提供しています。ピンソケットJ7を追加しました。
(スイッチサイエンス扱い)AquesTalk pico LSI用Grove(M5)接続基板
- (YouTube)AquesTalk pico LSI into the Grove of M5
M5AtomにI2Cで接続しています。以下のサンプルプログラムを使用しています。
GitHub: botanicfields/PCB-Grove-AquesTalk-pico-LSI/tree/main/BF-035_Wire - (YouTube)般若心経 by AquesTalk pico LSI and M5Stack, Glove PCB, I2C
M5SrackにI2Cで接続しています。基板V03のJ7とM5StackのGPIO35をジャンパワイヤーで接続しています。以下のサンプルプログラムを使用しています。
GitHub: botanicfields/PCB-MBUS-AquesTalk-pico-LSI/tree/main/BF-034_han-nya
AquesTalk piso LSI(28ピンDIPタイプ)1個をICソケットに装着します。ATP3011用とATP3012用のソケットがあります。どちらか一方のみを装着してください。
AquestTalk pico LSIの取り付け: 左 ATP3011, 右 ATP3012
- AquesTalk pico LSI(28ピンDIPタイプ)1個を搭載できます。
- ATP3011, ATP3012の両方に対応しています。
- パワーアンプ(LM4871)を内蔵し、スピーカーを直接駆動できます。
- M5シリーズのGrove仕様に合わせ、電源+5V、信号3.3Vに対応します。
- AquestTalk pico LSIは3.3Vで動作し、M5シリーズに直結できます。
- DIPスイッチで動作モード・通信モードを設定できます。
- 動作モード・通信モードの変更を反映するリセットボタンがあります。
- I2C接続用、UART接続用のGroveコネクタがあり、接続方法を選べます。
- スタンドアロンモードのためのコネクタがあります。
- SPI接続も可能です(ハンダ付けが必要です)。
DIP: Dual In-line Package
I2C: Inte-Integrated Circuit
UART: Universal Asynchronous Receiver Transmitter
SPI: Serial Peripheral Interface
- AquesTalk pico LSI用Grove(M5)接続基板(完成品)1枚
- Groveケーブル20cm 1本(M5Stack純正品)
- 説明書 1部
※ AquesTalk pico LSIは付属しません。
※ スピーカー、スピーカーケーブルは付属しません。
※ ケースや足などは付属しません。
- AquesTalk pico LSI(秋月電子通商扱い)
音声合成LSI ATP3011F1-PU(ゆっくりな女性の音声) ATP3011F1-PU
音声合成LSI ATP3011F4-PU(かわいい女性の音声) ATP3011F4-PU
音声合成LSI ATP3011M6-PU(男性の音声) ATP3011M6-PU
音声合成LSI ATP3012F6-PU(女性の音声明瞭版) ATP3012F6-PU
音声合成LSI ATP3012R5-PU(小型ロボットの音声) ATP3012R5-PU - スピーカー、スピーカーケーブル
4~8Ω程度、1W以上が望ましいです - 工具
ドライバ(ターミナルブロックの締め付けに必要です)など - M5Stack, M5Atom
サンプルプログラムは、M5Stack Core Basic, M5Atomで動作を確認しています - Arduino-IDEが動作する環境
サンプルプログラムは、Arduino IDE用です - その他
SLEEP信号などを接続する場合には、ジャンパワイヤー等が必要です。SPI接続の場合には、ピンヘッダおよびハンダ付けが必要です
SCL, SDAの表記のあるGroveコネクタJ5に接続します。基板上にプルアップ抵抗はありません。M5シリーズ側でのプルアップを使用します。
I2Cとして、SCL=GPIO32, SDA=GPIO26を指定します。サンプルプログラムではWire1を選択します。
I2Cとして、デフォルトのWire(SCL=GPIO21, SDA=GPIO25)を使用できます。
※(スイッチサイエンス扱い)M5Atom用GROVEコネクタ基板
I2Cとして、デフォルトのWire(SCL=GPIO22, SDA=GPIO21)を使用できます。
TX, RXの表記のあるGroveコネクタJ4に接続します。基板上のTXがM5シリーズのRXに、基板上のRXがM5シリーズのTXに接続されます。
M5Atom側は、RX=GPIO32, TX=GPIO26を指定します。
接続には、「GROVE - 4ピン - ジャンパオスケーブル※(別売)」相当のケーブルが必要です。M5Stack側は、RX=GPIO16, TX=GPIO17, +5V, GND を接続します。
※(スイッチサイエンス扱い)GROVE - 4ピン - ジャンパオスケーブル
SS, +5V, GNDは、ピンソケットJ3に接続します。SCK, MOSI, MISOは、J1(ICSP)に接続します。ICSPのピンヘッダは実装していません。ピンヘッダを別途手配いただき、基板へハンダ付けしてください。接続にはジャンパワイヤー等が必要です。
- SPI: Serial Periphral Interface
- SCK: Serial ClocK
- MOSI: Master Out Slave In
- MISO: Master In Slave Out
- SS: Slave Select
- GND: Ground
- ICSP: In Circuit Serial Programming
接続にはジャンパワイヤー等が必要です。SCK=GPIO18, MISO=GPIO19, MOSI=GPIO23, SS=GPIO5, +5V, GND を接続します。
J2に「ダイオードマトリクススイッチ16基板※」を接続し、ボタン操作で15種類の音声を再生できます。以下の写真でM5Stackは、電源として使用しています。
※(スイッチサイエンス扱い)ダイオードマトリクススイッチ16基板
AquesTalk pico LSIのSLEEPピンをGPIOに接続できます。SLEEP=LowでAquesTalk pico LSIがスリープ状態になります。ATP3011のUART接続において9600bpsより速い速度が必要な場合、「セーフモード」ではなく「コマンド入力モード」が必要であり、速度設定のためにSLEEPの接続が必要です。
AquesTalk pico LSIのPLAYピンをGPIOに接続できます。AquesTalk pico LSIが音声再生中の間、PLAY=Lowとなります。
スピーカーを接続します。2本のいずれもGNDではありません。
音量調節ボリュームに入る時点のアナログ音声をジャンパワイヤー等に取り出すことができます。ATP3011、ATP3012でピンが異なります。
ATP3011の例
ATP3012の例
動作モードおよび使用するインタフェース(通信モード)に合わせて、基板上のDIPスイッチを設定します。おすすめはI2C接続です。DIPスイッチの設定はリセット時に反映されます。DIPスイッチの設定を変更後、基板上のリセットボタンを押す必要があります。出荷時の設定は、セーフモード・I2C接続・パワーアンプが常に動作状態(OFF,ON,OFF,ON,ON)です。
1 | 2 | 3 | 4 | 5 | 動作モード | 通信モード | 備考 |
---|---|---|---|---|---|---|---|
OFF | OFF | OFF | ON | - | コマンド入力モード | I2C | I2CアドレスはEEPROMに設定した値(初期値0x2E) |
OFF | ON | OFF | ON | - | セーフモード | I2C | I2Cアドレスは強制的に0x2E |
OFF | OFF | OFF | OFF | - | コマンド入力モード | UART | 設定されたスピードで動作 (*1) |
OFF | ON | OFF | OFF | - | セーフモード | UART | 強制的に9600bpsで動作 |
OFF | - | ON | OFF | - | - | SPI mode 3 | - |
OFF | - | ON | ON | - | - | SPI mode 0 | サンプルプログラムはSPI mode 0で動作 |
ON | OFF | - | - | - | スタンドアロンモード | - | PC0-3の信号入力によりプリセットメッセージを選択して再生 |
ON | ON | - | - | - | デモモード | - | プリセットメッセージを順番に自動再生 |
- | - | - | - | ON | - | - | パワーアンプが常に動作状態 |
- | - | - | - | OFF | - | - | 音声再生中以外は、パワーアンプをシャットダウンする(*2) |
※ 1, 2, 3, 4, 5は、DIPスイッチの番号です。DIPスイッチはONでGND接続のため、ON=0, OFF=1です。
(*1) ATP3011の場合、SLEEP解除後の'?'送信で自動設定します。ATP3012の場合EEPROMに設定します。
(*2) 音声再生の前後にノイズが発生します。
AquesTalk pico LSIをM5StackまたはM5Atomに接続し、I2C(Wire), UART(Serial), SPIで動作させるプログラムです。デモの内容は同じです。Arduino-IDE環境で使用します。基板の接続や設定を予め使用するインタフェースに合わせておく必要があります。
AqeusTalk pico LSIをI2Cで動作させるサンプルプログラムです。#defineでM5Stack, M5Atomのいずれかを選択します。
AqeusTalk pico LSIをUARTで動作させるサンプルプログラムです。#defineでM5Stack, M5Atomのいずれかを選択します。
AqeusTalk pico LSIを SPIで動作させるサンプルプログラムです。M5Stack専用です。
ボタンを押すと、ソースコードのpreset_msgを発声します。初期値はpreset_msg[0]です。
M5 | ボタン | 停止中 | 発声中 |
---|---|---|---|
M5Stack | A | 1つ前のpreset_msgを発声 | 発声を中断して1つ前のpreset_msgを発声 |
M5Stack | B | 現在のpreset_msgを発声 | 発声を中断して停止 |
M5Stack | C | 1つ後のpreset_msgから連続して発声 | 発声を中断して1つ後のpreset_msgから連続して発生 |
M5Atom | Btn | 現在のpreset_msgから連続して発声 | 発声を中断して停止 |
-
SLEEPピンをHighにする(デフォルト: 実行しない)
AquesTalk pico LSIのSLEEPピンとが接続したGPIO5をHIGHにしてSLEEPでない状態にします。 -
UARTスピードを設定(ATP3011が対象。UARTのみ。デフォルト: 実行しない)
AquesTalk pico LSI (ATP3011) のUARTスピードを設定します。GPIO5がAquesTalk pico LSIのSLEEPピンと接続している必要があります。 -
UARTスピードを書き換え(ATP3012が対象。UARTのみ。デフォルト: 実行しない)
AquesTalk pico LSI (ATP3012) のUARTスピードを書き換えます。 -
I2Cアドレスを書き換え(I2Cのみ。デフォルト: 実行しない)
AquesTalk pico LSIのI2Cアドレスを書き換えます。 -
プリセットメッセージを書き込む(デフォルト: 実行しない)
AquesTalk pico LSIにプリセットメッセージとして、ソースコード内のpreset_msgデータを書き込みます。時間がかかります。 -
EEPROMデータをダンプ(デフォルト: 実行しない)
AquesTalk pico LSIのEEPROMデータをシリアルモニタに表示します。時間がかかります。 -
AquesTalk pico LSIのバージョンをシリアルモニタに表示
-
チャイムJを発声
-
チャイムKを発声
AquesTalk pico LSIを使用するためのライブラリです。
I2C, UART, SPI共通の基本クラスです。接続するインタフェースに依ってI2C(Wire), UART(Serial), SPIのいずれかの派生クラスを使用する必要があります。
AquesTalk pico LSIに文字列msgを送信します。送信の様子をシリアルモニタに出力します。純粋仮想関数として定義し、使用するインタフェースに合わせて派生クラスで実装します。
AquesTalk pico LSIから文字列を受信します。受信完了は、'>'または'*'で判断します。純粋仮想関数として定義し、使用するインタフェースに合わせて派生クラスで実装します。
発声中などAquesTalk pico LSIが処理中の場合trueを応答します。falseの場合発声が終了したと判断できます。純粋仮想関数として定義し、使用するインタフェースに合わせて派生クラスで実装します。I2C, SPIではおのずとポーリングができますが、UARTではSend()による明示的なポーリングが必要です。
AquesTalk pico LSIからの応答をシリアルモニタに出力します。res_length_to_showに2を渡すと、応答が1文字以下の場合にシリアルモニタへの出力を抑止できます。I2C、SPIのポーリングによる応答が正常('>', 1文字)の場合のシリアルモニタへの出力を省略できます。
AquesTalk pico LSIのEEPROM (アドレス0x000-0x3FF) の値をシリアルモニタに出力します。
AquesTalk pico LSIのEEPROMにデータを書き込みます。
AquesTalk pico LSIのEEPROMにプリセットメッセージを書き込みます。書き込みの様子をシリアルモニタに出力します。
発話速度をEEPROMに設定します。50~300を設定できます。デフォルトは100です。
文末ポーズの長さをEEPROMに設定します。256~65535を設定できます。65535を設定すると自動になります。デフォルトは65535です。
AquesTalk pico LSI (ATP3012) のシリアル通信速度を書き換えます。デフォルトは9600です。
AquesTalk pico LSIのI2Cアドレスを書き換えます。デフォルトは0x2Eです。
AquesTalk pico LSIとI2Cでインタフェースする派生クラスです。
AquesTalk pico LSIを接続するI2CとI2Cアドレスを指定します。
AquesTalk pico LSIとUARTでインタフェースする派生クラスです。
AquesTalk pico LSIを接続するUARTを指定します。
AquesTalk pico LSIとSPIでインタフェースする派生クラスです。
AquesTalk pico LSIを接続するSPIとSSとして使用するGPIOを指定します。