ESP8266 (ESP-WROOM-02)에 온도 습도 기압 센서 (BME280)를 연결하여 Ambient와 협력 해 보았습니다.
15035 단어 ESP8266전자 공작ArduinoIoTESP-WROOM-02
※궁극적으로, 이 센서&ESP8266은 자택 차고의 환경 감시에 사용할 예정
부품 정보
BME280 은 온도・습도・기압을 고정밀도로 측정할 수 있는 센서입니다.
¥600~¥1,500 정도입니다.
싸고 비슷한 BMP280이라는 센서는 온도·기압만으로 습도를 측정할 수 없기 때문에 주의. 혼란스러워.
ESP8266은 그래서 M구 ぅ아 그림 SP8266 CH340이라는 개발 보드를 사용합니다.
중국에서 도착하는 데 시간이 걸립니다만, ¥ 480으로 염가입니다.
회로 정보
BME280은 I2C 이라는 규격으로 접속할 수 있는 센서입니다.
이 표준이라면 ESP8266에서 비교적 쉽게 사용할 수 있습니다.
Amazon에서도 다양한 I2C 디바이스이 판매되고 있기 때문에 바라보고있는 것만으로도 꿈이 퍼집니다.
연결은
SCL에 GPIO5, SDA에 GPIO4를 연결하고,
후에는 전원과 GND를 연결할 뿐입니다.
핀 헤더 거꾸로 붙여 버렸을지도(T~T) ↑ L자의 핀 헤더가 좋을지도 모르겠네요.
회로도 같은 것
소스 코드
BME280과 Ambient는 라이브러리가 공개되었으므로 이용했습니다.
- BME280 라이브러리
- Ambient 라이브러리
BME280.ino
#include <Wire.h>
#include <ESP8266WiFi.h>
#include "BME280_MOD-1022.h"
#include "Ambient.h"
extern "C" {
#include "user_interface.h"
}
#define PERIOD 300
//----------------------------------------------
const char* ssid = "wifiのAPのSSIDを入れる";
const char* password = "wifiのパスワードを入れる";
unsigned int channelId = AmbientのチャネルIDを入れる;
const char* writeKey = "Ambientのライトキーを入れる";
WiFiClient client;
Ambient ambient;
//----------------------------------------------
float temperature = 0.0;
float humidity = 0.0;
float pressure = 0.0;
void printFormattedFloat(float val) {
char buffer[10];
dtostrf(val, 4, 2, buffer);
Serial.print(buffer);
}
void setup() {
wifi_set_sleep_type(LIGHT_SLEEP_T);
// I2Cの通信を開始
// SDA: GPIO4
// SCL: GPIO5
Wire.begin(4, 5);
Serial.println("I2C start.");
// シリアル通信を開始
Serial.begin(115200);
Serial.println("Serial start.");
// BME280を初期化
BME280.readCompensationParams();
// オーバーサンプリングの回数を設定
BME280.writeOversamplingTemperature(os1x);
BME280.writeOversamplingHumidity(os1x);
BME280.writeOversamplingPressure(os1x);
Serial.println("BME280 start.");
// wifi初期化
WiFi.begin(ssid, password);
Serial.println("WiFi start.");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
// チャネルIDとライトキーを指定してAmbientの初期化
ambient.begin(channelId, writeKey, &client);
Serial.println("Ambient start.");
}
void loop() {
// BME280を1度だけ測定を行うモードに設定し計測が終わるまで待機
BME280.writeMode(smForced);
while (BME280.isMeasuring()) {
delay(1);
}
// BME280から測定値を読み取る
BME280.readMeasurements();
temperature = BME280.getTemperature();
humidity = BME280.getHumidity();
pressure = BME280.getPressure();
// 読み取った値をシリアルにプリント
Serial.print("Temperature: ");
printFormattedFloat(temperature);
Serial.println("");
Serial.print("Humidity: ");
printFormattedFloat(humidity);
Serial.println("");
Serial.print("Pressure: ");
printFormattedFloat(pressure);
Serial.println("");
Serial.println("");
// Ambientに連携
ambient.set(1, temperature);
ambient.set(2, humidity);
ambient.set(3, pressure);
ambient.send();
delay(PERIOD * 1000);
}
#include <xxxx.h>
대신 #include "xxxx.h"
그래프
Ambient에 제휴하면 이와 같이 그래프화해 줍니다.
그래프의 종류도 「꺾은 선 그래프」 「막대 그래프」 「산포도」등에서 선택할 수 있습니다.
온도
습도
기압
참고 URL
Arduino ESP8266을 사용하여 온도 및 습도를 측정하고 Ambient로 전송하여 그래프화
htps : // 아비다. 이오/도 cs/에 sp8266/
BME280 라이브러리
htps : // 기주 b. 코 m / 에 m 베데다 d
Ambient 라이브러리
htps : // 기주 b. 코 m / 타케 히코시 모지마 / 아 m 비엔 t_에 SP8266_ぃb
I2C
htps : // 그럼.ぃきぺぢ아. 오 rg / uki / 2C
I2C 버스 사양 및 사용자 매뉴얼
h tp // w w. 응 xp. 코 m/도쿠멘 ts/우세 r_마누아 l/우 M10204_그럼. pdf
Reference
이 문제에 관하여(ESP8266 (ESP-WROOM-02)에 온도 습도 기압 센서 (BME280)를 연결하여 Ambient와 협력 해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yukitter/items/de45b8280db0f3435b4d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)