ラズベリーパイ(Raspberry Pi)でできること!活用事例集

  • URLをコピーしました!

ラズベリーパイを買ったけどLチカしたあと何ができるのかイメージがわかない、これからラズベリーパイを買って電子工作で何かを作ってみたいけど何ができるの?

という方の参考になればと思い当ブログでこれまでラズベリーパイを使って作成したアプリケーションをまとめてみましたので紹介していきたいと思います。

またラズベリーパイのおすすめ周辺機器も以下の記事でまとめています。

目次

ラズベリーパイ(Raspberry Pi)とは

出典:ラズベリーパイ財団

ラズベリーパイ(Raspberry Pi)はイギリスのラズベリーパイ財団が教育用に開発したボードコンピュータです。

最新(2022/04/現在)のRaspberry Pi 4では、ARMアーキテクチャを採用したBroadcom製の高性能SoC BCM2711を搭載しており、1.5GHzで動作するARM Cortex-A72が4コアとマイコンボードの中では非常に高速な処理能力を持っています。また、ユーザーがアクセス可能な40ピンのGPIOも搭載しており、外部ハードウェアを制御することが可能です。

ラズベリーパイのスペック

詳細なスペックは以下の通りです。

CPUBroadcom BCM2711 プロセッサクワッドコア A72 ( ARM v8 )1.5GHz 64 ビット SoC
メモリ2/4/8GB LPDDR4 SDRAM
Wifi2.4 GHz / 5.0 GHz IEEE 802.11ac
USBUSB 2.0 ポート x 2 、 USB 3.0 ポート x 2
BluetoothBluetooth 5.0
GPIO40 ピン GPIO ヘッダ
ビデオmicro HDMI ポート x 2(最大 4Kp60 をサポート)、 2 レーン MIPI CSI カメラポート
オーディオ4 極ステレオ出力およびコンポジットビデオポート
マルチメディアH.265 ( 4Kp60 デコード)、 H.264 ( 1080p60 デコード、 1080p30 エンコード)、OpenGL ES 3.0グラフィックス

外部機器と接続できるGPIO(ハードウェア仕様)

GPIO(General Purpose Input Output)とはRaspberry Piを外部のハードウェアと接続するために用意されたインタフェースです。上記写真の基板上の40ピンのピンヘッダがGPIOです。このGPIOを介して外部と通信を行ったり、アクチュエータ(駆動装置)を制御することが可能になります。

Raspberry Pi 4BのGPIOには以下の表のようなピン番号と機能が割り振られています。これらのピンから入出力される信号をRaspberry Pi上のプログラムからコントロールすることができます。

ラズベリーパイに搭載されたGPIO

上のRaspberry Pi 4の基板画像の左上からPin No 1となり、右下がPin No 40の並びとなります。これらのPin Noが下記表に対応しています。

GPIOのピンアサイン一覧

今回はRaspberry Pi 4BのGPIOを紹介しましたが、Raspberry Pi のバージョンによりピンNoや機能が異なりますのでご注意ください。

Raspberry Pi 4のパッケージ内容については、詳細を以下の記事でまとめています。

ラズベリーパイでは外部機器と接続することができる各種インタフェースを備えていますので、電子工作を始めるのにも最適な製品です。
ラズパイで電子工作を始める際に用意しておくと便利なアイテムを以下の記事でまとめています。

ラズベリーパイを使う準備をしよう

ラズベリーパイは電源を入れるだけでは動作させることはできません。入手したらまず何をすればよいのでしょうか?
実際にアプリ開発に入る前にやっておきたい準備内容をまとめてみました。

Raspberry Pi OSをインストールする

まずはラズベリーパイ用のOSが入ったブートSDを用意する必要がります。SDカードの作成方法は以下のサイトで解説しています。

リモートデスクトップでラズベリーパイに接続する

ラズベリーパイをデスク上などモニターの近くで使用できる場合は、HDMIケーブルで画面出力できるのですが、離れた場所に設置したりロボットに組み込んだりすると常時モニターに接続して使用するのが難しいことがあります。

コンソールのみの使用であればSSHでリモート接続すればよいのですが、ラズベリーパイのデスクトップ画面を使いたい場合や、GUIを作成したい場合はリモートデスクトップを使用すると便利です。
リモートデスクトップの接続方法は以下の記事で解説しています。

以上で事前の準備は完了です。

ラズベリーパイの活用事例

さて、ここからは実際にアプリケーションの作成について書いていきたいと思います。
当ブログで過去に扱ったラズベリーパイの活用事例をまとめてみました。

カメラで動画撮影

ラズベリーパイといえば画像処理!というイメージがある方も多いと思います。
ラズベリーパイで動画撮影を行う場合は、ラズベリーパイ用のカメラモジュールを使う方法と、市販のWebカメラを使う方法があります。
それぞれの使い方について解説していきます。

