Arduinoはじめました2017-03-25
元々電子工作に興味があり(ロボットカーやシンセイサイザーを作るため)、Raspberry Piが欲しいと思っていたのですが、このビデオを発見したのが切欠でArduinoに興味が湧いてきました。
どうですこの鮮烈な音は?これがあの小さなArduinoと5つの可変抵抗だけで出来ているというではないですか!
その後色々調べてArduinoとは何かがが段々判ってきたので、Raspberry Piと比較しながら書いてみたいと思います。
Arduino と Raspberry Pi の違い
何方も元はプログラム学習用に作られた小さなマイコンボードで、電子工作用の入出力ピンが沢山付いていて見た目も似てます。
しかし本質的に違うのは、Raspberry PiはLinuxOSが走る立派なパソコンだという事です。よってアプリをインストールすれば、ネットブラウジングでもメール送受信でも音楽や動画の鑑賞でも何でも出来ます。当然ストレージとしてのMicroSDスロットや、ディバイス用のUSBポートがあり、更にLANやWifi、専用イメージセンサ用のコネクタまで標準装備です。
一方ArduinoはOSだのアプリだのは全くありません。単一のプログラムをPCから流し込んで走らせるだけです。そもそも、ArduinoにはGUIを動かしたり画像や音声ファイルを扱うだけの処理能力はありません。CPUやメモリのスペックは3桁違いますから(ギガ対メガとか)。
こう書くと、ArduinoはRaspberryPiのダウングレードバージョンみたいに聞こえるかもしれませんが、Arduinoの良さはその単純さだと思います。
最初にホストPCにArduino専用のIDEソフトをインストールしておけば、あとはそこにコードを書いて、USBで繋げた買ってきたままのArduinoボードに流し込むだけです(コンパイルも自動的にやってくれます)。
そうすればいきなりプログラムが走り始めて同じ処理を繰り返し、電源を切ったら終了します(電源ボタンは無いので通常は電源供給をしているUSBケーブルを抜く)。勿論それで壊れたりせず、再び電源を投入すればさっきのプログラムが再稼働するという単純さ。プログラムを変えたければIDEから上書きすればOKです。
一方Raspberry Piはパソコンですから、OSのインストールから初めないといけません。また、ログインユーザーやネットワーク等各種初期設定も必要です。まあこれは一度やってしまえば次からは不要ですが、パソコン同様起動やシャットダウンのプロセスは毎回必要です。
起動自体は電源投入で自動的に始まるようですが、OSが立ち上がって初めて制御用のプログラムを用意し、例のターミナルから読み込んで走らせるという手順が必要です。そして勿論、シャットダウンはちゃんとした手続きが必要なので、いきなり電源を切ったりすればOSが壊れてしまうかも知れません。
もっとも上述のように、Arduinoの処理能力は限られているので、画像処理とAIを使ったロボットカーとか、ハイレゾオーディオプレーヤーなんかを作りたい場合はRaspberryPiが必要でしょう。逆に、距離センサーを使って障害物を回避するロボットカーとか、数種のオシレータを内蔵したMIDIシンセくらいならArduinoが過不足無いと思います。
Arduinoの種類と値段
Arduinoと言っても用途やスペック別に様々な種類(Raspberry Piより遥かに多い)があります。僕の場合は最も一般的なUNOを買おうと思ってましたが、何と3,200円もするんですね。ラインナップ全体で見ても、遥かに高性能なRaspberryPiシリースと値段が変わらないという(・_・;)
しかし!ArduinoはRaspberryPiと違ってハードウェア自体がオープンソースなのです。よってクローン(互換品)が沢山出回っており、値段は公式ボードの約1/10です(;´∀`) 何時ものebayで探したら、送料込で390円くらいのUNOがあったのでゲットしました(^o^)
Arduino UNOのハードウェア
例によって何時届くか判らないebayの”Free economy shipping”ですが、注文から3週間後くらいにヒッソリと自宅のポストに投函されていました(取扱は郵便局)。パッケージがあまりにも小さく軽いので、最初は別途注文してたジャンパーケーブルかと思いましたが、緩衝材の中から個包装のクッキーのようなArduino UNOが出てきました。
外観と仕様
こういうものの常として、写真や動画で見る印象よりも、実物は一回り以上小さいですね。クレジットカードと比較すると、短い方の辺はほぼ同じ長さで、長い方の辺は2割ほど短いです。僕は未だなってませんが、老眼の人にはちょっと厳しいかも(;´∀`)
ただ少々老眼でも近眼でも、知ってる人は一見して判ると思いますが、実はこれオリジナルのUNOとハードウェアが違います。先ずUSBポートがMiniBであること、そしてメインのチップが小さく脱着ができないタイプなのです。
オリジナルのUNOであれば、メインチップにプログラムを書き込んだら、取り外して別の基盤で使うことが出来ます。そして元のUNOボードには新しいチップを差し込んで、またプログラムを書き込むといったように、プログラムライターとして使えるわけです。しかしこのチップ自体の生産が需要に追いついていないらしく、同じ機能の小さいチップを搭載したボードを発売したようです。
だいたい、このボード全体で3ドルくらいしかしませんから、チップ単体と目的に沿った周辺パーツを揃えて汎用基盤に載せたほうが逆に高く付くのではないでしょうか。そういう意味でこのチップ固定式ボードで正解だったと思います。
入出力ポート
Arduino UNOには6つのアナログ入力ポートがあり、可変抵抗などを繋げることで連続的な値を入力することが出来ます。
一方14個のデジタルポートはプログラムによって入出力何方にも設定できます。更にその内6ポートはPWMの波形を出力出来ます。これはつまり0-5Vまでの電源電圧を、スイッチングによって変化させながらディバイスに印加出来るということです。よって例えば、LEDを繋いで明るさを調整したり、アンプを介してモーターのトルクを制御したり出来るわけです。
電源供給
ArduinoボードはPCと接続している場合はUSBバスパワーで動きますが、別に同軸電源コネクタがついているので、ここにAC-DCアダプタを挿せば家庭用電源でも駆動できます。使えるアダプタの要件は公式サイトにありますが、注意しなければならないのはコネクタの極性です。中央が(+)で周囲が(-)です。
実は僕の自宅に以前使ってた機器のACアダプタが幾つも余ってたので使えるかチェックしたら、全て極性が逆でした。調べずに使ってたらボードが壊れたかも知れません(;´∀`)
というわけで、次回はArduinoのソフトウェアについて書きたいと思います。