|

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 OLEDESP32 GPIO
SDAGPIO 21
SCLGPIO 22
VCC3.3V
GNDGND

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 SSD1306
  • 0x76 – 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:

  1. Adafruit BME280 Library
  2. Adafruit GFX Library
  3. 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 😎👇


Podobne wpisy

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *