Innholdsfortegnelse:

Innledning ESP32 Lora OLED -skjerm: 8 trinn
Innledning ESP32 Lora OLED -skjerm: 8 trinn

Video: Innledning ESP32 Lora OLED -skjerm: 8 trinn

Video: Innledning ESP32 Lora OLED -skjerm: 8 trinn
Video: Измерение 5A-30A переменного и постоянного тока с использованием ACS712 с библиотекой Robojax 2024, Juli
Anonim
Image
Image
Innledning ESP32 Lora OLED -skjerm
Innledning ESP32 Lora OLED -skjerm

Dette er en annen video om introduksjonen til ESP32 LoRa. Denne gangen snakker vi spesielt om en grafisk skjerm (på 128x64 piksler). Vi vil bruke SSD1306 -biblioteket til å vise informasjon om denne OLED -skjermen og presentere et eksempel på animasjon ved bruk av XBM -bilder.

Trinn 1: Ressurser brukt

Ressurser brukt
Ressurser brukt

1 Heltec WiFi LoRa 32

Protoboard

Trinn 2: Displayet

Skjermen
Skjermen
Skjermen
Skjermen

Skjermen som brukes på utviklingsbordet er en OLED på 0,96 tommer.

Den har 128x64 og er monokrom.

Den har I2C -kommunikasjon og er koblet til ESP32 via 3 ledninger:

SDA på GPIO4 (for data)

SCL på GPIO15 (for klokke)

RST på GPIO16 (for tilbakestilling og visningsstart)

Trinn 3: SSD1306 -biblioteket

SSD1306 -biblioteket
SSD1306 -biblioteket

Dette finnes sammen med settet med biblioteker levert av Heltec-Aaron-Lee.

Den har flere funksjoner for å skrive strenger, tegne linjer, rektangler, sirkler og vise bilder.

github.com/Heltec-Aaron-Lee/WiFi_Kit_series

Trinn 4: Animasjons- og XBM -filene

Animasjon og XBM -filer
Animasjon og XBM -filer
Animasjon og XBM -filer
Animasjon og XBM -filer
Animasjon og XBM -filer
Animasjon og XBM -filer

Vi vil bruke bibliotekets drawXbm -funksjon for å vise en animasjon.

XBM -bildeformatet består av en rekke tegn der hvert element tekstuelt representerer et sett med monokrome piksler (1 bit hver), gjennom en heksadesimal verdi. Disse tilsvarer en byte.

Fordi flere tegn brukes til å representere en enkelt byte, har disse filene en tendens til å være større enn de fra de for tiden vedtatte formatene. Fordelen er at de kan kompileres direkte uten behov for tidligere behandling.

I tillegg til matrisen er to innstillinger som bestemmer bildestørrelsen inkludert.

For å bygge animasjonen trenger vi bildene som skal danne rammene.

Vi kan bruke hvilken som helst bilderedigeringsprogramvare for å komme i gang. De eneste forholdsreglene vi bør ta er å først holde størrelsen kompatibel med skjermen og bruke monokrome filer.

For å generere filene kan vi tegne dem eller importere bilder. Her bestemte vi oss for å redigere et fargebilde ved å bruke PaintBrush, og vi tegnet hver av bildene

Opprinnelig bilde - 960x707 piksler --p.webp

Det neste trinnet er å gjøre det monokrom ved å lagre det som et monokrom bitmap.

Deretter endrer vi størrelsen på den til en størrelse som er kompatibel med skjermen.

Vær spesielt oppmerksom på måleenhetene. I dette tilfellet justerte vi bildet slik at det opptar hele høyden på skjermen (vertikal = 64 piksler).

Med bildet i riktig størrelse, redigerer vi det for å danne rammene. Her sletter vi hver bue av signalnivå og lagrer dem som tilsvarende rammer.

Nå må vi konvertere BMP -filer til XBM -format.

Det er flere programvarealternativer som kan gjøre denne konverteringen. Vi valgte også GIMP som et redigeringsalternativ.

I vårt eksempel brukte vi PaintBrush til å generere og redigere filene. Hver av disse prosessene kunne imidlertid ha blitt utført i Gimp (eller hvilken som helst annen redaktør).

