Vis QR -kode på OLED -skjerm med ESPTOP 10 ved hjelp av Arduino IDE

Vis QR -kode på OLED -skjerm med ESPTOP 10 ved hjelp av Arduino IDE
ESP32 er et mikrokontrollertavle som kan grensesnitt sammen med mange enheter. Ved hjelp av en OLED -skjerm med ESP32 kan all informasjon vises, for eksempel QR -kode, bilder, tekst og til og med former. Man kan også ta data fra forskjellige sensorer og vise utdataene over en OLED -skjerm. Denne guiden vil dekke alle trinn for å vise et QR -kodebilde på OLED med ESP32 ved hjelp av Arduino IDE.

Denne leksjonen inkluderer følgende emner:

  • 1: Introduksjon til OLED -skjerm
  • 2: Wiring OLED -skjermmodul til ESP32
  • 3: Installere nødvendige biblioteker
  • 4: Kontroller OLED Display I2C -adresse
  • 5: Vis QR -kode på OLED -skjerm med ESP32 ved hjelp av Arduino IDE
  • 5.1: Opprette en QR -kode
  • 5.2: Konvertere QR -kode til Hex -kode
  • 5.3: Kode
  • 5.4: Eksempel på Arduino -kode for skjermbilde av QR -kode
  • 5.5: Output
  • 5.6: Skanning QR -kode fra OLED -skjerm

1: Introduksjon til OLED -skjerm

Før vi flytter videre må vi vite hva en OLED -skjerm er. OLED (Organisk lysemitterende diode) Skjermer brukes som et alternativ til LCD -er. OLED -lysdioder brukes til å produsere lysskjermer på OLED -skjermer. LCD -skjermen bruker bakgrunnsbelysning for å belyse piksler mens OLED -skjermer har sine egne emissive lysdioder. Det er hundrevis av selvlydige lysdioder. For å vise bilder og tekstlysstyrke på disse lysdiodene kan kontrolleres piksel av piksel.

Nå som vi kjenner noen grunnleggende relatert til OLED -skjerm. Neste trinn er å koble ESP32 med en OLED -skjermmodul.

2: Wiring OLED -skjermmodul til ESP32

OLED -skjermen kommer hovedsakelig med to forskjellige kommunikasjonsprotokoller. De to protokollene er I2C og SPI. Det serielle perifere grensesnittet (SPI) er generelt raskere enn I2C, men vi foretrakk I2C fremfor SPI -protokoll, da det krevde mindre antall pinner.

