FC2ブログ

名張市つつじが丘おもちゃ病院

三重県名張市つつじが丘でおもちゃの病院を開院しています。年中無休で修理は無料、部品代のみ実費です。おもちゃの修理依頼は tutuji@cb4.so-net.ne.jp へメールにてご連絡下さい。なお、宅配便での受け付けは行っておりません。このブログにはおもちゃ等の修理事例やツール製作などを載せていきます。故障診断や修理方法の改善等、ご意見をお寄せ下さい。

ミミクリーペット系おもちゃの基板換装用の完成基板の頒布(飯塚こわれたおもちゃの相談所)

ミミクリーペット系おもちゃの基板換装用の完成基板の頒布を始めた。
ミミクリーペット系おもちゃの基板換装用の完成基板の頒布(飯塚こわれたおもちゃの相談所)基板外観

と言っても、それは「つつじが丘おもちゃ病院」(当院)ではない。当院ではファームウェアを無償で提供しているだけで、ファームウェア書き込み済みマイコンや換装用の基板の頒布は行っていない。頒布を始めたのは 飯塚こわれたおもちゃの相談所 さんだ。上記の画像は飯塚こわれたおもちゃの相談所さんのブログ記事から転載したもの。

換装用基板の仕様や頒布の条件については、飯塚こわれたおもちゃの相談所さんのブログ記事 「オウム返し おもちゃ」修理用マイコン基板の頒布 を参照。
スポンサーサイト



  1. 2019/06/17(月) 09:10:31|
  2. 音声再生・録音再生
  3. | コメント:0

ミミクリーペット基板換装用ファームウェア(12F1501+24C256)

ミミクリ基板換装12F1501外観
ミミクリ基板換装12F1501基板

【前振り】
ミミクリの基板を換装するのにはtiny13Aが現時点では最廉価なのだが、AVRの開発環境を持たないおもちゃドクターには利用して貰えない。そのため、12F1501用のファームウェアを公開することにした。ずっと前にもPICを使ったミミクリ換装基板を紹介しているのだが、それ以降に機能改善をしてきているので、今回改めて公開する。

【改善点】
今回は以下の改善を施している。

・ゼロクロスポイントで再生を繰り返すことで、音質を改善
・オートパワーオフ機能をサポート
・3V電源(電池2本)動作での安定性確保

【設計】
ゼロクロスポイントについては ここを 参照。

オートパワーオフを実現するためには、マイクアンプの電源を制御する必要があるが、ポート数が足りなくて、独立してポートを割り当てられない。ピン数が多いデバイスに替えればよいのだが、そうすると基板が大きくなり、修理対象のおもちゃに収納することができなくなる恐れがある。

対策として、PWM出力をモーター制御にも兼用する。音声再生中は少なくとも1ステップのPWMが出ていると見做して、モーター制御用のゲート電圧を生成する。

3V電源(電池2本)動作での安定性確保については ここを 参照。

【回路図と配線図】
ミミクリ基板換装12F1501回路図

ショットキーと放電回路は3V(乾電池2本)での運用を考慮して電源電圧の瞬低に対応したものだが、4.5Vでの運用の場合は不要だ。放電用ダイオードはVfが0.6V以下のものを選ぶ。
3V電源の場合を想定して低VgsのFETを使っているが、4.5V電源ではフツウの、より廉価なもので構わない。

ミミクリ基板換装12F1501配線図

【実装結果】
Sleep時の消費電流は13uAだった。

【ダウンロード】
設計資料と開発プロジェクトは ここから ダウロードできる。
プロジェクト名にターゲットデバイスの型番を織り込んでいる。
  1. 2019/05/17(金) 17:55:49|
  2. 音声再生・録音再生
  3. | コメント:0

ミミクリーペット基板換装用ファームウェア(tiny13A+24C256)

ミミクリ基板換装tiny13A外観
ミミクリ基板換装tiny13A基板

【前振り】
ミミクリーペットの基板を換装するためのファームウェアは、デバイスの価格変動への対応や機能改善を幾度も行ってきている。直近では 「ミミクリーペットのマイコン換装の改善(tiny13A+24C256+ECM使用)」 を公開した。しかし、その版ではオートパワーオフのインプリメントを忘れていたので、また、改版を公開することになった。

【要件】
・音声入力待ちが一定時間継続するとオートパワーオフする。
・オートパワーオフの時限は数分から数10分程度とする。

