コンセプトは似ている
ArduinoとRaspberry Piはどちらも小さなコンピュータです。Arduinoは元々学生でも手に入る安価で小型なマイコンというコンセプトでした。Raspberry Piも似ており、元々教育用コンピュータとして誕生しました。しかしセンサーも多彩に登場し、何より安価に手に入ることでRaspberry PiもIoTプロジェクトの中で利用されるようになっています。
様々な違い
利用できるプログラミング言語について
Arduinoは開発環境が固定されています。まず開発に際して必ず母艦となるデスクトップPC(またはノートPC)が必要です。OSはWindows/macOS/Linuxのいずれでも構いません。そしてArduino IDEという専用の開発環境をインストールして開発します。開発に際してはArduino専用の言語を利用します。言語体系としてはC言語に似ています。
対してRaspberry PiはOSがLinux(Rasbianなど)であり、一般的なPCに対してCPUやメモリは劣るもののデスクトップPCと同じように利用できます。初期設定としてSDカードにOSを準備する必要があります。このSDカードを作る際には別なコンピュータが必要です。
Linuxということもあり、利用できるプログラミング言語に制限はありません。省スペックな環境であることを加味するとCやC++といった言語の利用が望ましいですが、プロトタイピング(試しの開発)の時にはPythonやNode.js、mRubyなどの言語で開発することも少なくありません。
センサーについて
Arduinoではセンサーのことをシールドと呼びます。シールドはArduino専用になり、多数存在します。そしてプログラミング言語がC++に手を加えたArduinoコードのみなので、サンプルコードも充実しています。シールドを購入すれば、そのサンプルコードは大抵存在するでしょう。そして多くのシールドは重ねて使えるようになっています。複数のシールドを組み合わせてIoTアプリケーションを開発することもできるでしょう。
Raspberry Piに対応したセンサーも多数存在します。ただし前述の通り、利用できるプログラミング言語が多彩なので、使っているプログラミング言語のサンプルコードが存在するとは限りません。C言語、Python、Node.jsあたりのコードやライブラリは充実していますが、自分が使うセンサーのものが存在するかどうかは事前に確認した方が良いでしょう。
Arduinoはアナログセンサーがデフォルトで扱えますが、Raspberry Piではデジタル・アナログ変換しないと使えないので注意が必要です。
デバイスについて
Arduinoはオープンソースであり、ハードウェア設計がCreative Commonsで公開されています。そのため、公式のモデル以外にも多数の互換デバイスが存在します。8pinoという超小型デバイスであったり、組み込みを想定してピンを減らした専用デバイスなどもあります。littleBitsという磁石を使ったIoTキットの中にはArduinoモジュールもあり、より複雑なIoTプロトタイピングを楽しめるようになっています。
Raspberry PiはArduinoほど互換機は多くありません。Orange Pi One のような安いもの、産業用途も想定したREVOLUTION PIといった互換機があります。
リアルタイム性
Arduinoはマイコンであり、汎用的なOSは搭載されていません。そのため、処理できるのは一度に一つのタスクのみになります。setup
メソッドで初期設定、 loop
メソッドで初期化後の処理を記述するというシンプルな作りになっています。無線LANシールドなどを使った場合、プログラミングコードをArduino本体に転送する度に接続処理が行われます。毎回初期化に時間がかかるのが難点です。
Raspberry PiはLinuxを使っていますので、複数のタスクを同時にこなせます。複数のセンサーを同時に扱ったり、そのセンサーの値を処理分けしたり、値に応じて通知やデータ保存など複雑な処理を行う際にはRaspberry Piの方が向いているでしょう。
結局どちらが良いのか
いかがでしょうか。Arduinoはプログラミング言語が制限されますが、対応シールドはたくさんあります。Raspberry Piの場合はセンサーがたくさんありますが、そのサンプルコードはプログラミング言語がまちまちな可能性があります。プログラミング初心者の場合、Arduinoの方がささっと動くものが作りやすいかも知れません。一方でサーバーやスマホアプリ等を普段から開発している人はRaspberry Piを使うと簡単にIoTシステムを作ることができます。
Arduinoは小さなCPU、省メモリとあって、複雑な処理を行うのには向いていませんが、OSの載っていない分Raspberry Piよりも省電力です。より本格的で、複雑なIoTプロジェクトを実現する際にはRaspberry Piの採用を検討をオススメします。
]]>