PICで作る 「わたしのオルゴール」
ELECTRONIC MUSIC BOX WITH PIC MICON
 

森下功啓製作所 ONLINE

[更新情報 2021/2/11] サンプルデータについて追記

ここは、H19年に龍田山公民館が主催した工作教室 「わたしのオルゴールをつくろう」 で製作した電子オルゴールについて説明するホームページです。 ラジコン研究部(当時)がこの工作教室の指導を行ってました。私は工作の説明と進行、説明書作り、Excelでのマクロ作成をやりました。

マイコンにはPIC12F675を使用し、音楽データの作成にはMicrosoftのExcelを使います。講座の対象が小学生だったこともあり、マイコンのプログラミングなんてややこしい事はしなくて済む様にしました。 それでいて、自分で自分の好きな音楽を打ち込む当作業が心地よいらしく、大変好評でした。

実施風景 実施前に作った試作品
図1 龍田山公民館での実習風景(八代高専WEBより…撮影したのは私とシーラだったかな…)

メールを当方に対して頂ければ、PICのEEPROMに書き込む音楽データを差し上げることができますので遠慮なくお問い合わせください。 なお、本サイトを利用した工作教室を開かれても特に連絡の必要はありません。 ですが、ご一報頂けるとモチベーションが上がります。^v^)/

ニュース 2011/11/7

三重県立桑名工業高等学校様により2011/10開催の三重県産業教育フェアにおいて本ページで紹介している電子オルゴールを利用した電子工作教室が開かれました。 電子工作教室は終日盛況だったとのことです。 熊本から発信している本情報が他県の技術教育の役にたてるなどうれしい限りです。


1. PIC電子オルゴールの概要

PICに限らず、マイコンで音楽を演奏する例は枚挙に暇がありません。 ここで紹介する電子オルゴールはビブラートはもちろんピアノ風の音表現も出来ません。

 では何が良いのかと言えば、回路を作り上げるのが簡単であるということと好きな音楽を簡単に入力できるという点です。 Excelを使って音符を入力し、マクロがPICのEEPROMに書き込むデータを自動生成することで初心者には難しい部分を省いています。


2. 著作権の問題

日本において音楽関係の著作権はJASRACによって完全に管理されており、趣味としての電子工作も例外ではありません。 個人で楽しむレベルであれば良いらしいのですが、インターネットの様な公共の情報空間へ公開してしまうことは音符だろうが、マイコンの奏でた音楽だろうがソースコードだろうが違法です。 という訳で、著作権切れの音楽を例にして説明していきたいと思います。

ちなみに、人を集めて工作教室をする際には如何なるお金を集めてもいけません。 子供が相手の場合、やけどや気分が悪くなる子供がいることがしばしばなので保険をかけるのですが、これもいかんのだそうです。 もし集金した場合は赤字の如何に関わらずJASRACに著作料を支払う義務が発生します。 …お気を付け下さい。

しかし、電子技術セミナーでは現実的に難しい問題ですので何とかして欲しいものです。 日本の未来のために何とかしてくれ!!

[2011/11/7 追記] 三重県立桑名工業高等学校様が主催された工作教室でJASRACに対して支払った著作権料は1曲3 4円(恐らく一人当たり)だそうですから予算上の問題はほとんど無いようです。


3. このHPで紹介する電子オルゴールが表現可能な音楽の一覧

大抵の音楽を演奏できますが、リズム的に分かり辛いものがあるのも確かです。 下のリストはこれまでに演奏できた曲の一覧です。 たぶん口笛で吹ければ演奏可能です。 参考に、Youtubeに上がっていた音楽へのリンクを掲載しました。


4. 電子回路

完成です
図2 完成した回路です

八代高専(当時)の入江先生がここで紹介する電子オルゴールの回路とマイコンのプログラムを開発されました。 回路は見ての通り、えらい簡単です。 省電力になる工夫がなされており、私の手元に有るサンプルは2年前に貰った奴ですが今でも演奏できます。 一度電池を入れると恐らく、電池が腐るまで動くのではないでしょうか。

4.1 電子回路の設計

回路図です
図3 電子オルゴールの回路図

回路図を上に示します。 この通り配線すれば大丈夫。 簡単そうでしょ?

この回路をブレッドボード上で組んでも良いでしょうし、エッチングで作っても良いと思います。 という訳で、エッチングパターンを以下からダウンロオード出来るようにしました。 たしかトップビューで書いていたはずです。


