Подключение BME280 к Arduino
Датчик температуры, влажности и давления
BME280 к Arduino Uno и Nano подключается по I2C: SDA на A4, SCL на A5 (у Mega — на 20 и 21). Питание — 3,3 В; модули со стабилизатором допускают и 5 В.
Схема подключения BME280 к Arduino
| BME280 | Arduino Uno |
|---|---|
| SCL | A5 |
| SDA | A4 |
| VCC | 5V |
| GND | GND |
Схема из примера «Arduino Uno: давление, влажность и температура».
Выводы BME280
| Вывод | Назначение |
|---|---|
| SCL | тактовая линия I2C |
| SDA | линия данных I2C |
| VCC | питание |
| GND | общий провод |
Код для Arduino
#include <Wire.h>
#include <Adafruit_BME280.h>
// BME280 на I2C — A4 и A5.
//
// Адрес у этого датчика бывает двух видов: 0x76 и 0x77, и зависит он от
// того, к чему припаян вывод SDO на плате модуля. Библиотека умеет
// принимать адрес доводом, и проверять оба — обычная практика.
//
// Печать в формате «имя:число» подхватывает вкладка «График»: три ряда
// строятся сами. Давление переводится в миллиметры ртутного столба —
// датчик отдаёт паскали, а по привычке смотрят на миллиметры.
Adafruit_BME280 bme;
void setup() {
Serial.begin(9600);
if (!bme.begin(0x76) && !bme.begin(0x77)) {
Serial.println(F("датчик не отозвался: проверьте A4, A5 и питание"));
return;
}
}
void loop() {
float t = bme.readTemperature();
float h = bme.readHumidity();
float p = bme.readPressure() / 133.322; // паскали в мм рт. ст.
Serial.print("t:");
Serial.print(t, 1);
Serial.print(" h:");
Serial.print(h, 1);
Serial.print(" p:");
Serial.println(p, 1);
delay(1000);
}
Скетч можно править и запускать в симуляторе без платы и установки среды.
Что учесть на Arduino
- Дешёвые модули без преобразователя уровней рассчитаны на 3,3 В на линиях: подтяжки у них к 3,3 В, и на практике с Uno это работает, но корректнее поставить преобразователь уровней.
- Библиотека Adafruit BME280 заметно занимает память: у Uno 2 КБ ОЗУ, и для остального скетча остаётся немного.
Частые ошибки при подключении к Arduino
- Жёстко указать адрес 0x77 для модуля с адресом 0x76:
begin()вернёт false, показаний не будет. - Подключить к A4 и A5 на Arduino Mega: у неё I2C на выводах 20 (SDA) и 21 (SCL).
- BMP280 вместо BME280: выглядят одинаково, но у BMP280 нет влажности. Библиотека BME280 его не найдёт (другой идентификатор чипа).
- Неверный адрес:
begin()без аргумента ищет 0x77, а большинство модулей — 0x76. Запустите сканер I2C. - 5 В на модуль без стабилизатора — чип рассчитан на 3,6 В максимум.
Ещё по теме
Другие детали для Arduino
HC-SR04DHT22 (AM2302)DS3231SSD1306 OLED 0,96″LCD 1602 с I2CMAX7219TM1637Модуль релеKY-040Клавиатура 4×4HX711ФоторезисторМодуль microSDRGB-светодиодСервопривод SG9074HC595Шаговый двигательКнопкаПотенциометрПьезопищалкаСветодиодПолзунковый переключательHC-SR501TTP223Датчик влажности почвыMQ-2LM35Джойстик KY-023DHT11HTU21D