2010/05/24: monotron gloves
KORGから発売された超小型アナログシンセ「monotron」を改造して、グローブでピッチやフィルターのカットオフをコントロールできるものを作ってみました。
全体はこんな感じです。。

両手とも、人差し指と中指、薬指にそれぞれ一つずつ合計3本の曲げセンサーが入っています。
右手はフィルターのカットオフの値をコントロールします。3本が直列に接続されているので、3本同時に曲げると激しい変化、1本ずつなら緩やかな変化になります。手首のボックスについているつまみは電圧の範囲を微調整できるようにしています。

左手は、右手と同じ仕組みでピッチのコントロール。他に、親指の部分にゲート信号用の誘電糸で作ったスイッチがあります。親指を曲げると通電しスイッチがONされる仕組みです。

大きなボタンはトグル式のボタンでゲートに割り当てられています。これを押すと鳴りっぱなしにできます。他の小さな8つのボタンは、メジャー・マイナーなどのスケールモードを切り替えます。つまみはピッチ信号の電圧変化のカーブ具合を調整するための可変抵抗です。左が10KΩ、右が1KΩです。
スケールの変換は黒いボックスの中に積んだArduino pro miniで計算させ、MCP4725モジュールでDA変換してmonotronへ送り込んでいます。なにせ相手がアナログシンセなため、正確な音程コントロールはむずかしかったです。抵抗値は温度でも変わってしまうらしくかなり繊細。一応可変抵抗をかませて調節可能にしていますが・・・。
Arduino pro miniの電源ですが、monotron内部で電源が5Vに昇圧されていたので、そっちからとるようにしました。無理かなと思ってましたが、意外と大丈夫でびっくりでした。おかげですっきりまとまりました。

それぞれのグローブはモジュール化されているので、どちらか一方だけ使うといったことも可能です。左手は「Vcc,GND,GATE,PITCH」の4端子ミニジャック、右手は「Vcc,GND,CutOff」の3端子マイクロジャックで接続します。

とても演奏とはよべない代物ですが、デモ映像です。途中でスケールモードに切り替えています。
本当は、肘につけるモジュールもつくってフィルターのピークや、音量もコントロールできるようにしたかったのですが、monotron側でそのための端子を引き出すのが難しくて断念しました。でも、いつかやってみたい!
あと、monotron側の改造ポイントや各モジュールの回路図、pdeファイルなどもそのうち公開したいと思ってます。
最後になってしまいましたが、今回の改造にあたり下記の方々がサイト上で貴重な情報を公開して下さっていたり、直接ご助言をいただきました。この方々の協力なしで自力ではできなかったです。お礼申し上げます!
masa921さん
beatnicさん
Denkitribeさん
でんはさん
MTM05に出展したときの様子をlimmaさんに撮っていただきました。
-
特設サイトにも掲載されました。
We love monotron (korg)
全体はこんな感じです。。
両手とも、人差し指と中指、薬指にそれぞれ一つずつ合計3本の曲げセンサーが入っています。
右手はフィルターのカットオフの値をコントロールします。3本が直列に接続されているので、3本同時に曲げると激しい変化、1本ずつなら緩やかな変化になります。手首のボックスについているつまみは電圧の範囲を微調整できるようにしています。
左手は、右手と同じ仕組みでピッチのコントロール。他に、親指の部分にゲート信号用の誘電糸で作ったスイッチがあります。親指を曲げると通電しスイッチがONされる仕組みです。
大きなボタンはトグル式のボタンでゲートに割り当てられています。これを押すと鳴りっぱなしにできます。他の小さな8つのボタンは、メジャー・マイナーなどのスケールモードを切り替えます。つまみはピッチ信号の電圧変化のカーブ具合を調整するための可変抵抗です。左が10KΩ、右が1KΩです。
スケールの変換は黒いボックスの中に積んだArduino pro miniで計算させ、MCP4725モジュールでDA変換してmonotronへ送り込んでいます。なにせ相手がアナログシンセなため、正確な音程コントロールはむずかしかったです。抵抗値は温度でも変わってしまうらしくかなり繊細。一応可変抵抗をかませて調節可能にしていますが・・・。
Arduino pro miniの電源ですが、monotron内部で電源が5Vに昇圧されていたので、そっちからとるようにしました。無理かなと思ってましたが、意外と大丈夫でびっくりでした。おかげですっきりまとまりました。
それぞれのグローブはモジュール化されているので、どちらか一方だけ使うといったことも可能です。左手は「Vcc,GND,GATE,PITCH」の4端子ミニジャック、右手は「Vcc,GND,CutOff」の3端子マイクロジャックで接続します。
とても演奏とはよべない代物ですが、デモ映像です。途中でスケールモードに切り替えています。
本当は、肘につけるモジュールもつくってフィルターのピークや、音量もコントロールできるようにしたかったのですが、monotron側でそのための端子を引き出すのが難しくて断念しました。でも、いつかやってみたい!
あと、monotron側の改造ポイントや各モジュールの回路図、pdeファイルなどもそのうち公開したいと思ってます。
最後になってしまいましたが、今回の改造にあたり下記の方々がサイト上で貴重な情報を公開して下さっていたり、直接ご助言をいただきました。この方々の協力なしで自力ではできなかったです。お礼申し上げます!
masa921さん
beatnicさん
Denkitribeさん
でんはさん
MTM05に出展したときの様子をlimmaさんに撮っていただきました。
-
特設サイトにも掲載されました。
We love monotron (korg)
2010/05/13: Arduinoを使ってTWIでMCP4725を複数接続したいができない
Arduinoをマスター、複数のMCP4725(DAコンバータ)をスレーブとして、TWI(I2C)接続で複数台のMCP4725をコントロールしたかったのですが、できませんでした。
原因はDeviceCodeというビットが1100という値に固定されているためです。MCP4725のA0が論理スイッチになっているので、ここをVss("0",GND)またはVdd("1",5V)に接続すると同時に2台まではいけるようです(この場合、ArduinoのWire.beginTransmission(96);でVssに接続したデバイス、Wire.beginTransmission(97);でVddへ接続したデバイスへの送信になるようです)。 → ソース元
しかし、スイッチサイエンスのモジュールは始めからA0がVssに接続されているため、ここも変更できません!チップの足元の半田を外してVddに再接続すれば行けると思いますが、かなり難易度高いです・・・。
ということで、結論としてArduinoでこのモジュールを複数台コントロールする目論みは失敗に終わりました。
原因はDeviceCodeというビットが1100という値に固定されているためです。MCP4725のA0が論理スイッチになっているので、ここをVss("0",GND)またはVdd("1",5V)に接続すると同時に2台まではいけるようです(この場合、ArduinoのWire.beginTransmission(96);でVssに接続したデバイス、Wire.beginTransmission(97);でVddへ接続したデバイスへの送信になるようです)。 → ソース元
しかし、スイッチサイエンスのモジュールは始めからA0がVssに接続されているため、ここも変更できません!チップの足元の半田を外してVddに再接続すれば行けると思いますが、かなり難易度高いです・・・。
ということで、結論としてArduinoでこのモジュールを複数台コントロールする目論みは失敗に終わりました。
2009/11/30: AVR studioでArduinoのプログラムをAVRに書き込む方法
Arduinoでデモを作って、AVRで実装したいという人向けの情報で、Arduinoや、gainerしか使ったことがなくて、AVRに直接プログラムを書き込んだことがない人向けの説明です。
プログラム自体はArduinoで開発して、書き出されたHEXファイルというAVRで動くファイルを、AVRに書き込む方法を紹介します。
AVRライタの紹介などはこちら。
Karappo Interaction Lab. » マイコン初心者のAVR入門
■Arduino IDEでやること
1. Arduinoで動くプログラムを書く。
Arduinoで動けば、AVRでも動くはずなので、普通にArduinoの書き方で書けばOKです。
2. Arduino IDEで、Uploadボタンを押す。
Uploadは失敗してもOKです。Uploadボタンを押した時点で、最終的にAVRに書き込むHEXファイルというファイルが書き出されます。
■AVR studioでやること
- AVR studioのインストーラはこちら
基本的にArduinoでプログラムを開発している場合、AVR studioで使うボタンは下にある画像の、Connectボタンと、AVRボタンだけです。他は使わなくても大丈夫です。

