
Bf-035
botanicfields/PCB-Grove-AquesTalk-pico-LSI
AquesTalk pico LSI into the Grove of M5

MBUS Module of AquesTalk pico LSI for M5Stack
Bf-034 is an open-source printed circuit board by botanicfields, from the botanicfields/PCB-MBUS-AquesTalk-pico-LSI repository on GitHub, published under the CC0-1.0 licence. It is a 2-layer board of 50 × 50 mm with 56 parts on 63 nets, routed with 414 tracks and 61 vias.
It is built around the LM4871 and DTC143Z. Its parts include 12 capacitors, 12 resistors, 5 connectors, 3 ICs and 2 transistors. It belongs with the ESP32 boards of this library.
M-BUS Module of AquesTalk pico LSI for M5Stack
市販の音声合成専用LSI「AquesTalk pico LSI」(別売)をM-BUSモジュールとしてM5Stackに取り付けるための半完成基板です。
AquesTalk pico LSIの詳細は、データシートを参照ください。
Data Sheet: 音声合成 LSI 「AquesTalk pico LSI」ATP3011
Data Sheet: 音声合成 LSI 「AquesTalk pico LSI」ATP3012
2022年10月末から基板V04を提供しています。詳細は、スピーカーの接続の項を参照ください。
(スイッチサイエンス扱い)M5Stack用 AquesTalk pico LSI モジュール基板
(YouTube)"AquesTalk pico LSI" speaks date and time
(YouTube)M-Bus Module of AquesTalk pico LSI drives the built-in speaker of M5Stack
(YouTube)M-Bus Module of AquesTalk pico LSI for M5Stack
(YouTube)M-Bus Module of AquesTalk pico LSI for M5Stack on Core2
組み立てにはハンダ付けが必要です。
左側: ATP3011を搭載、音声アナログ信号をGPIO35に入力するためJP5をショート
右側: ATP3012を搭載、音声アナログ信号をGPIO35に入力するためJP6をショート
写真右: M5Stack 取り付け例、J4に外部スピーカを接続
DIP: Dual In-line Package
I2C: Inte-Integrated Circuit
UART: Universal Asynchronous Receiver Transmitter
SPI: Serial Peripheral Interface
※ AquesTalk pico LSIは付属しません。
※ プロトモジュールのモールドは付属しません。
※ スピーカーは付属しません。
写真左: 内容物(基板V4)、写真右: 基板V4裏面
別売のAquestTalk pico LSI(28ピンDIPタイプ)1個を取り付けます。ATP3011とATP3012とでは挿入する穴が異なります。基板上のシルク印刷に従ってピンを挿入しハンダ付けします。モジュール基板裏面から飛び出しているピンを短く切ってください。
左: ATP3011, 右: ATP3012
ICソケットを使用すると、プロトモジュールのモールドには収まらなくなります。収まらなくなることを承知の上で1列タイプのICソケットを使用するとATP3011とATP3012を差し換えることができます。モジュール基板裏面からのピンの飛び出しの対処も大変になります。
プロトモジュールのモールドおよびネジ4本(別売)を流用して、M5StackのM-BUSモジュールに仕立てることができます。モールドを基板に取り付ける前に、ボリュームやスピーカー出力コネクタの部分をモールドから切り取ります。
左側: ATP3011を搭載、GPIO25, 35に接続するためJP8, JP5をショート(基板V4)
右側: ATP3012を搭載、GPIO35に接続するためJP6をショート、J5にスピーカを接続(基板V4)
参考:写真のスピーカーは以下を両面テープで固定しています。ATP3012の場合かろうじて収まります。上に重ねるモジュールやボトムによっては収まりません。
(秋月電子通商扱い)
マイクロスピーカー 赤/黒リード付 8Ω
マイクロスピーカー 青/白リード付 8Ω
M-BUSのGPIO25は、M5Stack内部のオーディオアンプを通して内蔵スピーカーに繋がっています。AquesTalk pico LSIからの音声出力をGPIO25に入力すれば、内蔵スピーカーから音声を出すことができます。ボリューム(VR)の出力を用いることで音量調節が可能です。以下の写真は、ATP3011を載せたモジュールにおいてGPIO25とボリューム出力を導線で接続した例です。ATP3012の場合は、ボリューム出力は1つ左側のピンです。基板V4のJP8, JP9はこれらの導線を埋め込んだものです。M5Stack自身がGPIO25を使わないことが前提です。Core2は内蔵スピーカーの回路構成が異なるため、この方法は使えません。
VR: Variable Resistor
J2は、ICSPです。コネクタ等は実装していません。使用にはピンヘッダをハンダ付けするなどの処置が必要です。ICSPのVCCはAquesTalk pico LSIの電源端子に繋がっているほか、M-BUSの3.3Vにも繋がっています。ICSPは、モジュール基板をM5Stackから切り離し、単体にして接続してください。
ICSP: In Circuit Serial Programming
J3は、スタンドアロンモードで使用するPC0-3およびGNDの端子です。コネクタ等は実装していません。使用には信号ケーブルを直接ハンダ付けするなどの処置が必要です。
M5Stack用 AquesTalk pico LSIモジュールをM-Busエクステンションに載せ、ダイオードマトリクススイッチ16基板を接続しています。M5Stackの電源とリセットを使用しています。
(スイッチサイエンス扱い)M-Busエクステンション基板キット
(スイッチサイエンス扱い)ダイオードマトリクススイッチ16基板
動作モードおよび使用するインタフェース(通信モード)に合わせて、モジュール基板上のDIPスイッチを設定します。設定にはピンセットなどが必要です。おすすめはI2C接続です。出荷時の設定は、セーフモード・I2C接続です。DIPスイッチの設定はリセット時に反映されます。AquesTalk pico LSIのリセットはM5Stackのリセットに繋がっています。
| 1 | 2 | 3 | 4 | 動作モード | 通信モード | 備考 |
|---|---|---|---|---|---|---|
| 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 | - | - | デモモード | - | プリセットメッセージを順番に自動再生 |
※ 1, 2, 3, 4は、DIPスイッチの番号。DIPスイッチはON=GNDのため、ON=0, OFF=1です。
(*1) ATP3011の場合、SLEEP解除後の'?'送信で自動設定します。ATP3012の場合EEPROMに設定します。
モジュール基板裏面のジャンパJP1-JP9をハンダで短絡(クローズ)することにより、GPIOとAquesTalk pico LSIの信号ピンを接続できます。
| ジャンパ | GPIO(Core1) | GPIO(Core2) | AquesTalk pico LSI | 出荷時 |
|---|---|---|---|---|
| JP1 | 16 | 13 | UART-TX | オープン |
| JP2 | 19 | 38 | SPI-MISO | オープン |
| JP3 | 5 | 33 | SPI-SS | オープン |
| JP4 | 13 | 19 | SLEEP | オープン |
| JP5 | 35 | 35 | Analog Out of ATP3011 | オープン |
| JP6 | 35 | 35 | Analog Out of ATP3012 | オープン |
| JP7 | GND | GND | Shut Down of Power Amplifier | クローズ |
| JP8 | 25 | 25 | Analog VR Out of ATP3011 | オープン |
| JP9 | 25 | 25 | Analog VR Out of ATP3012 | オープン |
使用するインタフェースに合わせてJP1, JP2, JP3をハンダで短絡(クローズ)します。I2Cの場合はJP1, JP2, JP3を全てオープンのままで使用できます。他の用途に影響がなければJP1, JP2, JP3を短絡(クローズ)することで全てのインタフェースを使用可能です。出荷時はオープンです。
| インタフェース | JP1 | JP2 | JP3 | AquestTalk pico LSIピン=GPIO(Core1) | AquestTalk pico LSIピン=GPIO(Core1) |
|---|---|---|---|---|---|
| I2C | - | - | - | SDA=21, SCL=22 | SDA=21, SCL=22 |
| UART | クローズ | - | - | TX=16, RX=17 | TX=13, RX=14 |
| SPI | - | クローズ | クローズ | SCK=18, MISO=19, MOSI=23, SS = 5 | SCK=18, MISO=38, MOSI=23, SS = 33 |
SDA: Serial DAta
SCL: Serial CLock
RX: Receive
TX: Transmit
MISO: Master In Slave Out
MOSI: Master Out Slave In
SCK: Serial ClocK
SS: Slave Select
AquesTalk pico LSIのSLEEPピンをGPIO13(Core2ではGPIO19)に接続できます。SLEEP=LowでAquesTalk pico LSIがスリープ状態になります。ATP3011のUART接続において9600bpsより速い速度が必要な場合、「セーフモード」ではなく「コマンド入力モード」に設定し、速度設定のためにSLEEPを使用します。出荷時はオープンです。
AquesTalk pico LSIの音声出力をGPIO35経由でM5Stackに取り込むことができます。ATP3011の場合はJP5を、ATP3012の場合はJP6をハンダで短絡(クローズ)します。出荷時はオープンです。
JP7がクローズ(短絡)の場合、パワーアンプのシャットダウン(SD: Shut Down)信号をGNDに接続しパワーアンプを常に動作状態とします。JP7のハンダを取り除く(オープン)にすると、AquesTalk pico LSIのPLAY信号(負極性)がシャットダウン信号となり、パワーアンプの消費電力を減らすことができます。この設定では音声再生の前後でノイズが発生します。出荷時はクローズ(短絡)です。
AquesTalk pico LSIの音声出力をボリューム調節後にGPIO25経由でM5Stack内蔵アンプ・スピーカーに接続することができます。ATP3011の場合はJP8を、ATP3012の場合はJP9をハンダで短絡(クローズ)します。出荷時はオープンです。
AquesTalk pico LSIをM5Stackに接続し、I2C(Wire), UART(Serial), SPIで動作させるプログラムです。デモの内容は同じです。Arduino-IDE環境で使用します。モジュール基板の設定を予め使用するインタフェースに合わせておく必要があります。
AqeusTalk pico LSIをI2Cで動作させるサンプルプログラムです。
AqeusTalk pico LSIをUARTで動作させるサンプルプログラムです。
AqeusTalk pico LSIをSPIで動作させるサンプルプログラムです。
Core2にモジュールを装着して、AqeusTalk pico LSIをI2Cで動作させるサンプルプログラムです。M5Stack Core1との違いは以下です
ボタンを押すと、ソースコードの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から連続して発生 |
SLEEP ピンをHighにする(デフォルト: 実行する)
JP4をクローズ(短絡)すると、GPIO13(Core2ではGPIO19)とAquesTalk pico LSIのSLEEPピンとが接続します。SLEEPをHIGHにしてSLEEPでない状態にします。
UARTスピードを設定(ATP3011が対象。UARTのみ。デフォルト: 実行しない)
AquesTalk pico LSI (ATP3011) のUARTスピードを設定します。GPIO13(Core2ではGPIO19)が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を指定します。
M5StackのLCDに日付・時刻を表示する置時計のデモです。
WiFi動作中に発声すると電圧低下を検出してリブートすることがあります。
| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | 100n | bf:BF@C_0603_1608Metric | C1, C2, C5, C12 |
| 4 | 10k | bf:BF@R_0603_1608Metric | R2, R3, R11, R12 |
| 4 | MountingHole | bf:BF@MountingHole_3.2mm_M3 | H1, H2, H3, H4 |
| 4 | MountingHole | bf:BF@MountingHole_2.2mm_M2 | H5, H6, H7, H8 |
| 2 | 10p | bf:BF@C_0603_1608Metric | C3, C4 |
| 2 | 2.2k | bf:BF@R_0603_1608Metric | R4, R6 |
| 2 | 22k | bf:BF@R_0603_1608Metric | R8, R9 |
| 2 | 33n | bf:BF@C_0603_1608Metric | C8, C9 |
| 2 | DTC143Z | Package_TO_SOT_SMD:SOT-23 | Q1, Q2 |
| 1 | 10kA | bf:BF@RK10J | RV1 |
| 1 | 10n | bf:BF@C_0603_1608Metric | C7 |
| 1 | 16MHz | Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm | Y1 |
| 1 | 1M | bf:BF@R_0603_1608Metric | R1 |
| 1 | 1u | bf:BF@C_0603_1608Metric | C10 |
| 1 | 22n | bf:BF@C_0603_1608Metric | C6 |
| 1 | 22u | Capacitor_SMD:C_1206_3216Metric | C11 |
| 1 | 3.3k | bf:BF@R_0603_1608Metric | R7 |
| 1 | 470 | bf:BF@R_0603_1608Metric | R5 |
| 1 | 68k | bf:BF@R_0603_1608Metric | R10 |
| 1 | AOUT3011 | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP5 |
| 1 | AOUT3012 | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP6 |
| 1 | ATP3011 | Package_DIP:DIP-28_W7.62mm | U1 |
| 1 | ATP3012 | Package_DIP:DIP-28_W7.62mm | U2 |
| 1 | BUSY | bf:BF@LED_0603_1608Metric | D1 |
| 1 | ICSP | Connector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_Vertical | J2 |
| 1 | LM4871 | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U3 |
| 1 | LOGO | bf:BF@logo3 | G*** |
| 1 | M-BUS | bf:BF@M5Stack_MBUS | J1 |
| 1 | MISO | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP2 |
| 1 | MODE | Button_Switch_SMD:SW_DIP_SPSTx04_Slide_KingTek_DSHP04TS_W7.62mm_P1.27mm | SW1 |
| 1 | PRESET | Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_Vertical | J3 |
| 1 | SD_DISABLE | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP7 |
| 1 | SLEEP | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP4 |
| 1 | SPKR | Connector_JST:JST_PH_S2B-PH-K_1x02_P2.00mm_Horizontal | J4 |
| 1 | SPKR | Connector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_Vertical | J5 |
| 1 | SS | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP3 |
| 1 | TXD | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP1 |
| 1 | VROUT3011 | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP8 |
| 1 | VROUT3012 | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP9 |

botanicfields/PCB-Grove-AquesTalk-pico-LSI
AquesTalk pico LSI into the Grove of M5




generationmake/ArduTrxShield
ArduTrx - Open Source Hamradio Transceiver for Arduino

lbauchwitz/ESP32_nano_uhf_radio
GPL Diagram, Kicad Sources and Gerber files for a super small 430 Mhz UHF Radio module


It measures 50 × 50 mm and has 2 copper layers, 1.6 mm thick.
56 parts, built around the LM4871 and DTC143Z. 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.
From the botanicfields/PCB-MBUS-AquesTalk-pico-LSI repository on GitHub, at the commit this page was made from: the board is KiCad/V04L02/bf-034.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
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).