Spis treści:
W 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?
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
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
#include
#include
#include
//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
#include
#include
#include
//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
#include
#include
#include
#include
#include
//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);
}
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.