1. ツールバーのようなところにある、Connectボタンを押して、AVRへの接続に使うUSBライタを指定します。

- AVR Main タブ
2. ツールバーにある、AVRボタンを押します。ここの画面で、AVRとの通信の仕方の設定、プログラムの書き込み、AVRの設定をすることができます。
3. Mainタブで、まずAVRのチップを選択します。ATmega328PやATmega168Pなど。また、Programming Modeは、ISP mode、ISP Frequencyは、125kHzなどに設定。ISP Frequencyはクロックの1/4以下にする必要があるそうですが、あまり遅くしすぎるとAVRへの書き込み自体できなくなってしまうそうなので、とりあえずよく分からない場合は、125kHzにしておくのが無難かと思われます。
ちなみに買ってきたばかりのAVRチップは内蔵8MHzの発振なので、周波数は2MHz以下にする必要がありますが、ネットでいろいろ見た限りでは目安として、1/16ぐらいの方が無難な気がします。16MHzで、1MHz。8MHzで、500kHz。

- AVR Fuses タブ
4. Fusesタブで、CKDIV8のチェックをはずします。ここにチェックが入っていると、AVRの動作がおかしくなるので注意が必要です。クロック数が8分の1になってしまい、delay(100);などの処理に時間がかかってしまったりするようです。
5. Fusesタブで、SUT_CKSELで、AVRの周波数を設定します。外部クロックを使用する場合は(基本的に外部クロックを利用すると思いますが)メニューの一番下にある、Ext. Crystal OSC. 8.0-MHx〜〜というものを選びます。意味は、外部クロックで、8MHz以上の周波数のものを利用するということです。(16MHzなどが今は一般的だと思われます)項目選択後は、Programボタンを押します。

ちなみに、Readというボタンを押すと、AVRにある設定をAVR studioに読み込むことができます。
- AVR Programタブ
6. Programタブで、Deviceというエリアにある、Erase device before flash programmingにチェックが入っているかどうか確認します。ここにチェックが入っていないと、AVRにプログラムが書き込めないことがあります。
7. Programタブで、Flashというエリアにある、Input HEX Fileというフォームから、Arduinoで書き出したHEXファイルを選択します。HEXファイルは、Arduinoのプロジェクトのフォルダのなかにある、appletフォルダの中です。プロジェクト名.cpp.hexというファイルがそうです。ファイルを選択したら、Flashというエリア内にある、Programボタンを押します。これで、AVRにArduinoで書いたプログラムが書き込めました。

