今回から新企画です。
新しい、楽器を作ってみたいと思います。
今回のブログはその構想からブロック図の設計までをやりたいと思います。
作りたい楽器のイメージ
イメージは右図のように、超音波センサを上向きで配置します。
センサの上に手をかざして、演奏をします。かざす手の高さで音階が決まるシンプルなものです。
ブロック図
次にブロック図です。
メインとなるマイコンは、Arduinoで簡単にプログラムできる利便性から、ATmega328を使います。
超音波センサにはSRF-02を使用しました。最大2台のセンサをつなげられるようにします。超音波センサとマイコンの間は、I2C通信によって情報伝達を行います。
また、様々な音色を作れるYAMAHAの音源ICを使ったモジュールYMF-825を接続します。
これは、SPI通信にて情報交換をします。
あとは、音を出すタイミングを手動で入れられるジョイスティック。
そして、マイコンのメモリーオーバーなどで、YMF-825と超音波センサを同時に動かせないときのために、
スピーカーを直で駆動できる回路も備えます。
また、マイコンを単体で動かすので、ソフトの書込み端子を用意しなければなりません。まだ開発段階なので、RAM値を読み込めるように、UART通信により、パソコンのUSBと接続できるようにします。
次に、各ブロックを詳細に見ていきましょう。
マイコン
使用するマイコンについて、秋月電子の販売ページに簡単にまとまってたので下記に示します。
ATmega168のメモリ倍増版です。ブートローダと呼ばれるプログラムを書き込んだものは、Arduinoに搭載されるなど電子工作においてポピュラーなマイコンの一つです。
■主な仕様
・シリーズ:ATMEGA
・電源電圧:1.8~5.5V
・コア:megaAVR
・コアサイズ:8bit
・クロック:20MHz
・プログラムメモリ:32kB
・EEPROM:1kB
・RAM:2kB
・GPIO:23pin
・ADC:6Ch
・UART/USART:1Ch
・I2C:1Ch
・SPI:1Ch
・タイマ:3Ch
・オシレータ:内蔵/外付
・パッケージ:DIP28
汎用性は、かなり高く、メモリー容量もまずまずです。
超音波センサ(SRF-02)
まず、SRF-02の通信には二つのモードがあり、I2CとUARTがありますが、今回はI2Cに焦点を当てて説明します。
まずは、SRF-02の主な特徴です。
詳しくは以前のブログを参考にしてください。
◆主な仕様
・使用マイコン:16F687-I/ML
・測定範囲:16cm~6m.
・電源:5V(消費電流4mA Typ.)
・使用周波数:40KHz.
・アナログゲイン:64段階の自動ゲインコントロール
・接続モード:モード1=I2C、モード2=シリアルバス
・全自動調整機能:電源投入後キャリブレーション不要
・測距タイミング:エコー時間計測、ホストによるタスクコントロール
・測定単位:μS(マイクロ秒)、ミリ、インチ
・サイズ:24mmx20mmx17mm
・入出力端子:5ピン
・重量:4.6グラム
音源IC(YMF-825)
ヤマハのFM音源チップYMF825(SD-1)を搭載した音源ボードについて以前のブログに掲載してますので参考にしてください。ヤマハ独自のFMシンセサイザを搭載し、数種類のパラメータ指定により豊かなサウンドを再生することが可能です。
ArduinoやRaspberry Pi等のマイコンボードから、SPIを通して直接YMF825のレジスタを制御することで発音させます。スピーカーアンプも搭載しているので、アンプ回路を別途外部に用意する必要がありません。
※3.5 mmのヘッドホンジャックを搭載していますが、iPhone用などの4極CTIA採用のイヤホンはお使いいただけません(OMTPのものはお使いいただけます)。**Switch science様の販売ページより**
仕様
- 4オペレータのFM音源
- 最大16音同時に発音可能
- FMの基本波形29種類内蔵、アルゴリズム8種類
- SPIによるシリアルインタフェース
- スピーカアンプ内蔵
- 3バンドイコライザ内蔵
- 16 bitモノラルD/Aコンバータ内蔵
- 動作電圧:5 V
- 3.3 Vでも改造することで利用可能
スピーカードライバー回路
スピーカーの駆動回路について以前のブログでまとめてますので参考にしてください。
この回路は、電子音を鳴らすことに特化させているので、この回路で普通の音楽を流すことには向かないとおもいます。
回路はいたってシンプルです。Arduinoからはデジタル出力の矩形波が出力される。このデジタル信号がトランジスタQ1のベースに入力される。ベースに電流を流すと、コレクタエミッタ間がONとなち、スピーカーに電流が流れる。デジタル信号のHIGH/LOWの周期によって、すぴーかーに電流を流す、流さないが変化する。したがって、デジタル信号の周波数の電子音がスピーカーから発せられる。
R1の抵抗は、デジタル信号の電流が、ベースには高すぎるので、抵抗R1を挟んで電流を小さくしている。
また、R2の抵抗も、スピーカーに流れる直流電流が大きすぎるため、R2の抵抗を挟み電流を小さくしている。
また、D1のダイオードは、スピーカーのコイルを矩形波でON/OFFしてしまうと、スピーカーの電圧が一気に跳ね上がってしまうため、電圧が跳ね上がらないようび、スピーカーのコイルにたまった電流を逃がす回生ダイオードを積んでいる。
ソフト書込み
ソフト書込みに関しても以前のブログを参考にしています。
UARTの通信ですので、変換器のTXD(送信)を,ATmega328のRXD(受信)に、変換器のRXD(受信)をATmega328のTXD(送信)に接続します。あとは、TTL変換器の+5VとGNDを、ATmega328にも供給します。
そして、変換器からリセットの信号を送れるように、RTSとATmega328のResetを、0.1uFのコンデンサを経由して接続します。
あとは、ATmega328のクロックとして、16MHzの水晶発振子を接続します。
今日はここまで。次回は回路設計に入ります。