ADコンバーターとフォトレジスタを使って部屋の明るさを取得しよう。
Raspberry Piは残念ながらアナログ入力ピンが搭載されていないため、
各種アナログセンサーを使った電子工作の際に不便です。
それを解決するために、今回はADコンバーターをブレッドボード上に設置します。
その後、明るさを取得出来るセンサーを使って部屋の明るさを取得しましょう。
さらに、ネットワークを使って部屋が明るくなった、もしくは暗くなった場合にお知らせのEmailを携帯に送信したりというような機能も追加します。
ハック ラズベリーパイ Raspberry Pi 電子工作入門キット。
- 出版社/メーカー: ANBE
- メディア: エレクトロニクス
- この商品を含むブログを見る
特定の使い方を想定しているわけではないですが、例えばリビングなどで可動させておくと外出中でも、誰か帰ってきたのかな?とわかる。なんていう使い方もできますね。まぁ、条件が限られてしまうので実用的かどうかはさておきですが・・。
MCP3002は半月型の凹みの位置をよく確認してください。
CDSセルに極性はないため、どちらの足を使っても問題ありません。
ちょっと複雑な形になりました!
これで回路図は完了です。
<重要:2014年12月2日>
電子部品キットに含まれる内容物をフォトレジスターからフォトトランジスターに変更しています。フォトトランジスターの場合はこちらを参照してください。
どのような仕組なのかというと、
フォトレジスターは明るさに応じて抵抗値が変化します。
そこで、MCP3002のCH0で値を取得してDin,Doutなどのピンから通信をすることによって、その変化をRaspberryPiで取得できます。その後、人間にもわかるように画面に出力しようという計画です。
では、さっそく取り掛かるにあたって、デフォルトでOFFになってるシリアル通信を有効化しましょう。ターミナルを起動して
$ sudo leafpad /etc/modprobe.d/raspi-blacklist.conf
テキストエディタが起動したら
#blacklist spi-bcm2708
blacklist i2c-bcm2708
のように#を入れてコメントアウトします。保存して終了したらRaspberryPiを再起動してください。
OSを起動したら再度ターミナルで、
$ ls -la /dev/spi*
とすると以下のようにデバイスが認識されてます。
crw------- 1 root root 153, 0 Jan 1 1970 /dev/spidev0.0
crw------- 1 root root 153, 1 Jan 1 1970 /dev/spidev0.1
前回と同じようにgemライブラリを使用します。
$ sudo gem install pi_piper
念のためgemがきちんとインストールされたか確認してみてください。
$ gem list
Local GEMSという一覧の中にpi_piper(1.3.2)があれば大丈夫です。
[Raspberry Pi2の場合]
$sudo raspi-config
を実行して変更できます。
8 Advanced OptionsからSPIを有効可して再起動してください。
pi_piperなのですが、bcm2835というRaspberry Piのライブラリーを使用しています。
Raspberry Pi2の場合は比較的新しいバージョンのbcm2835を使う必要があります。
レポジトリから直接gem installしてもpi_piperのlibbcm2835.imgが古いままなので動きません。
そこで、直接 githubからcloneしてbuildしてください。
$ git clone https://github.com/jwhitehorn/pi_piper
$ cd pi_piper
$ sudo gem build pi_piper.gemspec
$ sudo gem install pi_piper-2.0.beta.xx.gem
xxは最新のバージョンに対応した数字
今回のプログラムを保存するフォルダーを作りましょう
$ mkdir ruby_projects
では、LeafPadを起動してRubyのコードを作成していきましょう。
require 'pi_piper' loop do value = 0 PiPiper::Spi.begin do |spi| raw = spi.write [0b01101000,0] value = ((raw[0]<<8) + raw[1]) & 0x03FF end puts value sleep(1) end
ライブラリーのおかげで、これだけです!
先ほど作ったフォルダにmcp3002.rbで保存しました。
ではターミナルを開きましょう。
$ cd ruby_project
$ sudo ruby mcp3002.rb
先ほどSPIを有効化しましたが、管理者でしか実行できないようにしてますので、sudoを入れて実行してください。条件にもよりますが、日中で蛍光灯を使ってる部屋なら700~800の値が1秒おきにターミナルに出力されると思います。プログラムを実行中にCDSセルを軽く手で覆うと数値が小さくなりますでしょうか。真っ暗な状態で0付近の値を取るのならば正しく稼働しています。
プログラムの中身の説明とEmailの送信は次の章で行いましょう。
Raspberry Piで計測したデータをEmailで送信する。 - Raspberry Pi 電子工作
ハック ラズベリーパイ Raspberry Pi2 スターターキット
- 出版社/メーカー: iteadstudio
- メディア: エレクトロニクス
- この商品を含むブログを見る
ハック ラズベリーパイ Raspberry Pi 電子工作入門キット。
- 出版社/メーカー: ANBE
- メディア: エレクトロニクス
- この商品を含むブログを見る