スマートホーム構築記

IoTの恩恵を受けたいけど家庭用はなかなか出てこない。なら作ろうというブログ

Raspberry Pi3 センサの購入とプルアップ/プルダウン

センサ購入

kagemomiji.hateblo.jp

前回Raspberry Pi3とセンサをつなげる際に使用する通信規格を何にするかを考えてI2Cを採用することにしました。

そこで今回、秋月電子さんで以下のSPIとI2C対応の気温・湿度・気圧を取得できるセンサキットK-09421を購入しました。

BME280使用 温湿度・気圧センサモジュールキット: センサ一般 秋月電子通商 電子部品 ネット通販akizukidenshi.com

今回作成するシステムは湿度と温度を用いてエアコンを制御するシステム(詳しくは以下のリンク)でしたので気圧が取得できるのは若干オーバースペックですが、仕事ではないので扱えるデータが増えると割り切って使ってみたいと思います。

Raspberry pi 3でエアコン制御システム構築の構想とGPIO仕様について - Raspberry Pi3 で家庭用IoTkagemomiji.hateblo.jp

GPIOのプルアップ/ダウンについて

今回購入したセンサキットK-09421は基盤自体に通信線のプルアップ抵抗が乗っていて、はんだでジャンパさせることで有効化できます。
GPIOでI2Cに使用するのはGPIO2,GPIO3です。この端子におけるPullUp、もしくはPullDownがどうなっているのか調べてみました。
pinout.xyz
上記ページからGPIO2,GPIO3は1.8kΩのプルアップ抵抗が入っているようです。なのでセンサ側でPullUpする必要はありません。

ちなみにその他のGPIOはプログラム上どちらかに設定できるということでしたが実際に現状どうなっているのかわからりません。
なので確認するすべがないか探してみました。
結論から言うと以下のコマンドをraspbianのターミナル上で使用することで確認できます。

 $sudo raspi-gpio funcs

詳細を以下のコマンドで確認します。

 $ raspi-gpio help
raspi-gpio funcs [GPIO]
Note that omitting [GPIO] from raspi-gpio get prints all GPIOs.
raspi-gpio funcs will dump all the possible GPIO alt funcions in CSV format
or if [GPIO] is specified the alternate funcs just for that specific GPIO.

とあり raspi-gpio funcでGPIOの選択可能な機能がCSV形式で出力するコマンドのようです。
また、さらに下の記述でGPIOのpull up/downの抵抗は50kΩということも読み取れます。

 $sudo raspi-gpio funcs | less

何も設定していない時の出力は以下のようになります。(GPIO1~10まで)

GPIO DEFAULT PULL ALT0 ALT1 ALT2 ALT3 ALT4 ALT5
0 UP SDA0 SA5 PCLK AVEOUT_VCLK AVEIN_VCLK -
1 UP SCL0 SA4 DE AVEOUT_DSYNC AVEIN_DSYNC -
2 UP SDA1 SA3 LCD_VSYNC AVEOUT_VSYNC AVEIN_VSYNC -
3 UP SCL1 SA2 LCD_HSYNC AVEOUT_HSYNC AVEIN_HSYNC -
4 UP GPCLK0 SA1 DPI_D0 AVEOUT_VID0 AVEIN_VID0 ARM_TDI
5 UP GPCLK1 SA0 DPI_D1 AVEOUT_VID1 AVEIN_VID1 ARM_TDO
6 UP GPCLK2 SOE_N_SE DPI_D2 AVEOUT_VID2 AVEIN_VID2 ARM_RTCK
7 UP SPI0_CE1_N SWE_N_SRW_N DPI_D3 AVEOUT_VID3 AVEIN_VID3 -
8 UP SPI0_CE0_N SD0 DPI_D4 AVEOUT_VID4 AVEIN_VID4 -
9 DOWN SPI0_MISO SD1 DPI_D5 AVEOUT_VID5 AVEIN_VID5 -
10 DOWN SPI0_MOSI SD2 DPI_D6 AVEOUT_VID6 AVEIN_VID6 -

GPIO0~8はデフフォルトPullUp 9,10はPullDownのようです。ちなみに44,45はNoneという記述があるようですのでPullUp,PullDown,Noneの3状態が存在するようです。Noneの時は気を付けなければショートさせてしまいますので接続するまえにこのPullの欄は確認しましょう。

今回はここまでです。
次はセンサを接続して値を読み込たいと思います。