IoTにはArduinoとRaspberry Piのどちらが適しているか

Arduino or Raspberry Pi

IoT向け開発ボードの選択:ArduinoかRaspberry Piか

IoTプロジェクトにおいて、ArduinoやRaspberry Piといった適切な開発ボードを選定することは、企業に大きな価値をもたらします。消費電力や開発工数の削減、稼働時間の向上など、様々なメリットが期待できるからです。

Arduinoは、2000年代初頭にイタリアで開発されたシングルボード・マイクロコントローラです。プロトタイピングやデバイス間の接続を目的としており、現在もオープンソースのハードウェアおよびソフトウェアとして提供されています。

その後、コンピュータサイエンスの基礎を教えるためのツールとしてRaspberry Piが登場しました。これは小型ながらも本格的な機能を備えたコンピュータであり、モデルによって構成部品は異なりますが、独自のプロセッサ、メモリ、グラフィックス処理ユニット(GPU)を搭載しています。

Arduino:はじめに

Arduinoは、オープンソースのエレクトロニクス・プラットフォームです。シンプルなハードウェアとソフトウェアを採用することで、誰もが容易に扱えるよう設計されています。Arduinoボードは様々な入力を読み取ることができます。例えば、センサーによる光の検知、ボタン操作の認識、あるいはTwitterメッセージの受信などが可能です。そして、それらの入力に基づいて、モーターの回転、LEDの点灯、インターネット上への情報発信といった出力を行います。ボード上のマイクロコントローラーに一連の命令(プログラム)を送信することで、その動作を制御します。Arduinoプログラミング言語やArduinoソフトウェアは、こうした制御を行うための強力なツールとなります。

これまでに数千ものプロジェクトでArduinoが活用されてきました。その内容は、身近な家庭用品から複雑な科学機器に至るまで多岐にわたります。学生、ホビーユーザー、アーティスト、プログラマー、そして専門家といった多くの人々が貢献を重ねた結果、誰もが利用できる膨大な知識の蓄積が生まれました。この知識は、初心者から専門家まで、あらゆる人にとって大きな助けとなります。

Arduinoは、イヴレア・インタラクション・デザイン・インスティテュート(Ivrea Interaction Design Institute)において、ラピッドプロトタイピング(迅速な試作)のためのシンプルなツールとして誕生しました。当初は、エレクトロニクスやプログラミングの経験がない学生を主な対象としていました。やがて多くの支持を集めるようになると、Arduinoボードは進化を始めます。新たなニーズや課題に応える必要があったからです。その進化の過程で、シンプルな8ビットボードから、IoT、ウェアラブル、3Dプリンティング、組み込みシステムといった分野に対応する製品へと発展を遂げました。

Raspberry Pi(ラズベリーパイ):はじめに

Raspberry Piは、小型かつ低価格なコンピュータです。クレジットカードほどのサイズで、コンピュータやテレビに接続し、一般的なキーボードやマウスを使用します。小さいながらも優れた機能を備えたデバイスであり、あらゆる年齢層の人がコンピュータや、Scratch(スクラッチ)やPython(パイソン)といったプログラミング言語を学ぶのに役立ちます。デスクトップコンピュータでできることは何でもこなせます。インターネットの閲覧や高画質動画の再生はもちろん、表計算やワープロ、ゲームといった用途にも利用可能です。

さらに、Raspberry Piは外部との通信も可能です。デジタル・メイカー・プロジェクトにおいては、音楽再生機器から「親の接近を検知する装置」、気象観測ステーションに至るまで、あらゆるものに活用されています。

Raspberry Pi財団は英国の慈善団体です。同財団は、人々にコンピュータに関する教育を行い、コンピュータ教育をより身近なものにすることを目的としています。そして、「Raspberry Pi」として知られる一連のシングルボードコンピュータを開発しました。

世界中の人々が、プログラミングの学習やハードウェア・プロジェクトの制作、さらにはホームオートメーション(家庭の自動化)にRaspberry Piを利用しています。また、Kubernetes(クバネティス)クラスタの構築やエッジコンピューティングへの活用、さらには産業用途での利用も行われています。

