Intel Edisonの物理ピンの出力電圧を制御する。

前回は、「Intel Edisonの上にWebサーバを起動する。」で、EdisonをWebサーバとして使う方法を書きました。
今回は、やっとテスターが登場して電子工作っぽくなります。

Intel Edisonのピンの配置について

Breakout Boardに接続したEdisonを裏返すと、スルーホールが並んでいます。
SONY DSC
上からJ17〜J20、右から1〜14という番号がついています。これらのうちのいくつかは汎用に使えるピンになっています。
下記はmraaというライブラリのドキュメントですが、ピン配置についても言及されています。
mraa: Intel Edison
これを見ると、グラウンドピンはJ19-3です。裏返した状態で、上から3行目、右から3列目の穴です。
汎用ピンはたくさんありますが、今回はJ18-1を使うことにしました。上から2行目、右から1列目の穴です。これは、GPIOの13番という番号がついています。GPIOというのは、General Purpose Input/Outputの略で、汎用入出力のことです。

役割 ピン
GND J19-3
GPIO 13 J18-1

テストワイヤを繋ぐためにハンダ付けすることもできますが、下記のスルーホール用のテストワイヤを使うと、ハンダ付けなしで回路の接続ができます。
サンハヤト スルホール用テストワイヤ TTW-200
これは便利です。

Intel Edisonの物理ピンの制御をしてみる

グラウンドがJ19-3番のピンで、GPIOの13番ポートがJ18-1という配置でした。
もちろんグラウンドは制御するものではないので、今回制御しようとしているのはGPIOの13番ポートです。下記を参考に電圧を制御してみます。
Intel Edison と ruby で Lチカ – Qiita
物理ピンの制御をするというのは、そこから出てくる電圧を上げたり下げたりするということです。

GPIOの使用の準備

まずは、GPIOの13番を使用することを宣言します。GPIO13が使える状態だと、下記のパスにファイルが存在しますが、今はまだありません。

$ ls /sys/class/gpio/gpio13
ls: /sys/class/gpio/gpio13: No such file or directory

ここで、exportというファイルに対して、13という文字列を入力します。

echo 13 > /sys/class/gpio/export

すると、先ほど存在しなかったパスにファイルが用意されます。

$ ls /sys/class/gpio/gpio13
active_low  device      direction   edge        power       subsystem   uevent      value

これでピン自体が制御できるようになりました。

GPIOポートを出力用に設定

GPIO13が使える状態になったら、これを出力用として宣言します。各ピンは、入力専用、出力専用ではなく、切り替えられるようになっています。
入出力の方向は、directionというファイルに記述されています。

$ cat /sys/class/gpio/gpio13/direction
in

最初はin、つまり入力ピンとして宣言されていますので、これをout、出力ピンに変更します。

echo out > /sys/class/gpio/gpio13/direction

これでGPIO13ポートが、出力ピンとして使える状態になりました。

$ cat /sys/class/gpio/gpio13/direction
out

これで準備が完了です。

ハイレベル、ローレベルの電圧を出力する

valueというファイルに0を入力すると、物理ピンの出力がローレベルになります。

echo 0 > /sys/class/gpio/gpio13/value

テスターで測定してみると、0Vです。ローレベルになっています。
SONY DSC
今度は、1を入力します。

echo 1 > /sys/class/gpio/gpio13/value

物理品の電圧レベルは、1.8Vになりました。ハイレベルの電圧が出ています。
SONY DSC
このピンから直接負荷を駆動することはできないので、一度トランジスタなどで増幅をする必要はありますが、これでEdisonから外部の様々なものを動作させられるようになりました!

コメント

  1. […] 「Intel Edisonの物理ピンの出力電圧を制御する。」で、Edisonの出力をプログラムで制御しました。 […]

タイトルとURLをコピーしました