2019年07月14日

サウンドグラフィックイコライザーシールド -スケッチその1(MSGEQ7の制御)

はじめに

 今回も制作中のサウンドグラフィックイコライザーシールド(SGES)について説明します。ブログの更新が久し振りですので、制作物の紹介動画を載せておきます。


 前回はSGESの部品構成を説明しました。SGESはArduinoで動かしていますので、今回はSGESを動かすためのスケッチについて説明をします。スケッチの主な流れは下記の通りです。
  1. 各値の初期設定
  2. MSGEQ7から音の大きさ値を取得
  3. 音の大きさに応じてLEDを制御
 今回説明するのは2番のMSGEQ7から音の大きさを取得するスケッチです。それに伴ってピン配置やタイミングチャートなども説明します。


目次



1. MSGEQ7の概要

 まずはMSGEQ7が何かということですが、MSGEQ7はグラフィックイコライザー用ICです。入力された音声信号から7つの周波数の音の強さをアナログ出力します。周波数は63[Hz]、160[Hz]、400[Hz]、1[kHz]、2.5[kHz]、6.25[kHz]、16[kHz]です。

I-12887.jpg
図1 MSGEQ7の外観(写真は秋月電子から)

 このMSGEQ7にマイクやAUXなどから音声信号を入力し、MSGEQ7の出力をArduinoで読み取って、周囲の音の大きさを測ります。


2. MSGEQ7の接続

 ArduinoでMSGEQ7を制御するためにはピンを接続する必要があります。接続するのはArduinoのデジタル入出力ピンにMSGEQ7のRESETとSTROBEアナログ入力ピンにOUT、合計3本のピンです。

0711_MSGEQ7ピン配置.png
図2 ArduinoとMSGEQ7の接続

 RESETとSTROBEの2つの線でMSGEQ7を制御し、OUTからのアナログ値をArduinoでA/D変換して読み取ります。


3. MSGEQ7の制御方法

 MSGEQ7はRESETとSTROBEの2本で制御するわけですが、これらの信号はデータシートに記載されているタイミングチャートに従って動かします。

2019-07-11.png
図3 MSGEQ7のタイミングチャート(データシートから)

 このタイミングチャートを満たすようにArduinoのピンを動かします。下記がMSGEQ7制御部分のみを抜粋したソースコードです。

void ReadMSGEQ7(){
digitalWrite(MSGEQ7_RESET, LOW);
delayMicroseconds(100); //Reset to Strobe Delay(trs)

//FREQ_NUMは7
for(byte freq=0; freq<FREQ_NUM; freq++){
digitalWrite(MSGEQ7_STROBE, LOW);
delayMicroseconds(50); //Output Setting Time(to)
valAmplitude[freq] = analogRead(MSGEQ7_OUT);
delayMicroseconds(20); //指定や名称無し。これとtoとtsの合計がStrobe to Strobe Delay(tss)
digitalWrite(MSGEQ7_STROBE, HIGH);
delayMicroseconds(30); //Strobe Pulse Width(ts)
}

digitalWrite(MSGEQ7_RESET, HIGH);
delayMicroseconds(1); //Reset Pulse Width(tr)
}
 簡単に説明すると「STROBEを変化させながらOUTPUTを読み込む処理を7回繰り返す」ということをしています。時間は余裕を持たせてタイミングチャートの1.5倍くらいにしています。


4. スケッチの実行結果

 上記のソースコードを実際に動かしたときのSTROBE(赤線)とOUT(青線)の波形が下図です。

0711_タイミングチャート.png
図4 MSGEQ7制御時の波形

 STROBE信号やOUT出力の変化がちゃんと7回ありますので、7つの周波数を読み取れていることが分かります。この波形は確か適当な音楽を流しながら測定したものでした。400[Hz]や1[kHz]の音が大きく鳴っていることが分かります。
 STROBE信号の設定したタイミングと実際のタイミングについてですが、HIGHの時間はスケッチの設定が30[us]に対して実際は約35[us]とそこまで差がありません。ですがLowの時間はスケッチが70[us]に対して実際は190[us]と結構差があります。これはanalogRead()の処理で100[us]〜200[us]かかるためです。ですので、問題はありません。


