2014/03/29からのアクセス回数 19545 音声合成モジュール †秋月から販売されている 音声合成モジュールATP3011F4-PU をATMegaボードに差して、動作を確認してみました。 ちょっと乱暴ですが、圧電スピーカを以下の様に接続しました。
Arduino IDEを起動し、シリアルモニターを起動します。 改行の設定を「CRおよびLF」にし、ボーレートは9600 baudとします。 最初に、?を入力して音声合成モジュールにボーレートを調整させます。 この時">>"と返ってきます。 次に発生させたい言葉をローマ字で入力します。 「ohayou」 と入力すると、それっぽくスピーカら音声が出力され、シリアルモニターには、 "*>"と返ってきます。 音声合成モジュールの使い方 †音声合成モジュールの使い方は、 音声合成LSI(ATP3011F4-PU)を使ってみます に詳しく紹介されています。 音声合成モジュールのピン配置を上記サイトの図を引用して説明します。 動作モード †音声合成モジュールには、4つの動作モードがあります。モードの設定は、PMOD0, PMOD1で行います。 未接続の場合には、セーフモードになっているみたいです。
上記サイトのブレッドボードの配線を参考にデモモードを試してみました。 シリアル通信の指定 †シリアル通信には、UART(9600bau)、I2C, SPIを使用できます。使用するシリアル通信は、SMOD0, SMOD1で設定します。 未接続の場合には、UARTが選択されるみたいです。
秋月のATMegaボードを使う †初心者にお薦めなのが、秋月のATMegaボードを使う方法です。ブレッドボードで何本も結線すると間違いも多くなります。 今回使用する部品は、以下の7点です。*1
組み立てると以下の様になります。*2 音声合成モジュールを載せて動かしてみる †音声合成モジュールを載せて、動かしてみます。 シリアルモジュールと使って音声合成モジュールを接続します。 シリアルモジュールのピンは、右から以下のようになっています。
シリアルモジュールとATMegaボードの接続は、以下の様につなぎます。
スピーカーとの接続は、以下の様にします。
動作確認 †シリアルモニターを9600bauにセットして開きます。以下のように?を入力し、リターンキーを押すと
? >> つぎに好きな言葉をローマ字で入力してみましょう。ohayouと入力すると「おはよう」としゃべります。 ohayou 応答 *> Arduinoとの接続 †Arduinoと接続して、パソコンからローマ字を入力する場合には、音声合成モジュールを以下の様に設定します。
さらに音声合成モジュールとArduino(Arduinoは単に電源供給とPCとの接続に使う)との接続は、以下の様にします。
音声メニューに挑戦 †今度は、Arduinoから音声合成モジュールにじゃべらせてみます。 Arduinoから音声モジュールにしゃべらせたいローマ字を出力するには、Serial.println関数を使います。 今回は、複数のボタンを使う代わりにつまみの大きな可変抵抗を使います。 ArduinoのA0を可変抵抗の真ん中のピンにセットし、両端をGNDと5Vに接続します。 音声モジュールとArduinoの接続を先ほどは、逆につなぎ替えます。
スケッチは、以下の様にします。 int led = 13; int tumami = A0; int sentaku = -1; void setup() { Serial.begin(9600); pinMode(led, OUTPUT); mainMenu(); } void mainMenu() { Serial.println("meinmenyudesu"); delay(2000); Serial.println("eruediwo tenntousurubaaiha ichiwo"); delay(4000); Serial.println("eruediwo syoutousurubaaiha niwo"); delay(4000); Serial.println("mouichido menyuwo kikubaaiha sya-puwo"); delay(4000); Serial.println("oshitekudasai"); } void loop() { sentaku = map(analogRead(tumami), 0, 1023, 0, 3); switch (sentaku) { case 0: digitalWrite(led, HIGH); break; case 1: digitalWrite(led, LOW); break; case 2: default: mainMenu(); } delay(1000); } つまみを変えるとLEDを点灯したり、消灯したり、音声メニューをしゃべらせたりできます。 ATMegaボードとArduino Pro Miniボードの接続 †ブレッドボードで音声合成モジュールの設定が確認できましたので、 ATMegaボードとArduino Pro Miniボードをつないで、音声メニューを作ってみましょう。 ブレッドボードと音声合成モジュールの接続は、以下の様にします。
接続したら、こんな感じです。これで音声メニューのスケッチを動かしてみて下さい。 音声温度計 †次に、可変抵抗の代わりに温度センサーLM35DZを接続して、温度をしゃべる「音声温度計」を作ってみましょう。 LM35DZのピンを底からみたピンの配置をデータシートから引用します。 LM35DZのラベルを見て、左のピンが5Vになるようにブレッドボードに差します。 以下のスケッチを使ってLM35DZの電圧から温度を読み上げるようにします。 int lm32 = A0; void setup() { Serial.begin(9600); Serial.println("onsei ondokeide_su"); delay(2000); } void loop() { float t = (float)analogRead(lm32)/1023*500.0; Serial.print("imano onndowa <NUMK VAL="); Serial.print(t, 1); Serial.println(">dode_su"); delay(3000); } 温度の部分を以下の様にすることで、数字を正しく読み上げます。 <NUMK VAL=温度> コメント †皆様のご意見、ご希望をお待ちしております。勉強会で分からなかったこと等、お気軽に問い合わせて下さい。 スパム防止に画像の文字列も入力してください。
Tweet |