自作のArduinoを作りたい場合はsuganさんのこちらのサイトも参考になりそうです。
プログラム自体はArduinoで開発して、書き出されたHEXファイルというAVRで動くファイルを、AVRに書き込む方法を紹介します。
AVRライタの紹介などはこちら。
Karappo Interaction Lab. » マイコン初心者のAVR入門
■Arduino IDEでやること
1. Arduinoで動くプログラムを書く。
Arduinoで動けば、AVRでも動くはずなので、普通にArduinoの書き方で書けばOKです。
2. Arduino IDEで、Uploadボタンを押す。
Uploadは失敗してもOKです。Uploadボタンを押した時点で、最終的にAVRに書き込むHEXファイルというファイルが書き出されます。
■AVR studioでやること
- AVR studioのインストーラはこちら
基本的にArduinoでプログラムを開発している場合、AVR studioで使うボタンは下にある画像の、Connectボタンと、AVRボタンだけです。他は使わなくても大丈夫です。
1. ツールバーのようなところにある、Connectボタンを押して、AVRへの接続に使うUSBライタを指定します。
- AVR Main タブ
2. ツールバーにある、AVRボタンを押します。ここの画面で、AVRとの通信の仕方の設定、プログラムの書き込み、AVRの設定をすることができます。
3. Mainタブで、まずAVRのチップを選択します。ATmega328PやATmega168Pなど。また、Programming Modeは、ISP mode、ISP Frequencyは、125kHzなどに設定。ISP Frequencyはクロックの1/4以下にする必要があるそうですが、あまり遅くしすぎるとAVRへの書き込み自体できなくなってしまうそうなので、とりあえずよく分からない場合は、125kHzにしておくのが無難かと思われます。
ちなみに買ってきたばかりのAVRチップは内蔵8MHzの発振なので、周波数は2MHz以下にする必要がありますが、ネットでいろいろ見た限りでは目安として、1/16ぐらいの方が無難な気がします。16MHzで、1MHz。8MHzで、500kHz。
- AVR Fuses タブ
4. Fusesタブで、CKDIV8のチェックをはずします。ここにチェックが入っていると、AVRの動作がおかしくなるので注意が必要です。クロック数が8分の1になってしまい、delay(100);などの処理に時間がかかってしまったりするようです。
5. Fusesタブで、SUT_CKSELで、AVRの周波数を設定します。外部クロックを使用する場合は(基本的に外部クロックを利用すると思いますが)メニューの一番下にある、Ext. Crystal OSC. 8.0-MHx〜〜というものを選びます。意味は、外部クロックで、8MHz以上の周波数のものを利用するということです。(16MHzなどが今は一般的だと思われます)項目選択後は、Programボタンを押します。
ちなみに、Readというボタンを押すと、AVRにある設定をAVR studioに読み込むことができます。
- AVR Programタブ
6. Programタブで、Deviceというエリアにある、Erase device before flash programmingにチェックが入っているかどうか確認します。ここにチェックが入っていないと、AVRにプログラムが書き込めないことがあります。
7. Programタブで、Flashというエリアにある、Input HEX Fileというフォームから、Arduinoで書き出したHEXファイルを選択します。HEXファイルは、Arduinoのプロジェクトのフォルダのなかにある、appletフォルダの中です。プロジェクト名.cpp.hexというファイルがそうです。ファイルを選択したら、Flashというエリア内にある、Programボタンを押します。これで、AVRにArduinoで書いたプログラムが書き込めました。
自作のArduinoを作りたい場合はsuganさんのこちらのサイトも参考になりそうです。
2009/10/09: EAGLEにライブラリを追加する
回路図・プリント基盤パターンを設計するためのCADソフトEAGLEをちょっと使い始めてみました。で、なにをするにしても部品がライブラリにないと設計始められません。よそでダウンロードしてきたライブラリを追加するときには、「EAGLE/lbr/」以下にlbrファイルを保存してEAGLEを再起動すれば良いのですが、注意点が一つ。
動作環境:
MacOSX 10.5
Version 5.6.0 for Mac OS X (free ver.)
lbrファイルの頭文字が小文字でないと認識されません。
こちらのSparkFunの公式ライブラリが「SparkFun.lbr」という名前だったので、そのままだと認識されませんでした。Windowsでは大丈夫なのかもしれませんが念のため。動作環境:
MacOSX 10.5
Version 5.6.0 for Mac OS X (free ver.)
2009/10/08: 【Meloduino】Arduinoで音程をコントロール
このブログへの投稿は久しぶりです。(なんと1年半ぶり!)
前の記事以降、これやこれの制作を通して少しずつ電子工作に慣れてきました。最近も次の作品作りに向けて目下作業中です。
今回はArduinoで複雑なメロディを奏でるプロジェクトを公開します。
まず、Arduinoで音を出力するサンプルはIDEのメニューから「File > Examples > Digital > Melody」にあります。ArduinoのDOUT(デジタルアウト)ピンをスピーカーにつなぎ、そのピンの出力を一定の周期で「01」に切り替えることでパルス波を得られます。また、その周期を変えることで音高コントロールすることができます。
これを改良して、ベンド(ある音高と別の音高を滑らかに繋げること)など、より細かい設定が可能なようにしました。下に基本的な使い方を解説します。興味ある人はDLしてソースを見てみてください。スコアの記述法を考えるのが簡易なプログラミング言語を作ってる感覚で面白かったです。より扱いやすいスコアの記述法なども募集します!名前はAuduinoを真似てます。
-
Meloduino
Version: 1.1 (ベンディング時のバグを修正)
2009.10.12
Meloduino_v1_1.zip[127clicks]
Version: 1
2009.10.8
Meloduino_v1.zip[33clicks]
使い方
下記のようにスコア(char型の配列)を用意して、playScoreに渡します。
ノート
スコアはノートの連なりで構成され、playScoreの第2引数で1ノート分の単位時間を指定できます。
指定しない場合はデフォルト値(50ms)になります。
スコア記号
スコアの記述
ノートの音高を指定し、持続記号で長さを指定します。音高記号はそれだけで1ノート分の長さを持ちます。
無音部分はスペースで記述します。"."を最後につけるとループするときに一定の間隔を設けることができます
ベンドによる音程の接続
"C~~~~D." 「ド」から4ノート分の長さで「レ」へ移行します。
【注意】'~'の数で持続時間を指定します。例として次のノートの長さは(3ではなく)1ノート分になります。
ノート固有の変化記号はノートの後ろにつけます。
グローバルな変化記号はそれ以降の全てのノートに影響します。
複数指定可能です。
上の方のビデオの中で再生してるスコアです。再生順になってます。
TODO
これから追加したい機能。
・半音階
・BPMの指定
・音高の周波数指定
・シャープやフラットの変化記号
前の記事以降、これやこれの制作を通して少しずつ電子工作に慣れてきました。最近も次の作品作りに向けて目下作業中です。
今回はArduinoで複雑なメロディを奏でるプロジェクトを公開します。
まず、Arduinoで音を出力するサンプルはIDEのメニューから「File > Examples > Digital > Melody」にあります。ArduinoのDOUT(デジタルアウト)ピンをスピーカーにつなぎ、そのピンの出力を一定の周期で「01」に切り替えることでパルス波を得られます。また、その周期を変えることで音高コントロールすることができます。
これを改良して、ベンド(ある音高と別の音高を滑らかに繋げること)など、より細かい設定が可能なようにしました。下に基本的な使い方を解説します。興味ある人はDLしてソースを見てみてください。スコアの記述法を考えるのが簡易なプログラミング言語を作ってる感覚で面白かったです。より扱いやすいスコアの記述法なども募集します!名前はAuduinoを真似てます。
-
Meloduino
Version: 1.1 (ベンディング時のバグを修正)
2009.10.12
Meloduino_v1_1.zip[127clicks]
Version: 1
2009.10.8
Meloduino_v1.zip[33clicks]
使い方
下記のようにスコア(char型の配列)を用意して、playScoreに渡します。
char score[] = "E----.";
playScore(score);
ノート
スコアはノートの連なりで構成され、playScoreの第2引数で1ノート分の単位時間を指定できます。
指定しない場合はデフォルト値(50ms)になります。
// scoreの中の1ノートの長さが1000msになります。
playScore(score, 1000);
スコア記号
'A','B','C','D','E','F','G','A','B':1ノートの音高
' ':1ノートの無音
'-':1ノートの持続
'~':ベンドと1ノートの持続
'>':1オクターブ上昇
'<':1オクターブ下降
'.':SILENCE_TIMEで指定された時間分の無音
'(':ノートの変化記号開始
')':ノートの変化記号終了
'[':グローバルの変化記号開始
']':グローバルの変化記号終了
',':無視される記号(グルーピングなどに使用する)
スコアの記述
ノートの音高を指定し、持続記号で長さを指定します。音高記号はそれだけで1ノート分の長さを持ちます。
"C" 「ド」
"C-"「ド」
"C--" 「ドー」
無音部分はスペースで記述します。"."を最後につけるとループするときに一定の間隔を設けることができます
"CC C----."「ドド・・ドーー」
ベンドによる音程の接続
"C~~~~D." 「ド」から4ノート分の長さで「レ」へ移行します。
【注意】'~'の数で持続時間を指定します。例として次のノートの長さは(3ではなく)1ノート分になります。
"E~F."
ノート固有の変化記号はノートの後ろにつけます。
"C(<)."
グローバルな変化記号はそれ以降の全てのノートに影響します。
"CDE[>]CDE."
複数指定可能です。
"CDE[>>>]CDE."
上の方のビデオの中で再生してるスコアです。再生順になってます。
char score1[] = "C--D--E----D--C-- C--D--E--D--C--D----.[>]C--D--E----D--C-- C--D--E--D--C--D----.";
char score2[] = "[<<]CDEFGAB[>]CDEFGAB[>]CDEFGAB[>]CDEFGAB[>]CDEFGAB[>]CDEFGAB[>]CDEFGAB.";
char score3[] = "E(<<)A~G(>)BB(<<)B(>)~~BF(>>>>)E(<)D D(<)AB B";
char score4[] = "[<<],E--E~~D[>>]F(<)--F--F-- ,[<<<<],E--E~~D[>>]F(<)--F--F-- E,[<<<<],E--E~~D[>>>>]F(<)--F--F--E~_E(<),[<<<<],E--E~~D[>>>>]F(<)--F--F-- E(>)";
TODO
これから追加したい機能。
・半音階
・BPMの指定
・音高の周波数指定
・シャープやフラットの変化記号
2008/04/22: マイコン初心者のAVR入門 2.5
プログラミングについて記事を書くといいつつ、時間がなくなってやれてません。
今日も、最近買ったそれ系の本の紹介でお茶を濁したいと思います。