エッチング用パターンのダウンロード
リリース日 パッケージ 更新内容
2010/6/19 下のファイルで合っていると思っていたら、全く違うファイルでした。 …今探してみたら無い様ですorz。
2010/6/6 music_box2007a.pcb 初公開。超簡単・エッチング用PCB CADの PCBE を使って設計された回路パターンです。
設計者は八代高専(当時)の入江先生です。

4.2 PICのプログラム

以下のプログラムをダウンロードして、書き込めば万事OKです。


PIC用プログラムのダウンロード
リリース日 プログラムパッケージ 更新内容
2010/6/6 oc2008a.asm 初公開。この回路を動かすための生ソースコード(アセンブラ言語)です。
プログラムの設計と製作は八代高専(当時)の入江先生が行っています。

[2014/2/22 追記] このプログラムはPIC12F675向けに設計されており、無改造では他のマイコンで動作しません。

4.3 組み立て

基本的に、図2を参考に部品を実装してもらえればOKです。 部品は背丈の低いものから順につけて行きます。 PICを搭載するソケット・LED・バッテリの向きに気を付けて下さい。 組み立て方の参考として、一世代前の組み立て説明書が参考になると思います。

部品 裏面です
図4 部品です。LEDカバーが一つと、PICマイコンが無くなってますw。 図5 半田面です。こんな感じで半田付けします。

5. Excelを使った音楽ファイル作成

楽譜から、音符の音階と音の長さを読み取り、図5.1に示すエクセルの表へ入力します。 図5.2に示す楽譜を例に、データの入力方法を説明したいと思います。

入力画面です
図5.1 Excelを使った音符の入力画面
楽譜の例
図5.2 楽譜の例

[著作権の問題が有ったため、下記解説で用いている楽譜が図5.2と異なります。その内訂正しますのでご了承ください。]

データの入力手順は、次の通りです。

  1. 先ず、音階を読み取ります。最初の「ド」は音階が"ド"で、音の長さが4分音符です。
  2. 読み取った音程に合わせて図5.3中の①枠の中に入力していきます。 音階の入力は図5.4に示す様に行います。 ここでは、「ド0」を選びます。 もし、♭や#があった場合は半音欄でそれらを選びます。
  3. 次に、音の長さを図5.3中の②枠の中に入力します。 最初の「ド」は4分音符ですので、同様にして4を入力します。 もし、付点がつく場合は付点欄で付点を選んでください。
  4. 最初の「ド」を入力し終わったら、次は「ソ」です。これは4分音符ですが、付点が付いている事に注意してください。 入力の手順は最初の「ド」の時と同じです。 手順の(1.)に戻って、すべての音程を入力し終わるまで繰り返しこの作業を行います。
  5. 全ての入力が終わったら、音階欄の最後に「おしまい」を選択してください。
  6. 図5.5に示す様に、「書き込みデータ作成」ボタンを押して、HEXファイルを作ります。
  7. 図5.6の様にHEXファイルが出来た事を確かめます。
楽譜入力シート
図5.3 楽譜入力シート

音階の選択
図5.4 音階の選択

音楽ファイルを生成する
図5.5 音楽ファイルを生成する

データの確認と演奏
図5.6 データの確認と演奏による視聴


プログラムとサンプルデータのダウンロード

(2021-02-11追記)書き込み用データについて、su50さんからチェックサムが誤っているのでエミュレーターで動作しないとのご指摘を頂きました。たしかに、実機に書き込むと動くので気にしていませんでしたがチェックサムはテキトーです。エミュレーターでの動作が必要な方は、su50のページ( ここをクリック)からサンプルデータ「oc2008a用データ.zip」をダウンロードして下さい。ご指摘ありがとうございました!

リリース日 プログラムパッケージ 更新内容
2014/2/22 MusicBoxforWEBver2014.2.xls.zip WAVEファイルを作成する際に休符に対応できていなかったバグを修正しました。
2010/6/6 MusicBoxforWEBver2010rev1.xls 初公開。プログラムには2008年8月に「YNCTミュージッククリエーター」という名前を付けてました。
たった今まで忘れていましたww。
2010/6/6 kirakira_bosi.hex 初公開。「きらきら星」の書き込み用データです。
2010/6/6 koinobori.hex 初公開。「こいのぼり」の書き込み用データです。
2010/6/6 ookina_hurudokei.hex 初公開。「大きな古時計」の書き込み用データです。

6. 音楽ファイルの書き込み

