「ものづくり:make」を楽しみながら学ぶ人へ向けた独習サポートサイト。

micro:bit Lab.【マイクロビット】

micro:bit Lab.では、micro:bit【マイクロビット】に関する情報を紹介しています。

音声合成LSIで声を手に入れた!
3-5

おしゃべりマイクロビット

2018-03-122018-03-12

株式会社アクエストの音声合成LSI「ATP3012」を使って、micro:bitがおしゃべりします。

3-5-1.ATP3012とは

ATP3012は、株式会社アクエストが提供する音声合成LSIで、同社が研究開発した音声合成エンジン「AquesTalk pico」を、マイクロコントローラATmega328(またはATmega328P)に組み込んだものです。

図3-5-1-1.音声合成LSI「ATP3012」
図3-5-1-1.音声合成LSI「ATP3012」

シリアルインターフェースを介して、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級アンプ(データーシートに記載のもの)

この条件に合うように部品をそろえます。

表3-5-2-1.用意するもの(仕様・定格など)
品名 数量 仕様・定格など
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-2-1.プロトタイピングセット(KITRONIK-5609)
図3-5-2-1.プロトタイピングセット(KITRONIK-5609)

プロトタイピングセットには、必要なジャンプワイヤーが付いてきます。

図3-5-2-2.プロトタイピングセット(KITRONIK-5609)のジャンプワイヤー
図3-5-2-2.プロトタイピングセット(KITRONIK-5609)のジャンプワイヤー

BBC micro:bit用プロトタイピングセット

ブレッドボードを使用することで、ハンダ付けなしで電子回路の実験が簡単にできます。

3-5-3.作る前に

micro:bitに何かプログラムが入っていると、想定外の動きをするかもしれません。「何もしない」プログラムをダウンロードして、micro:bitに送っておきましょう。

3-5-4.作り方

では、早速作ってみましょう。まず、部品がすべて揃っていることを確認したら、プロトタイピングセットのブレッドボードが手前になるように置きます。このブレッドボードの中央にATP3012を配置して、ジャンプワイヤーで配線します。ジャンプワイヤーはどんな色でもかまいません。図3-5-4-1では、同じ色のジャンプワイヤーが同じ長さを示しています。

図3-5-4-1.作り方(1)
図3-5-4-1.作り方(1)

セラミック発振子・セラミックコンデンサー・抵抗器・トランジスター・スピーカーを配置します。トランジスターには向きがあるので注意します。図3-5-4-2では、青色の二本足がセラミックコンデンサー・茶色の三本足がセラミック発振子です。

図3-5-4-2.作り方(2)
図3-5-4-2.作り方(2)

最後に、micro:bitの3V・GND・P0端子と結線します。

図3-5-4-3.作り方(3)
図3-5-4-3.作り方(3)

もう一度、回路に間違いがないか確認しましょう。

図3-5-4-4.完成したしゃべるマイクロビット
図3-5-4-4.完成したしゃべるマイクロビット

3-5-5.プログラミング(ブロック)

「マイクロビットいきま~す。」としゃべるサンプルプログラムです。

最初だけ実行されるプログラム

図3-5-5-1.最初だけ実行されるプログラム
図3-5-5-1.最初だけ実行されるプログラム

3-5-6.プログラミング(Javascript)

Javascript(テキスト)のサンプルプログラムです。

3-5-7.動かしてみよう

プログラムが完成したら動かしてみましょう。スピーカーから音声が聞こえれば成功です。

3-5-8.回路の解説

回路の解説です。

回路図とピン機能

図3-5-8-1は、ATP3012のデーターシートを元にして作成したおしゃべりマイクロビットの回路図です。

図3-5-8-1.回路図
図3-5-8-1.おしゃべりマイクロビットの回路図

表3-5-8-1は、ATP3012のピン機能を示したものです。接続欄に「○」印が付いたピンは、おしゃべりマイクロビットの回路で使用しているものです。なお、I/O欄に「*」印が付いたピンは、内部でプルアップされています。

表3-5-8-1.ATP3012のピン機能
接続 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となります。

表3-5-8-2.動作クロック
クロックモード 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となりますが、内部でプルアップされているため未接続のままとします。

表3-5-8-3.通信モード
通信モード 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となりますが、内部でプルアップされているため未接続のままとします。

表3-5-8-4.動作モード
動作モード 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のエッジコネクターをピンヘッダーに変換するエッジコネクターピッチ変換基板と、ブレッドボードが一つになった製品です。付属のジャンパーワイヤーを使用することで、手軽に回路の実験ができます。

BBC micro:bit用プロトタイピングセット

ブレッドボードを使用することで、ハンダ付けなしで電子回路の実験が簡単にできます。

この記事を読んだ人は、こんな記事にも興味があります。
スポンサーリンク
TOPへ移動
目次へ移動