Følgende bilde illustrerer ESP32 tilkoblingsdiagram med 128 × 64 piksler (0.96 ") OLED -skjerm.

Nedenfor er tilkoblingstabellen:

Når ESP32 er koblet sammen med en OLED -skjerm, er neste trinn på listen installerer alle nødvendige biblioteker for ESP32 -programmering ved hjelp av Arduino IDE.

3: Installere nødvendige biblioteker

Flere biblioteker er tilgjengelige i Arduino IDE for å programmere ESP32 med en OLED -skjerm. Her bruker vi to biblioteker fra Adafruit: SSD1306 og GFX Library.

Nå i Arduino IDE Open Library Manager og søk etter OLED SSD1306 -biblioteket. Installer SSD1306 -biblioteket av Adafruit fra søkefeltet.

Alternativt kan man også gå til: Skisse> Inkluder bibliotek> Administrer biblioteker

Neste bibliotek vi må installere er GFX -bibliotek av Adafruit.

Etter at begge bibliotekene er installert, er neste trinn å sjekke I2C -adressen der ESP32 er tilkoblet.

4: Kontroller OLED Display I2C -adresse

I2C står for inter-integrert kretskommunikasjon. Ved hjelp av I2C kan vi grensesnitt flere enheter over 2 ledninger. Imidlertid, mens du kobler dem til hver I2C -enhet, må du bruke en egen I2C -adresse. Denne adressen varierer fra 0 til 127. For eksempel, hvis vi har to forskjellige I2C -enheter ved å bruke den samme I2C -adressen, kan de ikke kobles til på samme I2C -linje.

Det er viktig å sjekke I2C -adressen først. For å sjekke I2C -adressen til den tilkoblede OLED -skjermen tilkoblet ESP32 med PC, last opp koden gitt i artikkelsjekk I2C -adressen ved hjelp av Arduino IDE.

Etter å ha lastet opp kode, vises følgende utdata. Her i vårt tilfelle er OLED -skjermen koblet til i2c -adresse (0x3c).

Vi vil bruke den nevnte I2C -adressen for OLED -skjermen i Arduino -koden.

5: Vis QR -kode på OLED -skjerm med ESP32 ved hjelp av Arduino IDE

Første trinn som er nødvendig for å vise hvilken som helst QR -kode på en OLED -skjerm, er å konvertere QR -kodebildet til en HEX -kode. Ved å bruke et hvilket som helst online bilde til Hex -omformeren kan vi få sekskantkode mot et bilde.

Men før det først må vi opprette en prøve QR -kode.

1: Opprette en QR -kode

For å lage QR -kode er flere gratisverktøy tilgjengelige. Her er en gratis tekst til QR -kodegenerator.

Bruke dette verktøyet Enhver tekst eller lenke kan konverteres til QR -kode. Her opprettet vi en QR -kode for Linuxhint nettstedadresse.

2: Konvertere QR -kode til Hex -kode

For å konvertere hvilken som helst QR -kode til HEX -kode, kan vi bruke et hvilket som helst online verktøy, eller man kan også konvertere QR -kodebilde til Hex -kode ved hjelp av Windows Paint Tool. Følg nå trinnene for å få hex -kode for ditt QR -kodebilde.

Trinn 1: Klikk her for å besøke gratis Image2CPP -omformer.

Steg 2: Velg QR -kodebildet som vi vil vise på OLED.

Trinn 3: Etter å ha valgt QR -kodebildet, klikker du på åpne.

Trinn 4: I bildesettingen sett dimensjonene til 128 x 64. Lysstyrken kan settes i henhold til bildet anbefalt nummer er et sted rundt 150.

Skala QR -kodebildet i henhold til størrelse og for referanse, se forhåndsvisningen av utdataene.

Trinn 5: Angi nå kodeutgangsformatet i Arduino -kode og prefiks som bitmap. Etter det klikk generere kode. Output Hex -kode kan kopieres fra utgangsvinduet.

Bytt ut den kopierte sekskantkoden i Arduino IDE -prøvekode gitt nedenfor.

3: Kode

Nå åpner Arduino IDE og lim inn koden nedenfor. Husk å bytte ut hex -koden med den for QR -kodebildet du trenger å vise på en OLED -skjerm.

/****** Linuxhint.Com ********/
#inkludere
#inkludere
#inkludere
#Define Screen_Width 128
#Define Screen_Height 64
Adafruit_ssd1306 display (screen_width, screen_height, & wire, -1);
statisk const uint8_t image_hex_array [1024] =
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x7f, 0x00, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x7f, 0x00, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x7f, 0x00, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x60, 0x0c, 0x61, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x60, 0x0c, 0x61, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x00, 0x61, 0x80, 0x71, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x7f, 0x00, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x7f, 0x00, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x7c, 0x7c, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x7c, 0x7c, 0x61, 0x80, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x7c, 0x7c, 0x61, 0x80, 0x71, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x63, 0xe3, 0xe1, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x63, 0xe3, 0xe1, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x63, 0x80, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x63, 0x0c, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x63, 0x0c, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x1c, 0x03, 0xe3, 0x8c, 0x71, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x1c, 0x03, 0xe3, 0x8c, 0x71, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x18, 0x03, 0xe1, 0x0c, 0x71, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x03, 0x1c, 0x00, 0x0c, 0x70, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x03, 0x1c, 0x00, 0x0c, 0x70, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0x1c, 0x7f, 0x0c, 0x60, 0x0c, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0x1c, 0x7f, 0x0c, 0x60, 0x0c, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x03, 0xff, 0x00, 0x60, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x03, 0xff, 0x00, 0x60, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0x03, 0xff, 0x00, 0x60, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0xe0, 0x1f, 0xfc, 0x0f, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0xe0, 0x1f, 0xfc, 0x0f, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0xe0, 0x1f, 0xfc, 0x0f, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe3, 0x0c, 0x0c, 0x70, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe3, 0x0c, 0x0c, 0x70, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x63, 0x03, 0xe0, 0x0f, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x63, 0x03, 0xe0, 0x0f, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x7c, 0x7f, 0x81, 0x8f, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x7c, 0x7f, 0x81, 0x8f, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x7c, 0x7f, 0x81, 0x8f, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x03, 0xe1, 0xf0, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x03, 0xe1, 0xf0, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x00, 0x03, 0xf0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x63, 0xfc, 0x0f, 0xf0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x63, 0xfc, 0x0f, 0xf0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xe0, 0x1c, 0x60, 0x7c, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x63, 0x0c, 0x0f, 0x81, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xfc, 0x63, 0x0c, 0x0f, 0x81, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xff, 0xf8, 0x63, 0x1c, 0x0f, 0x81, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x60, 0x7c, 0x7f, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x60, 0x7c, 0x7f, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0xe0, 0xfc, 0x7f, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
;
void setup ()
Serie.Begin (115200); // baudfrekvens for seriell kommunikasjon
hvis(!vise.Begynn (SSD1306_switchcapvcc, 0x3c))
Serie.Println (F ("SSD1306 tildeling mislyktes"));
til(;;);

forsinkelse (2000); // forsinkelse 2 sek
vise.clearDisplay (); // Fjern skjermbuffer
vise.DrawBitMap (0, 0, Image_Hex_Array, 128, 64, 1);
vise.vise();

void loop ()

Kode startet med å importere nødvendige biblioteker som vi installerte tidligere. To biblioteker inkluderer Wire og Adafruit Library. Wire Libraries lar oss bruke I2C mens Adafruit hjelper til med å vise den skrevne teksten på skjermen.

Neste følgende kommando er skrevet:

Adafruit_ssd1306 display (screen_width, screen_height, & wire, -1);

Den inneholder Screen_width og Screen_height variabler. Ved hjelp av disse variablene definerte vi størrelsen på OLED -skjermen. Her bruker vi en 128 × 64 OLED -skjerm. Etter det &Metalltråd Objekt er definert for visning.

Den siste parameteren inneholder (-1), Denne skjermen som OLED -skjermen vi bruker ikke har en ekstern tilbakestillingsknapp. I tilfelle vi har en tilbakestillingsknapp på OLED -skjermen. Vi vil overføre denne parameteren til en GPIO -pin. Etter å ha trykket på tilbakestillingsknappen, vil OLED -skjermen vise teksten.

Midt i koden inkluderte vi HEX -koden for QR -kodebildet, og etter det initialiserte I2C -kommunikasjonen på I2C -adressen (0x3c) er definert som vi har funnet tidligere ved hjelp av I2C Scanner Code.

I de siste kodelinjene er hex -arrayen skrevet ut på OLED ved hjelp av bitmap -funksjonen.

4: Eksempel på Arduino -kode for skjermbilde av QR -kode

Her er en kode gitt for OLED -grensesnitt med ESP32. Du må bytte ut hex -koden til QR -kodebildet du vil vise på skjermen.

/****** Linuxhint.Com ********/
#inkludere
#inkludere
#inkludere
#Define Screen_Width 128
#Define Screen_Height 64
Adafruit_ssd1306 display (screen_width, screen_height, & wire, -1);
statisk const uint8_t image_hex_array [1024] =
/*******
*******
*******
[Lim inn hex -kode for bilde her]
*******
*******
*******/
;
void setup ()
Serie.Begin (115200); // baudfrekvens for seriell kommunikasjon
hvis(!vise.Begynn (SSD1306_switchcapvcc, 0x3c))
Serie.Println (F ("SSD1306 tildeling mislyktes"));
til(;;);

forsinkelse (2000); // forsinkelse 2 sek
vise.clearDisplay (); // Fjern skjermbuffer
vise.DrawBitMap (0, 0, Image_Hex_Array, 128, 64, 1);
vise.vise();

void loop ()

5: Output

Her i utdataene kan vi se QR -koden som vises på OLED -skjermen. Dette er den samme QR -koden som vi konverterte til hex -kode tidligere.

Vi har vist et QR -kodebilde på en OLED I2C -skjerm. Ved å bruke de samme trinnene kan en hvilken som helst QR -kode med riktig andel vises på en OLED -skjerm.

6: Skanning QR -kode fra OLED -skjerm

Når QR -koden er vist, er det siste trinnet å bekrefte om den fungerer eller ikke for at smarttelefonen skal brukes. De fleste smarttelefoner har en forhåndsinstallert QR -kodeskanner hvis ikke tilgjengelig, kan den enkelt lastes ned fra App Store.

Plasser nå kameraet på QR -kode.

Hvis vellykket skannet, vises følgende tekst. Dette er nøyaktig den samme teksten vi lagret mens vi opprettet QR -koden.

Konklusjon

En OLED -skjerm er en flott måte å vise utganger på uten behov for en seriemonitor eller PC. OLED -skjermer har to forskjellige protokoller I2C og SPI. I2C OLED -skjermer er å foretrekke på grunn av et mindre antall ledninger. OLED -skjerm kan brukes til å vise informasjon på skjermen, for eksempel QR -kode eller strekkode ved hjelp av. Denne leksjonen gir alle trinn som kreves for å vise et QR -kodebilde på en OLED I2C -skjerm med ESP32 ved bruk av Arduino IDE.