N.Yamazaki's blog

主に音声合成について思ったことを書いてみようと思います。
<< テスターMAS-345の通信仕様 | main | [AquesTalk pico LSI] UARTボーレート設定の注意点 >>
音声テスターを作ってみた(その2 ソフト編)
音声テスターを作ってみた(その1 ハード編)のつづきです。
制御用マイコン(ATmega328P)にファームウェアを書き込んで動作させるまでの内容です。


Arduino UnoとAVRISP mkII

開発環境

必要なもの
統合開発環境は、ArduinoIDEでも作れますが、消費電力を下げるために動作クロックを1MHzにしたかったので、AVR Studio5.0で開発しました(Arduino環境ではフューズ設定を変えられない)。
ATmega328Pへのファーム書き込みは、上記写真にあるようなAVRISP mkIIとArduino Unoの組み合わせを使いました。この組み合わせはUSBで電源もとれるので便利です。
あと、何か動作に問題があった時用にオシロスコープはあったほうが良いです。というか無いとトラブルの解決は厳しいかと...

プログラム
TalkingTester.c  ←ダウンロードできます。

main()
起動音の出力後、約1秒間隔でテスターから値を取得して(72行)、AquesTalk Pico LSIに転送します(83行)。なお、前回と同じ値の場合は読み上げしません(82行)。また、テスターの応答がないなど何らかのエラーの場合は、パワーダウンします(89行)。

my_delay()
約1秒のディレイルーチンです。省電力化のためにウォッチドッグタイマーを利用してスリープ状態で待機します。

Init()
初期化ルーチンでは、UART、I2Cの周辺回路のパラメータを設定しています。

GetData()
テスターから測定値を読み込みます。任意の1バイトとして'¥r'をテスターに向けて送信します(158行)。その後、'¥r'が来るまでのバイト列を読み込みます(161行)。

Str2Cmd()
テスターの応答を、AquesTalk pico 用の音声記号列に変換しています。数値部分はNUMKタグを利用して数値を桁読みさせます(217行)。その後、単位を付与します(227行)。
なお、計測値がマイナスの時は先頭に"mainasu/"をつけます(214行)。例えば、"DC  3.306   V"という応答の場合には、"<NUMK VAL=3.306>bo'ruto" という文字列を生成します。

Speak()
音声記号列をAquesTalk picoに送信します。制御用マイコンとAquesTalk pico との通信にはI2Cを用います。送信に先立ち、Ready状態を示す'>'が返るかチェックし(251行)、'>'が返るのを確認してから、音声記号列を送信します(256行)。


ファームの書き込み
  1. Arduino UnoのAVRマイコンを今回ファームを書き込むマイコン差し替えます。
  2. Arduino Unoに、USBを接続して電源を供給(USBは、データ転送には使いません)。
  3. Arduino Unoに、AVRISP mkII を接続。
  4. プログラムをビルドして生成したHEXファイルをAVR Studioの"AVR Programming"で書き込み。
  5. フューズバイトを、次のように書き込み(内蔵RCクロック8MHz、8分周)。EXTENDED = 0xFF、HIGH = 0xD7、LOW = 0x62
  6. ファームを書き込んだAVRマイコンを音声テスターの基板に差し替えれば、完成!
          AVR studioの使い方や、細かい書き込み方法については割愛。


動作チェック
  1. テスターに接続しない状態で、電源(3V)を供給します。
  2. 「ポン! テスターの応答なし」と聞こえればOK。
  3. その後、テスターと接続し、テスターの電源をONにして
  4. 音声テスター基板のリセットボタンを押せば、順次測定値が読み上げられます。

音声テスター基板

ファームのプログラムを変更すれば、読み上げ間隔や、読み上げ条件(今回は前回と同じ値の場合は読みあげないようにした)、メッセージの内容などを好きなようにカスタマイズできますね。


LINK

  音声テスターを作ってみた(その1 ハード編)
  テスターMAS-345の通信仕様
  紹介動画 音声テスター youtube   ニコ動
  AquesTalk pico LSI ATP3011F4-PU

| 電子工作 | 16:20 | - | - |
PROFILE
Follow
CATEGORIES
LATEST ENTRIES
SEARCH THIS SITE
RECOMMEND
RECOMMEND
RECOMMEND
Arduino Uno
Arduino Uno (JUGEMレビュー »)

AquesTalk pico LSIの評価ボードとして最適
RECOMMEND
Raspberry Pi Model B+ (Plus)
Raspberry Pi Model B+ (Plus) (JUGEMレビュー »)

これと AquesTalk pi で簡単にテキスト音声合成!
RECOMMEND
RECOMMEND
RECOMMEND
SONY MDR-CD900ST
SONY MDR-CD900ST (JUGEMレビュー »)

普段これで開発しています。
RECOMMEND
RECOMMEND
RECOMMEND