【設計】
前回の改善で、tiny13Aのプログラムメモリが残り8ワードになっていて、このままでは機能追加は難しい。今はCで書いていて、アセンブラにすると小さくなると思うが、やり直す気力がない。そのため、音声レベルの評価を一部手抜きしたり、I2CのタイミングマージンのためのNOPを取ったりして、10数ワードを空けた。

tiny13Aのタイマーは8ビットのタイマー0しか無く、それはPWMで既に使っている。WDTを使う方法もあるが、WDTを汎用タイマーとして利用するにはプログラムステップが嵩むので、メモリに余裕のない状況では避けたい。

そのため、PWM周期(正確にはADC実行周期)をベースタイマーとして、ソフトでポストスケーラを実装することにする。ポストスケーラの分周比は10進で8桁程度が必要になるので、long変数でカウントする。

・音声入力待ちに入る前に監視時限を設定しておき、音声無しの評価の都度デクリしていく。
・0になったら、省電力設定してSleepする。
・Wakeupトリガは用意しない。起動は電源の再投入とする。

【回路図と配線図】

ミミクリ基板換装tiny13A回路図
ショットキーと放電回路は3V(乾電池2本)での運用を考慮して電源電圧の瞬低に対応したものだが、4.5Vでの運用の場合は不要だ。放電用ダイオードはVfが0.6V以下のものを選ぶ。
3V電源の場合を想定して低VgsのFETを使っているが、4.5V電源ではフツウの、より廉価なもので構わない。

ミミクリ基板換装tiny13A配線図

【実装結果】
Sleep時の消費電流は0.2uAだった。

【ダウンロード】
設計資料と開発プロジェクトは ここから ダウロードできる。
プロジェクト名にターゲットデバイスの型番を織り込んでいる。
tiny85のプロジェクトはデバグ用である。tiny13Aはメモリが少なくて、デバグ行を入れるとパンクしてしまう。そのため、兄貴分のtiny85を使って実機デバグを行っている。
  1. 2019/05/17(金) 17:26:07|
  2. 音声再生・録音再生
  3. | コメント:0

ミミクリーペットのマイコン換装の改善(tiny13A+24C256+ECM使用)

【今回の改善ポイント】
前回の改善 ではスピーカーとマイクを兼用してコストを抑えたが、考えてみるとおもちゃの換装時は既存のマイクを使えばよいので、スピーカーとマイクを兼用するメリットはない。逆にスピーカーをマイク代用すると音があまりクリアではないデメリットがある。それで、今回はフツウにECMを使ったものにした。初めからそうしておけば良かった。

もう一点の改善点はファームウェアの設計条件をオプション化したこと。

・PWM出力とモーター制御出力のポートをPB0とPB1で交換可能とした。
・PWM出力の極性を正論理か負論理か変更可能とした。
・モーター制御出力の極性を正論理か負論理か変更可能とした。

設定方法
//#define PWM_PB1 //PWMをPB1へ、モーター制御をPB0へ出力するときに宣言する
//#define PWM_INV //PWMを負論理で出力するときに宣言する
//#define MTR_INV //モーター制御を負論理で出力するときに宣言する

当方が公開しているファームウェアは複製・改変・再配布はフリーで、応用ケースごとにカスタマイズして使って貰う前提で、設計資料とソースコードの全てを公開している。しかし、正論理を負論理に変えるだけのカスタマイズでも当方へ依頼が多くあり、オプション化しておくと僕も対応が楽なので、カスタマイズの依頼が多そうなものは予めオプション化している。

【全体像】
ミミクリーペット5ECM全体

【回路図と配線図】
ミミクリーペット5ECM回路図


ミミクリーペット5ECM配線図

【実装】
ミミクリーペット5ECM基板表
ミミクリーペット5ECM基板裏

【再生音】
tiny13A+24C256+ECM使用版再生音

【ダウンロード】
設計資料と開発プロジェクトは ここから ダウンロードできる。
  1. 2019/04/08(月) 20:14:01|
  2. 音声再生・録音再生
  3. | コメント:0

ミミクリーペット5(ATtiny13A+24C256でボイスレコーダー・チェンジャー換装の音質改善)の実装

ミミクリーペット5全体
ミミクリーペットのマイコン換装で音質の改善」の記事では、再生音に乗っていた再生繰返し周期のノイズを軽減する方法を試行して、改善されることを確認した。今回は、その方法を換装用のファームウェアに取り込み、動作確認した。