Raspberry Piは、Linuxで動作する低価格なコンピュータです。GPIO(汎用入出力)ピンを備えており、これらのピンを使って電子部品を制御したり、IoT(モノのインターネット)の実験を行ったりすることができます。

IoTのためのArduino

Arduinoは、一度に一つのプログラムしか実行できないシングルボード・マイクロコントローラーです。ドアの施錠・解錠、照明のオン・オフ、温度の読み取りといった動作や、それらのデータをメール、テキストメッセージ、あるいはSlackなどで通知するといった処理がその例として挙げられます。

Arduinoボードにはオペレーティングシステム(OS)が搭載されていません。そのため、IoT開発者は特定の形式でC言語のコードを記述し、それをコンパイルした上でハードウェア上で実行する必要があります。

その結果、メモリ管理、マルチタスク、I/O割り込みといった、通常はOSが担う機能を自らコーディングして実装しなければなりません。

こうした点から、ArduinoボードをIoTアプリケーションに組み込むには多くの時間を要することになります。しかし、その労力をかけるだけのメリットもあります。OSを搭載していないため、ハードウェアコストや消費電力を抑えることが可能です。また、Arduinoボードは保守が容易であり、可動部品が少ないため故障のリスクも低くなっています。

Arduinoは、シンプルな構成のIoTアプリケーションに最適な選択肢です。IoTプロジェクトにおいて基本的な開発ボードとしてArduinoを採用することで、保守や維持管理にかかる手間を軽減できます。

IoT向けRaspberry Pi

Raspberry Piはシングルボードコンピュータ(SBC)であり、独自のメモリとプロセッサを搭載しています。大型のコンピュータやノートパソコンと同様のタスクを処理することが可能です。これらの汎用コンピュータは通常Linuxを使用し、複数のプログラムを同時に実行できます。Arduino開発ボードに比べて、より高度なマルチタスク機能を備えています。また、Raspberry Pi上でAndroid、Windows 10、Firefox OSを動作させることも可能です。

Raspberry Piでは、開発者が使い慣れたツールチェーン、フレームワーク、プログラミング言語を利用できます。これにより、運用の柔軟性が高まり、導入のハードルが下がります。

さらに、Raspberry Piは(比較対象のもう一方と比べて)処理速度が速いため、大量のデータを扱うアプリケーションに最適です。
Raspberry Piを用いたIoTアプリケーションは、複数の機能を同時に実行する必要があるタスクに特に適しています。例えば、移動する資産から位置情報を収集してクラウドに送信し、その資産が指定された範囲外に出た場合にメールを送信するといった処理が挙げられます。

Raspberry Piをセンサーやその他のデバイスと連携させるには、ソフトウェアのインストールが必要になる場合があります。また、外部デバイスの接続が必要になることもあります。専用のプロセッサとメモリを搭載したマイクロコンピュータであるため、接続するデバイスにはキーボードやマウスなども含まれます。

対照的に、Arduinoは一度プログラムを書き込めば、電源を入れるだけですぐに動作を開始します。そのため、IoT開発者はソフトウェアのインストールを待つことなく、プロジェクトのプロトタイプを作成できます。

IoTにおけるArduinoとRaspberry Piの比較

拡張性

ArduinoとRaspberry Piのボードは、どちらも拡張性を備えています。これにより、標準の構成要素に加えて、システムに新たな機能や役割を追加することが可能になります。この点も、両者の重要な違いの一つです。

「シールド」とは、標準的なピンヘッダを使用してメインボードの上に装着する拡張ボードのことです。シールドを使用することで、GPS、SDカード、イーサネット接続、LCDディスプレイといった機能を追加できます。

適切に接続されていれば、複数のシールドを重ねて取り付けることも可能です。ただし、その分ハードウェアはかさばり、携帯性は損なわれることになります。

