「Arduinoって何?」と、言う方には、こちら「Arduinoを使った電子工作の部屋」をどうぞ。
一言で言うと、Arduinoとは、「電子工作に使えるマイコン(MCU)ボードの一つ」です。実物はこちら(↓)。
上の写真の中で、一際大きな、28ピンプラスティックDIPのICが、ATmega328P-PUという8ビットRISCマイコンです。上のボードは、ほぼほぼ、ATmega328の端子をそのまま上下のピンソケットに引き出しているだけ、のボードです。
そこに、USB I/FでPCとつながって、PC上の開発環境から、プログラムをATmega328に書き込んだり、USBから電源(5V)をもらってボードに供給したり、といった、電子工作に必要最小限な機能だけを搭載した統合開発環境になっています。
オリジナル(本家)のArduino製ボードは、結構良い値段がしますが、作者が購入した上図の様な、「互換ボード」がいろいろな会社から売り出されていて、現在のところ、1,000円前後で購入可能です。チュートリアルのついた「スタータキット」も、色々な種類が出ていて、Arduino互換機本体が含まれているものもありますので、興味があれば、以下から検索を。
Amazonで検索(別ウインドウが開いて検索します)
さて、作者が一番惹かれたのは、28ピンDIPのATmega328P-PUですよ。かっこ良すぎ。見るたびに高まります。
もう、あまりにかっこ良すぎて、つい、モデリングしてしまいました。
まず、ATmega328のデータシートを検索してみました。その中に、DIP(Dual Inline Package)の寸法図が載っているページがあったので、そこから寸法を拾い、モデリングしました。
普段なら、「こんな感じかな〜」と、まず、作ってみて、そこから「ここがちょっとイメージと違う」みたいなところをちょいちょい直しながら、やっと完成する感じ、なのです。でも、ATmega328は、一発で完成しました。だって、寸法が書いてあるんですから。
自分で言うのも何ですが、芸の細かい1ピンマークにも注目です。
簡単すぎたんですよね、ATmega328P-PU。あっという間に完成してしまいました。そこでつい、周辺回路にまで手を出してしまいました。
先ほどご覧に入れた、実物ボードの写真ですが、作者手持ちのArduino UNOと言う機体の互換機です。Arduinoには、色々な種類の機体があって、中にはARMコアを搭載した機体などもそろっています。それぞれ、フォームファクタが決まっていて、本家Arduinoの機体だろうと、互換機の機体だろうと、みんな、形は一緒なんです。写真の機体はUNOと言う種類に属する互換機と言うわけです。
さて、それでは、Arduino UNOをモデリングしてみましょう。ただ、さすがに、基板のパタンとか、載っている細々とした部品全てをモデリングするのは、しんど過ぎるので、目につく部品だけモデリングして、後は、写真からマッピングデータを起こして張り付けてしまいます。
目につく部品(モデリングする部品)をリストアップします。
どれも直方体とか、円柱面とか、組み合わせで作れるような単純な形状にデフォルメできますし、何より、実物を定規で測って採寸しながらサイズや位置を決めることができます。面倒ではありますが、コツコツやっていれば、いつかは完成します(1^^;)。
手持ちのボードを写真で撮って、マッピングデータにすれば良いのですよ。それだけ。
でも、「言うは易し」、実際にやってみると意外と難しいのです。
解り易い様に、赤い補助線を引いておきました。
うまく、正面から写真を撮ったつもりでも、マッピングデータに切り出したい、肝心なボード部分は水平、垂直が取れていないし、何より、長方形(4つの角が直角)になっていません。このままマッピングデータに使うと、当然、完成したデータも歪んでしまうのです。
そこで、まず、赤い補助線の座標(4頂点)をすべて拾います(Olive+の簡易編集機能で可能です)。拾ったら、その座標値をfilter命令のcutoutサブコマンドに渡して、四辺形を長方形に切り出します(Arduino_Uno_map_cutout.olv)。これで、写真撮影時の歪みを取り除くことができました。
あとは、Olive+の簡易編集機能等を使って、不要なオブジェクトを消しておきます。「不要」とは、二次曲面を使ってモデリングすることに決めた、USBコネクタ、電源コネクタ、等々のオブジェクトです。マッピングデータと三次元のオブジェクトは、完全には一致しないので、二重に見えて不自然になってしまうためです。完成したマッピングデータが以下です。
(クリックして拡大表示)
ちょっと消し方が雑ですが……(1^^;)、勘弁してください。
リセットスイッチや、レギュレータ、コンデンサなど、一部消していないオブジェクトがありますが、わざとです。本体部分は立体でモデリングしましたが、ピンのはんだ付け部分はモデリングしていないので、その部分はマッピングデータに残しておきたかったためです。
このマッピングデータを使ってレイトレーシングした完成図はこちら(↓)となります。
何しろ、実物の写真をマッピングしてますからね、だいぶ本物っぽくありませんか?マッピングデータを貼り付けないと、こんな感じ(↓)なのですけどね……。
マッピング、偉大です。
色マッピングだけでなく、凹凸マッピング(bumpマッピング)もかけてあるので、モデリングしていない部品も、少し凹凸がついたように(立体的に)見えていると思います。
完成したデータをリンクしておきます。
1) | Xi-TRACEデータ | Arduino_Uno.xitr |
2) | マッピングデータ | Arduino_Uno_map.jpg |
3) | マッピングデータ切り出しスクリプト | Arduino_Uno_map_cutout.olv |
1),2)を使ってレイトレーシングします。3)はマッピングデータ切り出し用に使ったスクリプトを、ご参考としてリンクしたものです。元の(切り出し前の)画像ファイルをリンクしていないので、このままでは使い道がありません。
では、1),2)で作成した動画をご覧ください。
最後の方で、マッピング版とマッピング無し版を交互に表示してみました。