【回路図・配線図】

ミミクリーペット5回路図

Toyトランシーバの製作」でスピーカーをマイク代わりに使って良好だったので、これにも適用して、コストダウンを図る。但し、Toyトランシーバでは利得が不足気味だったので、ここではアンプを1段追加した。

ミミクリーペット5配線図

ピンヘッダはデバグや評価のために取り付けてあり、実際の換装用の基板には不要である。

先般製作したミミクリ換装用基板 は音声入力にECMを使っているが、ピン割り当てやADC設定などの設計条件は同じなので、今回のファームウェアは両方に共通して使える。

【実装】
24FC256を搭載
ミミクリーペット5基板表
ミミクリーペット5基板裏

AT24C256N27を搭載
ミミクリーペット5基板表2

全体像は記事先頭に掲げているが、スピーカーへの配線はノイズを拾わないように、できるだけ短くし、シールド線を使うのが望ましい。

以下の項目はファームウェアの調整値であり、動作状況によりチューニングする。

・音声有り/無しを検知する音声レベルの閾値
・録音を終了する音声無し時間
・再生終了から次の音声検知までの休み時間

電源パスコン(回路図上は330uと記載)についても、動作状況によりチューニングする。なお、今回のテスト基板には装着していない。

【動作確認】
再生音はこれ

電源電圧は2.0Vで正常動作を確認した。AT24C256N27のデータシートでは動作電圧範囲は2.7V以上となっているが、実力は1.7Vでも動作した。

【コスト】
換装基板の製作コストは以下の通り(2019年3月)。なお、ICソケットやピンヘッダなどは実際の換装では不要のため含んでいない。

ATtiny13A 50円(秋月)
AT24C256N27 20円(AliExpress)
SOP8変換基板 6円(AliExpress)
SSMBJ327R 5円(AliExpress)
IRLML6344 5円(AliExpress)
2SC4116-Y(2個) 8円(AliExpress)
ユニバーサル基板 5円(AliExpress)
CR類 50円
+++++++++++++++++++++++++++++++
合計149円

【ダウンロード】
設計資料と開発プロジェクトは ここから ダウンロードできる。
  1. 2019/03/19(火) 11:21:50|
  2. 音声再生・録音再生
  3. | コメント:0

ミミクリーペットのマイコン換装で音質の改善

ミミクリーペットのCOBを換装するファームウェアは、今までも度々の改善を施してきていて、詳細は「ミミクリ」で「ブログ内検索」すると出てくる。

今回は、再生音質の改善を行った。

ミミクリペットは録音した音声をロボット風にボイスチェンジして再生する。それを、換装用ファームウェアでは4kspsで録音して8kspsで再生することで、ボイスチェンジを行っている。しかし、そのままだと早口で喋ってしまうので、短時間で2回ずつ繰返し再生することで、喋るスピードは元と同じにしている。

従来は、数10msの一定時間毎に繰り返していた。これより短いとザラザラしたノイジーな音になる。長くするとトンネルの中で喋るようなエコー掛かった音になる。中間の時間に設定しても、その周期でのノイズが乗って震えた声になったり、ブツブツノイズが出てしまう。

その原因は、一定時間で区切って繋ぐと繋ぎ目で音声レベルに段差が生じるためと考えられる。そこで、繋ぎ目を音声レベルのゼロクロスポイントにしてみた。
ミミクリーペットのマイコン換装で音質の改善ゼロクロスポイント
上図で、赤丸部分がゼロクロスポイント。隣り合う赤丸から赤丸までの区間を2回ずつ再生を繰返す。こうすれば、繋ぎ目で音声レベルの段差が生じない。

結果はこれで、最初は元の音声、その次は改善した再生音、最後は改善前の再生音となっている。
再生音試聴

かなり改善されたと思う。
  1. 2019/03/13(水) 09:29:37|
  2. 音声再生・録音再生
  3. | コメント:0

ミミクリーペット(ボイスレコーダー・チェンジャー換装)新バージョンのBOR対策

ミミクリーペットのボイスレコーダー・チェンジャー換装でBORするという相談を受けることがある。特に電池2本(3V)で動かす場合はBORしやすい。

先日「マイクでワンちゃんトイプードル」の修理で(僕としては)新たなBOR対策を講じたので、そのやり方をミミクリーペットにも適用した。

