【ラズベリーパイ】GPIOボードを使ったLチカをしてみる~ラズパイでことはじめ~

どうも!リョクちゃです。

今回からラズベリーパイについても記事にしていこうと思います。

手始めとして、ラズベリーパイでLチカといわれる、LEDチカチカ(LEDの点滅制御)を

してみたので紹介していきます。

これはプログラムでいう、HelloWorldになりますので、気になる方は

この記事を参考に真似てみていただけたらなと思います。



ラズベリーパイとは?

ケンブリッジ大学(英)の教授らが設立した慈善団体”ラズベリーパイ財団”が開発した、

名刺サイズのコンピュータになります。

画像がラズベリーパイになります。

元々は教育用に開発されたコンピュータで、子供たちや学生たちにコンピュータ技術を

学んでもらってプログラミング知識や技術を身に付けてもらうことを目的としていました。

スポンサーリンク




特徴

特徴としては、Pythonというプログラミング言語を使えるのが特徴になります。

子供たちや学生たち用に向けて、ゲームでプログラミングを覚えてもらうという面では、

マインクラフトもRaspberryPiで動かせるのが1つの魅力でもあります。

※通常ゲームで遊ぶマインクラフトとは違うので、

ゲームのみを楽しみたい方は製品版のマインクラフトをオススメします。

LinuxというOSで動作するようになっていて、

多くのアプリケーションを標準搭載したりしています。

誰でも簡単に使えるというのが特徴の1つでもあります。

また、OSも開発環境に合わせて自身でインストールすることもできるので、

カスタマイズも容易に行えます。

※最近ではWindows11を入れている人もいるだとか……。

主に複雑な処理を得意とします。

例えば、画像処理や複雑なデータを使った制御など。

ハードウェアの制御も得意ですが、アクチュエータの制御については、

Arduinoと絡めてやる方が効率的ではあります。

近年では、バージョンも上がり性能も格段と上がったので、

ラズパイ1つで出来てしまう場合もあります。

バージョン

最近ではラズベリーパイ4が最も新しいモデルになります。

下にモデルの流れを図示します。

どんなことができるの?

これはラズベリーパイでGoogle検索などをかけると、毎回のように多くの記事を見かけます。

基本的には、だいたいのことはできてしまいます。

以下、1例を箇条書きで載せておきます。

  • ラジコン
  • 音楽プレーヤー
  • インターネットラジオ
  • スマートホーム
    お家ハック、ラズパイでIoT家電の制御
  • 監視カメラ
  • Webサーバ
  • 植物の水やり
  • SNSを活用したボット
    TwitterやLINE
  • AI画像判定器
    画像内の物体認識 例 画像に移る人の検出
  • UFOキャッチャー

とあるように、なんでも工夫次第で出来てしまいます。

中にはブログの運営をラズパイをサーバとして立ててやられている方もいるそうです。



Lチカを実装する

ラズパイについて簡単に触れてきましたが、いよいよLチカを実装していきます。

Lチカでは、LEDをラズベリーパイのGPIOボードにつなげて、点灯・消灯の制御を

行わせていきます。

GPIOボードは、下の画像の赤枠部分になります。

ラズパイのバージョンによって、ピン配置は変わってきます。

画像は、ラズベリーパイ3+になります。

使用するラズパイのピン配置は事前に調べるようにしておきましょう。

今回は、画像の以下のピンを使用します。

  • 02番ピン : +5V
  • 06番ピン: GND
  • 12番ピン: GPIO 18

必要なモノ

以下に必要なモノをまとめています。

No部品名個数備考
1LED1順電圧:5V以下のもの
2抵抗(1[kΩ])1カーボン抵抗
3ジャンパワイヤ3オスーメスタイプ
4ブレッドボード1
5ラズベリーパイ1

ラズベリーパイについては、初学者の方はスターターキット且つOSがインストールされているキットを購入されるのがおススメです。

じっくり理解を深めたい方であれば、ラズパイ本体と必要な部材を購入して

カスタマイズするのは良いと思います。

ラズパイとつなぐ

以下の図のようにしてつなぎます。

実際に配線してみると、下図になります。

Lチカを行うプログラム

LチカのプログラムはPythonで行っていきます。

GPIOの制御をPythonで行うには、

RPi.GPIO

というライブラリを使います。

流れとしては、

  1. GPIOの設定
  2. GPIOの出力制御

この流れで大きくは行います。

GPIOの設定

GPIOを使うには、

まず以下の2つの設定を事前にする必要があります。

RPi.GPIO.setmode(GPIOを使用するモード)
RPi.GPIO.setup(使用するピン番号、 入力or出力)

setmodeでは、GPIOをBCMもしくはBOARDのどちらで使用するかを設定します。

BCMは、割り当てられているGPIOのピン番号でピンの指定ができます。

BOARDは、GPIOピンをラズベリーパイの左から数えた時の

ピン番号で指定することができます。

例えば、ピン番号12のGPIO18を使用したい場合

BCMでは、18

BOARDでは、12

でそれぞれピン番号を使用できます。

今回は、BCMを使用しますのでsetmodeは、

RPi.GPIO.setmode(RPi.GPIO.BCM)

となります。

setupでは、使用するGPIOピンを入力で使うか出力で使うかの設定を行います。

今回は、GPIOの18番ピンを出力として使うので、

RPi.GPIO.setup(18, RPi.GPIO.OUT)

※入力の場合は、RPi.GPIO.INになります。

GPIOの出力制御

使用するGPIOピンに対して、HighとLowの設定をするには、

RPi.GPIO.output(使用するピン番号、True or False)

を使います。

HighとLowはピンに対して電圧を印加するかしないか、

要はピンに対して+5V(or 3.3V) or 0Vの設定をします。

Lチカでは、このTrueとFalseを繰り返し動作させることで、

チカチカしている演出が実現できます。

最終的コード

上記の説明からLチカのコードを書いていくと、最終的に以下のコードになります。

今回は、繰り返し処理なのでforループを使って、5回Lチカをさせています。

間隔としては、1秒間隔で点滅を繰り返します。

最後にGPIO.cleanup()をさせているのは、これをしないで再度プログラムを走らせると、

this channel is already in use

というエラーが出てしまうからです。

このエラーは、前回プログラムを実行した際のGPIOの設定を初期化していないと、

現れるエラーになります。

これを回避するのに、点滅の際の最後にGPIO.cleanup()を入れて、初期化をしています。



まとめ

ラズベリーパイのGPIOを使ってLチカをしてみたので紹介をしていきました。

ラズベリーパイを使ってハードウェア制御をしてみたい場合の入門にはちょうどいいので、

参考に真似てもらえればうれしいです。

今後もラズベリーパイについて記事を書いていくので、参考にしてもらえればと思います。

最後までお読みいただきありがとうございます。

スポンサーリンク