ELEKTROTEHNI ˇ SKI VESTNIK 89(5): 233–238, 2022 IZVIRNI STROKOVNI ˇ CLANEK Temperaturna sledljivost transporta izdelkov z uporabo termokromnih pigmentov v pametni QR-kodi Rok Hrovat, Aleksander Seˇ sek Univerza v Ljubljani, Fakulteta za elektrotehniko, Trˇ zaˇ ska cesta 25, 1000 Ljubljana, Slovenija E-poˇ sta: rh8968@student.uni-lj.si, aleksander.sesek@fe.uni-lj.si Povzetek. V ˇ clanku sta predstavljeni QR-koda in njena zmoˇ znost, da ohrani zapisane informacije tudi, ˇ ce je del kode poˇ skodovan, oziroma v naˇ sem primeru nadomeˇ sˇ cen s funkcionaliziranim podroˇ cjem. To podroˇ cje lahko vsebuje razliˇ cne vrste podatkov, ki so prav tako kodirani. Ker so QR-kode vse pogosteje uporabljene kot sodobna oblika oznaˇ cevanja izdelkov, spletnih povezav, menijev ipd., lahko ta dodaten podatek vsebuje pomembne dinamiˇ cne informacije o izdelku. V ˇ clanku je opisana ena od moˇ znosti, ki omogoˇ ca nadzor temperaturnega profila okolja, po katerem se neki izdelek giblje. To informacijo se vkljuˇ ci v pametno QR-kodo. Ena izmed reˇ sitev za temperaturno sledenje so temperaturno odvisni pigmenti, ki so lahko izdelani za razliˇ cna temperaturna obmoˇ cja. Predstavljena je QR-koda z dodanim sredinskim barvnim obmoˇ cjem, ustrezen ˇ citalnik za tako kodo in prenos informacij na streˇ znik za morebitno nadaljnjo uporabo. Kljuˇ cne besede: QR-koda, ˇ citalnik, ESP32-CAM, barvno kodiranje, termokromizem Tracking the product temperature in transportation using thermochromatic pigments in a smart QR Code The paper presents a QR code and its ability to maintain the information even when part of the code is damaged, or, in our case, replaced with a functionalized field, which carries different types of information which are additionaly coded. As the QR code is used for advanced product labels, links, menus, etc., an additional information provides an important dynamic information about the product. The main issue solved in the paper is how to keep the temperature track of the product environment and incorporate it in the QR code. The solution for temperature tracking are temperature irreversible pigments functionalized for different temperature ranges. The paper presents the QR code with a functionalized central area, reader of such code and information transfer to the server for future processing. 1 UVOD V industriji je nadzor vseh vrst izdelkov zelo pomemben, ˇ se posebej pri mnoˇ ziˇ cni proizvodnji. Zato je bilo razvitih veˇ c nadzornih sistemov, od katerih je ˇ crtna koda ena izmed najbolj razˇ sirjenih. Sreˇ camo jo tako rekoˇ c na vsakem izdelku, ki je danes proizveden. ˇ Crtna koda je enostavna reˇ sitev za pridobivanje informacij o izdelku, vendar ne more podajati dinamiˇ cnih informacij, kot so na primer temperatura skladiˇ sˇ cenja, vlaga, osvetljenost itd., predvsem ˇ ce gre za pokvarljive izdelke v prehranski industriji. Na kakovost izdelkov vpliva mnogo razliˇ cnih de- javnikov, kot so vlaga, osvetlitev, mehanska obremeni- tev, temperatura in podobno. Pri transportu izdelkov je treba zagotoviti ustrezne pogoje za ohranitev njegove Prejet 14. november, 2022 Odobren 2. december, 2022 neoporeˇ cnosti. Eno od najveˇ cjih teˇ zav pri tem pred- stavlja zagotavljanje temperaturne sledljivosti gibanja izdelka, saj ta ne sme preseˇ ci doloˇ cenega temperaturnega obmoˇ cja. Tipiˇ cen primer je odmrznitev zamrznjenih ˇ zivil in na primer pregretje ali zamrznitev zelenjave med tran- sportom. Nedopustno je, da bi se globoko zamrznjeno ˇ zivilo med transportom odtalilo, pozneje pa bi bilo zopet zamrznjeno in prodano. Reˇ sitev je v sledljivosti tempe- rature ˇ zivila v prodajni verigi, ki je vidna na embalaˇ zi izdelka. Ideja je nadomestitev klasiˇ cne ˇ crtne kode s QR- kodo, ki poleg osnovnih podatkov o produktu (kot so vr- sta izdelka, datum in kraj proizvodnje ipd.) vsebuje tudi dodatno informacijo o temperaturnem podroˇ cju gibanja izdelka v obliki barve. S tem zagotovimo sledljivost in hkrati nadzor nad temperaturnim profilom okolja, po katerem se je izdelek gibal. V ˇ clanku predstavljeno reˇ sitev lahko uporabimo pri vseh izdelkih, obˇ cutljivih za temperaturne variacije. 2 PAMETNA QR-KODA QR-koda je nadgradnja klasiˇ cnih ˇ crtnih kod, ki lahko vsebujejo le relativno majhno ˇ stevilo informacij (pri- bliˇ zno 20 alfa numeriˇ cnih znakov). QR-koda z dodatkom nove dimenzije ustvari dvodimenzionalen matriˇ cni zapis, ki ima veliko veˇ cjo gostoto informacij na dani povrˇ sini. Koliˇ cina vsebovanih podatkov je odvisna od razliˇ cnih standardov in parametrov. V osnovi je QR-koda razpo- reditev ˇ crnih toˇ ck na beli podlagi v kvadratni obliki. Po- znamo veˇ c razliˇ cic QR-kod, ki se delijo glede na velikost in poslediˇ cno maksimalno moˇ zno koliˇ cino podatkov, ki jih koda lahko vsebuje: od najmanjˇ se razliˇ cice 1, ki ima 21× 21 slikovnih toˇ ck, pa vse do razliˇ cice 40, ki lahko 234 HROV AT, SE ˇ SEK vsebuje najveˇ c informacij, v njej pa so podatki kodirani v matriki velikosti 177× 177 slikovnih toˇ ck. Slika 1: Razliˇ cice QR-kode: na levi razliˇ cica 1 (21× 21), v sredini razliˇ cica 2 (25× 25) in desno razliˇ cica 40 (177× 177) Odliˇ cna lastnost QR-kode je tudi odpravljanje napak. Za zagotovitev pravilnosti prebranih informacij obsta- jajo doloˇ ceni razredi toleranc in korekcijskih faktor- jev. S pomoˇ cjo Reed-Solomonovega algoritma se pri ustvarjanju QR-kode v njo dodajo kontrolna gesla, ki omogoˇ cajo branje informacije tudi iz delno zakrite ali poˇ skodovane QR-kode. Ta pri najviˇ sji stopnji H znaˇ sa do 30 % neberljive povrˇ sine QR-kode. Ta ”poˇ skodovani”del pa mora biti zunaj obveznih polj, ki so namenjena informaciji o poziciji, poravnavi, ipd., ki bralniku QR- kode omogoˇ cajo, da jo prepozna. Na to lastnost lahko gledamo tudi drugaˇ ce in sicer tako, da lahko v QR- kodi lahko mesta, ki niso nujno potrebna za razpoznavo osnovnih informacij, uporabimo za dodatno funkcijo. Taka ”pametna”QR-koda poleg osnovnega zapisa podat- kov vkljuˇ cuje ˇ se npr. barvno kodo [1], [2], [3]. 3 BARVNA KODA V del QR-kode, izbrano je bilo podroˇ cje na sredini, kjer zagotovo ni obveznih sestavnih delov QR-kode, se je dodalo funkcionalizirano barvno podroˇ cje, kjer se je informacija o temperaturnem obmoˇ cju gibanja izdelka shranila v odtenek doloˇ cene barve. Primer take kode je prikazan na sliki 2. Slika 2: QR-koda z osrednjim funkcionaliziranim podroˇ cjem Barva v kvadratu je izbrana glede na najboljˇ so sporoˇ cilno vrednost za ˇ cloveka, glede na temperaturno oboˇ cje ali alarmno sporoˇ cilo. Tako so modri odtenki najveˇ ckrat izbrani za hladnejˇ se barve, zeleni za podroˇ cje okoli sobne temperature ter rdeˇ ci za viˇ sje temperature ter alarme. Najveˇ cji izziv je nameˇ sˇ canje funkcionaliziranih barvnih podroˇ cij na izdelke, ker morajo biti ti nameˇ sˇ ceni v (za izdelek) ustreznem temperaturnem podroˇ cju. To pomeni za zmrznjene izdelke v hladilnicah oziroma mora biti funkcionalizacija tam ustrezno aktivirana. Za izdelavo pigmentov se izkoriˇ sˇ ca posebna lastnost doloˇ cenih materialov in sicer termokromizem. To je le eden izmed ˇ stevilnih tipov kromizma. Predstavlja proces spreminjanja odtenka barve pigmenta zaradi iz- postavljenosti doloˇ ceni temperaturi. Ta sprememba je lahko povratna ali nepovratna. Pri povratnem termo- kromizmu se izpostavljenemu delu ob povratku na iz- hodiˇ sˇ cno temperaturo povrne tudi osnovna barva, pri nepovratnem pa se sprememba barve ohrani. ˇ Se veˇ c, iz odtenka barve lahko pri doloˇ cenih pigmentih natanˇ cno doloˇ cimo doseˇ zeno temperaturo. To lastnost v praksi izkoriˇ sˇ camo za aplikacije, kot na primer na skodelicah kot pokazatelja temperature napitka, pri baterijah kot indikatorja napolnjenosti baterije in podobno. V uporabi sta dve glavni skupini materialov, ki se izrabljajo za termokromni uˇ cinek, prva so tekoˇ ci kristali in druga so levko barvila [4], [5]. Z razvojem temperaturno odvisnih pigmentov se v Sloveniji ukvarja podjetje Mycol d.o.o. [6], ki po ˇ zelji uporabnika razvije, testira in predlaga najugodnejˇ so reˇ sitev za specifiˇ cno transportno pot izdelka. Tam se je tudi porodila ideja za razvoj pametne QR-kode in bralnika, ki bi omogoˇ cal zajem in nadalnjo uporabo podatkov ter po potrebi odziv operaterja. 4 SISTEM ZA ZAZNAVO IN OBDELAVO PAMETNE QR-KODE Glavni del sistema je razvojna platforma ESP32-CAM [7], [8], prikazana na sliki 3. Ta vsebuje dvojedrni procesor (frekvenca ure do 240 MHz), vgrajen vmesnik za kamero, WiFi in Bluetooth ter ˇ se mnogo drugih funkcionalnosti. Uporabljena kamera OV2640 omogoˇ ca najveˇ cjo loˇ cljivost 2 megapiksla (1600× 1200 pikslov) in podpira razliˇ cne slikovne formate [9]. Za programi- ranje je bilo uporabljeno razvojno okolje Arduino [10]. Sistem, ki deluje kot roˇ cni optiˇ cni ˇ citalnik, poleg prej omenjenega modula ESP32 vsebuje ˇ se druge pomembne dele: • Zaslon diagonale 1,3 palca z 128× 64 slikovnimi pikami za prikaz rezultata zajema. Za upravljanje prikaza zaslon uporablja gonilnik SSD1306 ter ko- munikacijski protokol I2C v naˇ cinu ”slave only”, saj zaslon podatke za prikaz le sprejema, ne pa oddaja. Protokol I2C potrebuje 2 podatkovni liniji. To sta SCK (Serial clock), po kateri se prenaˇ sa TEMPERATURNA SLEDLJIVOST TRANSPORTA IZDELKOV Z UPORABO TERMOKROMNIH PIGMENTOV V PAMETNI QR 235 Slika 3: ESP32-CAM modul ura, ter SDA (Serial Data), po kateri se serij- sko prenaˇ sajo podatki. Za enostavno upravljanje zaslona sta uporabljeni dve vnaprej pripravljeni knjiˇ znici. Prva je Adafruit SSD1306 za upravljanje zaslonov na osnovi gonilnika SSD1306 [11], druga je Adafruit-GFX-Library za enostavno ustvarjanje grafiˇ cnih elementov na zaslonu [12]. • Osvetlitev je realizirana s tremi visoko svetilnimi LED-diodami. Te za napajanje potrebujejo napetost 3,2-3,4 V ter prenesejo tok do 350 mA. Oddajajo svetlobo hladno bele barve (7000-9000 K) in sevajo 100-110 lumnov. Tri diode so vezane zaporedno za najveˇ cjo skupno moˇ c 3 W. Za napajanje sve- tleˇ cih diod potrebujemo vir konstantnega toka, za kar je uporabljen tokovni regulator LD24AJTA na osnovi integriranega vezja PT4115 [13], ter nekaj dodanh pasivnih elementov. Ta nam poleg vira konstantnega toka omogoˇ ca tudi upravljanje pulzno ˇ sirinske modulacije za nastavljanje ˇ zelene svetilnosti. • Napajanje je zagotovljeno z dvema akumulator- skima baterijama INR18650-29E. Nazivna kapa- citeta posamezne baterije je 2.850 mAh, nazivna napetost pa 3,7 V . Bateriji sta vezani vzporedno, s ˇ cimer se ohrani napetost, podvoji pa se skupna ka- paciteta sistema, kar omogoˇ ca daljˇ si ˇ cas delovanja naprave med posameznimi polnjenji. Za polnjenje baterij potrebujemo konstantno napetost 4,2 V ter kontroliran tok. Za ta namen je za polnjenje baterij dodano vezje na osnovi namenskega integriranega vezja TC40-56A [14]. Za enostavnejˇ so uporabo vezje vsebuje tudi prikljuˇ cek tipa USB-C, prek katerega lahko z ustreznim pretvornikom polnimo baterije. Poleg funkcije polnjenja pa to vezje vse- buje ˇ se nekatere funkcije za zaˇ sˇ cito baterij, kot so izklop polnjenja ob napetosti baterije 4,2 V , omejitev najveˇ cjega izhodnega toka ter zaˇ sˇ cita proti prekomernim izpraznjenjem baterij. Ker ESP32 po- trebuje 5 V stabilne napetosti, to zagotovimo iz baterijske napetosti 3,7-4,2 V s pomoˇ cjo vezja MT3608 [15], ki deluje kot napetostni pretvornik navzgor. Podobno z istim vezjem storimo tudi za napajanje svetleˇ cih diod, ki za delovanje potrebu- jejo 12 V napetosti. • Preostali sestavni deli, kot so gladilni kondenzator 1000 µF na napajalnih linijah, stikalo za vklop in izklop napajanja, ki je vezano med baterije, ter napajalni prikljuˇ cek ESP32-CAM in gumb v kombinaciji s ”pull-down” uporom. Ob pritisku na ta gumb se na ustreznem prikljuˇ cku ESP32-CAM pojavi visok napetostni nivo (5 V), ki sproˇ zi branje QR-kode. Vsi naˇ steti moduli so bili testirani loˇ ceno, nato pa povezani v sistem ter nameˇ sˇ ceni v zato naˇ crtano in s 3D-tiskalnikom izdelano plastiˇ cno ohiˇ sje, predstavljeno na sliki 4. Slika 4: Ohiˇ sje roˇ cnega bralnika QR-kode - pogled zgoraj Bralnik ima tik pod zaslonom stikalo za vklop. Ob vklopu se bralnik inicializira in se prek omreˇ zja Wi-Fi poveˇ ze na streˇ znik ter stanje sistema sporoˇ ci na zaslonu. S tem je pripravljen na zajem slike QR-kode. Ob pritisku na tipko, tik pod stikalom za vklop, se sproˇ zi vklop osvetlitve, nato pa ESP32 prek kamere zajema sliko, neposredno pod bralnikom. V primeru pravilne detekcije QR-kode izklopi zajem in osvetlitev ter predstavi zajete podatke na zaslonu, hkrati pa podatke posreduje tudi na streˇ znik. Na sliki 5 je predstavljen spodnji pogled bralnika s svetleˇ cimi diodami in kamero na sredini. Slika 5: Ohiˇ sje roˇ cnega bralnika QR-kode - pogled spodaj 5 DELOVANJE Blokovna shema sistema, prikazana na sliki 6, predsta- vlja osnovne sestavne dele bralnika in komunikacijo s 236 HROV AT, SE ˇ SEK streˇ znikom. Slika 6: Blok shema sistema Osnovna funkcija, ki jo mora bralnik opravljati, je torej razpoznava in dekodiranje vsebine QR-kode. Zato je uporabljena prosto dostopna programska knjiˇ znica ESP32QRCodeReader [16], ki zdruˇ zuje tudi nekatere druge knjiˇ znice, npr. za zajem slike, razpoznavanje vzor- cev in matematiˇ cne operacije. Ta knjiˇ znica je sluˇ zila za osnovo, treba jo je bilo le prilagoditi naˇ sim potrebam. Prvi del programske kode in knjiˇ znice sluˇ zi za ini- cializacijo sistema. Najprej se ponastavi zaslon, nato nanj izpiˇ semo pozdravno sporoˇ cilo. Sledijo nastavitev parametrov pulzno ˇ sirinske modulacije za krmiljenje osvetlitve s svetleˇ cimi diodami, deklaracija prikljuˇ cka za gumb in zagon povezave z omreˇ zjem Wi-Fi. V kodi podamo uporabniˇ sko ime in geslo lokalnega omreˇ zja ter se v zanki povezujemo na omreˇ zje, dokler nam to ne uspe. Na koncu se ponastavi ˇ se kamera. V primeru napake pri opisanih korakih, operater to informacijo prejme prek zaslona, sistem pa je treba ponovno zagnati. Ena izmed teˇ zav je, da se pri osnovnih nastavitvah na kameri izbere ˇ crno-bel zajem slike loˇ cljivosti 320× 240 slikovnih toˇ ck, saj to zahteva uporabljena knjiˇ znica za razpoznavo QR-kode. Knjiˇ znica zato potrebuje dodatno razˇ siritev za barvni zajem, kar izbrana kamera omogoˇ ca. Izbran je bil YUV zapis, ki poleg barvnih kanalov vsebuje tudi loˇ cen kanal Y za intenziteto posamezne slikovne toˇ cke, ki je pomembna za zaznavo temperaturne spremembe pigmenta. Obstojeˇ ca knjiˇ znica je bila ustre- zno nadgrajena za tak zajem. Ta format uporablja barvni prostor Y-Cb-Cr (ang.Y-luma, Chroma blue, Chroma red). Pri zajemu pa je bila narejena ˇ se poenostavitev, saj je ˇ cloveˇ sko oko mnogo bolj obˇ cutljivo za spre- membe v osvetljenosti kot za spremembe v barvi, zato barve lahko podvzorˇ cimo. Dopolnjena oznaka takega formata je YUV422, kar pomeni, da sta barvna kanala U in V podvzorˇ cena s faktorjem 2 - dve sosednji slikovni toˇ cki si delita barvni komponenti U in V , komponenta Y pa ostaja unikatna za vsako slikovno toˇ cko. To pomeni, da sta za posamezno slikovno toˇ cko potrebna le dva podatka. Zajem slike v izbranem for- matu v programski kodi doloˇ cimo pri ponastavitvi ka- mere z izbiro cameraConfig.pixel_format = PIXFORMAT_YUV422. Primer razdelitve osnovne slike na kanale YUV je predstavljen na sliki 7. Slika 7: Primer barvne slike v formatu YUV ter posamezni kanali Pri zajemu slike se torej ustvari tabela z dolˇ zino enako visina× sirina× 2, kjer faktor 2 predstavlja dva podatka na slikovno toˇ cko. Primer podatkov je prikazan na sliki 8. Slika 8: Zaporedje podatkov pri formatu YUV422. Iz predstavljenih podatkov je treba izluˇ sˇ citi sivinsko sliko, ki jo kot osnovo uporablja funkcija za razpoznavo QR-kode, kar enostavno izvedemo tako, da uporabimo vsak drug podatek iz zgoraj prikazane tabele. To je v kodi izvedeno z zanko, ki pregleda vse elemente tabele in vsak drug element prepiˇ se v novo tabelo. V programski kodi je ta pretvorba realizirana na naslednji naˇ cin: size_t new_len = fb1->len/2; uint8_t * buf_grey = (uint8_t * ) malloc( new_len); camera_fb_t fb_grey_struct = {buf_grey, new_len, fb1->width, fb1->height, PIXFORMAT_GRAYSCALE, fb1->timestamp}; camera_fb_t * fb = &fb_grey_struct; for(int i=0; ibuf[i] = fb1->buf[2 * i]; } fb1 je struktura, ki vsebuje podatke za barvno sliko, fb pa je struktura, ki vsebuje podatke za sivinsko sliko. Nato poskuˇ sa algoritem iz sivinske slike dekodirati vsebino QR-kode. ˇ Ce mu to ne uspe, to prek zaslona javi uporabniku ter postopek ponovi, dokler je gumb za zajem pritisnjen oziroma dokler ni QR-koda uspeˇ sno dekodirana. ˇ Ce je bilo dekodiranje uspeˇ sno, pa se po- datki shranijo, algoritem nadaljuje prepoznavo barvnega dela. Ta se zaˇ cne tako, da se najprej doloˇ ci, kje na sliki dejansko je QR-koda, saj se pri dekodiranju zaznajo tudi koordinate poloˇ zaja QR-kode. Te podatke ponovno uporabimo in s povpreˇ cenjem koordinat x in y doloˇ cimo poloˇ zaj srediˇ sˇ ca QR-kode na sliki, kjer je dejansko funkcionalizirano podroˇ cje. Te koordinate srediˇ sˇ ca nato uporabimo in iz tabele elementov osnovne barvne slike izberemo podatke Y , U ter V , v podroˇ cju 9× 10 v okolici srediˇ sˇ ca. S tem je zaznava barve nekoliko bolj zanesljiva. Izsek kode, ki poiˇ sˇ ce indekse podatkov slikovnih toˇ ck v zgornji vrstici izbranega pravokotnika, je naslednji: TEMPERATURNA SLEDLJIVOST TRANSPORTA IZDELKOV Z UPORABO TERMOKROMNIH PIGMENTOV V PAMETNI QR 237 uint32_t indeksi[180]; for(int j = 0; j<20; j++){ indeksi[j] = center_index-640 * 4-4 * 2+j; } Spremenljivka center_index hrani lokacijo ele- mentov enodimenzionalne tabele surovih podatkov slike, ki smo jo izraˇ cunali iz koordinat x in y srediˇ sˇ ca QR- kode. Od te vrednosti najprej odˇ stejemo 640× 4, kar pomeni, da se premaknemo za 4 vrstice navzgor (640 = 320 slikovnih toˇ ck v vrstici× 2 byta na slikovno toˇ cko), nato pa odˇ stejemo ˇ se4× 2, da se premaknemo na zgornjo levo slikovno toˇ cko v pravokotniku. Podobno naredimo ˇ se za preostale vrstice. Po konˇ canem postopku imamo v tabeli indeksi lokacijo vseh podatkov, ki jih bomo uporabili za razpoznavo barve. S pomoˇ cjo te tabele najprej izluˇ sˇ cimo posamezne komponente Y , U in V . Zopet pregledamo tabelo in iz nje izberemo naslove podatkov, ki nas zanimajo, nato pa te naslove uporabimo pri iskanju dejanskih podatkov YUV iz tabele v medpomnilniku. Pri tem upoˇ stevamo vrstni red podatkov, kot je bilo prikazano na sliki 8. for(int i = 0; i<90; i++){ Y[i] = fb1->buf[(indeksi[2 * i])]; } for(int i = 0; i<45; i++){ U[i] = fb1->buf[(indeksi[4 * i+1])]; V[i] = fb1->buf[(indeksi[4 * i+3])]; } Pred tem je seveda treba pripraviti tabele ustreznih velikosti, ki bodo te podatke hranile. Iz teh podatkov pa zdaj doloˇ cimo povpreˇ cje, ki bo predstavljalo povpreˇ cno barvo na opazovanem podroˇ cju. S tem zmanjˇ samo more- bitne motnje na sliki ter ublaˇ zimo vpliv neenakomernosti osvetlitve. Rezultat je za laˇ zje razumevanje operaterja oz. uporabnika pretvorjen v format RGB, informacija o intenziteti pa ostaja na voljo za nadaljnjo obdelavo. Rezultat zajema prikaˇ zemo na zaslonu bralnika, prav tako pa ga poˇ sljemo tudi na streˇ znik, kamor se shrani tudi originalna zajeta barvna slika. Primer izpisa na zaslonu bralnika je prikazan na sliki 9. Slika 9: Zaslon z informacijo o izdelku in zajeti barvi Naloga streˇ znika je sprejemanje in hramba podatkov, prebranih iz QR-kod. Uporabljen streˇ znik je osnovan na platformi Raspberry Pi [17], potrebne skripte pa so napisane v jeziku PHP. ˇ Citalnik prek povezave Wi-Fi z zahtevami HTTP POST poˇ silja podatke na streˇ znik. Raspberry Pi v vlogi streˇ znika mora biti povezan v isto lokalno omreˇ zje, na katero je povezan tudi bralnik. Po vsakem uspeˇ snem dekodiranju QR-kode bralnik najprej poskuˇ sa vzpostaviti komunikacijski kanal s streˇ znikom. ˇ Ce je pri tem uspeˇ sen, se lahko zaˇ cnejo nadaljnji koraki branja in shranjevanja. Poleg uporabniˇ skih podatkov mo- ramo na streˇ znik poslati tudi nekatere druge informacije, da zna pravilno interpretirati prihajajoˇ ce podatke. Te informacije zapiˇ semo v glavo, ki jo loˇ cimo na dva dela - na glavo za tekst ter glavo za sliko. V tekstovni datoteki so zapisani podatki iz QR-kode. V delu glave, ki bo namenjen prenosu tega besedila, pa vnaprej pripravimo prostor za dodatno vrstico za zapis zajete barvne kom- ponente RGB. Nato se izvede dejanski prenos podatkov na streˇ znik z zahtevami HTTP POST . Po besedilu se prenesejo ˇ se dejanski neobdelani podatki slike v formatu YUV , ki se shranijo v lastno datoteko za predvideno nadaljnjo obdelavo. Na strani streˇ znika potrebujemo skripto, ki ustrezno obdela zahteve za poˇ siljanje podatkov. Najprej si pri- pravimo spremenljivke, ki vsebujejo ciljno mapo, imena datotek, datum in ˇ cas. Nato s serijo if stavkov preve- rimo, ali datoteka z enakim imenom ˇ ze obstaja, ali je datoteka prevelika in ali je datoteka ustreznega tipa. ˇ Ce karkoli ni pravilno, se to zazna in datoteka se ne shrani. ˇ Ce pa so vsi podatki pravilni, pa nadaljujemo z zapisom besedilne in slikovne datoteke loˇ ceno. Del kode za zapis tekstovne datoteke je naslednji: file_put_contents($target_file_text, " --------".date(’Y.m.d_H:i:s’, $datum)." --------\n", FILE_APPEND); $text = file_put_contents($target_file_text , file_get_contents($_FILES[" information"]["tmp_name"]), FILE_APPEND ); file_put_contents($target_file_text, "\n", FILE_APPEND); if($text == FALSE){ echo "Sorry, there was an error updating your .txt file"; } else{ echo basename($_FILES["information"][" name"]). " has been updated."; } Zgornji odsek kode deluje v povezavi z de- lom glave, ki skrbi za tekstovni del. Ob prvem prenosu se na streˇ zniku ustvari tekstovna datoteka QR-information.txt, v katero se zapiˇ sejo sprejeti podatki, to so podatki, prebrani iz QR-kode ter RGB- koda barve srediˇ sˇ cnega funkcionaliziranega podroˇ cja. Za laˇ zji pregled podatkov se dodata ˇ se datum in ˇ cas branja, v katerem je bila QR-koda zajeta. Ob vsakem nadaljnem uspeˇ snem sprejemu podatkov na streˇ znik se novi podatki dodajo v isto besedilno datoteko. Nato se v novo datoteko, ki ji v ime prav tako dodamo datum in ˇ cas zajema, zapiˇ se ˇ se surove barvne podatke slike QR-kode. 238 HROV AT, SE ˇ SEK Da si lahko te slike dejansko ogledamo, streˇ znik opravi ˇ se pretvorbo surovih podatkov slike v JPG format. Ob vsakem ponovnem sprejemu podatkov streˇ znik najprej preiˇ sˇ ce mapo z datotekami, ki vsebujejo surove podatke o sliki, ter doloˇ ci najnovejˇ so datoteko. To nato s pomoˇ cjo orodja ImageMagick [18] pretvorimo v obiˇ cajno JPG- sliko, ki si jo po potrebi lahko ogledamo. Veˇ c o pametni QR-kodi, uporabljeni programski kodi ter delovanju sistema kot celote, je opisano v diplom- skem delu [19]. 6 NADALNJI KORAKI Predstavljen sistem za zajem je zgolj osnova za nadaljnji razvoj. Ena od glavnih nalog v prihodnosti je zagotoviti homogeno osvetlitev z visokim CRI faktorjem, ki nam zagotavlja osvetlitev, primerljivo z naravnim virom - soncem. Prav tako bi moral bralnik zagotavljati konstan- tno oddaljenost in enak kot za enako osvetlitev vseh kod. Veliko omejitev prinaˇ sa tudi loˇ cljivost kamere, ki nam trenutno ne omogoˇ ca uporabe QR-kod viˇ sjih razliˇ cic. Prav tako pa bi zmogljivejˇ si senzor kamere omogoˇ cil natanˇ cnejˇ si zajem barve in njenega odtenka. Trenutno za vse funkcije bralnika izkoriˇ sˇ camo le eno jedro sistema, na voljo pa sta dve jedri. Nalogo zajema in poˇ siljanja bi lahko loˇ cili in s tem zagotovili prenos veˇ cje koliˇ cine podatkov, brez prekinitev in napak, predvsem v primeru izpada brezˇ ziˇ cne povezave ter uporabe kamere z viˇ sjo loˇ cljivostjo. Trenutno uporabljen streˇ znik, opravlja le osnovno nalogo hranjenja podatkov. Ta bi lahko podatke tudi aktivno obdeloval in se ob napakah odzval z alarmi. Predvsem pa bi morali podatke na streˇ zniku zaˇ sˇ cititi pred vdorom in krajo oziroma pred uniˇ cenjem. Ne nazadnje je moˇ zno nadgraditi tudi samo QR-kodo - z dodatnimi informacijami na preostalih mogoˇ cih mestih in jo izpopolniti, da bi zaznavala tudi pravilnost nanosa pigmenta ter se uporabljala za druge namene z drugaˇ ce funkcionaliziranimi elementi (npr. magnetni zapis, osve- tlitev, vlaga ipd.). 7 ZAKLJU ˇ CEK V ˇ clanku je predstavljena pametna QR-koda, ki ima funkcionaliziran osrednji del z barvnim poljem. Polje se v primeru uporabe na produktu prelepi z realnim pigmentnim nanosom, ki se odzove na spremembo tem- perature (termokromizem). Informacija o temperaturnem gibanju izdelka ni le v barvi, temveˇ c predvsem v nje- nem odtenku, zato sta zajem in obdelava take kode zahtevnejˇ sa. Za branje je bil razvit roˇ cni bralnik z LED- osvetlitvijo, ki omogoˇ ca zajem slike QR-kode in njeno obdelavo. Iz slike razbere podatke o izdelku ter loˇ ceno informacijo o barvi in odtenku. Vse zajete informacije se prikaˇ zejo na zaslonu bralnika, zajeta osnovna slika ter podatki pa so hkrati posredovani tudi streˇ zniku. Tako QR-koda kot bralnik sta ˇ ze pripravljena za osnovno uporabo, treba ju je ˇ se nadgraditi za optimizacijo zajema in zaˇ sˇ cito podatkov. ZAHVALA Zahvaljujem se podjetju MyCol za informacije v zvezi s termokromnimi pigmenti. LITERATURA [1] QR Code Error Correction, QRStuff.com, 2011. [2] T.J. Soon, “QR code,” Synthesis journal, pp. 59–78, 2008. [3] S. Tiwari, “An Introduction to QR Code Technology,” 2016 International Conference on Information Technology (ICIT), pp. 39–44, 2016. [4] U. Bartol, Izdelava pametne embalaˇ ze z vkljuˇ citvijo indikatorja ˇ casa in temperature, Univerza v Ljubljani, Naravoslovno- tehniˇ ska fakulteta, 2020. [5] O. Pan´ ak, B. ˇ Sumiga, B. ˇ Sumiga, P. Straˇ zar, A. Seˇ sek, M. Klanjˇ sek Gunde, “Colour measurements of thermochromic indicators with various colouration temperatures,” Proceedings of the 2nd International Conference on Circular Packaging: Slovenj Gradec and online, 9th and 10th of September 2021, pp. 261–268, 2021. [6] MyCol – Temperaturni nadzor vsakega ˇ zivila po ˇ zeljah vsakega kupca, http://www.mycol.si/sl/home/. [7] ESP32-CAM, http://www.ai-thinker.com/pro view-24.html. [8] ESP32-CAM Development Board, ht- tps://media.digikey.com/pdf/Data [9] “OV2640: Specs, Camera, Datasheet & Alternative (2022 Re- port),” Arducam, https://www.arducam.com/ov2640/. [10] “Arduino Software,” https://www.arduino.cc/en/software. [11] “Adafruit SSD1306,” ht- tps://github.com/adafruit/Adafruit SSD1306. [12] “Adafruit GFX Library,” https://github.com/adafruit/Adafruit- GFX-Library. [13] “30V , 1.2A Step-down High Brightness LED Driver with 5000:1 Dimming,” https://www.electroschematics.com/wp- content/uploads/2014/07/PT4115E-datasheet.pdf. [14] “TC4056A datasheet,” https://datasheetspdf.com/pdf/1309136- /FUMANELECTRONICS/TC4056A/1. [15] “MT3608 datasheet,” ht- tps://datasheetspdf.com/pdf/909246/AEROSEMI/MT3608/1. [16] “ESP32QRCodeReader,” ht- tps://github.com/alvarowolfx/ESP32QRCodeReader. [17] “Buy a Raspberry Pi 3 Model B,” Ltd, Raspberry Pi hhttps://www.raspberrypi.com/products/raspberry-pi-3-model-b/. [18] “PHP: ImageMagick - Manual,” ht- tps://www.php.net/manual/en/book.imagick.php. [19] R. Hrovat, Razvoj in detekcija pametne QR kode, Univerza v Ljubljani, Fakulteta za elektrotehniko, 2022. Rok Hrovat je ˇ student prvega letnika druge stopnje ˇ studija elektronike na Fakulteti za elektrotehniko, Univerze v Ljubljani. Njegovo podroˇ cje raziskovanja zajema predvsem elektronska vezja, mikrokrmilnike ter streˇ znike Raspbery Pi. Aleksander Seˇ sek je docent na Fakulteti za elektrotehniko, Univerze v Ljubljani. Njegovo podroˇ cje delovanja in raziskovanja so predvsem elektronski sistemi za zajem in obdelavo senzorskih signalov, analogna in meˇ sana integrirana vezja ter visokofrekvenˇ cni elementi ter sistemi.