では、作ったHEXファイルをPICマイコンへ書き込んでみましょう。

  1. PICマイコンをPICライターボードへセットし、パソコンと接続します。
  2. 次に、Windowsメニューのプログラム一覧から[Akizuki]→[PIC programmerV4]を起動させてください。 このソフトの外観は図6.1の様になっているはずです。 PICのEEPROMへ作ったHEXファイルを書き込む手順は以下の通りです。
  3. (1)作ったHEXファイルを読み込みます。図6.1中の指示されたボタンをクリックして、ファイルを選択してください。
    (2)次に、「デバイス選択」です。今回使用するのはPIC12F675ですので「PIC12F675」を選択してください。
    (3)右上にある「拡張機能」ボタンを押して、図6.1中の右下のウィンドウを開きます。
    (4)「拡張プログラミング機能」ウィンドウが開いたら、図6.1に示す様に下側の「プログラム」ボタンをクリックしてください。
    (5)うまくいけばPICのEEPROM(不揮発性メモリ)へ作った音楽データが書き込まれます。旨く行ったかどうかは、一応メッセージが出ますが、動かしてみるのが一番です。

図6.1 PICへ音楽ファイルを書き込みます。

書き込み方の流れ
図6.2 音楽ファイルの書き込み方ダイジェスト版


7. さっそく動かそう!

作ったHEXファイルをPICのEEPROMへ書き込んだら、さっそく動かしてみましょう。

  1. まず、データを書き込んだPICマイコンを自分の作った回路基板へ取り付けます。
  2. 取り付けるにはコツがあり、ICソケットにPICマイコンを深く刺しすぎない事です。
  3. PICマイコンには極性と言って向きがあり、結構デリケートなので差し込む方向を間違えないようによく確認してください。
  4. 電池を取り付ける前に、一通りのチェックを行ってください。
  5. 単三電池を電池ボックスの中へ入れます。スイッチを入れて、音楽が流れればOKです。 もし、動かない場合は素早く電源を切り、電池を取り外した状態でチェックをもう一度行って下さい。
動かそう!
図7.1 上で紹介した回路のひとつ前のバージョンの写真ですが、基本動作は同じです。

8. おまけ☆ 音の出る原理を理解しよう

今回、スピーカから音楽を流してみましたが、一体どうやって音が出るのでしょうか? そもそも音とは、空気の蜜と疎が連続して空間を伝わる振動です。 言い換えれば、かなりの速度で気圧が高くなったり、低くなる状態が伝わっているのです。 太鼓を叩けば、太鼓の皮の部分が震えて空気を押したり引いたりします。 それが空気中に気圧の振動を引き起こし、空間を伝わって私たちの耳にある鼓膜を震わせます。スピーカが音を出す時にも同じ現象が起こっています。 図8.1は普通のスピーカが音を出す原理を示しています。 普通のスピーカは、電磁石が磁石と引き合ったり反発する性質を利用しています。 電磁石がスピーカの膜に取り付けてあるために電磁石の振動は容易に空気中に伝わっていきます。 このように磁石を用いたスピーカは色々な音を出せます。

普通のスピーカの原理
図8.1 スピーカーの音の出る原理

今回の工作に使用したのは圧電スピーカという物です。 図8.2に動作原理を示します。 これは圧電素子の性質を利用しています。 圧電素子とは電圧をかけると変形する性質があります。 時計に使われている水晶発振子も圧電素子の一種です。 この変形によって空気を振動させて音が出ます。 複雑な音は苦手ですが消費電流が少ない点で優れています。

ピエゾ素子を使ったスピーカ
図8.2 圧電効果を利用したスピーカー
[原理というか、図が少し間違っているかも]

PICマイコンは圧電スピーカに図8.3の様に電圧を加えています。 初めは0Vですが、ある時間になると電圧が急に上がり、一定の電圧になります。 また、一定時間が経(た)つと0Vになる・・・と言う事を繰り返します。 この様な電圧の形を方形波(ほうけいは)又は矩形波(くけいは)と言います。 方形波は図8.4に示す様に幾(いく)つもの単純な波が重なって出来ています。 圧電スピーカは幾つかの波の内で最も大きな波の音を出しています。

方形波
図8.3 PICマイコンがスピーカーに出力している信号の時間変化
こう云う波形を“方形波”と呼びます。

方形波はいくつもの波の重なり
図8.4 方形波はいくつもの波が重なって出来ています。


参考文献・外部リンク

air variable MPLABのインストール方法について解説されています。
Robot Watch プロジェクト作成からコンパイルまでの下りが短く紹介されていて参考になります。
inserted by FC2 system