- Szóval, mi ez a QR-kód?
- Saját QR-kód létrehozása
- A PNG konvertálása BMP formátumba
- Konvertálja a BMP képet tömb HEX kódgá
- Kördiagramm
- Kód Magyarázat
A "Gyors válasz" kód vagy rövidítve QR-kód digitális életünk alapvető részévé vált, valószínű, hogy tudat alatt már ismeri őket, mára valószínűleg már barangolt a helyi élelmiszerboltban, vagy talán végigolvassa kedvenc könyvét, vagy esetleg online fizet a Google Pay, a PhonePe vagy a Paytm segítségével, vagy szörfözik az interneten stb. (gondolom, folytathatnám a példákat, és mi?), és véletlenül eljöttél ezen a furcsa kinézetű négyzetszerű dologon és gondolaton át, mi is ez a négyzet alakú dolog, és ha még nem… nos, ne aggódjon, ez előbb-utóbb bekövetkezik, ezért a téma jobb megértése érdekében meg fogjuk tenni szórakoztató kis projekt az Arduino-val és az OLED- szel, és demitifikálja a következő dolgokat:
- A QR-kód alapkoncepciója.
- Hogyan működik.
- Hogyan készítsünk saját QR-kódot az Arduino segítségével.
- És végül jelenítse meg OLED (SSD1306) képernyőn.
Szóval, mi ez a QR-kód?
A QR-kód (Quick Response code) az adatok nagy sebességű olvasására szolgáló mátrix 2D-kód, amelyet a DENSO WAVE fejlesztett ki 1994-ben Japán autóiparához. A QR-kód nagyon hatékonyan tömöríti az adatokat a szokásos vonalkódhoz képest, ennek eléréséhez négy szabványosított kódolási módot (numerikus, alfanumerikus, bájt / bináris és kanji) használ, a technológiát "nyílt forráskódúvá" tették, azaz mindenki számára elérhetővé tette, így A QR-kódok jelentős előnyei a hagyományos vonalkódokkal szemben a nagyobb adatkapacitás és a nagy hibatűrés.
Hogyan működik a QR-kód?
A QR-kódokat (és más adatmátrix-kódokat) úgy tervezték, hogy speciális eszközök, és ne emberek olvassák, ezért vizuális tanulmányozással csak egy bizonyos mennyiséget érthetünk meg, bár minden kód különböző módon különbözik, bár tartalmaz néhány érdekes közös elemet jellemzőit az circuitdigest.com QR-kódjának megfigyelésével tanulmányozzuk néhányukat
- Keresőminták: A négyzet alakú négyzetes dobozok, amelyekben a kód három sarkában egy szilárd doboz található, megkönnyítik annak megerősítését, hogy QR-kódról van szó, mivel csak hárman vannak, így nyilvánvaló, hogy a kód milyen irányban helyezkedik el.
- Igazítási minta: Ez biztosítja, hogy a kód bármilyen irányban is olvasható legyen.
- Időzítési minta: Ez vízszintesen és függőlegesen fut a három keresőminta között , ezen sorok használatával az olvasó meghatározhatja a kód méretét.
- Információ a verzióról: Jelenleg 40 különböző verziója van a QR-kód szabványnak, a kódnak ez a szakasza határozza meg a QR-kód verzióját, amelyet az 1-7.
- Formátuminformációk: A formátumpartnerek a hibatűréssel és az adatok maszkolásával kapcsolatos információkkal rendelkeznek.
- Adat terület: A kód ezen része tartalmazza az összes adatelemet és hibajavító kódot.
- Kilépés a zónából: Az egyes QR-kódok közötti távolság kötelező, hogy meg lehessen különböztetni a kódot a környezetétől.
Az alábbi kép világos képet ad a kódról
A kód további szakaszai az adatok és a redundancia kódok.
Számos egyéb funkció és bonyolult téma létezik, amelyeket nem fogok megvitatni ebben az oktatóanyagban. Ha szeretnél további részleteket elolvasni a QR-kódról, kövesse ezt a QR-kódot bemutató oktatót Tan Jin Soon, az EPCglobal Singapore Council részéről. Synthesis Journal, 2008.
A QR-kód specifikációja
Szimbólum mérete |
Min. 21x21 cella - max. 177x177 cella (4 sejt intervallummal) |
|
Információ típusa és mennyisége |
Numerikus karakterek |
Legfeljebb 7089 karakter |
Ábécék, táblák |
Legfeljebb 4 296 karakter |
|
Bináris (8 bites) |
Legfeljebb 2953 karakter |
|
Kanji karakterek |
Legfeljebb 1817 karakter |
|
Átalakítási hatékonyság |
Numerikus karakter mód |
3,3 cella / karakter |
Alfanumerikus / Jelek mód |
5,5 cella / karakter |
|
Bináris (8 bites) mód |
8 cella / karakter |
|
Kanji karakterek mód (13 bites) |
13 sejt / karakter |
|
Hibajavítás funkcionalitás |
L szint |
Kb. A szimbólumterület legfeljebb 7% -a helyreállítva |
M szint |
Kb. A szimbólumterület maximum 15% -a helyreállítva |
|
Q szint |
Kb. A szimbólumterület legfeljebb 25% -a helyreállítva |
|
H szint |
Kb. A szimbólumterület legfeljebb 30% -a helyreállítva |
|
Összekapcsolási funkcionalitás |
Maximum 16 szimbólumra osztható |
Saját QR-kód létrehozása
Kövesse az alábbi lépéseket saját QR-kódjának előállításához, ebben a példában QR-kódot készítünk szeretett Circuit Digest webhelyünkről
QR-kód létrehozásához látogasson el erre a webhelyre, és ha megnézi a webhely felső részét, láthatja a lehetőségek listáját, ebben az oktatóanyagban QR-kódot generálunk egy URL-hez, ezért
- Kattintson az URL fülre, és illessze be a Circuit Digest URL-jét az URL megadása szakaszba.
- Kattintson a mentésre.
- Adjon fájlnevet a kimeneti fájlnak.
- Válassza ki a PNG-t előnyben részesített fájlformátumként.
- és kattintson a mentés gombra.
Az alábbi kép világos képet ad a folyamatról
Legkedvesebb mikrovezérlőnk, az „Arduino” nem olyan intelligens, hogy csak össze tudná állítani a nyers PNG képet, és megjelenítené azt az OLED kijelzőn. Tehát a QR-kód OLED-be történő megjelenítéséhez néhány egyszerű lépést kell végrehajtanunk, és a PNG-képet egy Arduino által olvasható bittérkép-tömbdé kell konvertálnunk. Ezt az átalakítást korábban megtettük, miközben összekapcsoltuk az SSD1306 OLED-t az Arduinóval és a grafikus LCD-t az Arduinóval. Csatlakoztattuk az SSD1306 OLED-et a Raspberry Pi, az ESP32, a NodeMCU és sok más mikrovezérlővel is. A bittérkép-átalakítás két lépésben végezhető el:
- A PNG konvertálása BMP formátumba.
- Konvertálja a BMP képet tömb HEX kódgá.
A PNG konvertálása BMP formátumba
A letöltött PNG kép BMP képpé konvertálásához keresse fel ezt a weboldalt és a képátalakító részt, és
- Kattintson a legördülő menüre, és válassza a lehetőséget
- Átalakítás BMP-re
- Kattintson a Go gombra
Az alábbi kép világos képet ad a folyamatról:
Új oldal jelenik meg az alábbi képen:
- Kattintson a Fájlok választása fülre, és válassza ki a letöltött képet
- Az Opcionális beállítások panelen írja be a kívánt méretet (128x64-es OLED-t használunk)
- Kattintson a Konvertálás megkezdése gombra
A következő oldal jelenik meg, és néhány másodperc múlva a konvertált kép letöltésre kerül, ha a letöltés nem indul el automatikusan, kattintson a fájl letöltése lehetőségre:
Nagy! Most elérkezett a BMP fájlunk ideje, hogy azt egy Arduino által olvasható HEX kód tömbgé alakítsuk át.
Konvertálja a BMP képet tömb HEX kódgá
A letöltött BMP kép HEX tömbgé konvertálásához látogasson el erre a webhelyre, és kattintson az Eszközök -> image2cpp elemre.
Az alábbi kép világos képet ad a folyamatról
Megjelenik egy képernyő, amelynek négy lehetősége van, és részletesen megvitatjuk őket
- Kép kiválasztása
- Képbeállítások
- Előnézet
- Kimenet
Válassza ki a kép részt
Ebben a részben kiválasztjuk azt a képet, amelyet éppen átalakítottunk BMP-be:
Képbeállítások szakasz
Ebben a szakaszban a vászon méretét, háttérszínét, méretezését és középre állítását a kívánt értékre állítjuk.
- Vászon mérete (128x64-re állítottuk be, mert 128x64 pixelsűrűségű OLED-t használunk).
- Ebben a részben beállíthatjuk az OLED háttérszínét (úgy választjuk, hogy fehér legyen).
- A méretezés az eredeti méretre van beállítva.
- Végül a középső opcióban kattintson a vízszintes és függőleges jelölőnégyzetre, így a kép középen megjelenik.
Az alábbi kép világos képet fog adni
Előnézet szakasz
Az előnézeti részben láthatjuk a kép tiszta előnézetét, amely az OLED-ben jelenik meg, az alábbiak szerint:
Kimeneti szakasz
A kimeneti részben előállítjuk és lemásoljuk a létrehozott kódot, ehhez kövesse az alábbi lépéseket:
- Kód kimeneti formátum (Arduino kódként állítottuk be, mert ilyet használunk).
- Azonosító (ez az opció állítja be a létrehozott tömb nevét, alapértelmezettként hagyjuk).
- Rajz mód (A rajz mód módját vízszintesre állítottuk).
- Végül rákattintunk a kód létrehozása gombra, ezzel létrehozza a végső kimeneti kódot.
Az alábbi kép világos képet fog adni
Kördiagramm
A kép alatt láthatók az Arduino Nano és az SSD1306 közötti kapcsolódási kapcsolatok:
Arduino Nano Pin |
OLED PIN |
GND |
GND |
3.3V |
VCC |
D13 |
CLK |
D11 |
MOSI |
D8 |
RES |
D9 |
SDC |
D10 |
CCS |
Kód Magyarázat
A kép OLED-en való megjelenítéséhez szükségünk van egy Arduino könyvtár segítségére, amely letölthető erről a GitHub adattárról. Töltse le a könyvtár U8glib-1.19.1.zip verzióját, és importálja az Arduino IDE-be. Ha még nem ismeri az Arduino alkalmazást, vegye igénybe ennek a linknek a segítségével, amely leírja a könyvtár importálását. Az alábbi részben módosítjuk a kódot, hogy a korábban generált HEX tömb megjelenjen az OLED-ben. A teljes kód egy működő videóval a cikk végén található. A kód részletes magyarázata az alábbiakban található.
Először mellékelje a letöltött könyvtárat.
#include "U8glib.h" // beleértve az U8glib könyvtárat is
Ezután határozza meg az OLED összes szükséges lábát.
#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: ODine OLED_CSS_PIN 8 // Arduino Digital Pin D13: ICP1
Inicializálja az u8glib könyvtárat.
U8GLIB_SH1106_128X64 u8g (OLED_CLK_PIN, OLED_MOSI_PIN, OLED_RES_PIN, OLED_SDC_PIN, OLED_CSS_PIN);
Ezután tartalmazza a létrehozott képtömböt.
konst 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 és 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, 0xc 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, 0xff, 0xf3, 0xff, 0x8f, 0xf0, 0x7f, 0x31, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xfx, 0xfx, 0xfx, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff és 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff és cf majdan másokkal is lenne elérhető. 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, 0xff, 0xff, 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, 0xff, …….. ………..0xff, 0xff, …….. ………..
A Draw funkció segítségével a bitkép kép (QR-kód) rajzolható az OLED-re az u8g.drawBitmapP függvény segítségével.
void draw (void) {// a teljes képernyő újrarajzolásához grafikus parancsokat kell ide helyezni. u8g.drawBitmapP (0, 0, 16, 64, circuitdigest); ….. ……
Végül a loop () függvényben hívja meg az összes szükséges eljárást a kép OLED-re való felépítéséhez
void loop () {u8g.firstPage (); // Ennek az eljárásnak a meghívása jelöli a képhurok kezdetét. csinálni {rajzolni (); } while (u8g.nextPage ()); // Ennek az eljárásnak a meghívása jelöli a képhurok törzsének végét. // némi késleltetés után újjáépítjük a képet (1000); }
A kód kitöltése után csatlakoztassa az Arduino-t a számítógép USB-portjához, válassza ki a COM-portot és töltse fel a kódot. Ha mindent helyesen tett, akkor az OLED-en működik egy QR-kóddal ellátott kijelző.
Remélem tetszett ez a projekt, és élvezett valami új dolgot, folytassa az olvasást, tanuljon tovább, és legközelebb találkozunk.