そのやり方は「BOR無効」にするという、全く詭弁な話だ。しかし、電池電圧の瞬低時にもVddを2.58V以上に維持するのは難しいので、そうするしかない。LFタイプを使えば解決するのだが、LFタイプはコスト高になるし、動作電圧が最大3.6Vに制約されてしまう。

BORを無効にするとVddが低下したときにハングアップする恐れがある。万一そのような事態になったときのために、WDTを有効にしてハングアップしたらリセットさせる。おもちゃ修理の用途では瞬低検知のレイテンシは問題にならないので、このような対策で十分だ。

対策実施後のプロジェクトは ここから ダウンロードできる。

今回の瞬低対応以外の設計情報については関連記事を参照。関連記事は「ミミクリ」で「ブログ内検索」すると出てくる。
  1. 2018/12/31(月) 19:14:59|
  2. 音声再生・録音再生
  3. | コメント:0

PIC16F1503で音声再生

【開発の意図】
大容量のSPIフラッシュが出回ってきたことで、鳴り物おもちゃの修理をPIC電子オルゴールでの換装ではなく全面的に音声再生で換装することが可能になった。

先般は音声再生に機能を絞って 「ATtiny13Aで音声再生」 を開発したが8ピンでは応用範囲が狭いので、14ピンで音声再生も開発しておくことにした。

現在(2018年10月)秋月で14ピンの1チップマイコンで最廉価なのはPIC16F1503(@80円)だ。AliExpressを見てもこれより安いのは見当たらない。100円以上ならPIC電子オルゴールが載せられるデバイスがあるので、それらを音声再生に絞って利用する意味はない。それで今回のターゲットは PIC16F1503 だけだ。


【設計】
①プログラムメモリが2kワードしかないので必要最小限の機能に絞るが、ポップノイズの抑止は実装する。

②内部オシレータが16MHzなので、PR2=255にすると周期は64usになってしまう。それで、PR2=127にして、PWM1DCHの下位7ビット+PWM1DCLの上位1ビットで8ビット分解能にする。

③PWM周期は32usとなり、TMR2のポストスケーラを1/4に設定して、128usのTMR2割り込みでデューティサイクルを更新する。4倍オーバーサンプリングになる。音声データは8kspsでサンプリング周期は125usであり若干の差異が生じるが、PWMステップ数を合わせ込むとPCMデータからデューティサイクルへの変換で計算誤差が生じるので、125usとの差異は許容範囲として受容する。

④動作は以下の流れとした。
・POR後にはSleepしている。
・トリガSWのオンで音声再生を開始する。
・再生が終了するとSleepする。
・再生中にトリガSWがオンされると再生を中止してSleepする。


【回路図】
PIC16F1503で音声再生回路図
16F1503はSDIがRC1に固定されていて、RC1は内部プルアップができないので、外部でプルアップ若しくはプルダウンする。

【ダウンロード】
設計資料と開発プロジェクトは ここから ダウンロードできる。
  1. 2018/10/20(土) 15:40:38|
  2. 音声再生・録音再生
  3. | コメント:0

ATtiny13Aで音声再生

【開発の意図】
音を出すおもちゃは殆どが音声再生でやっている。このようなおもちゃが故障したときに音声再生を汎用的な部品で換装しようとすると音声データを格納する大容量のメモリが必要になってコスト高になってしまう。そのため、メモリ容量が少なくて済む電子オルゴールで音楽を鳴らしたり、必要最小限に音声を切り詰めて修理をしてきた。救急車のような効果音も音符で表現して電子オルゴールで鳴らす工夫もしている。

ところが最近は大容量のSPIフラッシュメモリが安価に出回るようになり、先般、 PIC電子オルゴールの音声再生機能でSPIフラッシュメモリをサポート した。そうすると、おもちゃが元々やっているように音楽も音声再生でやればいい、という考えに戻る。音楽表現は電子オルゴールよりも格段に優れるし、面倒な音符データも作らずに済む。

電子オルゴールは実行時に波形発生の計算を行うので、ある程度の処理能力が必要だ。そのため、PIC電子オルゴールではターゲットデバイスを16F18xxや16F17xxのシリーズに限定している。しかし、音声再生だけならもっと安いCPUでも構わない。そこで、ポート数が5以上ありPWM機能を備えたデバイスで最廉価なATtiny13A(2018年秋月@50円)で音声再生を作る。これならW25Q64と組み合わせて100円以内で、8ビット8ksps、1024秒の音声再生が実現できる。


