- Taigi, kas tai yra QR kodas?
- Savo QR kodo sugeneravimas
- Konvertuojamas PNG į BMP formatą
- Konvertuokite BMP vaizdą į HEX kodų masyvą
- Grandinės schema
- Kodo paaiškinimas
„Greito reagavimo“ kodas arba sutrumpintas kaip QR kodas tapo pagrindine mūsų skaitmeninio gyvenimo dalimi, tikėtina, kad jūs jau nesąmoningai esate su jais susipažinę, nes tikriausiai jau klajojote po savo vietinę maisto prekių parduotuvę, o gal esate skaitote savo mėgstamą knygą ar net galbūt mokate internetu naudodamiesi „Google Pay“, „PhonePe“ ar „Paytm“, naršote internete ir pan. (manau, galėčiau tęsti pavyzdžius, ar ne?), o jūs atsitiktinai atėjote per šį keistai atrodantį kvadratinį dalyką ir mintį, kas vis dėlto yra šis kvadratinis dalykas, ir jei jūs to nepadarėte… na, nesijaudinkite, kad tai įvyks anksčiau ar vėliau, todėl norėdami geriau suprasti temą, mes ketiname tai padaryti. įdomus mažas projektas su „ Arduino“ ir OLED ir atskleidžia šiuos dalykus:
- Pagrindinė QR kodo samprata.
- Kaip tai veikia.
- Kaip susikurti savo QR kodą naudojant „Arduino“.
- Galiausiai parodykite jį OLED (SSD1306) ekrane.
Taigi, kas tai yra QR kodas?
QR kodas („Quick Response“ kodas) yra matricinis 2D kodas, skirtas duomenims skaityti dideliu greičiu, kurį DENSO WAVE sukūrė 1994 m. Japonijos automobilių pramonei. QR kodas labai efektyviai suglaudina duomenis, palyginti su standartiniu brūkšniniu kodu. Tam pasiekti naudojami keturi standartizuoti kodavimo režimai (skaitiniai, raidiniai ir skaitiniai, baitai / dvejetainiai ir kanji), technologija buvo sukurta kaip „atvirasis šaltinis“, ty prieinama visiems, todėl ji labai greitai įgijo populiarumą. Svarbūs QR kodų pranašumai, palyginti su įprastais brūkšniniais kodais, yra didesnis duomenų pajėgumas ir didelis atsparumas triktims.
Kaip veikia QR kodas?
QR kodai (ir kiti duomenų matricos kodai) yra sukurti skaityti specialiais įrankiais, o ne žmonėms, todėl yra tik tam tikra suma, kurią galime suprasti vizualiai studijuodami, nors kiekvienas kodas įvairiai skiriasi, nors juose yra keletas įdomių įprastų ypatybes, stebėdami circuitdigest.com QR kodą, mes ištirsime kai kuriuos iš jų
- „Finder“ raštai: Didelės kvadratinės dėžutės su vientisa dėžute trijuose kodo kampuose leidžia lengvai patvirtinti, kad tai QR kodas, nes jų yra tik trys, todėl akivaizdu, kad tokiu būdu kodas yra orientuotas.
- „Alignment Pattern“: Tai leidžia įsitikinti, kad bet kurią orientaciją kodas gali būti įskaitomas.
- Laiko schema: Tai eina horizontaliai ir vertikaliai tarp trijų ieškiklio modelių , naudodamas šias eilutes skaitytojas gali nustatyti kodo dydį.
- Informacija apie versiją: Šiuo metu yra 40 skirtingų QR kodo standarto versijų, šis kodo skyrius nustato QR kodo versiją, kuri naudojama įprastai naudojamai 1–7 rinkodaros versijai.
- Informacija apie formatą: formato partneriai turi informacijos apie klaidų toleranciją ir duomenų maskavimą.
- Duomenų sritis: šiame kodo skyriuje yra visi duomenų elementai ir klaidų taisymo kodas.
- Uždaryti zoną: tarpai kiekviename QR kode yra privalomi, norint atskirti kodą nuo jo aplinkos.
Žemiau pateiktas vaizdas suteiks aiškią idėją apie kodą
Kiti kodo skyriai yra duomenys ir atleidimo kodas.
Yra keletas kitų funkcijų ir sudėtingų temų, kurių neaptarinėsiu šioje pamokoje, jei norite skaityti daugiau informacijos apie QR kodą, vadovaukitės šia QR kodo pamoka, kurią pateikė Tan Jin Soon, EPCglobal Singapūro taryba. Sintezės žurnalas, 2008 m.
QR kodo specifikacija
Simbolio dydis |
Min. 21x21 celė - maks. 177x177 langelis (su 4 ląstelių intervalu) |
|
Informacijos tipas ir apimtis |
Skaitmeniniai simboliai |
Daugiausia 7089 simboliai |
Abėcėlės, ženklai |
Daugiausia 4 296 simboliai |
|
Dvejetainis (8 bitų) |
Ne daugiau kaip 2 953 simboliai |
|
Kanji veikėjai |
1 817 simbolių |
|
Konversijos efektyvumas |
Skaitmeninių simbolių režimas |
3,3 langelio / simbolis |
Raidinis ir skaitmeninis režimas |
5,5 langelio / simbolis |
|
Dvejetainis (8 bitų) režimas |
8 langeliai / simbolis |
|
Kanji simbolių režimas (13 bitų) |
13 langelių / simbolis |
|
Klaidų taisymas funkcionalumas |
L lygis |
Apytiksliai Maksimaliai atkurta 7% simbolio ploto |
M lygis |
Apytiksliai 15% simbolio ploto atkurta maksimaliai |
|
Q lygis |
Apytiksliai 25% simbolio ploto atkurta maksimaliai |
|
H lygis |
Apytiksliai Maksimaliai atkurta 30% simbolio ploto |
|
Susiejimo funkcionalumas |
Maksimaliai galima suskirstyti į 16 simbolių |
Savo QR kodo sugeneravimas
Atlikite toliau nurodytus veiksmus, kad sukurtumėte savo QR kodą. Šiame pavyzdyje mes sukursime mūsų mėgstamos „ Circuit Digest“ svetainės QR kodą.
Norėdami sugeneruoti QR kodą, eikite į šią svetainę ir, jei pažvelgsite į viršutinę svetainės pusę, galite pamatyti variantų sąrašą, šioje pamokoje mes generuojame URL QR kodą, taigi mes einame
- Spustelėkite skirtuką URL ir įklijuokite grandinės santraukos URL skyriuje Įvesti URL.
- Spustelėkite išsaugoti.
- Nurodykite išvesties failo failo pavadinimą.
- Pasirinkite PNG kaip mūsų pageidaujamą failo formatą.
- ir spustelėkite išsaugoti.
Žemiau pateiktas vaizdas suteiks jums aiškią idėją apie procesą
Mūsų brangiausias mikrovaldiklis „Arduino“ nėra pakankamai intelektualus, kad galėtų tiesiog sukompiliuoti neapdorotą PNG vaizdą ir parodyti jį OLED ekrane. Taigi, norėdami parodyti QR kodą OLED, turime atlikti kelis paprastus veiksmus ir konvertuoti PNG vaizdą į bitų žemėlapių masyvą, kurį gali skaityti „Arduino“. Šią konversiją mes jau atlikome sąsajoje SSD1306 OLED su „Arduino“ ir sąsaja su grafiniu LCD su „Arduino“. Mes taip pat sujungėme SSD1306 OLED su „Raspberry Pi“, ESP32, „NodeMCU“ ir daugeliu kitų mikrovaldiklių. „Bitmap“ masyvo konversija gali būti atlikta atlikus šiuos du veiksmus:
- Konvertuojamas PNG į BMP formatą.
- Konvertuokite BMP vaizdą į HEX kodų masyvą.
Konvertuojamas PNG į BMP formatą
Norėdami konvertuoti atsisiųstą PNG vaizdą į BMP vaizdą, eikite į šią svetainę ir skyrių Vaizdo keitiklis ir
- Spustelėkite išskleidžiamąjį meniu ir pasirinkite
- Konvertuoti į BMP
- Spustelėkite „Eiti“
Žemiau pateiktas vaizdas suteiks jums aiškią idėją apie procesą:
Jums bus pateiktas naujas puslapis, panašus į žemiau esantį vaizdą:
- Spustelėkite skirtuką Pasirinkti failus ir pasirinkite atsisiųstą vaizdą
- Skiltyje Pasirinktiniai nustatymai skydelyje įveskite norimą dydį (mes naudojame 128x64 OLED)
- Spustelėkite mygtuką Pradėti konversiją
Jums bus pateiktas šis puslapis ir po kelių sekundžių konvertuotas vaizdas bus atsisiųstas, jei atsisiuntimas neprasidės automatiškai, spustelėkite parinktį Atsisiųsti failą:
Puiku! Dabar mes gavome savo BMP failą, kad galėtume jį konvertuoti į HEX kodų masyvą, kurį gali skaityti „Arduino“.
Konvertuokite BMP vaizdą į HEX kodų masyvą
Norėdami konvertuoti atsisiųstą BMP vaizdą į HEX masyvą, eikite į šią svetainę ir spustelėkite Įrankiai -> image2cpp
Žemiau pateiktas vaizdas suteiks jums aiškią idėją apie procesą
Jums bus pateiktas ekranas, kuriame yra keturios galimybės, ir mes juos išsamiai aptarsime
- Pasirinkite vaizdą
- Vaizdo nustatymai
- Peržiūra
- Rezultatas
Pasirinkite vaizdo skyrių
Šiame skyriuje mes pasirinksime vaizdą, kurį ką tik pavertėme BMP:
Vaizdo nustatymų skyrius
Šiame skyriuje mes nustatysime drobės dydį, fono spalvą, mastelio keitimą ir centro parinktis pagal reikalingą vertę.
- Drobės dydis (mes nustatėme į 128x64, nes naudojame OLED su 128x64 pikselių tankiu).
- Šiame skyriuje mes galime nustatyti OLED fono spalvą (mes pasirenkame baltą).
- Mastelis nustatomas pagal pradinį dydį.
- Galiausiai, esant centrinei parinkčiai, spustelėkite horizontalius ir vertikalius žymimuosius langelius, todėl vaizdas bus rodomas centre.
Žemiau pateiktas vaizdas suteiks jums aiškią idėją
Peržiūros skyrius
Peržiūros skyriuje galime pamatyti aiškią vaizdo peržiūrą, kuri bus rodoma OLED, kaip parodyta žemiau:
Išvesties skyrius
Išvesties skyriuje sugeneruosime ir nukopijuosime sugeneruotą kodą. Norėdami tai padaryti, atlikite šiuos veiksmus:
- Kodo išvesties formatas (jį nustatėme kaip „Arduino“ kodą, nes jį naudojame).
- Identifier (ši parinktis nustato sugeneruoto masyvo pavadinimą, kurį paliekame numatytąjį, koks jis yra).
- Piešimo režimas (piešimo režimo parinktį nustatėme horizontaliai).
- Galiausiai spustelėsime kodo generavimo mygtuką, kuris sukurs galutinį išvesties kodą.
Žemiau pateiktas vaizdas suteiks jums aiškią idėją
Grandinės schema
Žemiau esančiame paveikslėlyje parodytos sąsajos tarp „ Arduino Nano“ ir „SSD1306“:
„Arduino Nano“ kaištis |
OLED PIN kodas |
BND |
BND |
3.3V |
VCC |
D13 |
CLK |
D11 |
MOSI |
D8 |
RES |
D9 |
SDC |
D10 |
CCS |
Kodo paaiškinimas
Norėdami parodyti vaizdą OLED, mums reikia „Arduino“ bibliotekos pagalbos, kurią galima atsisiųsti iš šios „GitHub“ saugyklos. Atsisiųskite bibliotekos versiją U8glib-1.19.1.zip ir importuokite ją į „Arduino IDE“. Jei dar nesinaudojote „Arduino“, pasinaudokite šia nuoroda, kurioje aprašoma, kaip importuoti biblioteką. Žemiau esančiame skyriuje modifikuosime kodą, kad OLED būtų rodomas anksčiau sugeneruotas HEX masyvas. Visas kodas su veikiančiu vaizdo įrašu pateikiamas šio straipsnio pabaigoje. Išsamus kodo paaiškinimas pateiktas žemiau.
Pirmiausia įtraukite atsisiųstą biblioteką.
#include „U8glib.h“ // įskaitant U8glib biblioteką
Tada nustatykite visus reikalingus kaiščius OLED.
#define OLED_CLK_PIN 13 // Arduino Digital Pin D13: SCK #define OLED_MOSI_PIN 11 // Arduino Digital Pin D11: MOSI #define OLED_RES_PIN 10 // Arduino Digital Pin D10: SS #define OLED_SDC_PIN 9 // Arduino Digital Pin D9d: OLED_CSS_PIN 8 // „Arduino Digital Pin D13“: ICP1
Inicializuokite „u8glib“ biblioteką.
U8GLIB_SH1106_128X64 u8g (OLED_CLK_PIN, OLED_MOSI_PIN, OLED_RES_PIN, OLED_SDC_PIN, OLED_CSS_PIN);
Tada įtraukite sugeneruotą vaizdo masyvą.
const uint8_t grandinės santrauka 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, 0xf0, 0x00, 0xff 0x87, 0xf0, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x0c, 0x01, 0x87, 0xf0, 0x00, 0x0f, 0xff, 0xff, 0xff 0xff 0xFF, 0xFF, 0xFF, 0xf3, 0xFF, 0x8f, 0xf0, 0x7f, 0x31, 0xFF, 0x8f, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xf3, 0xFF, 0x8f, 0xf0, 0x7f, 0x33, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x81, 0x8f, 0x31,0x80, 0x33, 0x81, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x01, 0x8f, 0x31, 0x80, 0x33, 0x81, 0xcf, 0xff, 0xff, 0xff, 0xffx 0xff, 0xff, 0xff, 0xf3, 0x01, 0x8f, 0xb1, 0x80, 0x33, 0x81, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x01, 0x8f, 0xc 0x81, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x01, 0x8f, 0xc1, 0x98, 0x33, 0x81, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,… …..0xff, 0xff, …….. ………..0xff, 0xff, …….. ………..
Funkcija „Draw“ naudojama piešti OLM su žemėlapio vaizdu (QR kodu) naudojant funkciją u8g.drawBitmapP.
void draw (void) {// grafinės komandos, skirtos perrašyti visą ekraną, turėtų būti įdėtos čia u8g.drawBitmapP (0, 0, 16, 64, circuitdigest); ….. ……
Galiausiai „ loop ()“ funkcijoje iškvieskite visas būtinas procedūras, kad sukurtumėte vaizdą ant OLED
void loop () {u8g.firstPage (); // Kvietimas atlikti šią procedūrą žymi paveikslėlio ciklo pradžią. daryti {piešti (); } while (u8g.nextPage ()); // Kvietimas atlikti šią procedūrą žymi paveikslėlio kilpos pagrindą. // atkurti paveikslėlį po tam tikro vėlavimo (1000); }
Baigę kodą, įjunkite „Arduino“ į savo kompiuterio USB prievadą, pasirinkite savo COM prievadą ir įkelkite kodą. Jei viską padarėte teisingai, OLED ekrane bus rodomas darbinis ekranas su QR kodu.
Tikiuosi, kad jums patiko šis projektas ir patiko mokytis kažko naujo, skaitykite toliau, mokykitės ir aš pamatysiu kitą kartą.