試しながら学ぶAVR入門―マイコンの基礎と電子工作とWindowsアプリケーションの作り方 (Skill up my computerシリーズ)
前回紹介した本は実例集という感じでしたが、こちらはAVR自体についてもっと詳しく書かれています。マイコンとはなにかってとこから書いてあるので、AVRで入門する場合には一番いいかも。

AVRマイコン・リファレンス・ブック―AVRのCPUアーキテクチャ、豊富な内蔵周辺機能を詳細解説 (マイコン活用シリーズ)
多分、AVRの一番詳しい本。念のため買って見たけど・・・。

Handmade Electronic Music: The Art of Hardware Hacking
サウンドアーティストのNicolas Collinsさんの著書。洋書ですが、写真や図が多くて見やすいです。「コンセントから電力をとるなんてことはするなよ!死んじまうぞ」と、真っ先に注意をしてます。
Richard Lermanや刀根康尚の名前が出てくるので、それだけでやる気になります。こういう本なかなかないんじゃないかな。
今日も、最近買ったそれ系の本の紹介でお茶を濁したいと思います。

試しながら学ぶAVR入門―マイコンの基礎と電子工作とWindowsアプリケーションの作り方 (Skill up my computerシリーズ)
前回紹介した本は実例集という感じでしたが、こちらはAVR自体についてもっと詳しく書かれています。マイコンとはなにかってとこから書いてあるので、AVRで入門する場合には一番いいかも。