【設計】
ATtiny13AのPWMはデューティ値を0に設定しても1ステップ分はPWM出力が出てしまう。100%に設定すると出っ放しにはなる。これはデバイスの仕様なので受け入れるしかない。
0%にならないよりは100%にならない方がマシなので、ピン出力を反転出力にして、デューティ値を補数で設定することにした。

最初はPIC電子オルゴール並みに音声番号選択や再生終了時コールバックなどの機能を書いたのだが、プログラムメモリオーバとなり撃沈されてしまった。512ワードに過大な期待は禁物だ。それで、音声データすべてを再生する処理内容に変えて、おもちゃ固有の制御は個別に開発することとする。汎用性のある省電力Sleepのコードは含めている。そうするとプログラムメモリ使用率は44%にまで下がった。

動作は以下の流れとした。
・POR後にはSleepしている。
・トリガSWのオンで音声再生を開始する。
・再生が終了するとSleepする。
・再生中にトリガSWがオンされると再生を中止してSleepする。

また、ポートが1本しか余っていないので、あまり高機能な応用はできない。


【回路図】
ATtiny13Aで音声再生回路図

【再生音】
ATtiny13Aで音声再生
ミラーナの修理で使った音声を8ビット8kpsで再生した音だ。


【ダウンロード】
設計資料と開発プロジェクトは ここから ダウンロードできる。開発環境は AtmelStudio7。
  1. 2018/10/12(金) 14:03:12|
  2. 音声再生・録音再生
  3. | コメント:0

PICでSDカード再生

1.はじめに
おしゃべりおもちゃが故障したとき、その壊れたICをPICで換装するために、 電子オルゴール+音声再生のファームウェア を開発してきた。
しかし、廉価なPICはメモリが少なく、格納できる音声はかなり短いものに限られてしまう。
例えば、現時点で最もコストパフォーマンスの良い16F1705(2016年8月秋月価格@110円)はプログラムメモリが8kワードしかなく、オルゴールエンジンと演奏データを入れると残りは6kワード程度になる。8ビットPCMでサンプリングレートを6kspsに落としても格納できる音声データは2秒間でしかない。
それより長い音声再生を望む場合は、シリアルEEPROMを外付けして対応することになる。廉価なシリアルEEPROMのCAT24M01(2016年秋月価格@150円)は512kビットあり、8kspsで8秒間の音声データを格納できる。
更に長い音声データを扱うにはSDカードを使う方法がある。256MBの容量があれば8ビット8kspsで8時間超えの音声が格納できる。

単にSDカードから音声を再生するだけなら市場に出回っているボードを使えば済むのだが、おもちゃ修理に応用する場合はおもちゃの動きに合わせて音声再生ボードを制御する必要があり、そのためのマイコンが必要になる。マイコンを使うのなら、そのマイコンに音声再生をやらせて安上がりにしよう、というのが今回の狙いだ。

ということで、今回はSDカードを使った音声再生のファームウェアを公開する。

2.処理方式
①音声データはWAV形式ファイルでSDに格納しておく。SDカードはFATファイルシステムを使うのだが、ファームウェアにはFATファイルシステムを持ち込まない。
その理由は、FATファイルシステムはプログラムのコードが嵩張るのとCPU負荷も大きいため、廉価なPICには荷が重過ぎるからだ。PICとしてはSDカードをSPI接続のシリアルEEPROMとして利用したい。
同じ理由でMP3形式もサポートしない。音声はベアなPCMデータで格納する。

②SDカードへの音声データの書き込みは特別なツールを用意するのではなく、FATファイルシステムを使ってPCで行いたい。
そのため、SDカードをFATフォーマットした後、WAV形式ファイルを順次整然と収容することで、各ファイルを連続クラスタに格納する。
ファームウェアにはファイルのSDカード上のアドレスと長さを伝えることで、SDカードを物理層だけでアクセスする。
SDカード上のアドレスと長さはディスクダンプツールを使って人系で情報を取得し、ファームウェア内にハードコードする。

③ファームウェアの処理内容は極めて単純で、SDカードアクセスの初期設定、PWM出力の初期設定を行った後、SDカードからPCMデータを順次読み出して、その値でPWMデューティ値を設定するだけである。

