- Kaya, Ano ang QR Code na Ito Pa rin?
- Bumubuo ng iyong sariling QR code
- Pag-convert ng PNG sa format na BMP
- I-convert ang imahe ng BMP sa isang hanay ng mga HEX code
- Diagram ng Circuit
- Paliwanag sa Code
Ang "Mabilis na Tugon" na code o dinaglat bilang QR code ay naging isang mahalagang bahagi ng aming mga digital na buhay, malamang na pamilyar na pamilyar sa kanila sa ngayon ay malamang na gumagala ka sa paligid ng iyong lokal na grocery store, o baka ikaw ay pagbabasa sa iyong paboritong libro, o kahit na posible na ikaw ay gumagawa ng isang pagbabayad sa online gamit ang Google Pay, PhonePe o Paytm, o pag-surf sa web, atbp. (Sa palagay ko maaari akong magpatuloy sa mga halimbawa huh?) at nagkataong dumating ka sa kabila ng kakatwang hitsura na parisukat na bagay na ito at naisip, ano pa rin ang parisukat na bagay na ito at kung hindi mo… mabuti, huwag mag-alala na mangyari ito sa lalong madaling panahon, kaya upang maunawaan ang paksa nang mas mabuti na gagawin natin nakakatuwang maliit na proyekto kasama ang Arduino at OLED at i-demystify ang mga sumusunod na bagay:
- Pangunahing Konsepto ng QR code.
- Kung paano ito gumagana.
- Paano gumawa ng iyong sariling QR code gamit ang Arduino.
- At sa wakas, ipakita ito sa isang OLED (SSD1306) na screen.
Kaya, Ano ang QR Code na Ito Pa rin?
Ang QR code (Quick Response code) ay isang matrix 2D code para sa pagbabasa ng data sa mataas na bilis, na binuo ni DENSO WAVE noong 1994 para sa industriya ng automotive ng Japan. Ang isang QR code ay nasiksik ang data nang mas mahusay kumpara sa karaniwang barcode, upang makamit ito ay gumagamit ito ng apat na standardized mode ng pag-encode (bilang, alphanumeric, byte / binary, at kanji), ang teknolohiya ay ginawang "bukas na mapagkukunan" ie magagamit para sa lahat kaya, ito mabilis na nakakuha ng katanyagan. Makabuluhang bentahe ng QR Codes kaysa sa maginoo na mga barcode ay mas malaki ang kapasidad ng data at mataas na pagpapaubaya sa kasalanan.
Paano gumagana ang QR Code?
Ang mga QR code (at iba pang mga data matrix code) ay idinisenyo upang mabasa ng mga espesyal na tool, hindi ng mga tao, kaya may isang tukoy na halaga lamang na maaari nating maunawaan sa pamamagitan ng pag-aaral ng biswal, bagaman ang bawat code ay magkakaiba sa iba't ibang mga paraan bagaman naglalaman ang mga ito ng ilang mga kagiliw-giliw na pareho mga tampok sa pamamagitan ng pagmamasid sa circuitdigest.com QR code pag-aaralan namin ang ilan sa mga ito
- Mga pattern ng Finder: Ang mga malalaking kahon ng parisukat na may isang solidong kahon sa loob ng tatlong mga sulok ng code ay ginagawang madali upang kumpirmahing ito ay isang QR code dahil tatlo lamang ang mga ito, kaya't halata na sa kung aling paraan nakatuon ang code.
- Huwaran sa Pag-align: Tinitiyak nito na maaaring mabasa ang orientation ng code.
- Pattern ng tiyempo: tumatakbo ito nang pahalang at patayo sa pagitan ng tatlong mga pattern ng tagahanap , gamit ang mga linyang ito na maaaring matukoy ng mambabasa ang laki ng code.
- Impormasyon sa Bersyon: Kasalukuyang mayroong 40 magkakaibang bersyon ng pamantayan ng QR code, tinutukoy ng seksyong ito ng code ang bersyon ng QR code na ginagamit, para sa marketing na bersyon 1-7 na ginamit nang normal.
- Impormasyon sa Format: Ang mga kasosyo sa format ay may impormasyon tungkol sa pagpapaubaya sa error at masking data.
- Lugar ng Data: Ang seksyon na ito ng code ay naglalaman ng lahat ng mga elemento ng data at error code sa pagwawasto.
- Quit Zone: Ang spacing sa bawat QR code ay sapilitan upang maiba ang code mula sa mga paligid nito.
Ang imahe sa ibaba ay magbibigay sa iyo ng isang malinaw na ideya tungkol sa code
Ang iba pang mga seksyon ng code ay data at redundancy code.
Mayroong isang bilang ng iba pang mga tampok at kumplikadong mga paksa na hindi ko tatalakayin sa tutorial na ito, kung nais mong basahin sa karagdagang mga detalye tungkol sa QR code mangyaring sundin ang tutorial na QR Code ni Tan Jin Soon, EPCglobal Singapore Council. Synthesis Journal, 2008.
Ang Pagtutukoy ng QR Code
Laki ng simbolo |
Min. 21x21 cell - Max. 177x177 cell (na may pagitan ng 4 na cells) |
|
Uri ng Impormasyon at Dami |
Mga Tauhan ng Numero |
7,089 na mga character nang maximum |
Mga titik, Palatandaan |
4,296 na mga character nang maximum |
|
Binary (8 bit) |
2,953 na mga character nang maximum |
|
Kanji Character |
1,817 na mga character nang maximum |
|
Kahusayan ng conversion |
Numero ng Mga Character Mode |
3.3 cells / character |
Alphanumeric / Mode ng Mga Palatandaan |
5.5 cells / character |
|
Binary (8 bit) Mode |
8 cells / character |
|
Kanji Charities Mode (13 bit) |
13 cells / character |
|
Pagwawasto ng error pagpapaandar |
Antas L |
Tinatayang 7% ng simbolo ng lugar na naibalik sa maximum |
Antas M |
Tinatayang 15% ng lugar ng simbolo na naibalik sa maximum |
|
Antas Q |
Tinatayang 25% ng lugar ng simbolo na naibalik sa maximum |
|
Antas H |
Tinatayang 30% ng lugar ng simbolo na naibalik sa maximum |
|
Pag-andar ng pag-link |
Posibleng nahahati sa 16 na simbolo sa maximum |
Bumubuo ng iyong sariling QR code
Sundin ang mga hakbang na nabanggit sa ibaba upang makabuo ng iyong sariling QR code, sa halimbawang ito, gagawa kami ng isang QR code ng aming minamahal na website ng Circuit Digest
Upang makabuo ng isang QR code pumunta sa website na ito at kung titingnan mo sa tuktok na bahagi ng website maaari mong makita ang isang listahan ng mga pagpipilian, sa tutorial na ito ay bumubuo kami ng isang QR code para sa isang URL, kaya pupunta kami sa
- Mag-click sa tab na URL at i-paste ang URL para sa Circuit Digest sa seksyong Enter URL.
- Mag-click sa i-save.
- Magbigay ng isang pangalan ng file para sa output file.
- Piliin ang PNG bilang aming ginustong format ng file.
- at i-click ang i-save.
Ang imahe sa ibaba ay magbibigay sa iyo ng isang malinaw na ideya tungkol sa proseso
Ang aming pinakamamahal na microcontroller na "Arduino" ay hindi gaanong matalino na maaari lamang itong makatipon ng hilaw na imahe ng PNG at ipinapakita ito sa display na OLED. Kaya, upang maipakita ang QR code sa OLED kailangan naming sundin ang ilang mga simpleng hakbang at i-convert ang imahe ng PNG sa isang bitmap array na nababasa ng Arduino. Ang pag-convert na ito ay dati naming nagawa habang ini-interfaced ang SSD1306 OLED sa Arduino at ang interface ng Graphical LCD sa Arduino. Nag-interfaced din kami ng SSD1306 OLED sa Raspberry Pi, ESP32, NodeMCU, at maraming iba pang mga microcontroller. Ang pag-convert ng bitmap array ay maaaring gawin sa ibaba ng dalawang mga hakbang:
- Pag-convert ng PNG sa format na BMP.
- I-convert ang imahe ng BMP sa isang hanay ng mga HEX code.
Pag-convert ng PNG sa format na BMP
Upang mai-convert ang na-download na imahe ng PNG sa imahe ng BMP, pumunta sa website na ito at sa seksyon ng converter ng imahe at
- Mag-click sa dropdown menu at piliin ang
- I-convert sa BMP
- I-click ang Pumunta
Ang imahe sa ibaba ay magbibigay sa iyo ng isang malinaw na ideya tungkol sa proseso:
Ipapakita sa iyo ng isang bagong pahina na katulad ng larawan sa ibaba:
- Mag-click sa tab na Piliin ang Mga File at piliin ang na-download na imahe
- Sa Opsyonal na mga setting, i-type ng panel ang iyong nais na laki (gumagamit kami ng isang 128x64 OLED)
- Mag-click sa Start button ng conversion
Ipapakita sa iyo ang sumusunod na pahina at pagkatapos ng ilang segundo ay mai-download ang iyong na-convert na imahe kung hindi awtomatikong magsisimula ang pag-download sa pag-download ng iyong pagpipilian sa file:
Malaki! Ngayon namin nakuha ang aming BMP file nito oras upang i-convert ito sa isang array ng HEX code nababasa ng isang Arduino.
I-convert ang imahe ng BMP sa isang hanay ng mga HEX code
Upang mai-convert ang na-download na imahe ng BMP sa isang hanay na HEX, pumunta sa website na ito at mag-click sa Mga Tool -> image2cpp
Ang imahe sa ibaba ay magbibigay sa iyo ng isang malinaw na ideya tungkol sa proseso
Ipapakita sa iyo ang isang screen na mayroong apat na pagpipilian at tatalakayin namin ang mga ito sa mga detalye
- Piliin ang imahe
- Mga Setting ng Imahe
- Preview
- Paglabas
Piliin ang seksyon ng imahe
Sa seksyong ito pipiliin namin ang imahe na na-convert namin sa BMP:
Seksyon ng Mga Setting ng Imahe
Sa seksyong ito, itatakda namin ang laki ng canvas, kulay ng background, pag-scale at mga pagpipilian sa gitna sa aming kinakailangang halaga.
- Laki ng canvas (itinakda namin sa 128x64 dahil gumagamit kami ng isang OLED na may 128x64 pixel density).
- Sa seksyong ito, maitatakda namin ang kulay ng background ng OLED (pinili namin ito upang maging puti).
- Ang pag-scale ay nakatakda sa orihinal na laki.
- Sa wakas, sa gitnang pagpipilian na mag-click sa pahalang at patayong mga checkbox, gagawin nitong lumitaw ang imahe sa gitna.
Ang imahe sa ibaba ay magbibigay sa iyo ng isang malinaw na ideya
Suriin ang Seksyon
Sa seksyon ng preview maaari naming makita ang isang malinaw na preview ng imahe na ipapakita sa OLED tulad ng ipinakita sa ibaba:
Seksyon ng Output
Sa seksyon ng output ay bubuo kami at kopyahin ang nabuong code, upang gawin ito sundin ang mga hakbang sa ibaba:
- Format ng output ng code (itinakda namin ito bilang Arduino code dahil gumagamit kami ng isa).
- Identifier (itinatakda ng pagpipiliang ito ang pangalan para sa nabuong array naiwan naming default bilang ito).
- Draw mode (Itinakda namin ang pagpipilian ng draw mode sa pahalang).
- At sa wakas, nag-click kami sa pindutan ng makabuo ng code na ito ay makakabuo ng huling output code.
Ang imahe sa ibaba ay magbibigay sa iyo ng isang malinaw na ideya
Diagram ng Circuit
Ipinapakita sa ibaba ng imahe ang mga koneksyon sa pagitan ng Arduino Nano at SSD1306:
Arduino Nano Pin |
OLED PIN |
GND |
GND |
3.3V |
VCC |
D13 |
CLK |
D11 |
MOSI |
D8 |
RES |
D9 |
SDC |
D10 |
CCS |
Paliwanag sa Code
Upang maipakita ang imahe sa OLED kailangan namin ng tulong ng isang library ng Arduino, na maaaring ma-download mula sa GitHub repository na ito. I-download ang bersyon ng U8glib-1.19.1.zip ng library at i-import ito sa Arduino IDE. Kung bago ka sa Arduino kumuha ng tulong ng link na ito na naglalarawan kung paano mag-import ng isang silid-aklatan. Sa seksyon sa ibaba ay babago namin ang code upang maipakita ang dating nabuong HEX array sa OLED. Ang kumpletong code na may gumaganang video ay ibinibigay sa pagtatapos ng artikulong ito. Ang Detalyadong Paliwanag ng code ay ibinigay sa ibaba.
Una, isama ang na-download na library.
# isama ang "U8glib.h" // kasama ang U8glib library
Pagkatapos tukuyin ang lahat ng kinakailangang mga pin para sa 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 D9: OC1A OLED_CSS_PIN 8 // Arduino Digital Pin D13: ICP1
Pasimulan ang u8glib Library.
U8GLIB_SH1106_128X64 u8g (OLED_CLK_PIN, OLED_MOSI_PIN, OLED_RES_PIN, OLED_SDC_PIN, OLED_CSS_PIN);
Pagkatapos Isama ang nabuong hanay ng imahe.
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, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x1 0x87, 0xf0, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x0c, 0x01, 0x87, 0xf0, 0x00, 0x0f, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0x0 0xff, 0xff, 0xff, 0xf3, 0xff, 0x8f, 0xf0, 0x7f, 0x31, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0x8f, 0xf, 0xf3, 0xff, 0x8f, 0xf 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, 0xf3, 0x01, 0x8f, 0xb1, 0x80, 0x33, 0x81, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x01, 0x8f, 0xc 0 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, …….. ………..
Ginagamit ang paggana ng pagguhit upang iguhit ang bitmap na imahe (QR code) sa OLED sa tulong ng pagpapaandar ng u8g.drawBitmapP.
void draw (void) {// graphic command na muling idisenyo ang kumpletong screen ay dapat ilagay dito u8g.drawBitmapP (0, 0, 16, 64, circuitdigest); ….. ……
Sa wakas, sa pag- andar ng loop () , tawagan ang lahat ng kinakailangang mga pamamaraan upang mabuo ang imahe sa OLED
void loop () {u8g.firstPage (); // Isang tawag sa pamamaraang ito, nagmamarka sa simula ng loop ng larawan. gawin ang {gumuhit (); } habang (u8g.nextPage ()); // Isang tawag sa pamamaraang ito, minamarkahan ang dulo ng katawan ng loop ng larawan. // muling itayo ang larawan pagkatapos ng ilang pagkaantala ng pagkaantala (1000); }
Matapos makumpleto ang code, i-plug ang Arduino sa USB port ng iyong computer, piliin ang iyong COM port at i-upload ang code. Kung nagawa mo nang tama ang lahat magkakaroon ka ng isang gumaganang display na may isang QR code sa OLED.
Inaasahan kong nagustuhan mo ang proyektong ito at nasiyahan sa pag-aaral ng bagong bagay, patuloy na basahin ang patuloy na matuto at makikita kita sa susunod.