AVRマイコン・リファレンス・ブック―AVRのCPUアーキテクチャ、豊富な内蔵周辺機能を詳細解説 (マイコン活用シリーズ)
多分、AVRの一番詳しい本。念のため買って見たけど・・・。

Handmade Electronic Music: The Art of Hardware Hacking
サウンドアーティストのNicolas Collinsさんの著書。洋書ですが、写真や図が多くて見やすいです。「コンセントから電力をとるなんてことはするなよ!死んじまうぞ」と、真っ先に注意をしてます。
Richard Lermanや刀根康尚の名前が出てくるので、それだけでやる気になります。こういう本なかなかないんじゃないかな。
2008/04/10: マイコン初心者のAVR入門 2
AVR入門にあたって、参考にした本はこちらの「AVRマイコン活用ブック」です。とにかく実例がたくさん載っているので楽しいのですが、これだけでは初心者にはちんぷんかんぷんなところも多いです。(PICマイコン用の書籍ですが、「やさしいPICマイコン プログラミング&電子工作」は丁寧な解説つきでよかったです)

AVRマイコン活用ブック―オリジナル電子ゲーム&ロボット製作 (わかるマイコン電子工作)
この本では、ストロベリー・リナックス社の「ATMEGAマイコンボードキット」というキットを用いて、様々な応用例を示してあるのですが、肝心のボードキットが品切れ状態で、僕はしょうがなく部品一つ一つを買って、ブレッドボードで自作しようと試みました。基盤とブレッドボードでは、配線の都合が異なるので、用意する部品も多くなります。あれこれ考えてリストアップしておいたつもりでも、買い忘れが発生します。100μFの電解コンデンサは、冒頭の部品リストにも入っていないので要注意です!(これのせいで、まだ未完成・・・)
結局、僕はキットの複製はとりあえず諦めて、その次にあったATTiny26を使った自作マイコンボードから始めることにしました。こちらは部品数も少なくシンプルです。一番小さいサイズのブレッドボードでも組むことができます。
誌面でリストアップされた部品以外で、あるといいなと思ったものをあげます。
ブレッドボード
一番小さいのでもできましたが、何個か大きさ違いであるといいかも。
ジャンプワイヤ
多すぎだと思うくらいで良いと思います。意外と使う。
虫ピン付の導線
電源の接続や、そのほかもろもろで重宝します。最低2本は欲しい。
LED
たくさんあっていいと思います。
ラジオペンチ、ニッパー、ピンセット
ピンセットはあった方が良いです。
ハンダ、ハンダゴテ、こて台
基本ですが、ブレッドボードで組む場合もやっぱり、あった方が良いです。ブレッドボード用ISPコネクタ作成で使いました。
セメダイン
ブレッドボード用ISPコネクタ作成で使いました。ハンダ付けしたところを固める用にあるとよさげです。
完成図

ブレッドボード用ISPコネクタ
完成図の奥の方に見える、束になった導線はISP端子用のコネクタで、自作しました。ISP端子は2×3ピンなので、そのままではブレッドボードにさしたとき混線してしまいます。そこで、ピンプラグとフラットケーブルを組み合わせて6ピン一列に変換していると言うわけです。抜き差しで、接合部分に結構負担がかかるので、ずれないようなちょっといいピンプラグにしたり、セメダインで固めたり工夫が必要です。

次回は、いよいよプログラミングの話を書こうかな。

AVRマイコン活用ブック―オリジナル電子ゲーム&ロボット製作 (わかるマイコン電子工作)
この本では、ストロベリー・リナックス社の「ATMEGAマイコンボードキット」というキットを用いて、様々な応用例を示してあるのですが、肝心のボードキットが品切れ状態で、僕はしょうがなく部品一つ一つを買って、ブレッドボードで自作しようと試みました。基盤とブレッドボードでは、配線の都合が異なるので、用意する部品も多くなります。あれこれ考えてリストアップしておいたつもりでも、買い忘れが発生します。100μFの電解コンデンサは、冒頭の部品リストにも入っていないので要注意です!(これのせいで、まだ未完成・・・)
結局、僕はキットの複製はとりあえず諦めて、その次にあったATTiny26を使った自作マイコンボードから始めることにしました。こちらは部品数も少なくシンプルです。一番小さいサイズのブレッドボードでも組むことができます。
誌面でリストアップされた部品以外で、あるといいなと思ったものをあげます。
ブレッドボード
一番小さいのでもできましたが、何個か大きさ違いであるといいかも。
ジャンプワイヤ
多すぎだと思うくらいで良いと思います。意外と使う。
虫ピン付の導線
電源の接続や、そのほかもろもろで重宝します。最低2本は欲しい。
LED
たくさんあっていいと思います。
ラジオペンチ、ニッパー、ピンセット
ピンセットはあった方が良いです。
ハンダ、ハンダゴテ、こて台
基本ですが、ブレッドボードで組む場合もやっぱり、あった方が良いです。ブレッドボード用ISPコネクタ作成で使いました。
セメダイン
ブレッドボード用ISPコネクタ作成で使いました。ハンダ付けしたところを固める用にあるとよさげです。
完成図
ブレッドボード用ISPコネクタ
完成図の奥の方に見える、束になった導線はISP端子用のコネクタで、自作しました。ISP端子は2×3ピンなので、そのままではブレッドボードにさしたとき混線してしまいます。そこで、ピンプラグとフラットケーブルを組み合わせて6ピン一列に変換していると言うわけです。抜き差しで、接合部分に結構負担がかかるので、ずれないようなちょっといいピンプラグにしたり、セメダインで固めたり工夫が必要です。
次回は、いよいよプログラミングの話を書こうかな。
2008/04/10: マイコン初心者のAVR入門
Gainerを少しかじっただけの初心者が、調子にのってAVRに手をつけ始めました。完全孤独な手探り状態ですが、同じように興味のある人たちのために人柱となるべく、分かったことを少しずつまとめていきたいと思います。専門分野の方から見ればかなりお粗末な内容、間違いもあるかもしれませんが、ご容赦ください。
*この記事はWindows専用です。Macで扱えるのかはよく知りません。ごめんなさい。
AVR
AVRとはAtmel社から発売されているマイコンの一種です。マイコンの代名詞と言えばMicrochip社のPICですが、導入費が比較的安いのと、性能面でもアドバンテージがありそう(この辺りで入れ知恵されました)だったのでAVRに挑戦することにしました(PICに比べて関連書籍が圧倒的に少ないので、不安ですが・・・)。ArduinoのマイコンにもAVRが採用されています。ちなみにGainerのマイコンはCypress社のPSoCです。

