Skip to the content
2 layers97.8 × 45.7 mmBf-036, the printed circuit board in 3D

AquesTalk pico LSI into the Grove of M5

Size
97.8 × 45.7 mm
Copper layers
2
Thickness
1.6 mm
Parts
90
Nets
21
Pads
209
Tracks, vias
260, 0
Pours
2
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
23 Nov 2021
Updated
1 Oct 2022

Overview

Bf-036 is an open-source printed circuit board by botanicfields, from the botanicfields/PCB-Grove-AquesTalk-pico-LSI repository on GitHub, published under the CC0-1.0 licence. It is a 2-layer board of 97.8 × 45.7 mm with 90 parts on 21 nets, routed with 260 tracks and 0 vias.

Its parts include 64 diodes, 16 switches, 4 capacitors and 1 connector. It belongs with the interfaces and adapters boards of this library.

README

README.md

PCB-Grove-AquesTalk-pico-LSI

AquesTalk pico LSI用Grove(M5)接続基板

AquesTalk pico LSI into the Grove of M5

1. 概要

 「AquesTalk pico LSI用Grove(M5)接続基板」は、市販の音声合成専用LSI「AquesTalk pico LSI」(別売)をGroveコネクタでM5シリーズに接続するための基板です。
 AquesTalk pico LSIの詳細は、データシートを参照ください。

基板V03 の変更点

 2022年10月から基板V03を提供しています。ピンソケットJ7を追加しました。

委託販売

(スイッチサイエンス扱い)AquesTalk pico LSI用Grove(M5)接続基板

動作例

組み立て例

 AquesTalk piso LSI(28ピンDIPタイプ)1個をICソケットに装着します。ATP3011用とATP3012用のソケットがあります。どちらか一方のみを装着してください。
AquestTalk pico LSIの取り付け: 左 ATP3011, 右 ATP3012

1.1 特徴

  • 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

1.2 内容物

  • AquesTalk pico LSI用Grove(M5)接続基板(完成品)1枚
  • Groveケーブル20cm 1本(M5Stack純正品)
  • 説明書 1部

※ AquesTalk pico LSIは付属しません。
※ スピーカー、スピーカーケーブルは付属しません。
※ ケースや足などは付属しません。

商品写真(基板V03)

写真: 内容物、基板裏面

1.3 別途必要なもの

2. 接続

2.1 I2C接続

 SCL, SDAの表記のあるGroveコネクタJ5に接続します。基板上にプルアップ抵抗はありません。M5シリーズ側でのプルアップを使用します。

(1)M5AtomのGroveコネクタに接続

 I2Cとして、SCL=GPIO32, SDA=GPIO26を指定します。サンプルプログラムではWire1を選択します。

(2)「M5Atom用GROVEコネクタ基板※(別売)」経由で接続

 I2Cとして、デフォルトのWire(SCL=GPIO21, SDA=GPIO25)を使用できます。
※(スイッチサイエンス扱い)M5Atom用GROVEコネクタ基板

(3)M5StackのGroveコネクタに接続

 I2Cとして、デフォルトのWire(SCL=GPIO22, SDA=GPIO21)を使用できます。

2.2 UART接続

 TX, RXの表記のあるGroveコネクタJ4に接続します。基板上のTXがM5シリーズのRXに、基板上のRXがM5シリーズのTXに接続されます。

(1)M5AtomのGroveコネクタに接続

 M5Atom側は、RX=GPIO32, TX=GPIO26を指定します。

(2)M5StackのGPIOに接続

 接続には、「GROVE - 4ピン - ジャンパオスケーブル※(別売)」相当のケーブルが必要です。M5Stack側は、RX=GPIO16, TX=GPIO17, +5V, GND を接続します。
※(スイッチサイエンス扱い)GROVE - 4ピン - ジャンパオスケーブル

2.3 SPI接続

 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