カメラモジュールを使う

1つ目に紹介するのはカメラモジュールを使用する方法です。
ラズベリーパイ向けにリボンケーブルで接続可能なカメラモジュールが販売されています。カメラモジュールを使うメリットとしては、フレームレートが30fpsと高いため、低遅延の画像処理システムに使用したり、滑らかな動画撮影を行いたい時に役立ちます。

ラズベリーパイの基板上にはカメラを接続するためのコネクタが搭載されています。(リボンケーブルが刺さっている部分のコネクタです)

このコネクタにラズベリーパイに対応したカメラモジュールを接続することで、カメラで撮影した画像を取り込み、ラズベリーパイのプログラムで画像処理することができます。

以下の記事では、このカメラモジュールを使用する方法をサンプルコード付きで解説しています。例としてロボットに取り付けたカメラを紹介していますが、ラズパイとカメラ単体で同じことができます。

また、ラズベリーパイのカメラモジュールのフレームレートは30fpsですが、実際にラズベリーパイのデスクトップ上で映像を確認するとカクカクしてスムーズに表示されない場合があります。

そのような時にはGPUに割り当てられているメモリを増やしてやることで、動画がスムーズに表示されるようになる場合があります。GPUメモリを拡張する手順は以下の記事で紹介しています。

created by Rinker
¥6,164 (2022/09/30 06:09:45時点 楽天市場調べ-詳細)

Webカメラを使う

2つ目の方法は市販のWebカメラを使う方法です。
Webカメラを使うメリットは、非常に安価で手に入ることと、USBコネクタに差すだけなので取り外しも簡単に行えます。
また、Webカメラ自体が独立したモジュールでケース等に入っているため、基板の破損などの心配もありません。

高フレームレートが必要ない監視カメラや、生き物の観察などにおすすめです。
私は2000円弱で購入できるロジクールのWebカメラを愛用しています。

Webカメラを使って動画を撮影する方法は以下の記事で解説しています。

Webカメラを使って撮影した映像をmpeg4形式で動画ファイルとして出力する方法を以下の記事で解説しています。後ほど説明する動体検知などの処理と組み合わせて使用することで監視カメラなどのログファイルとしても活用できます。

ロジクールのC270nをとOpenCVを使って動体検知する機能を実装する方法について、以下の記事で解説しています。カメラに写っているものの中で動くものだけを検出し、動くオブジェクトの位置をカメラ画像内に描画することが可能です。

Webカメラと組み合わせて監視カメラシステムを構築、運用する方法を以下の記事で解説しています。システムを自分で作成せずに、オールインワンのパッケージを使って監視カメラを運用したい方向けに「Motion」という動体検出が可能なアプリケーションを使用しています。Mosion自体がWebサーバーとして動作しますので、遠隔地からブラウザを通じてカメラ周辺の状況を確認することができます。

ロジクールのC270nをとOpenCVを使ってカメラに映った人物の骨格検出を行う方法を以下の記事で解説しています。骨格検出にはディープニューラルネットワークを使用した学習モデルOpenPoseを使用しています。

デスクトップアプリケーション

ラズベリーパイはLinuxを搭載しておりデスクトップ環境が使用できます。そしてこのデスクトップ上で動作するアプリケーションを開発するためのライブラリもたくさん公開されています。
ユーザーがデスクトップアプリケーションを作成することで単に画面を表示するだけでなく、ハードウェアを操作したり、入力信号をモニタすることも可能です。

当ブログでも、以下のようにカメラの映像をモニタしたり、サーボモーターを制御してロボットをコントロールするユーザーインタフェースを公開しました。


以下の記事ではPySimpleGUIというライブラリを使用し、デスクトップアプリケーションを作成する方法を解説しています。

マルチコア 並列処理

ラズベリーパイのマルチコアSoCを使って同時に複数の処理を実行させる方法です。Pythonの標準ライブラリmultiprocessingを使用して実装しています。
カメラでモニタしながら通信や制御をしたりと、色々な使い方に応用できるかと思います。

各プロセス間のデータの受け渡しに便利な共有メモリを使ったプロセス間通信の紹介です。

実際にmultiprocessingを使った並列処理でロボットを制御した例です。

機械学習 ディープラーニング

ラズベリーパイはカメラを接続できたり、GPUを搭載していたりと画像処理に有効なハードウェアで構成されています。さらにRaspberry Pi OS上では簡単にPythonのプログラムを簡単に実行できますので、機械学習のアプリケーションを動かすにも最適です。

以下の記事では、ラズベリーパイのカメラとSoCのGPUを活かしてTensorFlow Liteを使ったディープラーニングでの物体認識をやってみました。ディープラーニングそのものよりも、学習済みライブラリを使用していかにアプリケーションに応用するかという所を書いています。
学習済みライブラリはPINTOさんの「TensorFlow Lite-bin」を使用させて頂いてます。