このAVRは「ATMega168」(500円)と「ATTiny26」(400円)です。括弧内はマルツパーツでの価格です。GainerやArduinoなどのI/Oモジュールは一個あたり3000円〜10000円くらいしますが、とりあえず単体で購入しさえすれば、PCとの接続は簡単にできます。一方、マイコンは一個あたり数百円で購入できますが、導入の際にはあらかじめ必要なものがあります。ライターと呼ばれる、書き込み用のデバイスです。
ライター
プログラマーとも言うようです。種類がたくさんあるので、何がいいのか迷いました。
ライターは大きく2つのタイプに分けられます。ひとつは、パラレルライターという(のが正式名称なのか分かりませんが)ライター自体の筐体に指しごみ口があって、そこにマイコンを差し込んで書き込むタイプ。もうひとつは、ISPと呼ばれるタイプのものです。
ISPはIn the System Programmingの略で、要はマイコンを回路に組み込んだ状態で書き込みできるものです。ISPコネクタという2×3のピンプラグを回路内に配置しておいて、ライターとはそこを介して書き込み手続きをします。いちいちマイコンをはずして書き込みをしなくてもいいので、断然こちらのタイプの方が良いような気がします。デバイス自体も前者よりも安いし。
さて、ISPタイプに決めたは良いものの、まだ選択肢はたくさんあります。まず、PCとの接続方式がシリアル接続やUSBなどあります。これは、USBの方が何かと便利でしょう。
ISPでUSB、ここまで絞ってもまだいろいろあります。Atmel社がだしている純正のものの他にも、サードパーティ製品も多数、自作する人もいます。サードパーティ製品の方が安いのですが、新機種への対応や動作保障などを考慮して、純正のものを買うことにしました。

