2016年06月13日 | aitendoでS12232ZAの販売が終了した事を追記。 |
2017年01月23日 | Arduino IDE 1.6.0以降でも使えるスケッチに差し替え。 |
aitendoのS12232ZAという、350円の格安グラフィックLCDモジュールを使って、オーディオレベルメータを作成してみました。LCDの制御には、Arduino Unoを使います。また、オーディオ信号はArduinoのアナログ入力から、音声信号をA/D変換することで取り込みます。122X32ピクセルという、レベルメータの表示用としては高い解像度を生かして、波形表示機能も付けました。単に音量をバーグラフで表わすレベルメータよりも、見ていて楽しいレベルメータになったと思います。
2016年06月13日追記:aitendoのS12232ZAの在庫はずっとないままになっているので、販売が終了しているものと思われます。スイッチサイエンスから入手してください。
商品名 | S12232ZA | |
税抜き小売価格 | 400円 | |
販売店 | スイッチサイエンス | |
サポートページ | S12232ZAサポートページ |
Arduinoのスケッチを書き直せば、色々なデザインのレベルメータができます。波形表示付きのレベルメータ以外にも、オーソドックスなバーグラフのレベルメータや、アナログメータ風のレベルメータ、イラストを利用したレベルメータのスケッチも用意しました。
ハードウェアを作るにあたって、最初にブレッドボードで回路を仮組みしました。それで回路の動作が確認できたら、次にユニバーサル基板に回路を組みました。次に、グラフィックLCDシールドを使って同様の回路を組み、どの程度回路の規模が小さくなるかも確認しました。さらには、レベルメータの専用両面基板を起こしました。これから、順に、それらの話をします。
ブレッドボードに回路を仮組みした際の回路図を次に示します。
これは、S12232ZAをArduinoで動かす方法を説明したページに掲載した回路図に、CN1、C1、C2、R1~R4からなる音声信号のレベルシフト回路を付け足したものになっています。Arduinoは0V~5Vの電圧をA/D変換できますが、ステレオミニジャック(CN1)から入力される音声信号は交流で、正負の電圧を取るため、レベルシフト回路で電圧を全体に2.5V持ち上げてからArduinoに入力しています。
部品表を次に示します。
部品番号 | 数量 | 品名 | 型番/仕様 | メーカー | 備考 | 参考単価 |
---|---|---|---|---|---|---|
M1 | 1 | マイコン基板 | Arduino Uno | 2,600円程度 | ||
LCD1 | 1 | LCDモジュール | S12232ZA | スイッチサイエンスで販売 | 432円 | |
R1、R2、R3、R4 | 4 | 金属皮膜抵抗 | 22kΩ±1%、1/4W | 1/8Wでも可 | 20円程度 | |
R5 | 1 | カーボン抵抗 | 330Ω±5%、1/4W | 240Ωでも可、1/8Wでも可 | 10円程度 | |
C1、C2、C3、C4 | 4 | アルミ電解コンデンサ | 10μF、50V | 10円程度 | ||
VR1 | 1 | 半固定抵抗 | 20kΩ | 20円程度 | ||
D1、D2 | 2 | ダイオード | 1SS133 | ローム | 1S2076でも可 | 30円程度 |
CN1 | 1 | ステレオミニジャック | AJ-1780 | 秋月電子で販売 | 50円 |
表1の部品を、回路図どおりにブレッドボードに配線していきます。
ステレオミニジャックAJ-1780は、そのままではブレッドボードに刺さらない部品ですので、何らかの工夫が必要です。私は手元にあった、ユニバーサル基板とヘッダを使って、下の写真のような加工を行いましたが、秋月電子に3.5mmステレオミニジャックDIP化キットというのがありますので、それを使うのが簡単でしょう。
組みあがった時の写真を次に示します。
ステレオミニジャックは、両側に3.5mmのステレオミニプラグが付いているケーブルを使って、携帯オーディオプレーヤーのヘッドホン端子に接続してください。
MGLCDライブラリという、グラフィックLCD制御用のライブラリを使いますので、MGLCDライブラリユーザーマニュアルを参考に、MGLCDライブラリVer. 0.42をArduino IDEにインストールしてください。なお、Arduino IDEは1.0.1以上をお使いください。
注:インストールが必要なのはMGLCDライブラリです。MGLCD_SPIライブラリは、必ずしもインストールする必要はありません。
次にTimer1という、タイマ割り込みのライブラリを、こちらのページからダウンロードし、インストールしてください。Download->TimerOne Google Code downloadと書いてあるところをクリックし、TimerOne-v9.zipをダウンロードします。(Timer1がバージョンアップしていたら、ZIPファイルのファイル名は変更になっているかも知れません) そして、ダウンロードしたZIPファイルを解凍し、できたTimer1というフォルダをマイドキュメント\Arduino\librariesの中にコピーすればインストール完了です。
2つのライブラリがインストールできたら、次にレベルメータ用のスケッチを下記のリンクをクリックしてダウンロードしてください。
2017年1月23日追記:以前公開していたスケッチは、Arduino IDE 1.0.Xでしかコンパイルできませんでした。Arduino IDE 1.6.0以降をお使いの方は、お手数ですが、スケッチをダウンロードしなおしてください。また、このスケッチを利用するには、MGLCDライブラリVer. 0.40以降が必要です。
ダウンロードしたZIPファイルを解凍すると、以下の4つのフォルダができます。
まず、S12232ZA_LEVEL_METER1というフォルダの中のS12232ZA_LEVEL_METER1.inoというファイルをダブルクリックして、Arduino IDEを起動してください。
スケッチをArduino Unoに書き込むとレベルメータが起動します。
ステレオミニジャックにつないだ携帯音楽プレーヤーで音楽を再生すると、LCDにレベルメーターを表示します。
S12232ZA_LEVEL_METER2というフォルダの中のスケッチをArduino Unoに書き込むと、次の写真の様な、バーグラフ表示のオーソドックスなレベルメータを表示します。
S12232ZA_LEVEL_METER3というフォルダの中のスケッチをArduino Unoに書き込むと、次の写真の様な、アナログメータ風のレベルメータを表示します。
S12232ZA_LEVEL_METER4というフォルダの中のスケッチをArduino Unoに書き込むと、次の写真の様に、はちゅねミクがねぎを振る角度で音量を表わすレベルメータを表示します。
ただ、このままだと、携帯音楽プレーヤーで再生している音楽を聴くことができません。そういう時は、イヤホンを2つに分配するケーブルが100円ショップなどで販売されていますので、それを使うと音楽を聴きながらレベルメータを見ることができます。下の写真は、私がダイソーで105円で買った分岐ケーブルです。
なお、S12232ZA_LEVEL_METER1とS12232ZA_LEVEL_METER4では、レベルメータの感度の調整ができます。
S12232ZA_LEVEL_METER1.inoには、次の様に定数DIVISORを宣言している行があります。
#define DIVISOR 8
またS12232ZA_LEVEL_METER4.inoには、次の様に定数DIVISORを宣言している行があります。
#define DIVISOR 4
レベルメータの感度が悪く、振れが小さすぎると思われる場合は、DIVISORの数を減らしてみてください。逆に、レベルメータの感度が高すぎて、振り切ってしまう場合は、DIVISORの数を増やしてみてください。
次のページでは、ユニバーサル基板上でレベルメータを組んでみます。
商品名 | LCDレベルメータ | |
税抜き小売価格 | 3500円 | |
販売店 | スイッチサイエンス | |
サポートページ | LCDレベルメータサポートページ |
商品名 | S12232ZA | |
税抜き小売価格 | 400円 | |
販売店 | スイッチサイエンス | |
サポートページ | S12232ZAサポートページ |
商品名 | 122X32モノクログラフィックLCDシールド | |
税抜き小売価格 | 3333円 | |
販売店 | スイッチサイエンス | |
サポートページ | 122X32モノクログラフィックLCDシールドサポートページ |
商品名 | Arduino Uno用ブートローダスケッチライタシールドキット | |
税抜き小売価格 | 1440円 | |
販売店 | スイッチサイエンス | |
サポートページ | Arduino Uno用ブートローダライタシールドキットサポートページ |
商品名 | Arduino用ブートローダ/スケッチライタキット | |
税抜き小売価格 | 3000円 | |
販売店 | スイッチサイエンス | |
サポートページ | Arduino用ブートローダ/スケッチライタキットサポートページ |