おわりに

 今回はこのようにArduinoでMSGEQ7をきちんと制御することが出来ました。次回は取得した値からLEDを光らせるスケッチの説明をする予定です

2019年05月07日

サウンドグラフィックイコライザーシールド -構成

はじめに

今回はサウンドグラフィックイコライザーシールドの構成について説明します


目次



1. 部品構成

下図はサウンドグラフィックイコライザーシールドのブロック図です。主要な部品を記しています。

Apr30_SGESブロック図3.png
図1 サウンドグラフィックイコライザーシールドのブロック図

音声周りの主な部品はマイクアンプキットとグラフィックイコライザー用IC MSGEQ7の2つです。
MSGEQ7は入力された音声信号から、7つの周波数の音の強さをアナログ出力します。周波数は63[Hz]、160[Hz]、400[Hz]、1[kHz]、2.5[kHz]、6.25[kHz]、16[kHz]です。
MSGEQ7のアナログ出力をArduinoのA/Dピンへ入力し、周囲の音の大きさを読み取っています。

LED周りの主な部品はフルカラーLED(PL9823)×7個5[V]出力DC/DCコンバーター(BP5293-50)です。
PL9823はNeoPixel系のフルカラーLEDですので、信号線を直列接続出来ます。よってArduinoの必要な出力ピンは1つだけです。


2. 電源の分離

サウンドグラフィックイコライザーシールドでは音声周りとLED周りで異なる5[V]電源を使用しています。これはフルカラーLEDによるノイズを音声周りに与えないためです。

実験段階ではパソコンのUSB 5[V]から音声周りにもLED周りにも電力を供給していました。(電流不足にならないよう、フルカラーLEDの明るさは抑えて)
ですが、下図のような構成で実験していたところ、フルカラーLEDが点灯するとArduinoが読み取るMSGEQ7の出力にノイズが乗りました。そのため周囲の音の大きさを上手く読み取ることが出来ませんでした。

Apr30_SGESブロック図_fig2-4.png
図2 サウンドグラフィックイコライザーシールドの実験時ブロック図

詳しい理由は不明ですが、フルカラーLEDが消灯時はノイズが乗らなかったので、フルカラーLEDが音声周りに悪影響を与えていることは間違いありません。

ですので、図1のように音声周りとLED周りで使用する5[V]電源を分離しました。音声周りにはArduino内蔵のレギュレーターから、LED周りにはDC/DCコンバーターから、5[V]を供給しています。
どのみちArduino内蔵のレギュレーターだとフルカラーLEDに対して電流が不足するので、DC/DCコンバーターを使うことでそれも解消することも出来ました。

電源を分離したら、フルカラーLEDが点灯してもノイズは乗らなくなりました


おわりに

以上がサウンドグラフィックイコライザーシールドの構成の説明です。
音声周りのノイズを減らすために、フルカラーLED専用の電源を使用しています。

次回はArduinoのスケッチを解説するつもりです

2019年04月12日

サウンドグラフィックイコライザーシールド -概要紹介

前回の記事では音楽連動照明の機能を説明しました。その記事内で最後にこのように書きました。
Arduinoシールド単体で動くように簡素化し、安価になるよう設計を変更中です。
というわけで、周囲の音に反応してLEDが光るArduinoシールドを作りました。使用しているLEDはフルカラーLEDです。

P2320575-2.jpg

P2320577-HDR-2.jpg

作り直すにあたってLEDを複数にし、LEDごとに反応する音の高さを変更しました。画像左側のLEDが低い音に反応し、右側のLEDが高い音に反応します。
グラフィックイコライザーとしても使えるので、サウンドグラフィックイコライザーシールドと呼ぶことにしました。
集音にはマイクアンプキットを、グラフィックイコライザーの処理には専用IC MSGEQ7を使っています。

実際に周囲の音に合わせて光らせたり、機能を説明している動画がこちらです。


用途としてはスピーカーの横に置いて観賞用として使うなどを想定しています。