M5StackのGPIOに接続

 接続にはジャンパワイヤー等が必要です。SCK=GPIO18, MISO=GPIO19, MOSI=GPIO23, SS=GPIO5, +5V, GND を接続します。

2.4 スタンドアロン

 J2に「ダイオードマトリクススイッチ16基板※」を接続し、ボタン操作で15種類の音声を再生できます。以下の写真でM5Stackは、電源として使用しています。
※(スイッチサイエンス扱い)ダイオードマトリクススイッチ16基板

2.5 その他共通

J3 SLEEP信号

 AquesTalk pico LSIのSLEEPピンをGPIOに接続できます。SLEEP=LowでAquesTalk pico LSIがスリープ状態になります。ATP3011のUART接続において9600bpsより速い速度が必要な場合、「セーフモード」ではなく「コマンド入力モード」が必要であり、速度設定のためにSLEEPの接続が必要です。

J3 PLAY信号

 AquesTalk pico LSIのPLAYピンをGPIOに接続できます。AquesTalk pico LSIが音声再生中の間、PLAY=Lowとなります。

J6 スピーカー

 スピーカーを接続します。2本のいずれもGNDではありません。

J7 音声信号(基板V03)

 音量調節ボリュームに入る時点のアナログ音声をジャンパワイヤー等に取り出すことができます。ATP3011、ATP3012でピンが異なります。
ATP3011の例

ATP3012の例

3. 設定(DIPスイッチ)

 動作モードおよび使用するインタフェース(通信モード)に合わせて、基板上のDIPスイッチを設定します。おすすめはI2C接続です。DIPスイッチの設定はリセット時に反映されます。DIPスイッチの設定を変更後、基板上のリセットボタンを押す必要があります。出荷時の設定は、セーフモード・I2C接続・パワーアンプが常に動作状態(OFF,ON,OFF,ON,ON)です。

12345動作モード通信モード備考
OFFOFFOFFON-コマンド入力モードI2CI2CアドレスはEEPROMに設定した値(初期値0x2E)
OFFONOFFON-セーフモードI2CI2Cアドレスは強制的に0x2E
OFFOFFOFFOFF-コマンド入力モードUART設定されたスピードで動作 (*1)
OFFONOFFOFF-セーフモードUART強制的に9600bpsで動作
OFF-ONOFF--SPI mode 3-
OFF-ONON--SPI mode 0サンプルプログラムはSPI mode 0で動作
ONOFF---スタンドアロンモード-PC0-3の信号入力によりプリセットメッセージを選択して再生
ONON---デモモード-プリセットメッセージを順番に自動再生
----ON--パワーアンプが常に動作状態
----OFF--音声再生中以外は、パワーアンプをシャットダウンする(*2)

※ 1, 2, 3, 4, 5は、DIPスイッチの番号です。DIPスイッチはONでGND接続のため、ON=0, OFF=1です。
(*1) ATP3011の場合、SLEEP解除後の'?'送信で自動設定します。ATP3012の場合EEPROMに設定します。
(*2) 音声再生の前後にノイズが発生します。

4. サンプルプログラム

 AquesTalk pico LSIをM5StackまたはM5Atomに接続し、I2C(Wire), UART(Serial), SPIで動作させるプログラムです。デモの内容は同じです。Arduino-IDE環境で使用します。基板の接続や設定を予め使用するインタフェースに合わせておく必要があります。

BF-035_Wireフォルダ

 AqeusTalk pico LSIをI2Cで動作させるサンプルプログラムです。#defineでM5Stack, M5Atomのいずれかを選択します。

BF-035_Serialフォルダ

 AqeusTalk pico LSIをUARTで動作させるサンプルプログラムです。#defineでM5Stack, M5Atomのいずれかを選択します。

BF-035_Spiフォルダ

 AqeusTalk pico LSIを SPIで動作させるサンプルプログラムです。M5Stack専用です。

4.1 ボタン操作 .. loop()

 ボタンを押すと、ソースコードのpreset_msgを発声します。初期値はpreset_msg[0]です。

