Gadget No.1 温度、湿度、気圧表示ガジェット

 

 

仕様

温度、湿度、気圧センサをSPI経由で接続。
30秒ごとに値を取得し、LCDディスプレイにI2C経由で表示。

 

必要物

 

 必要物は以下です。

No. 必要物
 1.  Raspberry pi 2 model B
 2.  適当なMicro USB ケーブル
 3.  適当なLANケーブル
 4.  適当なUSB電源
 5.  16桁×2行LCDディスプレイ+ピッチ変換キット (型名AE-AQM1602)
 6.  タクトスイッチ
 7.  温度,湿度,気圧センサ
(型名BME280)
 8.  ブレッドボード
 9.  ジャンパワイヤ

※ブレッドボードではなく、基盤にはんだ付けした方が見栄えは良いです。

その他、あると良いものは以下です。

No. あると良いもの
 1.  ヒートシンク(熱対策)
 2.  ケース(ほこり対策)

 

 

 結線

 

Pin assignment

 Raspberry pi 2 model B側のピン番号

pin

pin

 pin

参考WEBサイト:
https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/
http://pinout.xyz/

Pin assignment

 温湿度センサのピン番号:

BME280

ここでは、SPIインタフェースを使うので、各端子の用途は以下。

①ピン番号1: SCK
②ピン番号2: SDI
③ピン番号3: CS
④ピン番号4: GND
⑤ピン番号5: 3.3Vcc
⑥ピン番号6: GND
⑦ピン番号7: 3.3Vcc
⑧ピン番号8: SDO

Pin assignment

 LCDディスプレイのピン番号

LCD_display2

結線:

1)LCD ディスプレイとRaspberry pi 2 model B

LCD ディスプレイ
Raspberry pi mode B
① 3.3Vcc
---
Pin-1  3.3Vcc
② SCL
---
Pin-5  SCL
③ SDA
---
Pin-3  SDA
④ GND
---
Pin-9 Ground  (※)

※Ground端子であればどこに接続しても構わない
2) 気圧温湿度センサとRaspberry pi 2 model B

気圧温湿度センサ
Raspberry pi mode B
① SCK
---
Pin-23  SCLK
② SDI
---
Pin-19 MOSI
③ CS
---
Pin24 CE0
④ GND
---
Pin-9 Ground (※)
⑤ 3.3Vcc
---
Pin-1  3.3Vcc
⑥ GND
 —
Pin-9 Ground (※)
⑦ 3.3Vcc
 —
Pin-1 3.3Vcc
⑧ SDO
---
Pin21 MISO

※Ground端子であればどこに接続しても構わない
また、GND端子は2端子あるが、どちらか片方のみの接続で良い。

 

準備

以下のページの内容を行っておいてください。

Raspberry pi 2 model Bセットアップ
LCDディスプレイをつける
シャットダウンボタンをつける
 
 

 SPIドライバを使えるように設定する

 

1) Raspberry Pi 2を起動し、TeraTermからSSH接続。

2) SPCドライバを使えるよう、設定をする

 $ sudo nano /etc/modules

#viエディタにアレルギーがない方は、viを使ってください。

pin

ここで、spidevを追記してください。
既にあれば、編集の必要はありません。

コントロールキー+x を押してください。
セーブするかどうか聞かれるので、”y”を選択しセーブ。
上書きするかどうか聞かれるので、そのままリターンキー。

 

 

次に、 Rasberry Piのコンフィグレーションを設定します。

 $ sudo raspi-config

と入力すると、以下が起動します。

I2C_enable2

「9 Advanced Options」 -> 「A5 SPI」と進んでください。
SPIをEnableにするかどうか聞かれますので、Yesを選択してください。
その後、このウインドウを終了してください。

 

3) Raspberry Pi 2を再起動。

 $ sudo reboot

TeraTermも閉じるので、再度TeraTermを起動し、Raspberry Piと接続してください。注:Raspberry Piリブート後、ネットワーク機能が使えるようになるまで30秒程かかります。

 

再起動後、以下のコマンドを発行してください。
spidev0.0、0.1が表示されていれば設定完了です。

 $ ls /dev/spi*
/dev/spidev0.0 /dev/spidev0.1

 

 LCDディスプレイに温湿度気圧を表示するアプリ作成

 

1) プログラム格納用フォルダ作成

WinSCPを起動し、home/piの下に、Work/Sources/SPI_BME280フォルダを作成します。

2) ソースファイルをコピー

Work/Sources/SPI_BME280フォルダに、以下のファイルを格納します。

※お願い!ファイルダウンロードの際、Twitterで一言呟いていただけると大変嬉しいです!

 

zipファイルがダウンロードできますので、解凍してください。
以下4ファイルが作成されます。
spi_BME280.c
spi_BME280.h
i2c_lcdAQM1602_lib.c
i2c_lcdAQM1602_lib.h

これら4ファイルをhome/pi/Work/Sources/SPI_BME280にコピーしてください。

3) ソースファイルをコンパイル

ここで、開きっぱなしのTeraTermに戻ります。
home/pi/Work/Sources/SPI_BME280に移り、ファイルをコンパイルします。

 $ cd Work/Sources/SPI_BME280/
$ gcc -o spi_BME280 spi_BME280.c i2c_lcdAQM1602_lib.c

4) アプリケーションを実行

以下を実行すると、LCDディスプレイに気温、湿度、気圧が表示されます。
測定データは、30秒に一度更新されます。

 $ ./spi_BME280

 

spi_BME280.c内の以下のソース行が、30秒待っている部分です。
測定データ更新間隔を変更したい場合、以下のソースを変更し、コンパイルしてください。

for (i = 0; i < 100; i++) delay_spi(300);

※delay_spi(n): nミリセカンド待つ関数。(n<1000である必要がある。)

 

5) アプリケーションを終了

TeraTermから、コントロールキー+cを押してください。
アプリケーションが終了します。

 

 作成したアプリをRaspberry pi起動時に自動的に実行させる

 

1) 起動スクリプトファイルの編集

/etc/rc.localは、Raspberry Piが起動した時に実行したいプログラム等を定義するスクリプトです。
nanoを使って編集します。

$ sudo nano /etc/rc.local

以下を、このファイルの最後の方、exit 0 の手前に追加します。

sudo /home/pi/Work/Sources/SPI_BME280/spi_BME280 &

編集内容を保存し、nanoを終了してください。

2) Raspberry Piを再起動

$ sudo reboot

と発行すると、再起動します。

3) 気温、湿度、気圧が表示される

気温、湿度、気圧が表示されます。

IMG_2394

 

 今まで作成したアプリ全て起動時に登録する場合

LCDにIPアドレスを表示するアプリ、シャットダウンボタンアプリは便利なので、それらも一緒に登録したいところです。
すべて起動時に登録する場合、 /etc/rc.localは以下のようになります。

localrc

i2c_lcdAQM1602のみ、”&”がないことに注意してください。
”&”をつけるとバックグラウンドにて実行します。
spi_BME280の実行までに、確実にi2c_lcdAQM1602を終了してほしいので、
あえて”&”をつけていません。

 

 配線

だんだんと、配線が大変なことになってきました。

IMG_2396

 



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です