28
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

パソコンにGPIOボードを追加する。(1)

Last updated at Posted at 2020-03-09

#はじめに

Pythonでプログラムを作り、そのプログラムで、外部H/Wを制御したい時があります。
例えば、ノートパソコンをPLCの24Vラインに繋いで、直接に信号の通信を行う場合です。この通信を実現するために、パソコンが制御できるI/Oポートが必要になります。

関連記事:ノートパソコンにGPIOインターフェースあれば・・

Rasbeprry PIやNVIDIA Jetson nanoのようなシングルボード小型コンピュータには、自前のGPIOポートを内蔵しているため、関連の設定が簡単です。しかし、パソコンの場合には、USB以外のI/Oポートがしないため、別途のGPIOボードを用意し、ドライバーの設置やライブラリーの設定を行う必要があります。

今回の記事では、Windowsパソコンに12ポートのGPIOボードを設置する方法をご紹介します。

#GPIOボードの紹介

GPIOボードとしてAdafruit社のFT232H Breakoutボードを使用します。日本では、スイッチサイエンスや秋月電子さんのサイトで購入可能です。

Adafruit社 GPIOボード製品紹介ページ
Adafruit.jpg

##仕様

次の表に、GPIOボードの仕様を掲載します。
パソコン側のUSB_5Vを電源としてい利用します。GPIOボードのデジタル出力レベルは3.3Vです。
デジタルI/Oポートは、12本提供します。

そして、直接にデジタル方式のセンサ・アクチュエータとの通信のため、I2CとSPI規格のインタフェースも用意されています。

パラメータ 詳細 内容
Power Pins 5V this is the 5V power from the USB input.
GND this is the common ground for all power and logic.
GPIO Pins D4 to D7 can be used as either digital inputs and outputs.
C0 to C7 can be used as either digital inputs or outputs.
Others I2C Pins SCL, SDA
SPI Pins SCLK, MOSI, MISO, CS0

次の図に、このボードのピン配置を表します。
FT232H_pinout.png

##パソコンとの接続

今回は、PythonでGPIOボードの制御を行います。Circuit Python Librariesを利用します。

しかし、Pythonが直接にCircuit Python Librariesにアクセスが難しいため、BLINKAというものが必要となります。(Adafruitの説明)
BLINKAとは、PythonがCircuitPython LibrariesへアクセスできるようにするAdafruit社の専用ライブラリです。

パソコンとGPIOボードは、USBポートによってい接続が形成されます。パソコンからGPIOポートへの信号の変換は、FT232Hチップが行います。

複数のパーツが出て、最小は若干複雑に見えますが、いったん設置が終われば、そのパーツの存在を気にせずに使えます。

Configure.png

##ドライバーとライブラリの設置

次は設置プロセスです。ここが一番大事な部分です。

詳細は、下記のリンクを参照して、設置を進めてください。順番がとても重要です。

このポストでは、やるほうの項目だけ記入します。全部の設置には、10分~15分程度かかります。

Adafruit GPIO Board Setup

  1. パソコンにPython3の設置を確認 : Python 2.7は未対応のため
  2. FT232Hのドライバー更新
  3. pyftdiとpyusb(修正版)の設置
  4. pyusbとpyftdiのテスト
  5. Adafruit Blinkaの設置
  6. 環境変数の設定 (set BLINKA_FT232H=1)
  7. python上でGPIOボードの認識の確認

#GPIOボードの出力テスト

GPIOボードのC0ポートを利用し、LEDを点滅させてみます。
C0ポートをOUTPUTポートに設定し、0.5秒はON、0.5秒はOFFを繰り返します。
出力の様子は、LEDの点滅で確認できます。

次の配線の概略を表します。各素子を直列に接続します。

C0ポート - LED - 1 kOhm 抵抗 - GND

20200309_152011.jpg

##プログラムコード

環境変数 BLINKA_FT232Hを1に設定する部分を、import boardの前に設置する必要があります。

import os
os.environ['BLINKA_FT232H'] = '1' #Setting Environmental Variable

import board
import time
import digitalio

#GPIO Setting : C0 will be output port.
led = digitalio.DigitalInOut(board.C0)
led.direction = digitalio.Direction.OUTPUT

while True:
    led.value = True
    time.sleep(0.5)
    led.value = False
    time.sleep(0.5)

動作の様子です。プログラム通り、OUTPUTポートから出力されることが確認できました。
ezgif.com-video-to-gif.gif

#まとめ

パソコンにGPIOボードを追加する方法を紹介し、その動作を確認しました。

#今後の予定

次回は、GPIOボードからINPUT信号をもらい、Python上でその結果を表示する方法を紹介します。

#参考資料

  1. Adafruit Circuit Python Libraries with FT232H
  2. Adafruit GPIO Board Setup
  3. ノートパソコンにGPIOインターフェースあれば・・
28
32
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?