LoginSignup
25
24

More than 5 years have passed since last update.

RaspberryPiでサボテンを監視

Last updated at Posted at 2015-05-11

我が家のサボテンが健やかに育つよう、環境をモニタリングしようと思った。

やりたい事

  • 各種センサーから気温、湿度、日照量、土壌湿度等をモニタリング
  • センサーから得られた値を、ネットワーク越しに何らかの方法で取り出したい
  • サボテンは窓際に置いてあるので有線LANは届かない。無線LANでraspiにつながる様にしたい

やれたこと

  • とりあえず今回は気温と日照量を取ってみた
  • BUFFALOのWLI-UC-GNMで無線接続

ネットワーク越しの取得は、raspiにwebサーバ立てて
ブラウザから見られる様にするのが良さそう。今回はまだやってない

無線接続

無線子機はBUFFALOのWLI-UC-GNMが事例が多い様なので、これを採用。

親機との接続設定

設定方法は、/etc/wpa_supplicant/wpa_supplicant.confにESSIDとパスワードを登録する。
wpa_passphraseコマンドを使うと、設定に記述するフォーマットで出力してくれる。
コマンドの出力はそのまま/etc/wpa_supplicant/wpa_supplicant.confに追記すればOK。

以下のコマンドを打ってみる。(ESSIDには無線LANのSSID、passにはパスフレーズを各自の環境に合わせて指定する)
sudo wpa_passphrase ESSID pass | sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf

↓の様なファイルが出来上がってるはず。

/etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="ESSID"
    #psk="password"
    psk=XXXXXXXXXXXXXXXXXXX
}

今回は↓のように修正(#psk=~はセキュリティ上、宜しくないので削除)

/etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="ESSID"
    proto=RSN
    pairwise=CCMP
    group=CCMP
    psk=XXXXXXXXXXXXXXXXXXX
}

ちなみに認証方式毎の設定値は以下の通り。
認証方式
 WPA-PSK
  proto=WPA
 WPA2-PSK
  proto=RSN
暗号方式
 TKIP
  pairwise=TKIP
  group=TKIP
 AES
  pairwise=CCMP
  group=CCMP

起動時に無線LANに接続する設定

デフォルトで下記の様になってるファイルを

/etc/network/interfaces
auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

↓の様に修正

/etc/network/interfaces
auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

DNSの設定

avahiを入れる
sudo apt-get install avahi-daemon

設定の反映

reboot で再起動して設定を反映。
有線LANを引っこ抜いてssh -l pi raspberrypi.localで繋がればOK

各種センサーの接続とか

raspiの設定とライブラリのインストール

参考
Raspberry Piで温度センサー。部屋の気温を取得しよう
部屋の明るさを取得するフォトトランジスター編

まずはsudo raspi-config -> advancedでl2cを有効化する。
その後sudo gem install pi_piperで、ライブラリをインストール
(今回は最新の1.3.2をインストールしている)

参考ページではセンサをMCP3002のCH0に繋いでいるが、今回はCH0に温度計、CH1に照度計を繋いでみる。
CH0は良いとして、CH1からの値の取得方法は。。。データシートによると
スクリーンショット 2015-05-11 17.48.18.png
という事なので
spi.write [0b01111000,0]
で取れるはず

参考ページをまんまコピペだけど、ソースはこんな感じ。

mcp3002.rb
require 'pi_piper'
require "date"

MCP3002_SINGLE_END_CH0 = 0b01101000
MCP3002_SINGLE_END_CH1 = 0b01111000

loop do
  brightness = 0
  value = 0
  PiPiper::Spi.begin do |spi|
    raw = spi.write [MCP3002_SINGLE_END_CH1,0]
    brightness = ((raw[0]<<8) + raw[1]) & 0x03FF
    raw = spi.write [MCP3002_SINGLE_END_CH0,0]
    value = ((raw[0]<<8) + raw[1]) & 0x03FF
  end
  volt = (value * 3300)/1024
  degree = (volt - 500)/10
  puts "#{DateTime.now.strftime("%Y-%m-%d %H:%M:%S")} brightness #{brightness} Temperature #{degree} C"
  sleep(10)
end

動かしてみる。

$ sudo ruby mcp3002.rb
2015-05-11 17:54:49 brightness 79 Temperature 24 C
2015-05-11 17:54:59 brightness 76 Temperature 24 C
2015-05-11 17:55:09 brightness 75 Temperature 24 C
2015-05-11 17:55:19 brightness 946 Temperature 24 C ←スマホのライトを当ててみた
2015-05-11 17:55:29 brightness 73 Temperature 24 C

気温も自宅の温度計と同じ値が取れており、それっぽく動いてるのでOKでしょう。

今後やりたい事

  • センサの追加
  • MCP3002は2CHしかないので、MCP3208等のCH数が多いADコンバータへの交換
  • Web化
25
24
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
25
24