M5ボタン停止中発声中
M5StackA1つ前のpreset_msgを発声発声を中断して1つ前のpreset_msgを発声
M5StackB現在のpreset_msgを発声発声を中断して停止
M5StackC1つ後のpreset_msgから連続して発声発声を中断して1つ後のpreset_msgから連続して発生
M5AtomBtn現在のpreset_msgから連続して発声発声を中断して停止

4.2 setup()

  • 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を発声

5. ライブラリ

 AquesTalk pico LSIを使用するためのライブラリです。

5.1 BF_AquesTalkPico.h

 I2C, UART, SPI共通の基本クラスです。接続するインタフェースに依ってI2C(Wire), UART(Serial), SPIのいずれかの派生クラスを使用する必要があります。

(1) virtual int Send(const char* msg) = 0

 AquesTalk pico LSIに文字列msgを送信します。送信の様子をシリアルモニタに出力します。純粋仮想関数として定義し、使用するインタフェースに合わせて派生クラスで実装します。

(2) virtual size_t Recv(char* res, size_t res_size) = 0

 AquesTalk pico LSIから文字列を受信します。受信完了は、'>'または'*'で判断します。純粋仮想関数として定義し、使用するインタフェースに合わせて派生クラスで実装します。

(3) virtual bool Busy() = 0

 発声中などAquesTalk pico LSIが処理中の場合trueを応答します。falseの場合発声が終了したと判断できます。純粋仮想関数として定義し、使用するインタフェースに合わせて派生クラスで実装します。I2C, SPIではおのずとポーリングができますが、UARTではSend()による明示的なポーリングが必要です。

(4) int ShowRes(int res_length_to_show = 1)

 AquesTalk pico LSIからの応答をシリアルモニタに出力します。res_length_to_showに2を渡すと、応答が1文字以下の場合にシリアルモニタへの出力を抑止できます。I2C、SPIのポーリングによる応答が正常('>', 1文字)の場合のシリアルモニタへの出力を省略できます。

(5) int DumpEeprom()

 AquesTalk pico LSIのEEPROM (アドレス0x000-0x3FF) の値をシリアルモニタに出力します。

(6) int WriteEeprom(int address, int data)

 AquesTalk pico LSIのEEPROMにデータを書き込みます。

(7) int WritePresetMsg(const char* msg[], int num_of_msg)

 AquesTalk pico LSIのEEPROMにプリセットメッセージを書き込みます。書き込みの様子をシリアルモニタに出力します。

(8) int WriteSpeed(int speed)

 発話速度をEEPROMに設定します。50~300を設定できます。デフォルトは100です。

(9) int WritePause(int pause)

 文末ポーズの長さをEEPROMに設定します。256~65535を設定できます。65535を設定すると自動になります。デフォルトは65535です。

(10) int WriteSerialSpeed(int serial_speed)

 AquesTalk pico LSI (ATP3012) のシリアル通信速度を書き換えます。デフォルトは9600です。

(11) int WriteI2cAddress(int i2c_address)

 AquesTalk pico LSIのI2Cアドレスを書き換えます。デフォルトは0x2Eです。

5.2 BF_AquesTalkPicoWire.h

 AquesTalk pico LSIとI2Cでインタフェースする派生クラスです。

int Begin(TwoWire &wire, int i2c_address = 0x2e);

 AquesTalk pico LSIを接続するI2CとI2Cアドレスを指定します。

5.3 BF_AquesTalkPicoSerial.h

 AquesTalk pico LSIとUARTでインタフェースする派生クラスです。

int Begin(Stream &stream);

 AquesTalk pico LSIを接続するUARTを指定します。

5.4 BF_AquesTalkPicoSpi.h

 AquesTalk pico LSIとSPIでインタフェースする派生クラスです。

int Begin(SPIClass &spi, int ss);

 AquesTalk pico LSIを接続するSPIとSSとして使用するGPIOを指定します。

6. 参考

Qiita: AquesTalk pico LSI を M5Stack の I2C, UART, SPI で動かす