④ターゲットデバイスにはPWMモジュールが必須だが、SPIは必須ではない。SPIはソフトウェアで実現しても16MHzのCPUクロックでは200kbps程度の性能は出るので8kspsの音声再生には十分対応できる。
ポート数は、SDインタフェース用にSPIの3本とSD選択信号1本の合わせて4本、PWM出力に1本が最低限必要で、後はアプリケーションで使うポート数が加わる。
今回のファームウェアでは8ピンの12F1501を採用した。SPIモジュールは内蔵していないのでソフトウェアで実現する。

⑤電子オルゴール+音声再生のファームウェアにもSDカードをサポートさせるための布石として、12F1822にも移植した。

⑥8ピンデバイスでは応用し難いので、14ピンデバイスの16F1503、16F1823、16F1705にも移植した。

3.回路図
PIC12F1501と電源のパスコン、それとSDカードのみのシンプルな構成だ。
信号線のSDOとSDIはクロス接続する。

PICでSDカード再生回路図

PICでSDカード再生回路図2


4.評価ボード
評価ボードと言ってもブレッドボードに組んだものだ。
PICでSDカード再生画像1

中核は12F1501だ、というより部品はこれだけ。
PICでSDカード再生画像2

SDカードの接続部分。
PICでSDカード再生画像3

SDカード本体はminiSDで、これを買ったときにSDに変換するアダプタが付いていた。これをソケット替わりに利用する。
PICでSDカード再生画像4
PICでSDカード再生画像5

SDカードアダプタにヘッダピンを繋ぐ。SDカードの端子は9Pあるが、両端はSPIモードでは使わないので、両端を除いた残り7Pを配線する。
PICでSDカード再生画像6
PICでSDカード再生画像7

5.費用
製作費用はSDカードを除いて、12F1501(70円)と電源パスコン10uF(5円)の合計75円だ。
評価ボードとして作る場合は、ICソケットやSDカードソケット、基板またはブレッドボード等が必要だが、おもちゃ修理に供するにはSDカードは直付け、すべて空中配線で既存基板にくっ付ければよいので、正味75円でできる。問題はSDカードの調達で、ヤフオクでも数百円しているので、100円台のジャンク品が見付から無ければこの修理方法は採用できないだろう。

6.再生音のサンプル
再生音はこれ

7.ファームウェア
開発したファームウェアと設計資料・資材は ここから ダウンロードできる。ディレクトリ 「SD」 配下にMPLABXのプロジェクトが格納されている。

8.SDカード上のアドレス等の取得方法
ダウンロードファイルの 「PICでSD再生.xls」 のシート名「SDアドレス取得」を参照。
  1. 2016/08/12(金) 00:07:21|
  2. 音声再生・録音再生
  3. | コメント:0

LPCで音声再生

音声を再生するには、音声のPCMデータを記憶するための大きなメモリが必要だが、廉価なPICはメモリが小さい。以前の記事 「PICで音声再生」 では音声データを外部のフラッシュメモリに記憶させた。そのためマイコンとメモリで150円(2014年秋月価格)も掛かることになってしまった。
PIC以外なら大きなメモリを持つ廉価なマイコンがある。LPC1114FN28/102は2014年秋月価格110円で、フラッシュメモリが32kバイトあり、以前の記事と同じメモリ容量だ。今回はLPC1114FN28/102を使った音声再生を紹介する。

【設計】
①LPC1114は最大クロックが50MHzなので、内蔵オシレータ12MHzを4逓倍して48MHzで動かす。性能に十分ゆとりがあるのでC言語で開発する。

②音声のPCMデータをプログラムフラッシュに置き、PWMによるDA変換で再生する。

③音声のPCMデータは8ksps、8ビットとする。

④MAT3にシングルPWM信号を出力する。

⑤8倍オーバーサンプリングとし、PWM周期は1/8ksps/8=15.625usとなる。

⑥PWM周期のカウント値は48MHz×15.625us=750。TCプリスケーラを1/2にして、PWM周期を375カウントとする。従ってデューティカウントは(374-PCMデータ値)とする。但し、ここでの設計値はチューニングの余地が十分ある。取り敢えず評価のスタート地点と考える。

⑦4ksps(16倍オーバーサンプリング)での再生も試してみて、再生音の品質を比較してみる。

【回路図】
LPCで音声再生回路図

【ファームウェア】
①8kspsで再生するものと4kspsで再生するものの2つのファームウェアを開発した。ファームウェアの内容は 【ダウンロード】 を参照。

