RaspberryPi 知人のための色々

 2014-10-19
知人がRaspberryPiを買っていろいろ遊び始めるそうなので、手持ちのパーツで支援。
 
手持ちの余剰品を寄せ集めてとりあえず動くものを作るという方針。

搭載パーツいろいろ

I2C 小型キャラクタLCD 8x2行 AQM0802A-RN-GBW
巷で流行の16x2行とかのやつはちょっと癖がある(readするとバスフリーズするとかなんとか。)のと、外付けVRでコントラスト調整とかが必要なので、そういうのがない、8x2行のタイプにした。
外付けで必要なのはコンデンサ程度。格好良い青いセラコンを付けた。(?)

温湿度センサー DHT11
温度だけならいろいろ種類があるが、湿度も取ろうと思ったらこれが定番の最安品。精度や分解能はそれなりの品物ですが、センサーとしては充分遊べるので手軽。ほぼ同じ通信仕様で性能向上品のDHT22(RHT03)などもあるし。
外付けはプルアップ抵抗のみ。オマケで念のためパスコンもつけた。

赤外線リモコン受信モジュール OSRB38C9AA
これも赤外受信センサとしての定番品。RaspberryPiはLircが簡単に使えるのでこれがあると遊びが広がる。
ノイズの影響を避けるためI2Cバス系の配線からは遠ざけて配置。センサ出力線は両側にGNDを回した。
まぁそこまで神経質なものではない。

赤外LED OSI5FU3A11C
Lircで使う。これでRaspberryPiから赤外線リモコンを自由に使える。適当なモノと組み合わせればインターネット越しに家電を操れる
安全のため定格(50mA)以内で抵抗を付けてあるが、最大100mAまでなら流せる。オープンドレイン出力で隣接ソケットに5Vが来ているのでお好きな外付け抵抗で出力を調整できます。
ちなみに、30Ωにすると大体MAXです。 一時的な実験なら抵抗なしでも大丈夫だと思う。2SC1815が100mA前後までしか流せないからねぇ。

I2C 大気圧DIP化モジュール LPS331AP
大盤振る舞い。そこそこなお値段の大気圧センサー。測定範囲は260-1260hPaなので超弩級の台風がやってきても大丈夫。
温度センサーの値も取れるので、温度はこっちのを参照した方が精度も分解能も良い。

I2Cバス
拡張用にI2Cのソケットを4つ乗せた。ピンアサインを調べたけどデファクトスタンダードと呼べるものはなさそう?なので、VDD-SDA-SCL-GNDの並びにした。

DSC_3338.jpg

味見

I2Cの準備
/etc/modulesに下記を追加。今回の小型LCDはデータシートでI2CのSCL周波数はmax400kHzなので、100kHzに指定する。
i2c-bcm2708 boudrate=100000
i2c-dev
/etc/modprobe.d/raspi-blacklist.confから下記行をコメントアウトする
blacklist i2c-bcm2708
I2C用のコマンドをinstallする
pi% sudo apt-get i2c-tools


キャラクタLCD

Raspberry Pi起動時にI2C接続の小型液晶にIPアドレスを表示させてみる
http://mag.switch-science.com/2013/09/13/ipaddr_i2clcd_raspberry_pi/


上記のshellscriptを動かすとIPアドレスがLCDに表示された。

赤外線LIRC
lircをinstallする
pi% sudo apt-get install lirc
/etc/modulesに下記を追加。今回のボードではGPIO17,18を使う。
lirc-rpi gpio_in_pin=17 gpio_out_pin=18

受信したり解析したり送信したりする。
pi% mode2 -d /dev/lirc0

pi% irrecord -n -d /dev/lirc0 light

pi% sudo mv ./light /etc/lirc/lircd.conf
pi% /etc/init.d/lirc restart
pi% irsend SEND_ONCE light on


湿度センサー

Raspberry Pi Blog: Interfacing Temperature and Humidity Sensor (DHT11) With Raspberry Pi
http://www.rpiblog.com/2012/11/interfacing-temperature-and-humidity.html


上記参考ページに従って、wiringPiのライブラリ入れて、C言語のコードを戴いてきてgccする。
pi% sudo ./dht11
Interfacing Temperature and Humidity Sensor (DHT11) With Raspberry Pi
Invalid Data!!
Humidity = 44.0 % Temperature = 28.0 *C (82.4 *F)
Humidity = 44.0 % Temperature = 28.0 *C (82.4 *F)
Humidity = 44.0 % Temperature = 28.0 *C (82.4 *F)
注意が必要なのはC言語のコード内の #define DHT11PIN 7 のところ。
GPIOの番号かと思ってハマった。これはピンヘッダの端子番号らしい。今回のボードではGPIO4へつないでいるので、変更の必要は無かった。わかりにくかったん・・・。
wiringPiのライブラリのドキュメント見ればすぐだったんだろう。面倒がって遠回りしてオシロまで引っ張り出してきたあげくに、変更なしで良いと分かって脱力。
DSC_3337.jpg

大気圧センサー
特に味見はしてない。同じI2Cバス上にぶら下がってるキャラクタLCDが動いたし、i2cdetectでアドレスも見えているので通信は出来ている。 ので、たぶん問題ない。
% sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 3e --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- 5d -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

0x3eはLCDのアドレスで、0x5dが大気圧センサー。このアドレスに向かって何事かを読み書きするとセンサーの値が得られるだろう。
秋月の日本語マニュアル(一枚ペラのやつ)があるのでたぶん、ちょっと読んでbitの並びとかを理解すれば何とかなると思うよ>某氏
詳しくはSTMicroのデータシート見るといい。

その他
ボード固有のあれそれ。

大気圧センサーはICソケット使って取り外しできるようにしてます。
取り付けるときは白いマーキングをそろえて刺すべし。半月状の切り欠きを合わせるのがこういうパーツの定石になっています。
DSC_3340.jpg

赤外線LEDの端子も取り外せます。白いマーキングの端子は5Vの電源が来ているので、まぁそれを覚えておいてください。
RaspberryPiからの出力は2SC1815を経由して、オープンドレインという形式で接続されてます。信号がアクティブになるとその端子がGNDに落ち、非アクティブの時はどこにも接続されていないように振る舞います。なので、5VをLEDに与えて、その戻ってくるGNDをオープンドレインに接続することで、信号アクティブ時にLEDが発光します。
DSC_3342.jpg

半田面の外周をぐるりと回っているのはGNDなので、必要があったら基板ごとクリップで挟むなどしてください。
半田面の赤い被服のジャンパー線のところは5V系ですので注意してください。それ以外は3.3V系です。(5VはDHT11と赤外LEDで使用)
DSC_3343.jpg


部品の配置検討は適当に、場当たり的に乗せて行っているので、配線の合流場所は後足し半田でモリモリです。
まぁ、動けば良かろうなのだ。
 
コメント












管理者にだけ表示を許可する
トラックバック
トラックバックURL:
http://wbbwbb.blog83.fc2.com/tb.php/178-c7b602d4
≪ トップページへこのページの先頭へ  ≫