ESP8266 и BME280 Датчик температуры, давления и влажности SPI

BMP280 обладает высокой точностью, хорошей стабильностью и линейностью.
Технические характеристики:
Габариты 2 х 2,5 х 0,95 мм.
Давление 300-1100гПа;
Температуры от 0С до 65 С;
Поддержка интерфейсов I2C и SPI;
Напряжение питания 1,7В – 3,6В (есть 5В версия)
Средний ток 2,7мкА;
3 режима работы – режим сна, режим FORCED (проведение измерения, считывание значения, переход в спящий режим), режим NORMAL (перевод датчика в циклическую работу – то есть устройство самостоятельно через установленное время выходит из режима сна, проводит измерения, считывает показания, сохраняет измеренные значения и переходит снова в режим сна).

Подключение датчика BME280. Расположение контактов и распиновка у датчика BME280 такая же, как у BMP280



Так как датчик может работать по I2C и SPI, подключение можно реализовать двумя методами.
При подключении по I2C нужно соединить контакты SDA и SCL.

При подключении по SPI нужно соединить:
SCL с модуля к D2 (GPIO 4) контакту
SDO - к HMISO D6 (GPIO 12) контакту
SDA – к HMOSI D7 (GPIO 13) контакту
CSB (CS) – к HCS D8 (GPIO 15) контакту
VCC подключается к 3,3В.
GND к GND

Для начала необходимо установить две библиотеки, Adafruit BME280 Library и Adafruit Sensor.

Теперь можно загрузить скетч в ESP8266.

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

// assign the SPI bus to pins
#define BME_SCK 4
#define BME_MISO 12
#define BME_MOSI 13
#define BME_CS 15

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI

unsigned long delayTime;

void setup() {
   Serial.begin(9600);
   Serial.println(F("BME280 тест"));

   bool status;

   // default settings
   status = bme.begin();
   if (!status) {
       Serial.println("Не удалось найти датчик BME280, проверьте подсоединение!");
       while (1);
   }

   Serial.println("-- Тест по умолчанию --");
   delayTime = 1000;

   Serial.println();
}


void loop() {
   printValues();
   delay(delayTime);
}


void printValues() {
   Serial.print("Температура: ");
   Serial.print(bme.readTemperature());
   Serial.println(" *C");

   Serial.print("Атмосферное давление: ");

   Serial.print(bme.readPressure() / 100.0F);
   Serial.println("гПа");

   Serial.print("Прибл. высота над уровнем моря: ");
   Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
   Serial.println(" м");

   Serial.print("Влажность: ");
   Serial.print(bme.readHumidity());
   Serial.println(" %");

   Serial.println();
}

Более подробно тут

Комментарии

Популярные сообщения из этого блога

Motor Shield L293D + Arduino

Перенос Armbian на SSD

Радиореле 220В 433МГц c кодировкой сигнала eV1527