Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
14
Help us understand the problem. What is going on with this article?

More than 5 years have passed since last update.

@jun1_0803

[RaspberryPi][Ruby]ADコンバータ+土壌湿度センサー+Rubyで土壌の水分を計る

はじめに

育てている盆栽の水やりのタイミングを見える化したかったので、ラズベリーパイ、ADコンバータ、土壌湿度センサーを使って、Rubyで土の中の水分を計測します

電子部品

*aitendoで購入したのはコンパレータモジュール(YL-38)と土壌湿度プローブ(YL-96)
*コンパレータモジュール(YL-38)にはデジタル出力が付いているが、数値の計測はできないみたいなので、アナログ出力を使って、ADコンバータを通して計測していく

ラズベリーパイの環境

Raspbian GNU/Linux 8
ruby 2.1.5p273

参考

計測

1.ラズベリーパイでSPI通信の準備

デフォルトだとラズベリーパイのSPI通信がオフになっているので、有効化する

cmd
sudo /usr/bin/raspi-config

設定画面を立ち上げて、「9 Advanced Options」を選択、その次のメニュー選択で「A6 SPI」を選択する
その後、再起動

再起動後、lsコマンドで確認する
/dev/spidev0.0と/dev/spidev0.1が表示されればOK

cmd
ls /dev/spi*

*参考などの他の情報にはブラックリストファイルを開き、spi-bcm2708を有効化すると書いてあるが、必要がなくなったみたい(raspberrypi.stackexchange.comや「spi_bcm2708' no such device」で検索)

2.計測部品の接続

ブレットボード、ジャンパピンを使ってラズベリーパイ、ADコンバータ、土壌湿度センサーを接続していく。
接続はPI-IORaspberryPi GeekのGPIOピン配置を参考に接続していく

mcp32081.png

GPIO_Pi2.png

ADコンバータのCH0と土壌湿度センサーのアナログ出力を繋げる

3.必要なgemのインストール

RubyでGPIOを操作するライブラリ「pi_piper」をインストールする

cmd
gem install pi_piper

4.pi_piperを使ってセンサーの値を取得する

Raspberry Pi + ruby + pi_piper + MCP3208でSPI通信 / アナログ入力のコードを基にコーディングした

ruby
#!/usr/local/bin/ruby
require "pi_piper"

RESOLUTION_AT_12BIT = 0b111111111111.to_f.freeze

PiPiper::Spi.begin do |spi|
  loop do
    _, center, last = spi.write [0b00000110, 0b00000000, 0b00000000]
    center = center & 0b00001111
    center = center << 8
    value =  center + last

    moist_value = RESOLUTION_AT_12BIT - value
    puts "#{moist_value}"

    sleep 0.1
  end
end

pi_piperからGPIOを使おうとするとroot権限が必要なので、rootユーザで実行する

cmd
root@raspberrypi:/home/pi/work# ruby bonsai.rb 
#水分が多いほど値が大きくなる
209.0
209.0
210.0
208.0
209.0
209.0
2.0
0.0
0.0

その他

値の取得箇所のコードはもう少し勉強して検証したい。
また、盆栽は屋外にあるので、無線で値を取得したい。

14
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
14
Help us understand the problem. What is going on with this article?