2015年9月26日土曜日

RaspberryPiでラズベリー栽培 GPIOをSHELLで使う

RaspberryPiでGPIOを使う方法は、ざっと調べた結果、

  • Pythonでやる
  • SHELLでやる
  • Wireing piを使う

の3つの方法があるようです。

・Pythonでやる方法
公式に出てるのですが、読むのがめんどくさいのでやりません。
というかPythonがめんどくさい

・Wireing piを使う
I2Cについてはこちらでやってみました→
https://pitslaboratory.blogspot.jp/2018/05/raspberrypii2cc.html
GPIOについては・・たぶんやらない

・SHELLでやる
一番簡単な方法みたいなので、今回はこの方法を使おうと思います。
I2Cとかログファイル作成もSHELLでやってますし、なにかと便利そうです


GPIOにLEDを接続

http://pi.gadgetoid.com/pinout
ここでどのポートを使うか確認します。
今回はI2Cのポートに近い、4番を使ってみます。GNDはその隣です。

とりあえず、その辺に散らかっているLEDと、適当に460Ωをくっつけてみます。

適当にLEDと抵抗を決めましたが、いちおう計算の仕方を示しておきます。
R = (Vdd - Vf)/If

■Vdd  RaspberryPiの場合3.3V。Arduinoなら5V
■Vf  順方向に電圧を加えた場合、LEDの端子間でどれだけ電圧が降下するかの値。LEDのデータシートを見ます。普通の赤色LEDだと、だいたい2Vです。
■If  LEDに流れる電流で通常2~20mA程度。インジケーターに利用するだけなので3mAで十分です。
■計算 これを式に当てはめると、
R=(3.3-2.0)/0.003=433Ω
偶然にも、テキトーに選んだ460Ωに近い値になりました。(棒

ちなみにArduinoで使う場合は
(5.0-2.0)/460=0.0065=6.5mA
そのまま使っても大丈夫です。

LEDに接続する抵抗は設計する人によって様々ですが330~470Ωあたりを付ければ間違いないでしょう。定格の20mAを超えないことに注意すれば壊れることはありません。

RasPiからGPIOを動かす

とりあえずGPIO4を動かしてみます

GPIO4を使えるようにする
> echo 4 > /sys/class/gpio/export

GPIO4を出力にする Arduinoの pinMode(4, OUTPUT)に相当
> echo out > /sys/class/gpio/gpio4/direction

点灯する  digitalWrite(4, HIGH)に相当
> echo 1 > /sys/class/gpio/gpio4/value

消灯する digitalWrite(4, LOW)に相当
> echo 0 > /sys/class/gpio/gpio4/value

終了するには
> echo 4 > /sys/class/gpio/unexport

あら簡単(゚д゚)
最初と最後のexportやunexportは、GPIOを仮想ファイルを使ってコントロールするやり方らしいのですが、Raspbianの仕様で、そういうものだ。ということで理解しておきましょう。

動かしてみた

というわけで、先ほどのLEDのかわりにソリッドステートリレーを付けます。これでRaspberryPiから100Vのデバイスを制御できるようになりました。

ソリッドステートリレーキット http://akizukidenshi.com/catalog/g/gK-00203/
放熱板を付けなくても、200Wくらいのデバイスなら制御可能。
今回使う予定のポンプは4W(金魚用のアレ)~12W(お風呂ポンプ)なので、けっこう余裕があります。

普通のリレーでも良いのですが、ソリッドステートリレーのほうが
  •  壊れにくい
  •  低電圧小電流(3.3V 5mA)で動く
  •  応答速度が速い
などのメリットがあります。
デメリットとしては
  •  リレー特有のカチカチ音がしないので寂しい
  •  多少お高い
など。

今回、水やりをするのに金魚用ポンプを選択したわけですが、実は最初、電磁バルブを考えてました。お値段はお風呂ポンプとあまり変わらない程度。せめて5Vで動けば・・

0 件のコメント:

コメントを投稿