Raspberry Piは、標準のボード自体に多くの機能を備えています。最新モデルには、メディアや音声の入出力機能、多様な接続オプション、SDカードスロットなどが搭載されています。さらに、カメラ、ディスプレイ、拡張ボードといったモジュールやアクセサリーを追加することも可能です。

接続性

ArduinoやRaspberry Piのボードを使用してIoTシステムを構築する際、接続性は最も重要な要素となります。最新のRaspberry Piモデルには、標準でWi-Fi機能が搭載されています。また、BluetoothやEthernetによる接続機能も備えており、十分な通信速度と処理能力を有しているため、映像や音声データの処理にも対応可能です。

一方、ArduinoでWi-Fi、GPS、Bluetoothといった基本的な接続機能を追加するには、シールドやモジュールが必要です。これらを追加する作業は決して難しくなく、いくつかの手順を踏むだけで完了します。また、IoT分野で広く利用されているLPWAN(低消費電力広域ネットワーク)技術の一つである「LoRa」についても、専用モジュールを使用することで、Raspberry PiやArduinoと容易に接続することができます。

電源

Raspberry PiとArduinoは、いずれも低消費電力のデバイスであり、外部電源から電力を供給します。Raspberry Piの場合、MicroUSBまたは汎用I/Oヘッダーが電源接続に使用され、動作電圧は5Vです。

一方、Arduinoボードはより柔軟な電源仕様となっています。推奨電圧範囲は7~12Vですが、USBポート経由で電力が供給されるケースも一般的です。

ストレージ

メモリ容量は、必ずしも最も重要な要素とは言えません。特に、単純な単一動作を行うIoTアプリケーション向けにArduinoボードとRaspberry Piを比較する場合などはそうです。しかし、多機能なIoTデバイスであれば、多くのRAMが必要になる可能性があります。

Arduinoはマイクロコントローラーとして、単純なプログラムを実行するのに十分なメモリを備えています。例えばArduino UNOの場合、フラッシュメモリは32KB、SRAMは2KBしかありません。

一方、Raspberry Piは小型コンピュータであるため、はるかに多くのメモリを搭載しています。最新モデルでは最大8GBのSDRAMを搭載しており、より複雑なIoTシステムにおいて複数の機能を実行するのに十分な容量があります。

プログラミング

Raspberry Piのプログラミングは、Raspberry Pi財団が提供するRaspbian OS上で動作します。しかし、Linux、Android、Android Thingsといったサードパーティ製のOS上で動作させることも可能です。これらのOSは、IoTプロジェクト向けに特別に設計されています。Python、C/C++、Scratchなどのプログラミング言語を使用し、Raspberry PiでIoTプロジェクトを開発することができます。

Arduinoには独自のOSは搭載されていませんが、Arduino IDE(統合開発環境)が用意されています。このIDEはクロスプラットフォームに対応しており、多数のフリーソフトウェアライブラリが含まれています。また、より迅速かつ容易にプログラミングを行えるコードエディタも備えています。この環境はC/C++をサポートしており、基本的にはあらゆるプログラミング言語を使用してArduinoの機能を実装することが可能です。

結論

Arduinoは、一度に一つの動作のみを必要とする、単純で反復的なタスクを実行するシステムに適しています。多くの場合、Raspberry Piと比較して、Arduinoの方がコスト効率に優れ、開発にかかる時間や手間を抑えられるソリューションとなります。

一方、Arduinoよりも高速かつ高性能なRaspberry Piは、マルチタスク処理やより複雑な機能の実行が可能です。具体的には、メディアの再生、計算処理、各種パラメータの収集などが挙げられます。IoTシステムにおいて以下のような機能が必要な場合は、Raspberry Piが最適な選択肢となります。

  1. 複数のセンサーからデータを収集する
  2. インターネットからデータを取得する
  3. スマートフォンと接続する
  4. 複雑な情報を表示・出力する

それでも、IoTプロジェクトにArduinoとRaspberry Piのどちらを採用すべきか判断が難しい場合は、IoTソフトウェア開発サービスを提供する専門家に相談することをお勧めします。