- Tātad, kāds ir šis QR kods?
- Ģenerē pats savu QR kodu
- PNG konvertēšana uz BMP formātu
- Konvertējiet BMP attēlu uz HEX kodu masīvu
- Ķēdes shēma
- Kods Paskaidrojums
"Ātrās atbildes" kods vai saīsināts kā QR kods ir kļuvis par būtisku mūsu digitālās dzīves sastāvdaļu, iespējams, ka jūs jau esat zemapziņā tos pārzinājis, iespējams, jau esat klaiņojis pa vietējo pārtikas veikalu vai varbūt esat izlasot savu iecienīto grāmatu vai pat, iespējams, veicat tiešsaistes maksājumu ar Google Pay, PhonePe vai Paytm, vai sērfojat tīmeklī utt. (Es domāju, ka es varētu turpināt un turpināt ar piemēriem?), un jūs nejauši esat ieradies pāri šai dīvainā izskata kvadrātiskajai lietai un domai, kas vispār ir šī kvadrātveida lieta, un, ja jums tā nav… labi, neuztraucieties, ka tas notiks agrāk vai vēlāk, tāpēc, lai labāk izprastu tēmu, mēs to darīsim jautrs, mazs projekts ar Arduino un OLED un demistificē šādas lietas:
- QR koda pamatjēdziens.
- Kā tas strādā.
- Kā izveidot savu QR kodu, izmantojot Arduino.
- Visbeidzot, parādiet to OLED (SSD1306) ekrānā.
Tātad, kāds ir šis QR kods?
QR kods (Ātrās atbildes kods) ir matricas 2D kods datu lasīšanai lielā ātrumā, ko DENSO WAVE izstrādāja 1994. gadā Japānas autobūves nozarei. QR kods ļoti efektīvi saspiež datus, salīdzinot ar standarta svītrkodu, lai to panāktu, tiek izmantoti četri standartizēti kodēšanas režīmi (ciparu, burtciparu, baitu / bināro un kanji), tehnoloģija tika padarīta par “atvērto avotu”, ti, pieejama visiem, tāpēc tā ļoti ātri ieguva popularitāti.Nozīmīgas QR kodu priekšrocības salīdzinājumā ar parastajiem svītrkodiem ir lielāka datu ietilpība un augsta kļūdu tolerance.
Kā darbojas QR kods?
QR kodi (un citi datu matricas kodi) ir paredzēti lasīšanai ar īpašiem rīkiem, nevis cilvēkiem, tāpēc ir tikai noteikta summa, ko mēs varam saprast, vizuāli pētot, lai gan katrs kods dažādos veidos ir atšķirīgs, lai gan tajos ir daži interesanti kopīgi funkcijas, ievērojot circuitdigest.com QR kodu, mēs izpētīsim dažus no tiem
- Meklētāja raksti: Lielas kvadrātveida kastes ar cietu lodziņu iekšpusē koda trīs stūros ļauj viegli apstiprināt, ka tas ir QR kods, jo tie ir tikai trīs, tāpēc ir diezgan skaidrs, ka tādā veidā kods ir orientēts.
- Līdzināšanas modelis: Tas padara pārliecinātu, ka neatkarīgi no orientācijas kodu var lasīt.
- Laika modelis: Tas darbojas horizontāli un vertikāli starp trim meklētāja modeļiem , izmantojot šīs līnijas, lasītājs var noteikt koda lielumu.
- Informācija par versiju: Pašlaik ir 40 dažādas QR kodu standarta versijas, šī koda sadaļa nosaka QR koda versiju, kas tiek izmantota parasti izmantotajai mārketinga versijai 1-7.
- Informācija par formātu: formāta partneriem ir informācija par kļūdu toleranci un datu maskēšanu.
- Datu apgabals: Šajā koda sadaļā ir visi datu elementi un kļūdu labošanas kods.
- Iziet no zonas: atstarpes katrā QR kodā ir obligātas, lai atšķirtu kodu no tā apkārtnes.
Zemāk redzamais attēls sniegs skaidru priekšstatu par kodu
Citas koda sadaļas ir dati un atlaišanas kods.
Ir vairākas citas funkcijas un sarežģītas tēmas, par kurām es šajā apmācībā neapspriedīšu, ja vēlaties izlasīt sīkāku informāciju par QR kodu, lūdzu, izpildiet šo QR koda apmācību, ko sagatavoja Tan Jin Soon, EPCglobal Singapore Council. Sintēzes žurnāls, 2008.
QR koda specifikācija
Simbola lielums |
Min. 21x21 šūna - maks. 177x177 šūna (ar 4 šūnu intervālu) |
|
Informācijas veids un apjoms |
Ciparu rakstzīmes |
Ne vairāk kā 7089 rakstzīmes |
Alfabēti, zīmes |
Maksimums 4296 rakstzīmes |
|
Binārais (8 biti) |
Maksimums 2 953 rakstzīmes |
|
Kanji rakstzīmes |
Ne vairāk kā 1817 rakstzīmes |
|
Pārveidošanas efektivitāte |
Ciparu rakstzīmju režīms |
3,3 šūnas / raksturs |
Burtciparu / zīmju režīms |
5,5 šūnas / raksturs |
|
Binārais (8 bitu) režīms |
8 šūnas / rakstzīme |
|
Kanji rakstzīmju režīms (13 biti) |
13 šūnas / raksturs |
|
Kļūdu labošana funkcionalitāte |
L līmenis |
Aptuveni Maksimāli atjaunoti 7% no simbola laukuma |
M līmenis |
Aptuveni Maksimāli atjaunoti 15% no simbola laukuma |
|
Q līmenis |
Aptuveni Maksimāli atjaunoti 25% no simbola laukuma |
|
H līmenis |
Aptuveni Maksimāli atjaunoti 30% no simbola laukuma |
|
Saistošā funkcionalitāte |
Maksimāli iespējams sadalīt 16 simbolos |
Ģenerē pats savu QR kodu
Izpildiet tālāk minētās darbības, lai ģenerētu pats savu QR kodu. Šajā piemērā mēs izveidosim QR kodu mūsu mīļajā Circuit Digest vietnē
Lai ģenerētu QR kodu, dodieties uz šo vietni un, aplūkojot vietnes augšējo pusi, varat redzēt iespēju sarakstu, šajā apmācībā mēs ģenerējam QR kodu vietrādim URL, tāpēc mēs
- Noklikšķiniet uz cilnes URL un sadaļā Ievietot URL ielīmējiet Circuit Digest URL.
- Noklikšķiniet uz Saglabāt.
- Piešķiriet izejas faila faila nosaukumu.
- Atlasiet PNG kā vēlamo faila formātu.
- un noklikšķiniet uz Saglabāt.
Zemāk esošais attēls sniegs skaidru priekšstatu par procesu
Mūsu visdārgākais mikrokontrolleris “Arduino” nav tik inteliģents, lai varētu vienkārši apkopot neapstrādātu PNG attēlu un parādīt to OLED displejā. Tātad, lai parādītu QR kodu OLED, mums ir jāievēro dažas vienkāršas darbības un PNG attēls jāpārvērš par bitkartes masīvu, ko var lasīt Arduino. Šo pārveidošanu mēs iepriekš esam veikuši, saskaroties SSD1306 OLED ar Arduino un saskaroties ar Graphical LCD ar Arduino. Mēs arī sasaistījām SSD1306 OLED ar Raspberry Pi, ESP32, NodeMCU un daudziem citiem mikrokontrolleriem. Bitmap masīva pārveidošanu var veikt, veicot divas darbības:
- PNG konvertēšana uz BMP formātu.
- Konvertējiet BMP attēlu uz HEX kodu masīvu.
PNG konvertēšana uz BMP formātu
Lai konvertētu lejupielādēto PNG attēlu uz BMP attēlu, dodieties uz šo vietni un attēlu pārveidotāja sadaļā un
- Noklikšķiniet uz nolaižamās izvēlnes un atlasiet
- Konvertēt uz BMP
- Noklikšķiniet uz Go
Zemāk redzamais attēls sniegs skaidru priekšstatu par procesu:
Jums tiks parādīta jauna lapa izskatās šādi:
- Noklikšķiniet uz cilnes Izvēlēties failus un atlasiet lejupielādēto attēlu
- Iestatījumos Papildiespējas panelis ierakstiet vēlamo izmēru (mēs izmantojam 128x64 OLED)
- Noklikšķiniet uz pogas Sākt pārveidošanu
Jums tiks parādīta šāda lapa, un pēc dažām sekundēm konvertētais attēls tiks lejupielādēts, ja lejupielāde nesākas automātiski, noklikšķiniet uz opcijas Lejupielādēt failu:
Lieliski! Tagad mēs saņēmām savu BMP failu, lai to pārveidotu par Arexino lasāmu HEX kodu masīvu.
Konvertējiet BMP attēlu uz HEX kodu masīvu
Lai konvertētu lejupielādēto BMP attēlu HEX masīvā, dodieties uz šo vietni un noklikšķiniet uz Rīki -> image2cpp
Zemāk esošais attēls sniegs skaidru priekšstatu par procesu
Jums tiks parādīts ekrāns, kurā ir četras iespējas, un mēs tos detalizēti apspriedīsim
- Atlasiet attēlu
- Attēla iestatījumi
- Priekšskatījums
- Rezultāts
Atlasiet attēla sadaļu
Šajā sadaļā mēs atlasīsim attēlu, kuru tikko pārveidojām par BMP:
Sadaļa Attēlu iestatījumi
Šajā sadaļā mēs iestatīsim audekla izmēru, fona krāsu, mērogošanu un centra opcijas uz mūsu nepieciešamo vērtību.
- Audekla izmērs (mēs iestatījām uz 128x64, jo mēs izmantojam OLED ar 128x64 pikseļu blīvumu).
- Šajā sadaļā mēs varam iestatīt OLED fona krāsu (mēs izvēlamies to baltu).
- Mērogošana ir iestatīta uz sākotnējo izmēru.
- Visbeidzot, centrālajā opcijā noklikšķiniet uz horizontālajām un vertikālajām izvēles rūtiņām, tādējādi attēls parādīsies centrā.
Zemāk esošais attēls sniegs jums skaidru priekšstatu
Priekšskatījuma sadaļa
Priekšskatījuma sadaļā mēs varam redzēt skaidru attēla priekšskatījumu, kas tiks parādīts OLED, kā parādīts zemāk:
Izejas sadaļa
Izejas sadaļā mēs ģenerēsim un kopēsim ģenerēto kodu, lai to izdarītu, rīkojieties šādi:
- Koda izvades formāts (mēs to iestatījām kā Arduino kodu, jo mēs to izmantojam).
- Identifier (šī opcija nosaka ģenerētā masīva nosaukumu, mēs to atstājam pēc noklusējuma).
- Zīmēšanas režīms (mēs iestatījām zīmēšanas režīma opciju uz horizontālu).
- Visbeidzot, mēs noklikšķinām uz pogas Ģenerēt kodu, kas ģenerēs gala izvades kodu.
Zemāk esošais attēls sniegs jums skaidru priekšstatu
Ķēdes shēma
Zem attēla parādīti saskarnes savienojumi starp Arduino Nano un SSD1306:
Arduino Nano tapa |
OLED PIN |
GND |
GND |
3.3V |
VCC |
D13 |
CLK |
D11 |
MOSI |
D8 |
RES |
D9 |
SDC |
D10 |
CCS |
Kods Paskaidrojums
Lai parādītu attēlu OLED, mums nepieciešama Arduino bibliotēkas palīdzība, kuru var lejupielādēt no šīs GitHub repozitorija. Lejupielādējiet bibliotēkas U8glib-1.19.1.zip versiju un importējiet to Arduino IDE. Ja esat jauns Arduino lietotājs, izmantojiet šīs saites palīdzību, kurā aprakstīts, kā importēt bibliotēku. Zemāk esošajā sadaļā mēs modificēsim kodu, lai OLED parādītu iepriekš ģenerēto HEX masīvu. Pilnīgs kods ar darba video ir norādīts šī raksta beigās. Tālāk ir sniegts detalizēts koda skaidrojums.
Vispirms iekļaujiet lejupielādēto bibliotēku.
#include "U8glib.h" // ieskaitot U8glib bibliotēku
Pēc tam definējiet visas OLED nepieciešamās tapas.
#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: OLED_CSS_PIN 8 // Arduino Digital Pin D13: ICP1
Inicializējiet u8glib bibliotēku.
U8GLIB_SH1106_128X64 u8g (OLED_CLK_PIN, OLED_MOSI_PIN, OLED_RES_PIN, OLED_SDC_PIN, OLED_CSS_PIN);
Pēc tam iekļaujiet ģenerēto attēlu masīvu.
const uint8_t ķēdes digitālie 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, 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, 0xff, 0xf3, 0xff, 0x8f, 0xf0, 0x7f, 0x31, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xfx, 0xfx 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, 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, …….. ………..
Funkcija Zīmēt tiek izmantota, lai zīmētu OLM bittkartes attēlu (QR kodu) ar funkcijas u8g.drawBitmapP palīdzību.
void draw (void) {// grafiskās komandas, lai pārzīmētu visu ekrānu, jānovieto šeit u8g.drawBitmapP (0, 0, 16, 64, circuitdigest); ….. ……
Visbeidzot, funkcija loop () izsauciet visas nepieciešamās procedūras, lai izveidotu attēlu OLED
void loop () {u8g.firstPage (); // Zvans uz šo procedūru iezīmē attēla cikla sākumu. do {izdarīt (); } while (u8g.nextPage ()); // Zvans uz šo procedūru iezīmē attēla cilpas pamatteksta beigas. // attēla atjaunošana pēc nelielas kavēšanās aizkavēšanās (1000); }
Pēc koda pabeigšanas pievienojiet Arduino datora USB pieslēgvietā, atlasiet savu COM portu un augšupielādējiet kodu. Ja esat visu izdarījis pareizi, OLED displejā būs darbojošs displejs ar QR kodu.
Es ceru, ka jums patika šis projekts un jums patika uzzināt kaut ko jaunu, turpiniet lasīt, turpiniet mācīties, un es jūs redzēšu nākamreiz.