ディープラーニングで検出したオブジェクトの位置情報を取得するプログラムをPythonで作成しました。ロボットのオブジェクト追跡機能を実現するために作成してみました。

GPIOを使ったハードウェア制御

ラズベリーパイの基板上にはGPIOと呼ばれる40ピンのピンヘッダが搭載されています。

PythonやCで書いたプログラムをラズベリーパイ上で動作させることで、GPIOを経由して外部のハードウェアをコントロールすることができます。

ここからは実際にGPIOを外部ハードウェアと接続して動作させた事例をご紹介します。以下の記事ではGPIOをコントロールするライブラリ、pigpioを使ってハードウェアPWMを出力するPythonプログラムを作成しました。

ラズベリーパイのハードウェアPWMを使ってDCモーターを制御する方法について解説しています。DCモーターとは電圧を加えることで一定方向に回転させることができるモーターです。どれだけの電圧を印加するかをPWM信号によって制御している事例です。

同じくラズベリーパイのハードウェアPWMを使ってサーボモーターを制御する方法について解説しています。サーボモーターとは印加する電圧により停止する位置をコントロールできるモーターです。ロボットの関節などにも用いられるもので、以下の記事ではPWMのデューティー比を変化させることで停止位置を変えるデモを行っています。

ラズベリーパイで大きな電流を扱うアプリケーションなどを制御する際に有効なリレー回路を使用する方法を以下の記事でまとめています。この記事では水をくみ上げるポンプを想定していますが、モーターなどのアクチュエータを制御する場合などでも有効です。

ロボット製作

ラズベリーパイをコントローラにして動作するロボットのキットが色々なメーカーから発売されています。

当ブログではSunFounderが販売しているラズベリーパイベースの多脚ロボット、PiCrawlerの組み立てから制御プログラム作成までの過程を記事にしています。
ラズベリーパイとサーボコントローラを使って12個のサーボモーターを駆動してロボットのフレームを動かしています。

現在はコントロールアプリからのマニュアル制御のみですが、近々ディープラーニングを使った自律制御を実装する予定です。

超音波センサーを使って障害物までの距離計測をしています。

自分で作成したGUIアプリケーションからロボットをコントロールするためのプログラムを公開しています。

ラズベリーパイのカメラモジュールでディープラーニングを使って人間を判別し、人間のいる方向に追従して向きを変えるプログラムを作成しました。

また、当ブログで扱っているスパイダーロボット、SunFounder PiCrawlerの記事は以下でまとめていますので、併せてご覧ください。

ラズパイ活用 応用編

ここからはさらに知識を深めたい方向けに、私も実際に受講しているUdemyのRaspberry Pi関連の講座を紹介します。
実際に手を動かしながら学べる実用的なテーマですので、ラズパイをもっと活用したいと思っている方におすすめです。

Raspberry PiとPythonでIoTはじめの一歩~IoTキッチンガーデン講座~

ハーブなどを育てる水耕栽培を題材に、Raspberry PiをつかってIoTシステムの構築方法を、受講者も実際に植物を育てながら学ぶことができます。(部材は自分で用意する必要があります)

栽培している植物の環境データ(温度、湿度、照度など)をセンシングして収集したデータをクラウドに保存したり、自動で水やりをしたりといった実用的な作業を通して、IoTシステムの実装方法を習得できます。
IoTって具体的にどんなことするの?どういうライブラリを使って実装するの?という方におすすめです。

Raspberry PiとPythonでIoTはじめの一歩~IoTキッチンガーデン講座~ icon

Raspberry Pi とTensorFlow ではじめるAI・IoTアプリ開発入門

Raspberry Pi上にTensorFlow動作環境を構築し、ディープラーニングの実装手法を習得できます。
機械学習の参考書にお決まりのように出てくるMNISTやIris以外のデータセットを使って、学習モデル構築を学びたい方におすすめです。
実際にRaspberry Pi上で推論を行い、その結果を元にハードウェアを制御しますので、IoTやエッジデバイスでのAI実装に興味がある方はぜひ挑戦してみてください。

Raspberry Pi とTensorFlow ではじめるAI・IoTアプリ開発入門 icon

まとめ

ラズベリーパイを使って作成してきたアプリケーションをまとめてみました。これからラズベリーパイのプログラミングに挑戦したいと思っている方の参考になれば幸いです。

また、この記事で紹介したディープラーニングなどのAIに関するスキルを、Pythonを使ったプログラミング習得できるプログラミングスクールや書籍についても以下の記事でまとめています。

今後もSLAMやWebアプリケーションなどジャンル問わず色々なものを作っていく予定です。

それでは、また次の記事でお会いしましょう。

おすすめ記事

よかったらシェアしてね!
  • URLをコピーしました!
目次