Cảm biến áp suất BMP280 - Hiển thị ra OLED¶
Demo¶
Chuẩn bị¶
Tên board mạch | Link |
---|---|
Board IoT Wifi Uno | https://iotmaker.vn/esp8266-iot-wifi-uno.html |
OLED 128x64 SH1106 hoặc SSD1306 | https://iotmaker.vn/ssd1306-oled-096inch-128x64-i2c.html |
Cảm biến áp suất BMP280 | https://iotmaker.vn/cam-bien-ap-suat-bmp280.html |
Đấu nối¶

BMP280 | IoT Iot WiFi Uno |
---|---|
VCC | 3.3V |
GND | GND |
SCL | GPIO5 |
SDA | GPIO4 |
CSB | 3.3V |
SD0 | 3.3V |
Cảm biến BMP280 hỗ trợ cả 2 giao tiếp I2C và SPI.
Nối chân CSB với GND để giao tiếp SPI, CSB với VCC để giao tiếp I2C.
Địa chỉ thiết bị 7bit:111011x, 6 bit cố định, bit cuối SD0 thay đổi tùy mục đích sử dụng. SD0 nối với GND thì BMP280 là Slaver, SD0 nối với VCC thì BMP280 là Master.
Cần kết nối trực tiếp CSB, SD0 với VCC (Không nên dùng chân GPIO set mức HIGH) để đảm bảo giao thức cần sử dụng là chính xác nhất.
Cài đặt thư viện¶
Thư viện | Link |
---|---|
OLED | https://github.com/squix78/esp8266-oled-ssd1306 |
Thư viện Adafuit BMP280 | https://github.com/adafruit/Adafruit_BMP280_Library |
Thư viện Adafruit Sensor | https://github.com/adafruit/Adafruit_Sensor |
Lập trình¶
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>
#include <Wire.h>
#include "SSD1306.h"
Adafruit_BMP280 bmp; // I2C
SSD1306 display(0x3c, 4, 5);
void setup()
{
display.init();
display.flipScreenVertically();
display.setFont(ArialMT_Plain_16);
display.drawString(15, 20, "IotMaker.VN");
display.display();
delay(2000);
if (!bmp.begin()) {
display.clear();
display.drawString(0, 20, "Not Connect BMP");
display.display();
while (1) {
delay(1);
}
}
}
void loop()
{
display.clear();
display.setFont(ArialMT_Plain_10);
display.drawString(0, 0, "Temperature: " + String(bmp.readTemperature()) + "*C");
display.drawString(0, 20, "Pressure: " + String(bmp.readPressure()) + "Pa");
display.drawString(0, 40, "Approx Altitude: " + String(bmp.readAltitude()) + "m");
display.display();
delay(2000);
}