できること

ラズベリーパイ4で始める電子工作入門! 【第4回】

ラズベリーパイ4とGPIOで基本的な電子工作に挑戦!

 

※この記事は2020年2月12日に公開した記事を再編集し、2022年3月14日に再度公開しました。

 

第1回:新しい「ラズベリーパイ4」を使い始める!
第2回:ラズベリーパイ4をセットアップ!
第3回:ラズベリーパイ4をヘッドレスで使いこなす!

 

こんにちは、ヨシケンです!
ラズベリーパイ4 Model B(ラズベリーパイ4)を使って、ラズベリーパイのセットアップから電子工作の基本までをおさらいしてきた本連載も今回が最終回。

第3回までで、ラズベリーパイOS(Raspbian Buster)のインストール、環境設定、基本的な使い方をおさえましたので、今回はGPIO(データ入出力端子)を使って、センサなどを接続し、実際に電子工作をおこなっていきたいと思います。

1

目次

  1. 今回の記事で必要な物一覧
  2. ラズベリーパイとハードウェアの接続(GPIO)
  3. ラズベリーパイ4にセンサをつないで計測
  4. LED(NeoPixel)を光らせる
  5. センサに応じてLEDを連動させて動かす
  6. まとめ

 

1. 今回の記事で必要な物一覧

ラズベリーパイ4 Model B
(スタータセットなどを使うと始めるのに必要な部品が揃っています。)
raspberrypi04_1

BME280温湿度センサ
3

NeoPixel 16連リング
4

ミニブレッドボード
5

2. ラズベリーパイとハードウェアの接続(GPIO)

ラズベリーパイには数多くのハードウェアと接続するインタフェースがあります。デジタル入出力のGPIOやカメラ、オーディオ接続などですが、それらとハードウェアをつなぐことによりさまざまな電子工作が可能です。
GPIO接続
ラズベリーパイとハードウェアとのメインの接続はGPIO(General Purpose Input Output)と呼ばれる40本の端子です。ラズベリーパイ上の左下の1ピンから右上の40ピンまでがあり、以下図のようなGPIOxxという番号により、プログラム中で指定することができます。

6

[GPIOピン配置] https://www.raspberrypi.org/documentation/usage/gpio/

GPIOの各ピンにはあらかじめ決まった役割が割り当てられています。大きく分けると以下のような違いがあります。

電源とGND: ラズベリーパイにはあらかじめ3.5Vと5Vの電源供給が2本づつあります。それ以外にGND(電圧0V)が8本用意されています。

デジタル入出力: 上記以外の端子はデジタル入出力に使用できます。GPIO2〜27までがあり、必要に応じてLEDやスイッチをつないで電子工作をすることが可能です。方式としては、デジタルの入出力とPWM(アナログ出力)などがあります。

PWM: ラズベリーパイは基本的にデジタル信号(0か1)しか扱えませんが、擬似的にアナログ出力(電圧の段階的出力)をおこなうことができます。これにより、LEDの明るさを変えたり、サーボモータの角度を指定することが可能になります。これはPWM(Pulse Width Modulation)と呼ばれ、ソフトウェアPWMとしてGPIOの26ピンすべてで使用できます。

上記以外にI2C(Inter-Integrated Circuit)と呼ばれるLCDディスプレイなどをつなぐ規格や、UART(Universal Asynchronous Receiver Transmitter)SPI(Serial Pheripheral Interface)といったシリアル通信もあります。これらは使われるピンはあらかじめ指定されており、もしそれらシリアル通信を有効にすると、それと重複したピンはGPIOとしては使えなくなります。

3. ラズベリーパイ4にセンサをつないで計測する

それでは、ラズベリーパイ4にセンサをつないで計測をおこないます。まずは温湿度センサとしてよく使用されるBME280を使ってみます。

7

このセンサは先ほどのGPIOの中でも、I2Cという通信方式を使っています。その為にラズベリーパイの設定raspi-configからI2Cを使用可能にしておきます。その中で“Interfacing Options”を選び、”Enable I2C”を選択します。

$ sudo raspi-config

8

実際の接続は、写真と表を参照してBME280とラズベリーパイのGPIOをつないでみて下さい。

9

BME280端子 (左から) ラズベリーパイGPIO
Vio 3.3V
Vcore NA(接続なし)
GND GND
CSB 3.3V
SDI GPIO2
SCK GPIO3
SDO GND

センサとラズベリーパイをつないだら、このセンサを操るためのいくつかのI2Cライブラリをインストールします。その後、コマンドから接続したセンサが使用可能になっているか見てみましょう。

$ sudo apt install i2c-tools python-smbus
$ sudo i2cdetect -y 1

