[電子工作] ATMEL AVRを喋らせてみようプロジェクト始動 [電子工作]
久しぶりに電子工作を再開しました。
ちょっとした工作で、音声でガイドができるといいかな〜というものがあるので、
喋らせる基礎技術を修得しておこうと思います。
考えている仕様:
マイコン:ATMega168 or 328
3.3V 8MHz (取り敢えず内蔵RCでやってみてダメだったら水晶)
音声 :8kHz 8bitサンプリング モノラル PCM
microSDから固定ファイル名で読み込む
なんか適当なアンプICで増幅してスピーカーに繋ぐ
microSDからの読み込み:
arduinoのライブラリを使う。
あまり悩みたくないし。
音声の出力:
PWMのDutyを調整してLPFを通してアンプに入れる (1bit DACモドキ)
が、arduinoのanalogWriteはオッソいので、Timer2のレジスタを直接書き換えて高速動作させる。
8kHzの一周期は125マイクロ秒
高速PWMをプリスケール1で回すと、1カウントは0.125マイクロ秒
ということは、1つのサンプリング値について、250カウントのパルス x 4発でちょうど。
サンプリング値で250より大きい値は普通は無いはずなので250でサチらせてしまいましょう。
オーバーフロー割り込み4回毎に新しいサンプリング値をDuty比に設定する。
SDカードからの読み込みは100マイクロ秒でどれくらい読めるのかな?
wavから生pcmを得るには、SoX(Sound eXchange)というツールが使えそう。
とりあえず、こんなところかな?
ちょっとした工作で、音声でガイドができるといいかな〜というものがあるので、
喋らせる基礎技術を修得しておこうと思います。
考えている仕様:
マイコン:ATMega168 or 328
3.3V 8MHz (取り敢えず内蔵RCでやってみてダメだったら水晶)
音声 :8kHz 8bitサンプリング モノラル PCM
microSDから固定ファイル名で読み込む
なんか適当なアンプICで増幅してスピーカーに繋ぐ
microSDからの読み込み:
arduinoのライブラリを使う。
あまり悩みたくないし。
音声の出力:
PWMのDutyを調整してLPFを通してアンプに入れる (1bit DACモドキ)
が、arduinoのanalogWriteはオッソいので、Timer2のレジスタを直接書き換えて高速動作させる。
8kHzの一周期は125マイクロ秒
高速PWMをプリスケール1で回すと、1カウントは0.125マイクロ秒
ということは、1つのサンプリング値について、250カウントのパルス x 4発でちょうど。
サンプリング値で250より大きい値は普通は無いはずなので250でサチらせてしまいましょう。
オーバーフロー割り込み4回毎に新しいサンプリング値をDuty比に設定する。
SDカードからの読み込みは100マイクロ秒でどれくらい読めるのかな?
wavから生pcmを得るには、SoX(Sound eXchange)というツールが使えそう。
とりあえず、こんなところかな?
コメント 0