うぼ記

雑に発信

【MFKyoto2020】オリジナルメロディ名刺をつくる 後編

f:id:huboar:20200502093025p:plain

 

この記事はMaker Faire Kyoto Onlineに参加しています。前編の続きです。

makezine.jp

uboar.hatenablog.com

 

ハードウェア解説

 といっても大体ただのマイコンボードだが…

電源部分

 USBから5Vを供給する。この前『USBはお手軽5V電源じゃねえ!!!』みたいなツイートを見た気がするがここでは気にしないことにする。

f:id:huboar:20200502115944p:plain

 RLOADという抵抗が付いているが、これはマイコンの低消費電力が仇となって、電源供給側(モバイルバッテリー等)が漏れ電流と判断してしまい出力をカットするのを防ぐ為の負荷抵抗である。状況に応じて付けて欲しい。

 

 また、写真を見ると分かるが、何故か基板の裏表にUSBのパターンが出ており、そのまま刺すとUSBの外装に端子が触れてショートするというとんでもない設計をしてしまった(アホ)。配布データでは裏しか出さないように修正しているので大丈夫のはず。

f:id:huboar:20200502120650j:plain

 USB端子への刺さり具合を調整するのが結構難しく、基板が薄すぎると接続が安定せず、厚すぎると端子にダメージを与えてしまう。ホームセンターで売ってるクッションテープを使うといい感じに刺さる事が分かったのでショート防止も兼ねて表側に貼っつけている。

マイコン周辺回路

本体と発振子

f:id:huboar:20200502120859p:plain

 DILパッケージのATMEGA328P-PUあるいはQFPパッケージのATMEGA328-AUを選んで取り付けできる。基板の場所を取るので必要性は人によると思うが、意外と僕は役に立っている。Arduino Uno互換機は沢山あったほうが良い

 発振子もリードタイプと表面実装タイプのセラロックを選べる。一応、水晶発振子用のコンデンサを付けるパターン(ラジアルリードのみ)もあるが、部品配置が微妙なので使わないほうが良いかもしれない…

リセットSW

f:id:huboar:20200502122215p:plain

 JP1をショートするか、S1を付けるか選択できる。今思えばパワーオンリセット用にコンデンサとか付けておけばよかった…

シリアル通信まわり

f:id:huboar:20200502122748p:plain

 FT232RLを使用。また、Arduino Pro Mini互換のUSARTピンが基板下部にあるので、Arduino Pro Miniで使えるシリアル変換モジュールがあればそちらも使える。

どうやって書き込むんだ?

f:id:huboar:20200502125647j:plain

 今回お見せした構成では、ピンヘッダの類が付いておらず基板実装した後ではQFPのATMEGA328にプログラムを書き込むのは不可能…という程ではないが結構面倒臭い

 そこで、aitendoで販売されているQFPでいいのというボードを使用してプログラムを書き込んでから基板に実装するようにした。

www.aitendo.com

 上に付いてるQFP変換ソケットで無限に遊べるので非常にオススメ。

 

ブザー周辺回路

f:id:huboar:20200502123830p:plain

 ブザーにはUGCT7525AN4を使用。

 R2・R3・TR1(FET)を付けてJP2を2-3側にショートさせるとFETでの駆動、JP2の1-2側、JP3をショートさせるとマイコンから直接ブザーを駆動させる。またJP4をショートさせる代わりにVR1を付ければ音量調節が可能に。

ソフトウェア解説

 実際のコードの内容については配布ページを参照して欲しい。あまり良くできたものではないが…

github.com

音源について

 前編でも述べた通り、Akiyoshi Kamide氏のPWMDAC_Synthライブラリを使用させて頂いた。非常にお手軽にポリ音源が使えるのでオススメ。

 矩形波だけでなく三角波正弦波等色々出せるのだが使用した今回のブザーでは音がかなり小さくなってしまうので断念。

 

 配布データには入っていないので自分で作る場合は別途ダウンロードして欲しい。

MMLについて

対応コマンド

CDEFGAB+-^O><T、2・4・8・16・32分音符に対応してます。

データの準備

 MMLを直で打つのはちょっと面倒臭いので、loveemu氏のPetiteMMを使ってMIDIMMLに変換した。多謝。

github.com

 用意したMMLはチャンネル毎に分割してdata_chx配列にそれぞれ入れている。

 

 正直ソフトウェアについては殆どボリュームが無いのでそれほど解説する事が無い。