ESP32 – podłączenie wyświetlacza OLED

Czas czytania: 2 min.

poprzednim artykule wyjaśniliśmy pokrótce czym jest ESP32 i do czego można go wykorzystać. Nauczyliśmy się również odczytywać dane z czujnika temperatury DS18B20 i wyświetlać wyniki pomiarów na monitorze szeregowym środowiska Arduino IDE, a także, dzięki stworzonemu serwerowi –  w przeglądarce internetowej. Zaprezentowaliśmy również jak prawidłowo skonfigurować środowisko Arduino IDE do poprawnej pracy z modułem ESP32. Dzisiaj pokażemy Wam, jak podłączyć wyświetlacz OLED oraz wyświetlić na nim wartości z poznanego wcześniej czujnika temperatury.

Czego będziemy potrzebować do wykonania projektu?

Do stworzenia projektu potrzebny nam będzie oczywiście sam moduł ESP32 oraz wyświetlacz OLED. My wykorzystaliśmy ekran OLED o przekątnej 1.3″ oparty na sterowniku SH1106. Polecamy stworzony przez nas zestaw z modułem ESP32, w którym można znaleźć wszystkie wymagane elementy.
Pełna lista wykorzystanych elementów poniżej:

Podłączenie wyświetlacza OLED do ESP32

Wyświetlacz komunikuje się z modułem poprzez interfejs I2C, my podłączyliśmy go do pinów 21 (SDA) oraz 22 (SCK). 

Wgranie bibliotek dla wyświetlacza OLED

W celu poprawnej obsługi wyświetlacza ze sterownikiem SH1106 należy zainstalować odpowiednie biblioteki w środowisku Arduino IDE. Wymagane biblioteki można znaleźć pod linkami:

 

Pobrane w formie paczki .zip biblioteki instalujemy w środowisku Arduino IDE.

Pojawi się okno, gdzie należy wyszukać lokalizację pobranych paczek, a następnie wybrać bibliotekę .zip i wybrać przycisk Otwórz.

Programowanie modułu ESP32

Po odpowiednim wgraniu bibliotek dla wyświetlacza OLED możemy przystąpić do programowania modułu ESP32. Poniższy kod wyświetli na ekranie standardowe hasło “Hello World”.

				
					#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH1106.h>
//definiujemy piny I2C, do których podłączony został wyświetlacz
#define OLED_SDA 21
#define OLED_SCL 22

Adafruit_SH1106 display(21, 22);

void setup()   {
  Serial.begin(115200);
  //definiujemy rodzaj użytego wyświetlacza oraz adres I2C
  display.begin(SH1106_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
  display.display();
  //ustawiamy rozmiar czcionki, kolor, położenie kursora oraz wyświetlany tekst
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.println("Hello World!");
  display.display();
}

void loop() {

}
				
			

Kod wgrywamy standardowo, poprzez kliknięcie przycisku “Wgraj”.

Po prawidłowym podłączeniu wyświetlacza i zastosowaniu kodu na ekranie powinien wyświetlić się napis Hello World.

Umieszczenie elementów na ekranie można dowolnie konfigurować poprzez zmianę położenia kursora. W tym celu należy w kodzie dopisać linię:

display.setCursor(X, Y);

gdzie X to położenie w poziomie, a Y w pionie. Wartość startowa / domyślna to (0, 0). 

Poniżej przykładowy kod ze zmienionym położeniem wyświetlanego napisu.

				
					#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH1106.h>
//definiujemy piny I2C, do których podłączony został wyświetlacz
#define OLED_SDA 21
#define OLED_SCL 22

Adafruit_SH1106 display(21, 22);

void setup()   {
  Serial.begin(115200);
  //definiujemy rodzaj użytego wyświetlacza oraz adres I2C
  display.begin(SH1106_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
  display.display();
  //ustawiamy rozmiar czcionki, kolor, położenie kursora oraz wyświetlany tekst
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(25, 20);
  display.println("Botland");
  display.display();
}

void loop() {

}
				
			

Wyświetlanie danych z czujnika temperatury na ekranie OLED

Do podłączenia wyświetlacza należy wykorzystać elementy oraz biblioteki, z których korzystaliśmy w poprzednim artykule ESP32 – połączenie z czujnikiem temperatury DS18B20. Na schemacie prawidłowe połączenie czujnika DS18B20 oraz wyświetlacza OLED do modułu ESP32.

Poniższy kod pozwala odczytać dane z czujnika temperatury DS18B20 i wyświetlić je na wyświetlaczu OLED. 

Wielkość tekstu można dowolnie modyfikować zmieniając wartości w linii:

display.setTextSize();
				
					#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH1106.h>
#include <OneWire.h>
#include <DallasTemperature.h>
//definiujemy piny I2C, do których podłączony został wyświetlacz
#define OLED_SDA 21
#define OLED_SCL 22
//definiujemy pin, do którego podłączony został czujnik temperatury
const int oneWireBus = 4;

Adafruit_SH1106 display(21, 22);

//Komunikujemy, że będziemy korzysać z interfejsu OneWire
OneWire oneWire(oneWireBus);
//Komunikujemy, że czujnik będzie wykorzystywał interfejs OneWire
DallasTemperature sensors (&oneWire);

void setup()   {
  Serial.begin(115200);
  //definiujemy rodzaj użytego wyświetlacza oraz adres I2C
  display.begin(SH1106_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
  display.display();
  sensors.begin();
}

void loop() {
  sensors.requestTemperatures();
  //Odczyt w stopniach celsjusza
  float temperatureC = sensors.getTempCByIndex(0);
  //Wypisanie danych na wyświetlaczu
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.setTextSize(1);
  display.println("Temperatura:");
  display.setTextSize(2);
  display.print(temperatureC);
  display.print(" ");
  display.cp437(true);
  display.write(167);
  display.println("C");
  display.display();
  display.clearDisplay();
  //Odczyt temperatury co 5 sekund
  delay(5000);
}
				
			
Podłączenie ESP32

Wkrótce pojawią się dalsze części artykułów związanych z połączeniem innych modułów i czujników wraz z ESP32.

Jak oceniasz ten wpis blogowy?

Kliknij gwiazdkę, aby go ocenić!

Średnia ocena: 4.5 / 5. Liczba głosów: 10

Jak dotąd brak głosów! Bądź pierwszą osobą, która oceni ten wpis.

Podziel się:

Picture of Grzegorz Galuba

Grzegorz Galuba

GG nie ma czasu na gadu-gadu - jest zawsze na bieżąco z nowościami z oferty, wybiera tylko najlepsze i dba, aby pojawiały się na czas. Jego rozległa wiedza o specyfikacjach technicznych produktów to nieocenione wsparcie dla całej ekipy. Do pracy przyjeżdża rowerem i już najwyższa pora, aby wszyscy zaczęli brać z niego przykład. Oaza spokoju.

Zobacz więcej:

Masz pytanie techniczne?
Napisz komentarz lub zapytaj na zaprzyjaźnionym forum o elektronice.

Dodaj komentarz

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

Ze względów bezpieczeństwa wymagane jest korzystanie z usługi Google reCAPTCHA, która podlega Polityce prywatności i Warunkom użytkowania.