Boschの温度・湿度・気圧センサーのシリーズにBMP180/BMP280/BME280があります。ガス(VOC/揮発性有機化合物)センサーを加えた上位版、BME680もあります。 電子工作でよく使われるBME280モジュールには4ピンタイプと6ピンタイプがあります。 4ピンタイプのインターフェイスはI2C、6ピンタイプはSPI/I2C両用です(写真・左、真ん中の2つ)。
BME280-6ピンタイプをSPIで動かそうとしたところ、Readコマンドでデータが返ってこず。
ならばI2Cで… こちらはReadコマンドから帰ってこず。
※余計なプルアップ抵抗を外したりスレーブアドレスを変えたりしてもダメ。
BME280-4ピンタイプ(I2C)とBMP180(I2C)は正常に動作します。
また、ここにはありませんがカラーLCDモジュール(ST7735/SPI)も正常に動作します。
よって、プログラムのインターフェイス部分に問題はないと考えています。
結局、BME280-6ピンタイプを動かすことは諦めました。
※あまりこういうことは言いたくないが、模造品/不良品の可能性あり。
ただ、このまま終わるのは
ATmega328PとI2CのキャラクタLCDで作り始めましたが、基板で仕上げることにした際、手持ちのパーツに合わせて仕様変更しました。 ATmega88VからキャラクタLCDを直接制御しています。
電源は5V。AVR(ATmega88V)とBMP180は3.3Vで動作、LCDは5Vで動作させます。
AVR-LCD間はレベル変換せず直結です。LCDからAVRへの入力はないので問題なしとしています。
使用したLCDモジュールの端子の位置と並び順の都合から、AVRのPD0~3をLCDのDB7~4に結線(昇順を降順に結線)しています。
これについてはソフトウェアでDB線4ビットを逆順に並び替えています。
I2C、BMP180、LCDを動かすのに自作ライブラリを使用しています。
LCDのユーザー定義文字を利用してグラフを表示しています。
20分ごとに測定し、直近5時間のデータをグラフ化しています。
データはAVRの内蔵EEPROMに保存するので、電源オフにしてもデータは消えません。
モバイルバッテリーで1カ月くらい動かせないかと省電力を意識したプログラムを組みましたが、LCDのバックライトが電気を食うので台無しです。
2週間ほど使用し、アルコール温度計に比べて気温が約3度高く表示されることに気付きました。 BMP180がLCDの発熱をもろに受けている事が原因です。 その後、センサーを基板の背面に移動したことで、気温はまずまず正しい値を示すようになりました。 ※参考…BMP180の精度は+-1.5度。
AVRは手持ちにあったATmega88Vを使用しています。新たに購入するのであればATmega328Pをお勧めします。
BMP180/BMP280/BME280、紛らわしいですが使うのはBMP180です。電子パーツショップの他、AmazonやAliExpressで購入できます。
電解コンデンサの耐圧は10V以上なら何でもよいです(35Vや50V)。
I2Cのプルアップ抵抗(R1,R2)は10kΩでも動作します。
3.3Vのレギュレータ(U1)は50mA流せれば何でもよいです。入力/出力のコンデンサ(C2,C3)はデータシートを確認し、指定のもの(セラコン/電解コン、容量)またはセット販売なら付属のものを使います。
LCDモジュールは手持ちにあった
DigiTron社のSC162Cを使用しています(2010年にaitendoで購入)。
HD44780互換、5V動作、16x2サイズのキャラクタLCDモジュールならどれでも動作します。
部品名 | 部品番号 | 値/型番 | 個数 | 参考価格/備考 |
---|---|---|---|---|
低損失レギュレータ | U1 | LP2950L-3.3V | 1 | 20円(秋月) |
AVR(マイコン) | U2 | ATmega328P/ATmega88V | 1 | 230円/250円(秋月) |
電解コンデンサ | C1 | 100uF/10V以上 | 1 | 10円 |
電解コンデンサ | C3 | 22uF/10V以上 | 1 | 10円 |
積層セラミックコンデンサ | C2 | 1.0uF [105] | 1 | 10個100円 |
積層セラミックコンデンサ | C4 | 0.1uF [104] | 1 | 10個100円 |
抵抗 | R1,R2 | 4.7kΩ [黄紫赤金] | 2 | 100個100円 |
抵抗 | R3 | 100Ω [茶黒茶金] | 1 | LCDバックライト用 |
半固定抵抗 | VR | 10kΩ | 1 | LCDコントラスト用 |
BMP180モジュール(I2C) | -- | GY-68 | 1 | 500円程度 |
キャラクタLCDモジュール | -- | 16桁x2行 | 1 | 500~1000円程度 |
久しぶりに記事を書いています。
新型コロナウイルス(COVID-19)が世界中で猛威を振るい、政府は緊急事態宣言を発出し、人々は1~2カ月ほど外出自粛生活を送っています。
ずっと家にいてどう過ごせばいいか分からない人もいるようです。
自分は電子工作の趣味があるし、巣ごもり生活に慣れているし、家は居心地がいいし、正直、1年くらいテレワークでも全然構わないんですが。