読者です 読者をやめる 読者になる 読者になる

デジタルフィルタ用マイコン?

スピーカーを2個や3個で構成する場合、どんな回路にするのか調べた。

もとは一つの音源に対し、ウーファー(低音用)・ツィーター(高音用)信号にわけるには、ローパスフィルター・ハイパスフィルターをかけて分離する。

 

アナログ的にはRCやLCでフィルタを作る。定数を固定であれば安価に構成できるが、定数を変更するには部品を交換する必要がある。

 

その点、デジタルフィルタならばハードウェア的には追加部品は必要ない。

FIR, IIR といった移動平均を応用した演算でよい。FPUやDSPがあると高速演算できる。

開発の子やすさからすると、

  1. nucleo STM32F4(mbed) ARM core  ¥1,600-
  2. LPC1114(mbed) ARM core ¥400
  3. pic32MX MIPS core ¥250

昔は LPC1114 が 110 円だったのだが、今はなぜか 400円となっている。

pic32MX の価格は 180 - 380 であり、32bit マイコンとしては現状最安値となっている。

 

スピーカーボックス?

ネットワークスピーカー用の安価なケースを探していたところ、100円ショップ Seria で良いものを発見!

f:id:kzono:20161217101739j:plain

 

この大きさならば、良い音を期待できる。ちょっと本気のスピーカー用。

スピーカー 8Ω8W: パーツ一般 秋月電子通商 電子部品 ネット通販

直径3cmのスピーカだとこの箱だと小さい感じがする。

www.aitendo.com

もっとお手軽用にはもう少し小さいほうがよさそう。

 

ESP8266 と LPC1114 の UART 最大通信速度

通常は 115200 bps 以下で通信しているが、音声データや画像データ(!)を送信可能か検討するため、実現できる最大通信速度について調査する。

 

まずはググった。

ESP8266 

ESP8266 は 20Mbps まで動くらしい。

ESP8266 max baud rate - Everything ESP8266

もちろん、基準となる動作クロックに依存するわけで、UARTのクロックが 80MHz の場合に I/Oピンの最大クロックが 20 Mbps らしい。

ESP8266 の SDK ドキュメントの uart init の章に書いてあるらしい。

あった。

2c-esp8266_non_os_sdk_api_reference_en.pdf

-----------------------------------------------------------------------------------------------------

8.2. UART Related APIs

By default, UART0 is a debug output interface. In the case of a dual UART, UART0 works as data receive and transmit interface, while UART1 acts as the debug output interface. Please make sure all hardware is correctly connected.

8.2.1. uart_init

Function:
Initialize baud rates of the two UARTs

Prototype: void uart_init(

UartBautRate uart0_br,

UartBautRate uart1_br )

Parameters:
UartBautRate uart0_br : uart0 baud rate UartBautRate uart1_br : uart1 baud rate

Baud Rates: typedef enum {

BIT_RATE_9600 = 9600, BIT_RATE_19200 = 19200, BIT_RATE_38400 = 38400, BIT_RATE_57600 = 57600, BIT_RATE_74880 = 74880, BIT_RATE_115200 = 115200, BIT_RATE_230400 = 230400, BIT_RATE_460800 = 460800, BIT_RATE_921600 = 921600

} UartBautRate;

Return: none

------------------------------------------------------------------------------------------------

 

用意されているライブラリのAPIでは 921600 が最高速度らしい。

ハードウェア的にはどうか?

テクニカルリファレンスにある。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

11.3.1. The Baud Rate

The serial of ESP8266 can support the baud rate range from 300 to 115200 * 40.

 

ハードウェアフロー制御

安定した通信を行うには、ハードウェアフロー制御をしたほうが有利なはず。

ESP8266 と LPC1114 はハードウェアフロー制御に対応しているか?

ESP8266 technical reference によると

---------------------------------------------------------------------------------------

11.1. Functional Overview

11. UART Introduction

 

Espressif

78/ 104 2016.08

There are two group ESP8266 UART interfaces, respectively:

  • UART0:

    • -  U0TXD: pin26 (U0TXD)

    • -  U0RXD: pin25 (U0RXD)

    • -  U0CTS: pin12 (MTCK)

    • -  U0RTS: pin13 (MTDO)

  • UART1:

- U1TXD: pin14 (GPIO2)

 ----------------------------------------------------------------------------------------

UART0 は RTS/CTS をサポートしている。また、

------------------------------------------------------------------------------------------

11.3.10.Flow Control

Espressif

Configuration process:

Configure pin12, pin13 of UART0 pin as U0CTS and U0RTS functions.

#define FUNC_U0RTS 4
#define FUNC_U0CTS 4 PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U, FUNC_U0RTS);

------------------------------------------------------------------------------------------

 

LPC1114

 ハードウェアフロー制御

ユーザマニュアルにかいてあった。対応していた。

-----------------------------------------------------------------------------------------------------

UM10398
9 章:LPC111x/LPC11Cx 汎用非同期送受信回路(UART)

9.3 特長

9.4 ピンの説明

  • 16 バイトの送受信 FIFO

  • レジスタの位置は’550業界標準に適合。

  • レシーバFIFOのトリガポイントは14814バイト。

  • 内蔵ボーレートジェネレータ。

  • UART は、ソフトウェアまたはハードウェアのフロー制御の実装を考慮。

  • 出力イネーブルでRS-485/EIA-4859ビットモードに対応。

  • モデム制御。

----------------------------------------------------------------------------------------------------
 

nucleo の電源

nucleo シリーズは外部電源として、3.3V, 5V, 7 - 12V に対応している。

外部電圧として、1.2V x 8 = 9.6V を与えるとき、どんな回路にすべきか?

単純に 7-12V の設定にした場合、電池が消耗して 7V 以下になった場合、CPUが動作不能になりそう。本来 3.3V あれば動くのに 7V で動かなくなるのは不本意。

自動的に電源を切り替えるような回路はあるのか?(ツェナーダイオードとか?)

 

思いつく方法としては、DCDCコンバータで 3.3V を生成する方法。

超高効率DC−DCコンバーター(3.3V0.5A) M78AR033−0.5: 電源一般 秋月電子通商 電子部品 ネット通販

 

これなら必ず動くはず。デメリットは余計な部品が必要になること。

 

このDCDCコンバータは外付けの部品は必要なのだろうか?3端子レギュレータならば、入力側/出力側に電解コンデンサが必要なはず。パッケージ内にコンデンサが入っているのか?

 

raspberry pi で bluetooth

 手持ちの raspberry pibluetooth USBアダプタがあったので、使えるかどうか試してみた。

  • raspberry Pi2
  • OS : raspian jessie
  • bluetooth USBアダプタ:Planet 社の BT-MicroEDR2X

jessie には最初から bluez が入っていたっぽい。raspberry 3B 対応済ということか。

WAVファイルフォーマット

デジタルデータをDACに渡したあとの処理は大体わかった。オペアンプで増幅してスピーカにつなぐ回路はアプリケーション回路としてデータシートに載っていた。

音量調節は、入力信号を可変抵抗で調節する。可変抵抗は電子ボリュームを使えば、デジタルで調整できる。

あとはデータの入力側。

 

まずは、ローカルに wav ファイルを置き、マイコンでファイルからデータを読み取る。

ファイルフォーマットがわかれば、音声データを取り出せるはず。

 

41.1kHz で出力すれば CD レベルの音質になるはず。ハイレゾの場合はもっと高い周波数で出力するはず。

電子ボリューム

無線で音量調節をする方法がわかった。

 

電子ボリュームというICをを知っていたが、原理や機能を知らなかった。デジタルで値を入力すると、抵抗値が変わるデバイスだった。

 

これを、オペアンプのフィードバック抵抗のところに使えば、音量を調節できる。

しかも安価。

akizukidenshi.com

 

akizukidenshi.com