2015年9月26日土曜日

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

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

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

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

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

・Wireing piを使う
Cソースにライブラリを読み込んで実行できそうですが、今回はやりません。いつかやるかも。

・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に流れる電流で通常20mA程度。ですが2mAくらいから光ります。インジケーターに利用するだけなので、2ないし3mAで十分です。
これを式に当てはめると、
R=(3.3-2.0)/0.003=433Ω
偶然にも、テキトーに選んだ460Ωに近い値になりました。(棒
ちなみにArduinoで使う場合は
(5.0-2.0)/460=0.0065=6.5mA
そのまま使っても大丈夫です。
330Ωの抵抗はLED一袋と一緒に持っておくと便利です。


●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 件のコメント:

コメントを投稿