この I2C Detectコマンドを流すと、以下のようにBME280のデフォルトアドレス0x76での通信が確認できます。

10

接続が確認できたら、BME280のサンプルプログラムがあるので使ってみましょう。

$ sudo git clone https://github.com/SWITCHSCIENCE/BME280.git
$ sudo pip install smbus2
$ python BME280/Python27/bme280_sample.py

このプログラムを実行すると、簡単に温度、湿度、気圧それぞれの数値を取得できました!
11

4. LED(NeoPixel)を光らせる

GPIOのデジタル入出力でセンサの数値を計測できたら、それとは別のハードウェアも使ってみます。ここではLEDの中でも、マルチカラーに光らせることができるNeoPixelというものを使います。これは3本のケーブルをつなぐだけで、連続したLEDを光らせたり、ライブラリが出ていて手軽に目立つ電飾として使えます。

12

このNeoPixelは16連のリング状になっています。裏に3つの接続端子があって、ここにラズベリーパイにつなぐためのケーブルをハンダ付けします。ラズベリーパイとの接続は、電源のプラス・マイナスと、入力端子の3本だけです。表を見てつないでみてください。

13

NeoPixel
(右回りに)
ラズベリーパイGPIO
Input GPIO18 (黄色)
5V DC 5V (オレンジ)
Ground GND (黒)

それでは、こちらのAdafruitサイトを参照して、ライブラリをインストールします。

$ sudo pip3 install adafruit-circuitpython-neopixel

このページにneopixel_simpletest.pyというサンプルプログラムがあるので、これをダウンロードします。このプログラムを開いて、ラズベリーパイ用に以下部分を修正します。

# pixel_pin = board.NEOPIXEL #コメントアウト
pixel_pin = board.D18 #コメントを外し(D18を有効化)
num_pixels = 16 #今回は16連リングを使っているのでそれを指定

修正したプログラムをpython3で実行します。また実行権限として、sudoで流す必要があるので、気をつけてくださいね。

$ sudo python3 neopixel_simpletest.py

このサンプルプログラムでは、R(赤)、G(緑)、B(ブルー)と色が変わった後に、レインボー色に回転してなかなか派手でいい感じです。

15

5. センサとLEDを連動させて動かす

それでは最後にセンサの値に応じて、LED(NeoPixel)の光り方を変えてみましょう。部屋の温度と湿度に合わせて、NeoPixelの色を変化させます。まず、BME280とNeoPixelを両方ラズベリーパイにセットして、ケースなどに入れます。

16

プログラムとしては、室温が15℃以下なら「寒い!」と表示して青色に、15〜25℃なら「快適!」として緑色、また湿度が70%以上なら「蒸し蒸ししてます!」として赤色に光らせるなどします。

先ほどのBME280サンプルプログラムをコピーして、temp_led.pyプログラムを作ります。

$ sudo cp ~/BME280/Python27/bme280_sample.py ~/Programs/temp_led.py

元々のbme280_sampleプログラムの中身のうち、以下黄色の部分を追記します。

それでは、sudo python3からこのプログラムを流してみましょう。

python3

これで室温が低ければ、青く光ります。

寒い状態

寒い状態

またセンサに息を吹きかけるなどして、室温や湿度が上がるとそれに応じた色に光ります。

快適状態(15C - 25C、湿度70%以下)

快適状態(15C – 25C、湿度70%以下)

気温、湿度が高い

気温、湿度が高い

 

6. まとめ

ラズベリーパイ4を使った記事の第4回では、センサなどを使った電子工作をおこないました。センサの接続、LED(NeoPixel)の使用といった基本的なことを学べたのではないかと思います。

ラズベリーパイ4はメモリ容量の増加などにより、ハイパフォーマンスな処理などに適しているのですが、この回は基本的な電子工作にとどめました。

今回の連載を読んでいただき、ラズベリーパイや電子工作に興味を持たれたら、ぜひラズベリーパイ4を使って、より面白い電子工作に挑戦してもらえればと思います。

それでは、ラズベリーパイ電子工作生活を楽しんでください!

 

 

今回の連載の流れ

第1回:新しい「ラズベリーパイ4」を使い始める!
第2回:ラズベリーパイ4をセットアップ!
第3回:ラズベリーパイ4をヘッドレスで使いこなす!
第4回:ラズベリーパイ4とGPIOで基本的な電子工作に挑戦!(今回)

razero_580-230
アバター画像

普通の会社に勤めるサラリーマンですが、モノ作りが好きな週末メイカーで、電子書籍MESHBOOKを出したり、ブログを書いたりしています!

http://blog.ktrips.net

Arduinoでスマートウォッチを作ろう