- Joten mikä tämä QR-koodi on?
- Oman QR-koodisi luominen
- Muunnetaan PNG BMP-muotoon
- Muunna BMP-kuva joukoksi HEX-koodeja
- Piirikaavio
- Koodin selitys
"Quick Response" -koodista tai lyhennetystä QR-koodista on tullut olennainen osa digitaalista elämäämme, on todennäköistä, että olet jo alitajuisesti perehtynyt niihin, olet todennäköisesti vaelsi paikallisen ruokakaupan ympärillä, tai ehkä olet lukemalla suosikkikirjaasi tai jopa tekemällä online-maksua Google Paylla, PhonePe: llä tai Paytm: llä tai surffaillessasi verkossa jne. (luulen, että voisin jatkaa ja jatkaa esimerkkejä, vai mitä?) tämän oudon näköisen neliömäisen asian ja ajatuksen yli, mikä tämä neliönmuotoinen asia on, ja jos et ole… no, älä huoli, että se tapahtuu varmasti ennemmin tai myöhemmin, joten ymmärrämme aihetta paremmin hauska pieni projekti Arduinon ja OLED: n kanssa ja selventää seuraavat asiat:
- QR-koodin peruskäsite.
- Kuinka se toimii.
- Kuinka tehdä oma QR-koodisi Arduinolla.
- Ja lopuksi, näytä se OLED (SSD1306) -näytöllä.
Joten mikä tämä QR-koodi on?
QR code (Quick Response code) on matriisin 2D-koodi tietojen lukemiseen suurella nopeudella, jonka DENSO WAVE kehitti vuonna 1994 Japanin autoteollisuudelle. QR-koodi pakkaa tietoja erittäin tehokkaasti tavalliseen viivakoodiin verrattuna. Tämän saavuttamiseksi se käyttää neljää standardoitua koodausmoodia (numeerinen, aakkosnumeerinen, tavu / binaarinen ja kanji), tekniikka tehtiin "avoimen lähdekoodin" eli kaikkien saatavilla, joten se QR-koodien merkittävät edut perinteisiin viivakoodeihin verrattuna ovat suurempi datakapasiteetti ja korkea vikasietoisuus.
Kuinka QR-koodi toimii?
QR-koodit (ja muut datamatriisikoodit) on suunniteltu lukemaan erikoistyökaluilla, ei ihmisillä, joten on vain tietty määrä, jonka voimme ymmärtää tutkimalla visuaalisesti, vaikka jokainen koodi on erilainen eri tavoin, vaikka ne sisältävätkin muutaman mielenkiintoisen yhteisen ominaisuuksia seuraamalla circuitdigest.com QR-koodia, tutkimme joitain niistä
- Löytökuviot: Suuret neliönmuotoiset laatikot, joissa on kiinteä laatikko koodin kolmessa kulmassa, helpottavat QR-koodin vahvistamista, koska niitä on vain kolme, joten on melko ilmeistä, että miten koodi on suunnattu.
- Tasausmalli: Tämä varmistaa, että koodi on luettavissa riippumatta suunnasta.
- Ajoitusmalli: Tämä kulkee vaaka- ja pystysuunnassa kolmen etsintäkuvion välillä , lukija voi näiden koodien avulla määrittää koodin koon.
- Versiotiedot: QR-koodistandardista on tällä hetkellä 40 erilaista versiota, tämä koodin osa määrittää normaalisti käytetyn markkinointiversioiden 1-7 QR-version, jota käytetään.
- Muotoilutiedot: Muotoilupartnereilla on tietoa virheiden suvaitsevaisuudesta ja tietojen peittämisestä.
- Tietoalue: Koodin tämä osa sisältää kaikki tietoelementit ja virheenkorjauskoodin.
- Lopeta vyöhyke: Jokaisen QR-koodin väli on pakollinen, jotta koodi voidaan erottaa ympäristöstä.
Alla oleva kuva antaa sinulle selkeän kuvan koodista
Muita koodin osia ovat data ja redundanssikoodi.
On olemassa useita muita ominaisuuksia ja monimutkaisia aiheita, joista en keskustele tässä opetusohjelmassa, jos haluat lukea lisätietoja QR-koodista, noudata tätä QR-koodin opetusohjelmaa, jonka on kirjoittanut Tan Jin Soon, EPCglobal Singapore Council. Synthesis Journal, 2008.
QR-koodin määrittely
Symbolin koko |
Min. 21x21 kenno - enint. 177x177 solu (4 solun välein) |
|
Tietojen tyyppi ja määrä |
Numeeriset merkit |
Enintään 7089 merkkiä |
Aakkoset, kyltit |
Enintään 4296 merkkiä |
|
Binaarinen (8-bittinen) |
Enintään 2953 merkkiä |
|
Kanji-hahmot |
Enintään 1817 merkkiä |
|
Muunnoksen tehokkuus |
Numeeristen merkkien tila |
3,3 solua / merkki |
Aakkosnumeerinen / merkkitila |
5,5 solua / merkki |
|
Binaarinen (8-bittinen) tila |
8 solua / merkki |
|
Kanji-merkkitila (13-bittinen) |
13 solua / merkki |
|
Virheen korjaus toiminnallisuutta |
Taso L |
Noin 7% symbolialueesta palautettu enintään |
Taso M |
Noin 15% symbolialueesta palautettu enintään |
|
Taso Q |
Noin 25% symbolialueesta palautettu enintään |
|
Taso H |
Noin 30% symbolialueesta palautettu enintään |
|
Linkittämistoiminto |
Voidaan jakaa enintään 16 symboliin |
Oman QR-koodisi luominen
Seuraa alla mainittuja vaiheita luodaksesi oman QR-koodisi, tässä esimerkissä aiomme tehdä QR-koodin rakastetulta Circuit Digest -sivustoltamme
Voit luoda QR-koodin siirtymällä tälle verkkosivustolle ja jos katsot verkkosivuston yläosaa, näet luettelon vaihtoehdoista, tässä opetusohjelmassa luomme QR-koodin URL-osoitteelle, joten aiomme
- Napsauta URL-välilehteä ja liitä piirilevyn URL-osoite Enter URL -osioon.
- Napsauta Tallenna.
- Anna tulostetiedostolle tiedostonimi.
- Valitse PNG ensisijaiseksi tiedostomuodoksi.
- ja napsauta Tallenna.
Alla oleva kuva antaa sinulle selkeän kuvan prosessista
Rakkain mikrokontrollerimme "Arduino" ei ole niin älykäs, että se voisi vain koota PNG-raakakuvan ja näyttää sen OLED-näytössä. Joten QR-koodin näyttämiseksi OLED: lle meidän on noudatettava joitain yksinkertaisia vaiheita ja muunnettava PNG-kuva bittikarttaryhmäksi, jonka Arduino voi lukea. Tämä muunnos, jonka olemme aiemmin tehneet, kun olemme liittäneet SSD1306 OLED: n Arduinoon ja graafisen nestekidenäytön Arduinoon. Olemme myös liittäneet SSD1306 OLED -laitteen Raspberry Pi-, ESP32-, NodeMCU- ja monien muiden mikrokontrollerien kanssa. Bittikartta-taulukon muunnos voidaan tehdä kahdessa vaiheessa:
- Muunnetaan PNG BMP-muotoon.
- Muunna BMP-kuva joukoksi HEX-koodeja.
Muunnetaan PNG BMP-muotoon
Muunna ladattu PNG-kuva BMP-kuvaksi siirtymällä tälle verkkosivustolle ja kuvanmuunnin-osioon ja
- Napsauta avattavaa valikkoa ja valitse
- Muunna BMP: ksi
- Napsauta Siirry
Alla oleva kuva antaa sinulle selkeän kuvan prosessista:
Sinulle esitetään uusi sivu näyttää alla olevalta kuvalta:
- Napsauta Valitse tiedostot -välilehteä ja valitse ladattu kuva
- Kirjoita valinnaisten asetusten paneeliin haluamasi koko (käytämme 128x64 OLED -näyttöä)
- Napsauta Aloita muunnos -painiketta
Sinulle esitetään seuraava sivu ja muutaman sekunnin kuluttua muunnettu kuva ladataan, jos lataus ei ala automaattisesti, napsauta Lataa tiedosto -vaihtoehtoa:
Loistava! Nyt saimme BMP-tiedostomme aikanaan muuntaa se Arduinon luettavaksi HEX-koodiryhmäksi.
Muunna BMP-kuva joukoksi HEX-koodeja
Jos haluat muuntaa ladatun BMP-kuvan HEX-ryhmäksi, siirry tälle verkkosivustolle ja napsauta Työkalut -> image2cpp
Alla oleva kuva antaa sinulle selkeän kuvan prosessista
Sinulle esitetään näyttö, jossa on neljä vaihtoehtoa, ja keskustelemme niistä yksityiskohtaisesti
- Valitse kuva
- Kuva-asetukset
- Esikatselu
- Tuotos
Valitse kuvaosa
Tässä osiossa valitsemme kuvan, jonka olemme juuri muuntaneet BMP: ksi:
Kuva-asetukset
Tässä osiossa asetamme kankaan koon, taustavärin, skaalaus- ja keskiasetukset vaadittuun arvoon.
- Kankaan koko (asetukseksi asetettiin 128x64, koska käytämme OLED-mallia, jonka pikselitiheys on 128x64).
- Tässä osassa voimme asettaa OLED: n taustavärin (valitsemme sen valkoiseksi).
- Skaalaus on asetettu alkuperäiseen kokoon.
- Napsauta lopuksi keskiasennossa vaaka- ja pystysuuntaisia valintaruutuja, jolloin kuva näkyy keskellä.
Alla oleva kuva antaa sinulle selkeän kuvan
Esikatseluosio
Esikatseluosassa voimme nähdä selkeän esikatselun kuvasta, joka näkyy OLED: ssä alla olevan kuvan mukaisesti:
Tuotososio
Luo ja kopioi tuotososassa tuotettu koodi noudattamalla seuraavia vaiheita:
- Koodin tulostusmuoto (asetamme sen Arduino-koodiksi, koska käytämme sitä).
- Tunniste (tämä vaihtoehto asettaa tuotetun taulukon nimen, jätämme sen oletusarvoksi sellaisenaan).
- Piirtotila (Piirtotilan asetukseksi asetettiin vaaka).
- Ja lopuksi napsautamme generoi koodi -painiketta, joka tuottaa lopullisen tulostuskoodin.
Alla oleva kuva antaa sinulle selkeän kuvan
Piirikaavio
Kuvan alla on esitetty Arduino Nanon ja SSD1306: n väliset liitännät:
Arduino Nano Pin |
OLED PIN |
GND |
GND |
3,3 V |
VCC |
D13 |
CLK |
D11 |
MOSI |
D8 |
RES |
D9 |
SDC |
D10 |
CCS |
Koodin selitys
Kuvan näyttämiseksi OLED: ssä tarvitsemme Arduino-kirjaston apua, jonka voi ladata tältä GitHub-arkistolta. Lataa kirjaston U8glib-1.19.1.zip- versio ja tuo se Arduino IDE -ohjelmaan. Jos olet uusi Arduino-käyttäjä, käytä tämän linkin apua, joka kuvaa kirjaston tuontia. Seuraavassa osiossa muokkaamme koodia näyttämään aiemmin luotu HEX-taulukko OLED: lle. Täydellinen koodi toimivalla videolla on tämän artikkelin lopussa. Koodin yksityiskohtainen selitys on annettu alla.
Lisää ensin ladattu kirjasto.
#include "U8glib.h" // mukaan lukien U8glib-kirjasto
Määritä sitten kaikki OLED: lle tarvittavat nastat.
#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 D9: ODine OLED_CSS_PIN 8 // Arduino Digital Pin D13: ICP1
Alusta u8glib-kirjasto.
U8GLIB_SH1106_128X64 u8g (OLED_CLK_PIN, OLED_MOSI_PIN, OLED_RES_PIN, OLED_SDC_PIN, OLED_CSS_PIN);
Sisällytä sitten luotu kuvaryhmä.
const uint8_t circuitdigest PROGMEM = {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, 0xff, 0xff, 0xff, 0xff, 0xff0, 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, 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, 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, …….. ………..
Piirtotoimintoa käytetään piirtämään bittikarttakuva (QR-koodi) OLED: lle u8g.drawBitmapP-toiminnon avulla.
void draw (void) {// graafiset komennot koko näytön uudelleen piirtämiseksi tulisi sijoittaa tähän u8g.drawBitmapP (0, 0, 16, 64, circuitdigest); ….. ……
Kutsu lopuksi loop () -toiminnossa kaikki tarvittavat toimenpiteet kuvan rakentamiseksi OLED: lle
void loop () {u8g.firstPage (); // Kutsu tähän menettelyyn merkitsee kuvasilmukan alkua. tee {piirtää (); } while (u8g.sextPage ()); // Kutsu tähän menettelyyn merkitsee kuvasilmukan rungon loppua. // rakennetaan kuva uudelleen jonkin viiveen jälkeen (1000); }
Kun olet suorittanut koodin, liitä Arduino tietokoneen USB-porttiin, valitse COM-portti ja lataa koodi. Jos olet tehnyt kaiken oikein, OLED: ssä on toimiva näyttö, jossa on QR-koodi.
Toivottavasti pidit tästä projektista ja nautit oppimasta jotain uutta, jatka lukemista, jatka oppimista ja näen sinut ensi kerralla.