とりあえずユニバーサル基板に実装してどんなものかなーと試してみましたが、LEDが音に対して結構いい感じに反応しているかなと思っています。
良さそうなので、このままサウンドグラフィックイコライザーシールドをプリント基板化したり外装を作ったりするなどして、改良していきます。

2019年02月07日

音楽連動照明 -機能の説明

前回は作り直した音楽連動照明について外装を中心に説明しました。

P2300757.jpg

今回はこの照明を実際に使い、光りに関する機能を説明します。



この照明は光り方を3つのモードに切り替えることが出来ます。
  1. 通常  :普通の照明のように一定の明るさで点灯する
  2. ゆらぎ :明るさを不規則にゆっくりと変化させる
  3. 音楽連動:入力された音の大きさに合わせて、明るさを変化させる。音の入力はAUX端子とマイクの2種類がある
これらの機能は基板にあるトグルスイッチ(下図の「Mode」と書かれているスイッチ)で切り替えます。Normalが通常、1/fがゆらぎ、Musicが音楽連動です。

P2310009.jpg

その他のスイッチや半固定抵抗(青いダイヤル)については、このようになっています。
  • Power:電源のオン・オフ
  • Response:音楽連動モード時の応答速度
  • Blightness:通常モード時の明るさ
  • AUX Vol:音楽連動モード時のAUX端子からの音量設定
  • Mic Vol:音楽連動モード時のマイクからの音量設定

音楽連動照明を実際に動かした動画をYouTubeに上げました。




以上で説明したことが音楽連動照明の機能です。

マイコンはATMEGA328Pを使っており、Arduinoと互換性を持たせております。ですので外付けのUSB-シリアル変換モジュールを使えば、音楽連動照明のスケッチを書き換えることが出来ます

当初はこれの販売を考えていたのですが材料費が結構かかってしまったため、販売するなら売値が7千円〜1万円と結構高めになってしまいそうです。
ですので、Arduinoシールド単体で動くように簡素化し、安価になるよう設計を変更中です。
posted by ました at 14:22| Comment(0) | 自作LED照明 | このブログの読者になる | 更新情報をチェックする

2018年12月04日

音楽連動照明の製作状況 -新しい外装の説明

お久しぶりです。この1〜2年ほどブログの更新間隔が長くてすいません。これからはもう少しこまめに更新できるよう頑張ります。



さて、音楽連動照明の製作状況ですが、だいぶ出来上がってきました。だいぶ前のことですので簡単に説明しなおすと、「音楽の音の大きさに合わせて、光の明るさを変える照明」です。

これまで制作していたものが、以下の写真です。

P2300013.jpg

P2300014.jpg

まだ実験の段階でしたので、基板周りが色々とごちゃごちゃしています。また照明のカバーは3Dプリンターで造形し、照明の下部にはスピーカーを設けています。
スピーカーの外装も3Dプリンターで造形しました。



現在の新しく作り直している物が以下の写真です。

P2300755.jpg

P2300757.jpg

外装や基板など、一通り作り直しました。

まず基板ですが、プリント基板化しました。

P2300836.jpg

構成としてはアンプや絶対値回路などの音声処理部、LEDドライバーなどのLED制御部、そしてマイコン部です。
AVRマイコンを載せていてArduino Unoと互換性を持たせています。

照明は外装を既製品の紙提灯にしました。このような単純で大きい形状は3Dプリンターだと造形に時間がかかってしまうので、既製品を流用した方がいいと分かりました。
使用している紙提灯はAmazonで買いました。


紙提灯やパワーLEDを固定するための台座は3Dプリンターで造形しています。

P2300837.jpg

P2300838.jpg

実験用に作った物は照明とスピーカーがセットでしたが、今回作成した物にはスピーカーの機能はありません。
代わりにマイクとAUX入力を付けました。これらから入力された音の音の大きさに合わせて、照明の明るさを変えます。

P2300759.jpg

今回は作り直した音楽連動照明について簡単に説明しました。実際に光ったときの動作などはまた後日説明します。
posted by ました at 17:19| Comment(0) | 自作LED照明 | このブログの読者になる | 更新情報をチェックする