Parts

90
QtyValueFootprintReferences
64DDiode_THT:D_DO-35_SOD27_P7.62mm_HorizontalD1, D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23 +48
410nCapacitor_THT:C_Disc_D4.3mm_W1.9mm_P5.00mmC1, C2, C3, C4
10Button_Switch_THT:SW_PUSH_6mmSW1
11Button_Switch_THT:SW_PUSH_6mmSW2
110Button_Switch_THT:SW_PUSH_6mmSW11
111Button_Switch_THT:SW_PUSH_6mmSW12
112Button_Switch_THT:SW_PUSH_6mmSW13
113Button_Switch_THT:SW_PUSH_6mmSW14
114Button_Switch_THT:SW_PUSH_6mmSW15
115Button_Switch_THT:SW_PUSH_6mmSW16
12Button_Switch_THT:SW_PUSH_6mmSW3
13Button_Switch_THT:SW_PUSH_6mmSW4
14Button_Switch_THT:SW_PUSH_6mmSW5
15Button_Switch_THT:SW_PUSH_6mmSW6
16Button_Switch_THT:SW_PUSH_6mmSW7
17Button_Switch_THT:SW_PUSH_6mmSW8
18Button_Switch_THT:SW_PUSH_6mmSW9
19Button_Switch_THT:SW_PUSH_6mmSW10
1CODEConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_HorizontalJ1
1LOGObf:BF@logo4G***

The 86 most common of 90 parts.

More from botanicfields/PCB-Grove-AquesTalk-pico-LSI

1
  • 2 layers49.5 × 58.4 mmBf-035, the printed circuit board in 3D

    Bf-035

    botanicfields/PCB-Grove-AquesTalk-pico-LSI

    AquesTalk pico LSI into the Grove of M5

    50 parts3CC0-1.0

Similar boards

  • 2 layers75 × 75 mmFtp, the printed circuit board in 3D

    Ftp

    opulo-inc/lumenpnp

    The LumenPnP is an open source pick and place machine.

    90 parts3.7k
  • 2 layers236.5 × 96.2 mmForager pcb, the printed circuit board in 3D

    Forager pcb

    carrefinho/forager

    34-key wireless split keyboard inspired by ZSA Voyager

    90 parts426CERN-OHL-P-2.0
  • 2 layers268 × 62 mmSmu front 1, the printed circuit board in 3D

    Smu front 1

    jaromir-sukuba/J-SMU

    DIY source-measure unit

    90 parts244
  • 2 layers97.5 × 59.5 mmChrono, the printed circuit board in 3D

    Chrono

    eddyem/stm32samples

    Code samples and ready projects based on bare-metal STM32

    90 parts208
  • 2 layers115.6 × 106.7 mmErgoSNM v3 left, the printed circuit board in 3D

    ErgoSNM v3 left

    siderakb/ergo-snm-keyboard

    ErgoSNM is a split ergonomic keyboard integrated with trackball, wireless is in beta

    90 parts172CERN-OHL-P-2.0
  • 2 layers163 × 120 mmZynthian mini, the printed circuit board in 3D

    Zynthian mini

    zynthian/zynthian-hw

    Zynthian hardware stuff: PCBs, schemes, parts specifications, pin assignment, ...

    90 parts156
  • 2 layers219 × 96.1 mmTheENDGAME2024 COPPER, the printed circuit board in 3D

    TheENDGAME2024 COPPER

    OldMan6955/TheEndgame2024

    Love Peace UWU

    90 parts121CERN-OHL-S-2.0

Questions

How big is the Bf-036 PCB?

It measures 97.8 × 45.7 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Bf-036 use?

90 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Bf-036 KiCad files?

From the botanicfields/PCB-Grove-AquesTalk-pico-LSI repository on GitHub, at the commit this page was made from: the board is KiCad/V02L01/bf-036.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Bf-036 design in my own project?

Its repository publishes it under the CC0-1.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).