おしゃべりマイクロビット
株式会社アクエストの音声合成LSI「ATP3012」を使って、micro:bitがおしゃべりします。
3-5-1.ATP3012とは
ATP3012は、株式会社アクエストが提供する音声合成LSIで、同社が研究開発した音声合成エンジン「AquesTalk pico」を、マイクロコントローラATmega328(またはATmega328P)に組み込んだものです。
シリアルインターフェースを介して、micro:bitからATP3012へローマ字表記の文章を転送することで、任意の音声メッセージを出力することができます。また、あらかじめ15種類のメッセージを本体内に登録しておくことで、4つの端子のレベル変化(プッシュスイッチなどの操作)に合わせて読み上げることができます。出力される音声は、LSIの型番によって異なり、女声(明瞭版)・小型ロボット声・落ち着いた女声などがあります。音声は、外部のオーディオアンプを通して、スピーカーなどで再生します。
シリアルインターフェースには、UART(Universal Asynchronous Receiver/Transmitter)・I2C(Inter-Integrated Circuit)・SPI(Serial Peripheral Interface)の3種類がサポートされています。
ATP3012の動作電圧は動作クロックによって異なり、10MHz時で2.7V~5.5V、16MHz時で3.1V~5.5Vとなっています。動作クロックは、外付けのクロック用セラミック発振子によって決められます。
詳しい情報は、株式会社アクエストのウェブページで提供されています。音声合成LSI「AquesTalk pico LSI」にデーターシートがあるので参照してください。
3-5-2.用意するもの
ATP3012を使用するにあたり、あらかじめ動作電圧や動作クロックなどの条件を決めます。おしゃべりマイクロビットでは、次のように決定しました。
- 動作電圧:3.3V(micro:bitから給電)
- 動作クロック:16MHz(電源電圧3.1V~5.5V)
- 音声:小型ロボット声
- シリアルインターフェース:UART
- パッケージ:28ピン DIP版
- オーディオアンプ:簡易版D級アンプ(データーシートに記載のもの)
この条件に合うように部品をそろえます。
品名 | 数量 | 仕様・定格など |
---|---|---|
micro:bit本体 | 1 | |
プロトタイピングセット | 1 | KITRONIK-5609 |
音声合成LSI | 1 | ATP3012R5-PU(株式会社アクエスト) 直販、または秋月電子通商(通販コード:I-11517)にて購入可能 |
セラミック発振子(セラロック) | 1 | 16MHz相当品 秋月電子通商(通販コード:P-00525)にて購入可能 |
セラミックコンデンサー | 1 | 静電容量1μF・耐圧50V・足ピッチ5mm相当品 秋月電子通商(通販コード:P-08150)にて購入可能 |
抵抗器 | 1 | カーボン抵抗、4.7kΩ(黄紫赤金)、1/2W(または1/4W) |
トランジスター | 1 | 2SC1815相当品 秋月電子通商(通販コード:I-00881)にて購入可能 |
スピーカー | 1 | インピーダンス8Ω相当品 秋月電子通商(通販コード:P-06275)にて購入可能 |
ジャンプワイヤー(オス-メス) | 4 | KITRONIK-5609に付属のもの |
ジャンプワイヤー(オス-オス) | 適量 | 秋月電子通商(通販コード:P-00288)にて購入可能 |
プロトタイピングセットとは、ブレッドボードとmicro:bitのエッジコネクターをピンヘッダーに変換する基板が一つになった製品で、micro:bitを使った電子工作がハンダ付けなしで簡単に始められます。
プロトタイピングセットには、必要なジャンプワイヤーが付いてきます。
3-5-3.作る前に
micro:bitに何かプログラムが入っていると、想定外の動きをするかもしれません。「何もしない」プログラムをダウンロードして、micro:bitに送っておきましょう。
3-5-4.作り方
では、早速作ってみましょう。まず、部品がすべて揃っていることを確認したら、プロトタイピングセットのブレッドボードが手前になるように置きます。このブレッドボードの中央にATP3012を配置して、ジャンプワイヤーで配線します。ジャンプワイヤーはどんな色でもかまいません。図3-5-4-1では、同じ色のジャンプワイヤーが同じ長さを示しています。
セラミック発振子・セラミックコンデンサー・抵抗器・トランジスター・スピーカーを配置します。トランジスターには向きがあるので注意します。図3-5-4-2では、青色の二本足がセラミックコンデンサー・茶色の三本足がセラミック発振子です。
最後に、micro:bitの3V・GND・P0端子と結線します。
もう一度、回路に間違いがないか確認しましょう。
3-5-5.プログラミング(ブロック)
「マイクロビットいきま~す。」としゃべるサンプルプログラムです。
最初だけ実行されるプログラム
3-5-6.プログラミング(Javascript)
Javascript(テキスト)のサンプルプログラムです。
3-5-7.動かしてみよう
プログラムが完成したら動かしてみましょう。スピーカーから音声が聞こえれば成功です。
3-5-8.回路の解説
回路の解説です。
回路図とピン機能
図3-5-8-1は、ATP3012のデーターシートを元にして作成したおしゃべりマイクロビットの回路図です。
表3-5-8-1は、ATP3012のピン機能を示したものです。接続欄に「○」印が付いたピンは、おしゃべりマイクロビットの回路で使用しているものです。なお、I/O欄に「*」印が付いたピンは、内部でプルアップされています。
接続 | No | 端子名 | I/O | 説明 |
---|---|---|---|---|
1 | /RESET | I* | Lowでリセット | |
○ | 2 | RXD | I | UART(受信) |
3 | TXD | O | UART(送信) | |
4 | SMOD0 | I* | 通信モードの選択用 | |
5 | SMOD1 | I* | 通信モードの選択用 | |
6 | /SLEEP | I | スリープ状態にする | |
○ | 7 | VCC | - | 電源 |
○ | 8 | GND | - | GND |
○ | 9 | XTAL1 | I | 10MHz・16MHzのクリスタル・セラミック発振子の接続用 |
○ | 10 | XTAL2 | I | 10MHz・16MHzのクリスタル・セラミック発振子の接続用 |
○ | 11 | CLK16 | I* | 動作クロックの切り替え(10MHz・16MHz) |
12 | PMOD1 | I* | 動作モードの選択用 | |
13 | /PLAY | O | 発声ステータス(発生中はLow) | |
14 | PMOD0 | I* | 動作モードの選択用 | |
○ | 15 | AOUT | O | 音声出力端子 |
16 | /SS | I* | SPI(Slave Select) | |
17 | MOSI | I | SPI(Master Out Slave In) | |
18 | MISO | O | SPI(Master In Slave Out) | |
19 | SCK | I | SPI(Serial Clock) | |
○ | 20 | VCC | ー | 電源 |
21 | I.C | ー | 未使用 | |
○ | 22 | GND | ー | GND |
23 | PC0 | I* | プリセットメッセージの選択用 | |
24 | PC1 | I* | プリセットメッセージの選択用 | |
25 | PC2 | I* | プリセットメッセージの選択用 | |
26 | PC3 | I* | プリセットメッセージの選択用 | |
27 | SDA | I/O | I2C(Serial Data) | |
28 | SCL | I | I2C(Serial Clock) |
動作クロック
動作クロックは、CLK16(11)の設定とXTAL1(9)・XTAL2(10)に接続する発振子によって決まります。おしゃべりマイクロビットでは、16MHzモードを使用するので、CLK16(11)をHigh、XTAL1(9)・XTAL2(10)に16MHzのセラミック発振子を接続します。16MHzモードでは、動作電圧が3.1V~5.5Vとなります。
クロックモード | CLK16 | XTAL1/XTAL2 | 動作電圧 | PWM搬送波 |
---|---|---|---|---|
16MHzモード | 1 | 16MHz | 3.1V~5.5V | 30KHz |
10MHzモード | 0 | 10MHz | 2.7V~5.5V | 20KHz |
通信モード
通信モードは、SMOD0(4)・SMOD1(5)の設定によって決まります。おしゃべりマイクロビットでは、UARTを使用するので、SMOD0(4)・SMOD1(5)のいずれもHighとなりますが、内部でプルアップされているため未接続のままとします。
通信モード | SMOD0 | SMOD1 |
---|---|---|
UART | 1 | 1 |
I2C | 1 | 0 |
SPI(MODE3) | 0 | 1 |
SPI(MODE0) | 0 | 0 |
UARTのボーレートは、内部のEEPROMに書き込むことで設定できます。設定できる値は、2,400bps~115,200bps、初期値は9,600bpsです。おしゃべりマイクロビットでは、初期値のまま使用します。データーフォーマットは、8ビット・1ストップビット・ノンパリティです。
UARTの送受信に使用するピンは、受信用がRDX(2)、送信用がTDX(3)です。おしゃべりマイクロビットでは、受信用のみ使用します。
動作モード
動作モードは、PMOD0(14)・PMOD1(12)の設定によって決まります。おしゃべりマイクロビットでは、コマンド入力モードを使用するので、PMOD0(14)・PMOD1(12)のいずれもHighとなりますが、内部でプルアップされているため未接続のままとします。
動作モード | PMOD0 | PMOD1 | 説明 |
---|---|---|---|
コマンド入力モード | 1 | 1 | 基本モード。シリアル通信で任意の音声メッセージを出力する。 |
セーフモード | 1 | 0 | EEPROMの設定に関わらず、UARTのボーレートが9,600bps、I2Cのアドレスが2Ehとなる。 |
スタンドアローン | 0 | 1 | プリセットメッセージをPC0(23)~PC3(26)の状態で出力する。 |
デモモード | 0 | 0 | すべてのプリセットメッセージを繰り返し出力する。 |
電源とGND
電源とGNDは、各々2ピンずつあります。VCC(7・20)をブレッドボードのプラス(+)、GND(8・22)をマイナス(-)に接続します。
音声出力
音声出力は、AOUT(15)を使用します。出力されるPWM信号をトランジスターで増幅して、スピーカーを駆動します。データーシートに記載されている簡易版D級アンプです。
3-5-9.プログラムの解説
プログラムの解説です。
通信の設定
最初に、送信端子P0と通信速度9,600bpsを指定します。その後、ATP3012の電源投入直後の状態が安定するまで余裕を持って1,000ミリ秒待ちます。なお、この値はデーターシート上のものではありません。データーシート上では、リセット直後のスタートアップタイムが65ミリ秒、80ミリ秒以上待ってから操作するように記載されています。
音声の出力
音声の出力は、micro:bitからATP3012へローマ字をベースとした「音声記号列」と末尾にCR(改行コード)を合わせて送信することで行います。最大長は127バイトです。プログラムでは「シリアル通信 1行書き出す」ブロックを使います。
では、サンプルプログラムの音声記号列を見てみましょう。ローマ字のほかに記号が含まれていることに気がつきます。
「'」はアクセント記号です。アクセントを付加する文字の直後に記述します。「ma」と「bi」にアクセントを付加しています。
「(空白)」は区切記号です。この区切り記号は、息継ぎを表します。一般に次の音が高くなります。 最後の「.」も区切記号の一つです。この部分に無音区間(ポーズ)が入ります。
「_」は無声化を表します。直後の文字が声帯の振動を伴わずに発生される音となります。「su」が無声化されます。
「xtu」は「っ」です。
このように、音声記号列には読み記号(ローマ字)の他に、アクセント記号・区切記号・タブ記号などがあります。これらの記号をうまく使うことで、よりリアルな音声となります。なお、記号には、ここで紹介したもの以外にも多くあります。詳しくはデーターシートを参照してください。
micro:bit関連のおすすめ品
micro:bitのエッジコネクターをピンヘッダーに変換するエッジコネクターピッチ変換基板と、ブレッドボードが一つになった製品です。付属のジャンパーワイヤーを使用することで、手軽に回路の実験ができます。