AVRISP mkII
マルツパーツで6000円でした。見た目も他のよりかわいくてグッドです。
ドライバは、接続してネット経由で探させると見つかったので特にダウンロードの必要はないみたいです。
総合開発環境
ライターが手に入ったら、次はソフト面の開発環境を整えます。開発環境にもいろいろあるのかもしれませんが、Atmel社から無料で入手できるAVR Studioを使います。2008年4月10日現在バージョン4.13が最新でした。何にもついてないAVR Studio 4.13が本体です。個人情報の入力を求められるので、面倒くさいけど書いてダウンロード&インストール。SP1とかSP2とかは、追加モジュールみたいなものっぽいので数字の大きい方だけダウンロードしてインストール。
Cコンパイラ
AVR Studioだけだと、開発はアセンブラ言語のみでC言語が使えないので、C言語用のコンパイラをインストールします。WinAVRというのがあるので、これをインストールしました。こちらも無料です。
以上で、一応環境は整いました。もちろん、ほんとにこれだけでは何にもできないので、次回はその他の細かいところをまとめてみようと思います。
*この記事はWindows専用です。Macで扱えるのかはよく知りません。ごめんなさい。
AVR
AVRとはAtmel社から発売されているマイコンの一種です。マイコンの代名詞と言えばMicrochip社のPICですが、導入費が比較的安いのと、性能面でもアドバンテージがありそう(この辺りで入れ知恵されました)だったのでAVRに挑戦することにしました(PICに比べて関連書籍が圧倒的に少ないので、不安ですが・・・)。ArduinoのマイコンにもAVRが採用されています。ちなみにGainerのマイコンはCypress社のPSoCです。
このAVRは「ATMega168」(500円)と「ATTiny26」(400円)です。括弧内はマルツパーツでの価格です。GainerやArduinoなどのI/Oモジュールは一個あたり3000円〜10000円くらいしますが、とりあえず単体で購入しさえすれば、PCとの接続は簡単にできます。一方、マイコンは一個あたり数百円で購入できますが、導入の際にはあらかじめ必要なものがあります。ライターと呼ばれる、書き込み用のデバイスです。
ライター
プログラマーとも言うようです。種類がたくさんあるので、何がいいのか迷いました。
ライターは大きく2つのタイプに分けられます。ひとつは、パラレルライターという(のが正式名称なのか分かりませんが)ライター自体の筐体に指しごみ口があって、そこにマイコンを差し込んで書き込むタイプ。もうひとつは、ISPと呼ばれるタイプのものです。
ISPはIn the System Programmingの略で、要はマイコンを回路に組み込んだ状態で書き込みできるものです。ISPコネクタという2×3のピンプラグを回路内に配置しておいて、ライターとはそこを介して書き込み手続きをします。いちいちマイコンをはずして書き込みをしなくてもいいので、断然こちらのタイプの方が良いような気がします。デバイス自体も前者よりも安いし。
さて、ISPタイプに決めたは良いものの、まだ選択肢はたくさんあります。まず、PCとの接続方式がシリアル接続やUSBなどあります。これは、USBの方が何かと便利でしょう。
ISPでUSB、ここまで絞ってもまだいろいろあります。Atmel社がだしている純正のものの他にも、サードパーティ製品も多数、自作する人もいます。サードパーティ製品の方が安いのですが、新機種への対応や動作保障などを考慮して、純正のものを買うことにしました。
AVRISP mkII
マルツパーツで6000円でした。見た目も他のよりかわいくてグッドです。
ドライバは、接続してネット経由で探させると見つかったので特にダウンロードの必要はないみたいです。
総合開発環境
ライターが手に入ったら、次はソフト面の開発環境を整えます。開発環境にもいろいろあるのかもしれませんが、Atmel社から無料で入手できるAVR Studioを使います。2008年4月10日現在バージョン4.13が最新でした。何にもついてないAVR Studio 4.13が本体です。個人情報の入力を求められるので、面倒くさいけど書いてダウンロード&インストール。SP1とかSP2とかは、追加モジュールみたいなものっぽいので数字の大きい方だけダウンロードしてインストール。
Cコンパイラ
AVR Studioだけだと、開発はアセンブラ言語のみでC言語が使えないので、C言語用のコンパイラをインストールします。WinAVRというのがあるので、これをインストールしました。こちらも無料です。
以上で、一応環境は整いました。もちろん、ほんとにこれだけでは何にもできないので、次回はその他の細かいところをまとめてみようと思います。
2008/03/09: AS3でGainerを扱いたい場合
初心者がAS3でGainerを扱いたい場合、GainerのサイトからFlash用のドライバとライブラリをダウンロードする方法では無理です。
というか、やめといたほうが良いです。
ここでダウンロードしたファイルの中に、「Actionscript3」というフォルダがあったり、Gainer本にも『onEnterframeとか、AS2とAS3で変更になった箇所を修正すれば使えます』と書いてはありますが、ちょこちょこ自分で修正していくやりかただと、時間がすごくかかるし結果として無駄になっちゃいそうな予感です。まぁ、僕がAS3はじめたばかりというのもあるのでしょうが。とりあえず、AS3も初めて、Gainerも初めてというような場合は、やめておいたほうが無難です。ちなみに、GainerのライブラリはAS3への対応はしないそうです(参考)。
では、代わりにどうすればいいか。
Funnelというのを使うのがよさげです。
サイトの説明によると「ソフトウェア・ライブラリとハードウェアからなるツールキット」らしいです。もともと、Gainerの開発者である小林さんが「Gainer2」という位置づけで開発を始めたものが、より汎用性を持たせるためにハードウェアとソフトウェアで切り分けて開発をされているプロジェクトです。まだ、開発途中段階っぽいですが、標準でAS3に対応しており、Gainerようのライブラリもあるようなので、これを試してみました。まだGainerほどのリソースはそろってない模様ですが、とりあえずAS3もGainerも初めての僕はこれでいくしかありません。(Gainerのライブラリを使うのと、入力値が違ったりするのが厄介ですが、しょうがない・・・)
ASDocはこちらにあります。
チュートリアルはないですが、こちらでダウンロードできるファイルの中に、AS3のサンプルがあるのでそれで勉強します。あと、ここのサンプルとか参考になりました。
Gainerより多少敷居は高いですが、ArduinoなどのGainer以外のハードへも対応しているので、スキルを身につければ今後も使えるんじゃないでしょうか。
以下、余談です。
実は今AS3、Gainerの他にもBox2DFlashAS3という物理エンジンも初めて使って作品を作っています。これもチュートリアルっぽいものが少なくて苦労しています。本家にリファレンスがないのが痛いです、一応、ASDocはここにあるんだけど、これだけではさっぱりです。
それにしても、物理エンジンの使い方が、考えていたものと全然違っていて(ランタイムで簡単に向きとか位置とか制御できるんだと思ってた・・・)苦労してます。この上さらにWOW-EngineとPapervision3Dを使って3次元デビューしようなんて考えていた僕が間違っていました。ちょっとづつ扱えるようにしていきたいと思います。まずは、AS3とGainer!
というか、やめといたほうが良いです。
ここでダウンロードしたファイルの中に、「Actionscript3」というフォルダがあったり、Gainer本にも『onEnterframeとか、AS2とAS3で変更になった箇所を修正すれば使えます』と書いてはありますが、ちょこちょこ自分で修正していくやりかただと、時間がすごくかかるし結果として無駄になっちゃいそうな予感です。まぁ、僕がAS3はじめたばかりというのもあるのでしょうが。とりあえず、AS3も初めて、Gainerも初めてというような場合は、やめておいたほうが無難です。ちなみに、GainerのライブラリはAS3への対応はしないそうです(参考)。
では、代わりにどうすればいいか。
Funnelというのを使うのがよさげです。
サイトの説明によると「ソフトウェア・ライブラリとハードウェアからなるツールキット」らしいです。もともと、Gainerの開発者である小林さんが「Gainer2」という位置づけで開発を始めたものが、より汎用性を持たせるためにハードウェアとソフトウェアで切り分けて開発をされているプロジェクトです。まだ、開発途中段階っぽいですが、標準でAS3に対応しており、Gainerようのライブラリもあるようなので、これを試してみました。まだGainerほどのリソースはそろってない模様ですが、とりあえずAS3もGainerも初めての僕はこれでいくしかありません。(Gainerのライブラリを使うのと、入力値が違ったりするのが厄介ですが、しょうがない・・・)
ASDocはこちらにあります。
チュートリアルはないですが、こちらでダウンロードできるファイルの中に、AS3のサンプルがあるのでそれで勉強します。あと、ここのサンプルとか参考になりました。
Gainerより多少敷居は高いですが、ArduinoなどのGainer以外のハードへも対応しているので、スキルを身につければ今後も使えるんじゃないでしょうか。
以下、余談です。
実は今AS3、Gainerの他にもBox2DFlashAS3という物理エンジンも初めて使って作品を作っています。これもチュートリアルっぽいものが少なくて苦労しています。本家にリファレンスがないのが痛いです、一応、ASDocはここにあるんだけど、これだけではさっぱりです。
それにしても、物理エンジンの使い方が、考えていたものと全然違っていて(ランタイムで簡単に向きとか位置とか制御できるんだと思ってた・・・)苦労してます。この上さらにWOW-EngineとPapervision3Dを使って3次元デビューしようなんて考えていた僕が間違っていました。ちょっとづつ扱えるようにしていきたいと思います。まずは、AS3とGainer!
2007/10/21: jEditがかなり便利です。 (Processing用エディタ)
前のエントリーで、jEditのインストールと、コードのカラーリングについて書きましたが、今回はjEditの便利な機能について。
■1 短縮入力
前回少し触れた、Abbreviations(短縮入力?アブリビエイション?)なんですがが、この機能は相当便利そうです。インストールの仕方は、ここ(英語)に書いています。一応、日本語でも解説しとくと、Windowsだと、
という名前のフォルダに、ダウンロードして解凍したabbrevsという名前のファイルを、置くだけ(上書きするだけ)です。ちなみに、僕は、何を勘違いしたか、マイドキュメントのフォルダの中に、.jeditというフォルダがあるのかと思って、数時間混乱してましたが、よーく見たら、Documents and Settingsの中のユーザフォルダ直下で、マイドキュメントフォルダじゃなかった。。。。のね。ということで、jEditをインストールした時点で勝手にできるっぽい、この.jeditというフォルダに、ダウンロードしたファイルを置くと、この機能が使えるようになります。
どんな機能かというと、例えば、
他にも
for文とか打つの面倒なときもあるので便利そうです。
この定義は後から自分で編集もできるので、自分がよく使うメソッドや、定型のフォーマットを作るとさらに便利になりそうですね。ちなみに、この変換を、どのキーでやるかは、Utilities->Global Optionsの中の、Abbreviationsという項目で、Space bar expands abbrevsというのにチェックを入れとくと良いっぽいです。ちなみに、ここで、フォーマットを足したり減らしたり、再編集したりできます。このGlobal Optionsというのが、要はPreferenceってことですね。
■2 タブとか
普通ですが、jEditは複数のタブ(というかペイン)を作って、複数のファイルを同時に編集することもできます。もちろん、別ウィンドウで開くのも可能です。で、このペイン増やしたり減らしたりするのは、Ctrl+1(ペイン1つに戻す)、Ctrl+2(縦に分割)、Ctrl+3(横に分割)って感じでショートカットがあって扱いやすいです。あと、各ペインの上のあたりに、ファイル名が書いてるバーがあるんですが、そこをクリックすると、最近使ったファイルのリストが出てきて、そこからファイル名選択するだけでそのファイルを開けたりします。この機能はさりげなく便利です。サクサク動くし。
画面はこんな感じ。

