質問: はじめて投稿します。 現在、Arduinoに入門しております。 ただ、ラズベリーパイが流行っているので、そちらに目を取られてしまいがちです。 今のところ、Arduinoでやりたいことで、ラズベリーパイだけしかできないという現象には立ち会っていないのですが、今後、出てきそうな雰囲気はあります。 いっそのこと、もう移行したほうがいいでしょうか。 また、arduinoよりラズパイがおすすめならば、理由が知りたいです。 よろしくお願いします。 ちなみに、仕事はテクニカルディレクターでインスタレーションなどのモック制作もたまにしております。 よろしくお願いします。
回答: だいぶ回答は出尽くしているようですが、、、 こんにちは、かなりの長文になります 自分は両方触っているアマチュアの者です(大学生です) Arduinoとラズパイは似て非なるものです いえ、大本をたどれば、「演算」をするコンピューターに周辺回路が付いたもの、ということで同じといえば同じですが。 そうではなく、一般的な感覚で言うなら、ラズパイはパソコンです。 Arduinoはマイコンです。 ラズパイにはLinuxというOSが乗っていますよね 対してArduinoにはそういうOSは乗っていません。 ラズパイの開発は、Linux上で動くプログラムの開発になりますが、 Arduinoでは、直接CPU上で動かすプログラムの開発になります。 語弊はありますが、PICマイコン等を使いだすとこの意味が分かると思います では利点と欠点です ラズパイ ・Arduinoより非常に演算処理が早いです。多少の画像処理もできます。なんせ「パソコン」ですから ・Linux上で動くため、CPUの違いをあまり意識することがないです ・非常に大きなストレージ(SD)カードの読み書きが簡単です。なぜなら、OSが読み書きをつかさどる制御をしているので、自作アプリ側でSDカードの1番ピンをONにして・・・なんてことをしなくて済みます ・インターネットへの接続も比較的容易です。それこそLANケーブルを指せばもう認識しますね ・ちゃんとLinuxを知ろうとするととんでもない量の知識が必要です。LinuxというOS自体は数十万行のソースコードから構成されています。全部理解するのは自分には無理ですw ・OSは時々フリーズしますよね?Windowsほどではありませんが、Linuxもたまにフリーズします。特にラズパイの処理能力は消して大きくはないので、ちょっと重たい処理をさせるとすぐに応答がなくなります。 5Vで1Aくらいは電気を食います。 Arduino ・一台一台が非常に安価です。純正ボードは2000円程度しますが、マイコン単体でも動かせますし、Arduinoの頭脳部分なんて250円で買えます ・ポート(ピン)の操作が簡単です。digitalWriteなどとすればすぐにピンが反応します ・OSは自作アプリ以外の原因でもしばしばフリーズしますが、Arduinoは無限ループに突入などしなければまずそういった障害が起きません。(外部ノイズとかの影響は受けますが、それはラズパイも同じです) ・インターネットへの接続は少々苦労します。Ethernetシールドを購入し、ライブラリを導入して・・・ ・非常に低消費電力です。せいぜい5V数十mAです。 ・画像処理のような大掛かりなことはできません。いえ、絶対にできないとは言いませんが、まあやらないでしょう ・USB機器の操作はだいぶ難しいでしょう。あれは、USBホストに対応した別の制御系がないと... ・映像出力は難しいです。できないことはありませんが、Arduinoの処理能力のすべてを映像出力に回すことになりますよ。 このような違いはなぜ生じるのか それは、先ほども述べました、 ラズパイは、OSが乗っている ArduinoはOSが乗っていない(というかOSを自分で作っているに近い) ラズパイは、OS上でアプリケーションを実行します。 ArduinoはCPUに直接命令しています。 OSが乗っていると、周辺との通信は全部OSがやってくれます。SDカードへの読み書きや、インターネットへの接続、USB機器の制御。その代り、非常に多機能であるが故複雑ですし、システムも不安定になりやすいです。たしかこういう、より下位の制御と、アプリケーションを切り分けることをカプセル化っていうんでしたっけ。間違ってたらごめんなさい OSの乗っていないArduinoですと、通信をしたいと思ったら、例えばLANケーブルの1番ピンからは信号が流れてくるので常に読み取り待ちをして、同時に2番ピンからはデータを送信するけど、そのデータは二進数なので、元のデータを変換して・・・という作業を全部自分でやらなければなりません。(もちろんそれをやってくれるライブラリはありますが、貴方が開発しているプログラム中でやっていることにかわりはありません) 他の回答者さんも仰っていますが、 画像処理や音声認識のような重たい複雑な処理はラズパイにやらせて、その結果を受け取って例えば車輪を回す命令、のようなことはArduinoでやるのが常套手段です。 なぜなら、ラズパイに車輪の回転までやらせて、OSがフリーズしたら暴走しますよね? Arduinoはそういった心配が皆無なので、万が一OSがフリーズしてラズパイから命令が来なかったら車輪を停止させるようにプログラムすればよいのです。