②開発環境はKeilのuVision4でバージョン等は下記のとおり。
LPCで音声再生開発環境

【書込み】
①書込みは、別記事で紹介した 「USB-シリアル変換器」 を利用する。

②USB-シリアル変換器とLPCの結線

LPCで音声再生書込み結線

DTRをRSTピンに、RTSをPIO0-1[ISP]ピンに繋いでおくと、FlashMagicがそれらのピンを制御してくれるので、書込みとテストランを繰り返すのにすごく便利だ。

③FlashMagicの設定
LPCで音声再生書込み設定1

FlashMagicがRSTピンとPIO0-1[ISP]ピンを制御するための設定だが、元々この設定になっていると思う。
LPCで音声再生書込み設定2

【試作回路】
外付け部品が無い(パスコンも省略した)ので、LPC1114FN28/102に書込み器とオシロを繋ぐだけにした。
LPCで音声再生画像


【再生音】
原音

8kspsでの再生音

4kspsでの再生音

4kspsでは再生音の品質はかなり劣化するが、おもちゃには許容範囲ではないかと思う。

【出力信号波形】
8kspsでの出力波形
LPCで音声再生波形1

上記の時間軸を5倍に拡大
LPCで音声再生波形2

4kspsでの出力波形
LPCで音声再生波形3

上記の時間軸を10倍に拡大
LPCで音声再生波形4


【ダウンロード】
付属資料とファームの開発プロジェクトは ここから ダウンロードできる。
「play_flash」 が8ksps、「play_flash_4ksps」 が4kspsでの再生になっている。
  1. 2014/09/02(火) 15:24:39|
  2. 音声再生・録音再生
  3. | コメント:0

音声録音再生(ボイスチェンジャー)の製作

PICで音声録音再生を作ったので紹介する。ボイスチェンジャー機能も付いている。

【外観】
音声録音再生+ボイスチェンジャー
ボイスチェンジャー外観

【サンプル音】
生の音声の後にロボット音にチェンジされた音声が再生される。
サンプル音はこれ

【セールスポイント】
①190円(2014年秋月価格)のPICで作れる。
②演奏出力信号はPWMになっているので、後続のアンプ回路の電力効率がよい。

【回路図】
ボイスチェンジャー(回路図)

【録音再生処理】
マイクで拾った音声を4kspsでPCMデータに変換し、メモリに蓄積する。
音声が途切れるか、メモリが一杯になったら録音を停止し、再生を始める。
メモリに蓄積されたPCMデータを読み出して8kspsで再生する。倍のレートで再生するので1オクターブ上がった音になり、ロボット風の音声に変わる。レートを上げるだけだと早口になってしまうので、しゃべるスピードは元のままにするために、30ms毎に2回繰り返して再生する。

【ADCとDACのタイミング】
DACはPWMを利用する。
PWM周期は、内蔵クロックが12MHzであることから (1/12MHz)×256=21.3us とする。
ADC周期はPWM周期の12倍とし、256usとする。
DACはADC周期の1/2で128usとする。6倍オーバーサンプリングとなる。

【音声出力信号】
PWMで出力するので、スピーカーの駆動はデジタルアンプを推奨する。アナログアンプを繋ぐ場合はローパスフィルターを設置すること。

【ダウンロード】
設計資料とファームの開発プロジェクトは ここから ダウンロードできる。
  1. 2013/12/28(土) 12:28:25|
  2. 音声再生・録音再生
  3. | コメント:4

PICで音声再生

PICで音声再生を作ったので紹介する。おもちゃに実装されている音声再生ICが故障した場合に、それを換装する目的で開発した。

【テストベンチ】
作った音声データを発声させて出来具合を確認するために、テストベンチを作っておくとよい。音声データの持ち方によって2種類がある。

PIC12F1501(またはPIC12F615)+24FCxxxとアンプ・スピーカーで構成している。
音声データを外部のI2Cメモリに置くタイプ
VOICEテストベンチI2C

音声再生テストベンチI2C(回路図)

音声データをPIC内のプログラムメモリに置くタイプ
PIC18F26K20とスピーカーで構成している。
VOICEテストベンチPROG

音声再生テストベンチPROG(回路図)

【サンプル音】
加工前の素材音

加工後にテストベンチで再生させた音

