ブログ管理者のP.Hです!
Raspberry PiのGPIOは3.3Vですね。電源として5Vピンは存在しますが、制御ピンは全て3.3Vになります。そのため、Arduino等のGPIO(5V)や産業用機器(24V)と直接接続する時は電圧のレベル変換をする必要があります。今回はRaspberry PiのGPIOをレベル変換する方法を紹介したいと思います。
それでは、GPIOのレベル変換する方法を紹介します。下記の3つの方法について説明していきます。
- フォトカプラを使用して電気基板を作成する
- 電圧レベル変換基板を購入する
- Raspberry Piの拡張ボードを購入する
それでは、それぞれ説明していきます。
フォトカプラを使用して電気基板を作成する
フォトカプラを使うと電圧のレベル変換と回路を絶族(電気的に分離すること)することができます。王道の素子なので、実装済みの基板もたくさん販売されています。簡単に使い方を説明しておきます。
- Raspberry Pi:出力側 Arduino等のデバイス:入力側の場合
・Raspberry PiのGPIOピン ⇒ フォトカプラのダイオード側に抵抗を付けて接続する。
・Arduino等のデバイスのGPIOピン ⇒ プルアップ設定でフォトカプラのトランジスタ側に接続して、High/Lowを検知する
- Raspberry Pi:入力側 Arduino等のデバイス:出力側の場合
・Raspberry PiのGPIOピン ⇒ プルアップ設定でフォトカプラのトランジスタ側に接続して、High/Lowを検知する
・Arduino等のデバイスのGPIOピン ⇒ フォトカプラのダイオード側に抵抗を付けて接続する。
下記ページも参考になりますので、ご覧ください。
https://yuki-no-yabo.com/how-to-use-photocoupler/
この方法は抵抗値を決めたりする必要があるので、ある程度、電気回路の知識が必要となります。また、ユニバーサル基板等で回路を作成する手間がかかります。
電圧レベル変換基板を使用する
Arduino等の5Vのデバイスに接続したいときは、下記ページのレベル変換基板が便利です。FETを使用しており、うまく回路が作られています。双方向で使用できますので、I2CやUART等の通信ラインの電圧レベル変換としても使用できるので重宝します。
ロジックレベル双方向変換モジュール - スイッチサイエンス
電圧レベル変換基板の使い方
使い方も簡単です。この基板ひとつで、4つのGPIOピンのレベル変換ができます。配線の仕方は以下の通りです。
- LV、GND ⇒ Raspberry Piの3.3V電源、GND
- LV1~4 ⇒ Raspberry PiのGPIOピン
- HV、GND ⇒ Arduino等の5V機器の5V電源、GND
- HV1~4 ⇒ Arduino等の5V機器のGPIOピン
この基板を介して、Raspberry Pi(3.3V)とArduino等の5V機器のGPIOを繋ぐことができます。
下記のページにチュートリアルもありますので参考にしてください。
https://learn.sparkfun.com/tutorials/bi-directional-logic-level-converter-hookup-guide
価格も安く、入出力のどちらでも使えるので(双方向)、とても便利です。
Raspberry Piの拡張ボードを使用する
下記のRaspberry Piの拡張ボードを使うと、5Vや24V機器のGPIOと接続することができます。この拡張ボードは内部的にRaspberry PiのI2Cを使用しています。pythonで制御する場合は、I2Cコマンドを入力することで、拡張ボードの出力ピンをオン/オフしたり、入力ピンの状態を知ることができます。
ソフトウェアで制御する部分は少し難しいかと思いますが、一度作ってしまえば後は使いまわしができます。電気回路を自分で作らなくていいところがいいですね。使い方の詳細は以下のページを参考にしてください。
http:// https://www.y2c.co.jp/i2c-r/dio-8-4rd-irc/
Raspberry Piと他の制御機器のGPIOを接続しておけば、早いスピードで比較的簡単に情報のやりとり(High or Low)をすることができます。ただ、情報量は少なくなります。用途によって、GPIOで接続するか、LANやUSB等の通信を使用するか検討し使い分けるとよいでしょう。