BME/BMP280 温度・湿度・気圧センサー
写真BME/BMP280は当初の情報では動作電圧が違うから双方向ロジックレベル変換が必要だとのことでだったが、直結で無理に動かすこともできる・・・、品物を見てよく調べるとこれはArduinoに直結できることが分かったこれだけの接続で温度・気圧・湿度計れたネットで見つけた外国の方の情報でライブラリーをインストール、スケッチでテストすると動いた、温度・湿度・気圧小数点二桁表示で正確そうですbme280 pressure sensor. getting started with arduino・検索//BMP280 test#include <Wire.h>#include <Adafruit_Sensor.h>#include <Adafruit_BME280.h>#define SEALEVELPRESSURE_HPA (1013.25)Adafruit_BME280 bme;void setup() { Serial.begin(9600); if (!bme.begin(0x76)) { Serial.println("Could not find a valid BME280 sensor, check wiring!"); while (1); }}void loop() { //Serial.print("Temperature = "); Serial.print(bme.readTemperature()); Serial.print("*C "); //Serial.print("Pressure = "); Serial.print(bme.readPressure() / 100.0F); Serial.print("hPa "); //Serial.print("Humidity = "); Serial.print(bme.readHumidity()); Serial.print("% "); Serial.println(); delay(5000);}早速!実用機の製作です無線機をつけたArduino nanoはすでにありましたSDAーA4・SCLーA5・GNDーGND・VINー3.3v 4本の配線で完成です自身のブログで無線通信のソーラー発電マイコン制御のプログラムと先に見つけたMBE280_TESTを合体して必要なものはそろいました、もう一度エアコンの冷房運転・除湿運転の記録をくらべてみます//送信プログラム//3_data_snd 2020.09.04//BMP280 の温度・気圧・湿度を無線送信する。#include <nRF24L01.h>#include <printf.h>#include <RF24.h>#include <RF24_config.h>#include <SPI.h> #include <Wire.h> #include <Adafruit_Sensor.h> #include <Adafruit_BME280.h> #define SEALEVELPRESSURE_HPA (1013.25) Adafruit_BME280 bme;RF24 myRadio (9, 10);byte addresses[][6] = {"1Node"};struct Pack { float data0;//温度 float data1;//湿度 float data2;//気圧 } packet;void setup() { Serial.begin(9600); Serial.println(F("RF24/Simple Transmit data Start")); if (!bme.begin(0x76)) { Serial.println("Could not find a valid BME280 sensor, check wiring!"); while (1); } myRadio.begin(); myRadio.setChannel(118); myRadio.setPALevel(RF24_PA_MAX); myRadio.setDataRate(RF24_250KBPS); myRadio.openWritingPipe(addresses[0]); }void loop() { Serial.print(bme.readTemperature(),1);//温度 Serial.print("*C "); Serial.print(bme.readHumidity(),1);//湿度 Serial.print("% "); Serial.print(bme.readPressure() / 100.0F,1);//気圧 Serial.println("hPa "); delay(59950);//1分タイマー packet.data0 = (bme.readTemperature());//温度 packet.data1 = (bme.readHumidity());//湿度 packet.data2 = (bme.readPressure() / 100.0F);//気圧 delay(60); if (myRadio.write(&packet, sizeof(packet))) { } else { Serial.print(F("Send failed.")); } }//受信プログラム//3_data_rec 2020.09.04//BMP280の温度・気圧・湿度を無線受信し表示する。#include <SPI.h>#include <RF24.h>#include <Wire.h>#include <LiquidCrystal_I2C.h>LiquidCrystal_I2C lcd(0x3F, 16, 2); // I2C: 0x3F, 16x2 LCDRF24 myRadio (9, 10);byte addresses[][6] = {"1Node"}; struct Pack { float data1; float data2; float data3; } packet;void setup() { lcd.init(); lcd.backlight(); Serial.begin(9600); Serial.println(F("RF24/Simple Receive data Test")); myRadio.begin(); myRadio.setChannel(118); myRadio.setPALevel(RF24_PA_MAX); myRadio.setDataRate(RF24_250KBPS); myRadio.openReadingPipe(1, addresses[0]); myRadio.startListening();}void loop() { if ( myRadio.available()) { myRadio.read( &packet, sizeof(packet) ); Serial.print(packet.data1,1);//温度 Serial.print("C "); Serial.print(packet.data2,1);//湿度 Serial.print("% "); Serial.print(packet.data3,1);//気圧 Serial.println("hpa"); }}1分おきに送信されるデータを受信側ではTeraTarmを起動して時間付きでログを取りますTeraTarmのログから文字列を手作業でExcelに取り込み数値に変換、時間と温度・湿度データーでグラフを作ります。使ってるパソコンは数ヶ月おきに変わりますから、半年ぶりにArduinoを引っ張り出して眺めるとほとんど白紙の状態でした、パソコンにAruduino IDEのセットアップから始まりライブラリーのインストールと必要な新しい情報の検索、当然のこと以前こしらえたスケッチもパソコンの中には見つかりません、これはブログに残しておくのが一番です。