【セールスポイント】
この音声再生はいろんなおもちゃの修理に使えるように工夫されている。
①音声再生の他に、LEDやモーターなど周辺の制御ができる。
②発声開始や停止、音声内容選択などの操作を修理しているおもちゃに容易に整合できる。
③最低150円(2014年秋月価格)のデバイスで作れる。
④演奏出力信号はPWMになっているので、後続のアンプ回路の電力効率がよい。
⑤別の記事 「PICで電子オルゴール」 で紹介している電子オルゴールと共存させることができ、オルゴール演奏と音声再生の両方の機能が必要なおもちゃ(コンカレント実行はできない)に適用できる。

⇒電子オルゴールと音声再生をコンカレントに実行するファームウェアは PIC電子オルゴール+音声再生 を参照。


【演奏出力】
発声信号は周期32usのPWMである。4倍オーバーサンプリングにしているため、基本サンプリングは128usになる。これは8Kspsの周期125usと若干差異があるが、許容誤差として目をつむって欲しい。サウンドレコーダーで指定できるサンプリングレートが8kspsジャストであり、細かく合わせられないのだ。
発声信号のサンプルを以下に示す。
音声再生出力波形1

時間軸を拡大すると
音声再生出力波形2

このようにPWMで出力するので、スピーカーの駆動はデジタルアンプを推奨する。アナログアンプを繋ぐ場合はローパスフィルターを設置すること。

【音声データ】
音声データは8ビット8kspsのPCMデータで記録する。4kspsに下げると若干音質は劣化するが再生時間を倍にできる。4kspsでも音声の品質はおもちゃとしては実用域と思う。
PIC16Fの場合はプログラムメモリの1ワードが14ビットなので、1ワードに7ビットPCMデータを2個格納するようにしている。

【サンプル音】
現在保有している音声サンプルは以下のとおり。
エンジン始動
ダメッ!ワンワン

【応用の仕方】
このプログラムはPCMデータを読み出してPWMデューティに設定しているだけの簡単な処理なのでソース規模が小さく、ソース流用しても組み込み先との整合に手間がかかりメリットが少ない。そのため、カスタマイズするのではなく、処理方法のひな形として参照して貰うのがよいと思う。

【ダウンロード】
付属資料とファームの開発プロジェクトは ここから ダウンロードできる。
音声データを外部のI2Cメモリに置くサンプルが「voice_i2c」、PIC内のプログラムメモリに置くサンプルが「voice_prog」である。
  1. 2013/05/27(月) 07:20:26|
  2. 音声再生・録音再生
  3. | コメント:0

プロフィール

大泉茂幸

Author:大泉茂幸
名張市つつじが丘おもちゃ病院
名張市つつじが丘南3番町129
tutuji@cb4.so-net.ne.jp
090-5534-6494
連絡は上記のメール、またはSMSでお願いします。

子どもの頃から趣味は電子工作一筋でやってきました。理科離れが進む中で科学技術に興味を持つ子どもが少しでも増えて行くことを願って、子ども達に電子工作の活動の場を提供しています。

1981年からおもちゃ病院の活動を始め、2014年に三重県名張市への移住を機に「つつじが丘おもちゃ病院」を開院しました。自分でおもちゃを設計し製作する【おもちゃ工房】と、マイコンを応用した電子工作を楽しむ【マイコンクラブ】も併設しています。新規参加メンバーを募集しています。

当ブログで公開している技術情報や成果物の複製、改変および再配布はフリーです。読者様のおもちゃ病院活動のお役に立てば幸いです。ご利用いただいた結果や感想等を記事へのコメントやメールでフィードバックしていただけると有難いです。なお、公開ファイルは最新版を載せているので、古い記事の内容から変わっている場合があります。

カテゴリ

おもちゃ修理技術 (124)
¦ ・電子オルゴール+音声再生 (52)
¦ ・音声再生・録音再生 (13)
¦ ・2.4GHzラジコン (35)
¦ ・レガシーラジコン (13)
¦ ・赤外線リモコン (4)
¦ ・RFID (3)
¦ ・タッチセンス (4)
ツール製作 (35)
¦ ・プログラマー (27)
¦ ・USB-シリアル変換 (3)
¦ ・その他のツール (5)
修理事例 (157)
¦ ・マイコン換装 (75)
¦ ・電子・電気修理 (59)
¦ ・メカ修理 (23)
製作記事 (5)
PIC開発 (4)
おもちゃ病院 (9)
ドクター研修会 (2)
未分類 (0)

最新記事

最新コメント

月別アーカイブ

訪問者数

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

QRコード

QR