For å konvertere åpner vi først filen.

Med bildet åpent kan vi velge File => Export as …

I vinduet Eksporter bilde må vi endre målfilutvidelsen for XBM. Gimp har ansvaret for å identifisere ønsket format og presentere flere alternativer …

Ved eksport vil Gimp presentere andre alternativer. Vi kan forlate standardverdiene.

Etter å ha konvertert alle filene, vil vi ha fire XBM -filer, en for hver ramme.

La oss nå kopiere dem til kildekodemappen og gi dem nytt navn ved å endre utvidelsene til.h.

Trinn 5: Avslutt XBM -filer

Avslutter XBM -filer
Avslutter XBM -filer

Vi kan åpne XBM -filene i en hvilken som helst tekstredigerer, der vi vil se bildematrisen og informasjon om bildestørrelse som allerede var definert.

Trinn 6: Kildekode

Kildekode: Erklæringer

Vi vil inkludere de nødvendige bibliotekene, samt bildefilene. Vi definerer posisjonene til bildet og overgangsintervallet. Vi peker også på OLED -pinnene som er koblet til ESP32. Til slutt oppretter og justerer vi Display -objektet.

// Incluindo as bibliotecas necessárias #include #include "SSD1306.h" // Incluindo os arquivos de imagem #include "frame1.h" #include "frame2.h" #include "frame3.h" #include "frame4.h" // definições de posição da imagem e intervalo de transição #define posX 21 #define posY 0 #define intervalo 500 // Pinos do OLED estão conctados ao ESP32: I2C // OLED_SDA - GPIO4 // OLED_SCL - GPIO15 // OLED_RST - - GPIO16 #define SDA 4 #define SCL 15 #define RST 16 // O RST deve ser controlado by software SSD1306 display (0x3c, SDA, SCL, RST); // Cria e ajusta o Objeto display

Kildekode: Oppsett ()

Initialiser skjermen og inverter skjermen vertikalt. Handling er valgfritt.

ugyldig oppsett () {display.init (); // inicia o display display.flipScreenVertically (); // inverte verticalmente a tela (opcional)}

Kildekode: Loop ()

Det første du må gjøre i løkken er å tømme skjermen. Vi laster ramme 1 inn i bufferen ved hjelp av posX og posY utgangsposisjoner. Vi informerer størrelsen på bildet med frame1_width og frame1_height, og navnet på arrayet som inneholder bitene i bildet. Vi viser bufferen på displayet og venter et intervall før vi viser neste ramme.

void loop () {display.clear (); // limpa tela // carrega para o buffer o frame 1 // usando as posições iniciais posX e posY // informa o tamanho da imagem com frame1_width e frame1_height // informa o nome da matriz que contem os bits da imagem, no caso frame1_bits display.drawXbm (posX, posY, frame1_width, frame1_height, frame1_bits); // Mostra o buffer no display display. display (); // aguarda um intervalo antes de mostrar o próximo frame delay (intervalo);

Vi gjentar prosessen for alle andre rammer.

// repete o processo para todos os outros frames display.clear (); display.drawXbm (posX, posY, frame2_width, frame2_height, frame2_bits); display.display (); forsinkelse (intervalo); display.clear (); display.drawXbm (posX, posY, frame3_width, frame3_height, frame3_bits); display.display (); forsinkelse (intervalo); display.clear (); display.drawXbm (posX, posY, frame4_width, frame4_height, frame4_bits); display.display (); forsinkelse (intervalo); }

Trinn 7: Gjør UpLoad of Code

Gjør UpLoad of Code
Gjør UpLoad of Code
Gjør UpLoad of Code
Gjør UpLoad of Code
Gjør UpLoad of Code
Gjør UpLoad of Code

Med IDE åpen, åpner du filen med kildekoden ved å dobbeltklikke på.ino-filen eller ved å gå til Fil-menyen.

Med Heltec koblet til USB, velg menyen Verktøy => Kort: "Heltec_WIFI_LoRa_32"

Fortsatt i Verktøy -menyen, velg COM -porten der Heltec er tilkoblet.

Klikk på UPLOAD -knappen …

… Og vent på konklusjonen.

Trinn 8: Filer

Last ned filene:

PDF

INO

Anbefalt: