Indholdsfortegnelse:

Introduktion ESP32 Lora OLED Display: 8 trin
Introduktion ESP32 Lora OLED Display: 8 trin

Video: Introduktion ESP32 Lora OLED Display: 8 trin

Video: Introduktion ESP32 Lora OLED Display: 8 trin
Video: New! Heltec V3 ESP32 LoRa OLED Step By Step 2024, Juli
Anonim
Image
Image
Introduktion ESP32 Lora OLED Display
Introduktion ESP32 Lora OLED Display

Dette er en anden video om introduktionen til ESP32 LoRa. Denne gang taler vi specifikt om et grafisk display (på 128x64 pixels). Vi vil bruge SSD1306 -biblioteket til at vise oplysninger om denne OLED -skærm og præsentere et eksempel på animation ved hjælp af XBM -billeder.

Trin 1: Brugte ressourcer

Ressourcer brugt
Ressourcer brugt

1 Heltec WiFi LoRa 32

Protoboard

Trin 2: Displayet

Displayet
Displayet
Displayet
Displayet

Skærmen, der bruges på udviklingsbrættet, er en OLED på 0,96 tommer.

Den har 128x64 og er monokrom.

Den har I2C -kommunikation og er forbundet til ESP32 via 3 ledninger:

SDA på GPIO4 (til data)

SCL på GPIO15 (til ur)

RST på GPIO16 (til nulstilling og skærmstart)

Trin 3: SSD1306 -biblioteket

SSD1306 -biblioteket
SSD1306 -biblioteket

Dette kan findes sammen med det sæt biblioteker, der leveres af Heltec-Aaron-Lee.

Det har flere funktioner til at skrive strenge, tegne linjer, rektangler, cirkler og vise billeder.

github.com/Heltec-Aaron-Lee/WiFi_Kit_series

Trin 4: Animation- og XBM -filerne

Animation- og XBM -filerne
Animation- og XBM -filerne
Animation- og XBM -filerne
Animation- og XBM -filerne
Animation- og XBM -filerne
Animation- og XBM -filerne

Vi vil bruge bibliotekets drawXbm -funktion til at vise en animation.

XBM -billedformatet består af en række tegn, hvor hvert element tekstmæssigt repræsenterer et sæt monokrome pixels (1 bit hver), gennem en hexadecimal værdi. Disse svarer til en byte.

Fordi flere tegn bruges til at repræsentere en enkelt byte, har disse filer en tendens til at være større end dem fra de aktuelt vedtagne formater. Fordelen er, at de kan kompileres direkte uden behov for forudgående behandling.

Ud over matrixen er der inkluderet to indstillinger, der bestemmer billedstørrelsen.

For at bygge animationen har vi brug for de billeder, der danner rammerne.

Vi kan bruge enhver billedredigeringssoftware til at komme i gang. De eneste forholdsregler, vi bør tage, er først at holde størrelsen kompatibel med skærmen og bruge monokrome filer.

For at generere filerne kan vi tegne dem eller importere billeder. Her besluttede vi at redigere et farvebillede ved hjælp af PaintBrush, og vi tegnede hver enkelt ramme

Originalbillede - 960x707 pixels --p.webp

Det næste trin er at gøre det monokromt ved at gemme det som et monokrom bitmap.

Derefter ændrer vi størrelsen til en størrelse, der er kompatibel med skærmen.

Vær særlig opmærksom på måleenhederne. I dette tilfælde justerede vi billedet, så det optog hele skærmens højde (lodret = 64 pixels).

Med billedet i den korrekte størrelse, redigerer vi det for at danne rammerne. Her sletter vi hver bue af signalniveau og gemmer dem som tilsvarende rammer.

Nu skal vi konvertere BMP -filer til XBM -format.

Der er flere softwaremuligheder, der kan udføre denne konvertering. Vi valgte også GIMP som redaktørmulighed.

I vores eksempel brugte vi PaintBrush til at generere og redigere filerne. Hver af disse processer kunne dog have været udført i Gimp (eller enhver anden editor).

For at konvertere åbner vi først filen.

Med billedet åbent kan vi vælge File => Export as …

I vinduet Eksporter billede skal vi ændre destinationsfiludvidelsen til XBM. Gimp har ansvaret for at identificere det ønskede format og præsentere flere muligheder …

Ved eksport vil Gimp præsentere andre muligheder. Vi kan forlade standardværdierne.

Efter konvertering af alle filerne har vi fire XBM -filer, en for hver ramme.

Lad os nu kopiere dem til kildekodemappen og omdøbe dem ved at ændre deres udvidelser til.h.

Trin 5: Afslutning af XBM -filer

Afslutter XBM -filer
Afslutter XBM -filer

Vi kan åbne XBM -filerne i enhver tekstredigerer, hvor vi vil se billedmatricen og billedstørrelsesoplysninger, der allerede var defineret.

Trin 6: Kildekode

Kildekode: erklæringer

Vi inkluderer de nødvendige biblioteker samt billedfilerne. Vi definerer billedets positioner og overgangsintervallet. Vi peger også på OLED -benene, der er forbundet til ESP32. Endelig opretter 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 udvikle styring af software SSD1306 display (0x3c, SDA, SCL, RST); // Cria e ajusta o Objeto display

Kildekode: Opsætning ()

Initialiser displayet, og vend skærmen lodret. Handling er valgfri.

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

Kildekode: Loop ()

Den første ting at gøre i loop er at rydde skærmen. Vi indlæser ramme 1 i bufferen ved hjælp af posX og posY udgangspositioner. Vi oplyser billedets størrelse med frame1_width og frame1_height, og navnet på arrayet, der indeholder billedets bits. Vi viser bufferen på displayet og venter et interval, før vi viser det næste billede.

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 gentager processen 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); }

Trin 7: Udførelse af opladning af kode

Gør UpLoad of Code
Gør UpLoad of Code
Gør UpLoad of Code
Gør UpLoad of Code
Gør UpLoad of Code
Gør UpLoad of Code

Med IDE åben, skal du åbne filen med kildekoden ved at dobbeltklikke på.ino-filen eller ved at gå til menuen Filer.

Med Heltec tilsluttet USB, vælg menuen Værktøjer => Kort: "Heltec_WIFI_LoRa_32"

Stadig i menuen Værktøjer skal du vælge den COM -port, hvor Heltec er tilsluttet.

Klik på knappen UPLOAD …

… Og vent på konklusionen.

Trin 8: Filer

Download filerne:

PDF

INO

Anbefalede: