BMP280:温度、圧力、高度を測定します
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 |
このプロジェクトについて
こんにちは。ArduinoUNOボードとOLEDディスプレイを使用して、BMP280を使用して温度、圧力、高度を測定するこのチュートリアルへようこそ。データシートのBMP280キーパラメータの一部を次に示します。
<図>したがって、このプロジェクトでは、モジュールを使用して、通常どおりメートル法とインペリアル法の両方でこれらすべてを測定します。単位についてはよくわかりませんが、コードを使用していつでも変換できます。これからコンポーネントを使用します。使用:
<図> <図> <図>
テストとトラブルシューティング:
モジュールを配線した後、下の図のようにモジュールが検出されない場合は、ライブラリの例のコードを「BMP280test」という名前でテストすることをお勧めします。
<図>i²cスキャナーコードを実行できます(ただし、LCDやOLEDなどの他のi²cデバイスは取り外します)。モジュールが壊れていない場合、またははんだの問題がない場合は、デバイスがスキャナーによって検出されていることがわかります。 :
<図>ここで、アドレスを指定してライブラリのc ++ファイルに移動します。ライブラリは通常、「Documents / Arduino / Libraries」にインストールされます。
<図>そして、適切なエディターで開きます。私はDev c ++を使用しています
<図>次に、行「41」に移動し、_i2caddrで「a」をシリアルモニターで見つけたアドレスに変更します。
<図>すべて保存して閉じます。ライブラリは、i²cアドレスとして0x77のモジュールで動作するようになっていますが、私が使用しているモジュールのモジュールは0x76です。
テストコードを再実行します:
<図>
写真のテスト: <図> <図>
それがあなたのために働くことを願っています、そしてあなたが何か問題があればコメントにそれを残してください。
コード
- bmp280_Serial_metric.ino
- bmp280_Serial_Imperial.ino
- bmp280_OLED_m.ino
- bmp280_OLED_US.ino
bmp280_Serial_metric.ino Arduino
/ *このコードはAdafruitBMP280(メートル法)で使用します*温度と圧力の両方を測定し、高度とともにシリアルモニターに表示します*これはAdafruitサンプルコードの修正バージョンです* www.surtrtechを参照してください.comまたはSurtrTechYoutubeチャンネル* /#includeAdafruit_BMP280 bmp; // I2C Interfacevoid setup(){Serial.begin(9600); Serial.println(F( "BMP280テスト")); if(!bmp.begin()){Serial.println(F( "有効なBMP280センサーが見つかりませんでした。配線を確認してください!")); while(1); } / *データシートのデフォルト設定。 * / bmp.setSampling(Adafruit_BMP280 ::MODE_NORMAL、/ *動作モード。* / Adafruit_BMP280 ::SAMPLING_X2、/ *温度オーバーサンプリング* / Adafruit_BMP280 ::SAMPLING_X16、/ *圧力オーバーサンプリング* / Adafruit_BMP280 ::F * / Adafruit_BMP280 ::STANDBY_MS_500); /* 待機時間。 * /} void loop(){Serial.print(F( "Temperature =")); Serial.print(bmp.readTemperature()); Serial.println( "* C"); Serial.print(F( "Pressure =")); Serial.print(bmp.readPressure()/ 100); //圧力をhPaで表示し、単位を変更できますSerial.println( "hPa"); Serial.print(F( "おおよその高度=")); Serial.print(bmp.readAltitude(1019.66)); // "1019.66"は、お住まいの地域の1日の海面気圧(hPa)ですSerial.println( "m"); //わからない場合は、現在の高度を取得するまで変更しますSerial.println(); delay(2000);}
bmp280_Serial_Imperial.ino Arduino
/ *このコードはAdafruitBMP280(インペリアル)で使用します*温度と圧力の両方を測定し、高度とともにシリアルモニターに表示します*これはAdafruitサンプルコードの修正バージョンです* www.surtrtechを参照してください.comまたはSurtrTechYoutubeチャンネル* /#includeAdafruit_BMP280 bmp; // I2Cvoid setup(){Serial.begin(9600); Serial.println(F( "BMP280テスト")); if(!bmp.begin()){Serial.println(F( "有効なBMP280センサーが見つかりませんでした。配線を確認してください!")); while(1); } / *データシートのデフォルト設定。 * / bmp.setSampling(Adafruit_BMP280 ::MODE_NORMAL、/ *動作モード。* / Adafruit_BMP280 ::SAMPLING_X2、/ *温度オーバーサンプリング* / Adafruit_BMP280 ::SAMPLING_X16、/ *圧力オーバーサンプリング* / Adafruit_BMP280 ::F * / Adafruit_BMP280 ::STANDBY_MS_500); /* 待機時間。 * /} void loop(){float f =bmp.readTemperature()* 9/5 + 32; // CからFへの変換Serial.print(F( "Temperature =")); Serial.print(f); Serial.println( "* F"); float P =bmp.readPressure()/ 3386.39; //圧力を水銀柱インチで表示し、単位を変更できますSerial.print(F( "Pressure =")); Serial.print(P); Serial.println( "inHg"); float A =bmp.readAltitude(1019.66)* 3.28084; //「1019.66」は、お住まいの地域の1日の海面での気圧(hPa)ですSerial.print(F( "概算高度=")); //わからない場合は、現在の高度を取得するまで変更しますSerial.print(A); Serial.println( "ft"); Serial.println(); delay(2000);}
bmp280_OLED_m.ino Arduino
/ *このコードはAdafruitBMP280とOLEDスクリーン(メートル法)で使用します*温度と圧力の両方を測定し、高度とともにOLEDディスプレイに表示します*これはAdafruitサンプルコードの修正バージョンです*参照www.surtrtech.comまたはSurtrTechYoutubeチャンネル* /#include// OLEDおよびBMP280のライブラリ#include #include #define SCREEN_WIDTH 128 // OLEDディスプレイ幅、 in pixel#define SCREEN_HEIGHT 32 // OLEDディスプレイの高さ、in pixel#define OLED_RESET -1 //リセットピン#(またはArduinoリセットピンを共有している場合は-1)Adafruit_SSD1306 display(SCREEN_WIDTH、SCREEN_HEIGHT、&Wire、OLED_RESET); //表示名の宣言(display)Adafruit_BMP280 bmp; void setup(){bmp.begin(); // bmp display.begin(SSD1306_SWITCHCAPVCC、0x3C);を開始します// OLEDディスプレイを開始しますdisplay.clearDisplay(); display.display(); display.setTextColor(WHITE); display.setTextSize(1); display.print( "SurtrTech"); //名前を表示します。名前を削除するか、置き換えることができますdisplay.setCursor(32,12); display.setTextSize(2); display.println( "BMP280"); display.display(); delay(2000);} void loop(){display.clearDisplay(); float T =bmp.readTemperature(); // Cで温度を読み取りますfloatP =bmp.readPressure()/ 100; //圧力をPaで読み取り、hPaに変換float A =bmp.readAltitude(1019.66); //高度を計算すると、「1019.66」はお住まいの地域の日の海面での気圧(hPa)です//わからない場合は、場所の高度を取得するまで変更してくださいdisplay.setCursor(0 、0); // Oledディスプレイ、テキストサイズとカーソルで遊んで、必要なディスプレイを取得しますdisplay.setTextColor(WHITE); display.setTextSize(2); display.print( "Temp"); display.setCursor(0,18); display.print(T、1); display.setCursor(50,17); display.setTextSize(1); display.print( "C"); display.setTextSize(1); display.setCursor(65,0); display.print( "Pres"); display.setCursor(65,10); display.print(P); display.setCursor(110,10); display.print( "hPa"); display.setCursor(65,25); display.print( "Alt"); display.setCursor(90,25); display.print(A、0); display.setCursor(110,25); display.print( "m"); display.display(); delay(2000);}
bmp280_OLED_US.ino Arduino
/ *このコードはAdafruitBMP280とOLEDスクリーン(インペリアル)で使用します*温度と圧力の両方を測定し、高度とともにOLEDディスプレイに表示します*これはAdafruitサンプルコードの修正バージョンです*参照www.surtrtech.comまたはSurtrTechYoutubeチャンネル* / #include// OLEDおよびBMP280のライブラリ#include #include #define SCREEN_WIDTH 128 // OLEDディスプレイ幅、 in pixel#define SCREEN_HEIGHT 32 // OLEDディスプレイの高さ、in pixel#define OLED_RESET -1 //リセットピン#(またはArduinoリセットピンを共有している場合は-1)Adafruit_SSD1306 display(SCREEN_WIDTH、SCREEN_HEIGHT、&Wire、OLED_RESET); //表示名の宣言(display)Adafruit_BMP280 bmp; void setup(){bmp.begin(); // bmp display.begin(SSD1306_SWITCHCAPVCC、0x3C);を開始します// OLEDディスプレイを開始しますdisplay.clearDisplay(); display.display(); display.setTextColor(WHITE); display.setTextSize(1); display.print( "SurtrTech"); //名前を表示します。名前を削除するか、置き換えることができますdisplay.setCursor(32,12); display.setTextSize(2); display.println( "BMP280"); display.display(); delay(2000);} void loop(){display.clearDisplay(); float T =bmp.readTemperature()* 9/5 + 32; //温度を摂氏で読み取り、Fに変換しますfloat P =bmp.readPressure()/ 3386.39; //圧力をPaで読み取り、水銀柱インチに変換A =bmp.readAltitude(1019.66)* 3.28084; //高度を計算すると、「1019.66」はお住まいの地域の日の海面での気圧in(hPa)です//わからない場合は、場所の高度を取得するまで変更してくださいdisplay.setCursor(0 、0); // Oledディスプレイ、テキストサイズとカーソルで遊んで、必要なディスプレイを取得しますdisplay.setTextColor(WHITE); display.setTextSize(2); display.print( "Temp"); display.setCursor(0,18); display.print(T、1); display.setCursor(50,17); display.setTextSize(1); display.print( "F"); display.setTextSize(1); display.setCursor(65,0); display.print( "Pres"); display.setCursor(65,10); display.print(P); display.setCursor(100,10); display.print( "inHg"); display.setCursor(65,25); display.print( "Alt"); display.setCursor(90,25); display.print(A、0); display.setCursor(110,25); display.print( "ft"); display.display(); delay(2000);}
BMP280_Adafruit_library
チュートリアルのように変更することをお勧めしますhttps://github.com/adafruit/Adafruit_BMP280_LibraryAdafruitGFXライブラリ
https://github.com/adafruit/Adafruit-GFX-LibraryAdafruit SSD1306
https://github.com/adafruit/Adafruit_SSD1306 回路図
どちらのモジュールもi²cインターフェース、A4とA5を備えたSDA / SCLを使用し、BMP280は5vで動作し、OLEDは3.3vを使用しています。 製造プロセス