ということで、WindowsでのProcessingのプログラミングは、当分jEditを使うことになりそうです。フリーソフトというのが良いですね。Macでも使えるし。HTMLのコーディングとかにも使いやすいかもしれません。これで仕事の合間(mioは仕事ではwin使ってます)に、ちょっとProcessingやってみっか!ってのができる環境が整いました。
■1 短縮入力
前回少し触れた、Abbreviations(短縮入力?アブリビエイション?)なんですがが、この機能は相当便利そうです。インストールの仕方は、ここ(英語)に書いています。一応、日本語でも解説しとくと、Windowsだと、
C:\Documents and Settings\{USERNAME}\.jeditという名前のフォルダに、ダウンロードして解凍したabbrevsという名前のファイルを、置くだけ(上書きするだけ)です。ちなみに、僕は、何を勘違いしたか、マイドキュメントのフォルダの中に、.jeditというフォルダがあるのかと思って、数時間混乱してましたが、よーく見たら、Documents and Settingsの中のユーザフォルダ直下で、マイドキュメントフォルダじゃなかった。。。。のね。ということで、jEditをインストールした時点で勝手にできるっぽい、この.jeditというフォルダに、ダウンロードしたファイルを置くと、この機能が使えるようになります。
どんな機能かというと、例えば、
smって書いて、その後、スペースキーを押すと、
smooth();に変換してくれたりします。
prで
println();は結構使えるかも。
他にも
for#i#100#で、
for(int i = 0; i < 100; i++) {
}とか。for文とか打つの面倒なときもあるので便利そうです。
この定義は後から自分で編集もできるので、自分がよく使うメソッドや、定型のフォーマットを作るとさらに便利になりそうですね。ちなみに、この変換を、どのキーでやるかは、Utilities->Global Optionsの中の、Abbreviationsという項目で、Space bar expands abbrevsというのにチェックを入れとくと良いっぽいです。ちなみに、ここで、フォーマットを足したり減らしたり、再編集したりできます。このGlobal Optionsというのが、要はPreferenceってことですね。
■2 タブとか
普通ですが、jEditは複数のタブ(というかペイン)を作って、複数のファイルを同時に編集することもできます。もちろん、別ウィンドウで開くのも可能です。で、このペイン増やしたり減らしたりするのは、Ctrl+1(ペイン1つに戻す)、Ctrl+2(縦に分割)、Ctrl+3(横に分割)って感じでショートカットがあって扱いやすいです。あと、各ペインの上のあたりに、ファイル名が書いてるバーがあるんですが、そこをクリックすると、最近使ったファイルのリストが出てきて、そこからファイル名選択するだけでそのファイルを開けたりします。この機能はさりげなく便利です。サクサク動くし。
画面はこんな感じ。
ということで、WindowsでのProcessingのプログラミングは、当分jEditを使うことになりそうです。フリーソフトというのが良いですね。Macでも使えるし。HTMLのコーディングとかにも使いやすいかもしれません。これで仕事の合間(mioは仕事ではwin使ってます)に、ちょっとProcessingやってみっか!ってのができる環境が整いました。