Jak wyświetlić dane z czujnika I2C na ekranie OLED

Jak wyświetlić dane z czujnika I2C na ekranie OLED
W poprzednim wpisie pokazaliśmy, jak odczytywać dane z czujnika BME280 przez I2C i wyświetlać je w monitorze portu szeregowego. Teraz zrobimy krok dalej – zbudujemy prosty i samodzielny wyświetlacz pomiarów na ekranie OLED, bez potrzeby podłączania komputera.
To świetny projekt startowy do budowy własnej stacji pogodowej, urządzenia do pomiaru warunków w szklarni, warsztacie, biurze czy pokoju dziecka.
📌 Swoją drogą, taki projekt również mamy już zrealizowany – w nieco bardziej rozbudowanej wersji, z dodatkowymi funkcjami i interfejsem użytkownika. Zobacz tutaj:
🧰 Czego potrzebujesz?
- ESP32 DevKit (np. WROOM-32)
- Czujnik BME280 (I2C)
- Wyświetlacz OLED 0.96″ (I2C, oparty na SSD1306)
- Arduino IDE z bibliotekami
- Kilka przewodów (lub płytka stykowa)
📌 Wszystkie urządzenia będą działać na tej samej magistrali I2C – to właśnie magia I2C!
Przykładowy koszyk 👇
🔌 Podłączenie elementów
Czujnik BME280 i wyświetlacz OLED | ESP32 GPIO |
---|---|
SDA | GPIO 21 |
SCL | GPIO 22 |
VCC | 3.3V |
GND | GND |
Zarówno czujnik BME280, jak i wyświetlacz OLED mają te same linie SDA i SCL – wystarczy je połączyć równolegle. Możesz użyć płytki stykowej lub gotowego kabla z rozgałęzieniem.

🧪 Sprawdzenie połączeń – użyj I2C Scannera
Zanim przejdziesz dalej, warto upewnić się, że oba urządzenia – czujnik BME280 i wyświetlacz OLED – są poprawnie podłączone i widoczne na magistrali I2C.
W tym celu skorzystaj z prostego narzędzia diagnostycznego: I2C Scanner, który krok po kroku opisaliśmy w osobnym artykule 👉
Po wgraniu programu I2C Scanner do ESP32 i otwarciu monitora portu szeregowego (115200), zobaczysz komunikat podobny do tego:
✅ Co oznaczają adresy?
0x3C
– to adres wyświetlacza OLED z kontrolerem SSD13060x76
– to adres czujnika BME280 (inne wersje mogą mieć0x77
)
Jeśli oba urządzenia zostały wykryte – gratulacje! Możesz przejść dalej, bo sprzęt działa i jest gotowy do działania.

📦 Instalacja bibliotek
W Arduino IDE zainstaluj następujące biblioteki:
- Adafruit BME280 Library
- Adafruit GFX Library
- Adafruit SSD1306 Library
Wszystkie znajdziesz w: Szkic > Dołącz bibliotekę > Zarządzaj bibliotekami…
Lub po lewej stronie z rozwijanego paska trzecia zakładka.

🧪 Kod: wyświetlanie danych na OLED
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1 // reset niepodłączony
#define OLED_ADDRESS 0x3C
#define BME280_ADDRESS 0x76
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
Adafruit_BME280 bme;
void setup()
{
Serial.begin(115200);
Wire.begin(21, 22); // ESP32: SDA = GPIO21, SCL = GPIO22
if (!display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDRESS))
{
Serial.println(F("Nie znaleziono wyświetlacza OLED!"));
while (1);
}
if (!bme.begin(BME280_ADDRESS))
{
Serial.println(F("Nie znaleziono czujnika BME280!"));
while (1);
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println("Stacja pogodowa");
display.display();
delay(2000);
}
void loop()
{
float temp = bme.readTemperature();
float hum = bme.readHumidity();
float press = bme.readPressure() / 100.0F;
display.clearDisplay();
display.setCursor(0, 0);
display.println("Stacja pogodowa");
display.print("Temp: ");
display.print(temp);
display.println(" C");
display.print("Wilg.: ");
display.print(hum);
display.println(" %");
display.print("Cisn.: ");
display.print(press);
display.println(" hPa");
display.display();
delay(2000);
}
🖼️ Efekt działania
Po uruchomieniu zobaczysz na wyświetlaczu aktualne dane środowiskowe. Układ działa całkowicie samodzielnie – nie potrzebujesz już monitora portu szeregowego.

💡 Co dalej?
W kolejnym kroku możesz:
- dodać zasilanie bateryjne i zrobić przenośne urządzenie!
- zapisywać dane na kartę microSD,
- wysyłać je przez Wi-Fi (np. do domowej automatyki),
🧾 Podsumowanie
Jak widzisz, wystarczy kilka prostych elementów i kilkanaście linijek kodu, by stworzyć w pełni działające, samodzielne urządzenie pomiarowe. Dzięki magistrali I2C mogliśmy bezproblemowo połączyć czujnik i wyświetlacz, a ESP32 zajął się całą logiką.
Tego typu projekt to doskonały punkt wyjścia – zarówno do nauki, jak i do rozwijania bardziej zaawansowanych rozwiązań. Nauczyłeś się:
- jak połączyć i obsłużyć wiele urządzeń I2C,
- jak wykorzystać wyświetlacz OLED do wizualizacji danych,
- i jak odczytywać rzeczywiste pomiary z czujnika BME280.
📌 A jeśli masz apetyt na więcej – zachęcamy do sprawdzenia rozbudowanej wersji tego projektu

📖 Wpisy powiązane

Prezentowaną w artykule elektronikę znajdziesz oczywiście w naszym sklepie 👉 sklep.msalamon.pl 👈Zapraszamy również na nasze social media, gdzie na bieżąco informujemy o nowych produktach oraz o najciekawszych promocjach 😎👇