• Rezultati Niso Bili Najdeni

Uporaba Wi-Fi senzorjev za doloˇ canje pozicije izdelkov na proizvodnem

N/A
N/A
Protected

Academic year: 2022

Share "Uporaba Wi-Fi senzorjev za doloˇ canje pozicije izdelkov na proizvodnem"

Copied!
63
0
0

Celotno besedilo

(1)

Univerza v Ljubljani

Fakulteta za raˇ cunalniˇ stvo in informatiko

Domen Ramˇsak

Uporaba Wi-Fi senzorjev za doloˇ canje pozicije izdelkov na proizvodnem

traku

DIPLOMSKO DELO

VISOKOˇSOLSKI STROKOVNI ˇSTUDIJSKI PROGRAM PRVE STOPNJE

RA ˇCUNALNIˇSTVO IN INFORMATIKA

Mentor : izr. prof. dr. Patricio Buli´ c

Ljubljana, 2022

(2)

besedilo, slike, grafi in druge sestavine dela kot tudi rezultati diplomskega dela lahko prosto distribuirajo, reproducirajo, uporabljajo, priobˇcujejo javnosti in pre- delujejo, pod pogojem, da se jasno in vidno navede avtorja in naslov tega dela in da se v primeru spremembe, preoblikovanja ali uporabe tega dela v svojem delu, lahko distribuira predelava le pod licenco, ki je enaka tej. Podrobnosti licence so dostopne na spletni strani creativecommons.si ali na Inˇstitutu za intelektualno lastnino, Streliˇska 1, 1000 Ljubljana.

Besedilo je oblikovano z urejevalnikom besedil LATEX.

(3)

Kandidat: Domen Ramˇsak

Naslov: Uporaba Wi-Fi senzorjev za doloˇcanje pozicije izdelkov na proizvo- dnem traku

Vrsta naloge: Diplomska naloga na visokoˇsolskem programu prve stopnje Raˇcunalniˇstvo in informatika

Mentor: izr. prof. dr. Patricio Buli´c

Opis:

V delu naj ˇstudent izdelal sistem, ki omogoˇca doloˇcanje lokacije naprave na delu produkcijskega traka, kjer se izvaja testiranje in omogoˇca lahko pove- zovanje naprave na testno okolje. Uporabi naj mikrokrmilnike z brezˇziˇcnimi zmogljivostnimi, ter programiranje v jezikih C++ in C# za izdelavo pro- gramske knjiˇznice, ki bo omogoˇcala prenos in analizo podatkov ter kontrolo sistema v razliˇcnih okoljih.

Title: Use of Wi-Fi sensors to determine the position of products on the production line

Description:

In this thesis the student should create a system that enables the determining of location of a device on a part of the production line, where testing is done, and enables easy connection of the device to a test environment. He should use micro-controllers with wireless capabilities, as well as programming in C++ and C# languages to create a library that will enable the download and analysis of data, and the control of the system in various environments.

(4)
(5)

Zahvalil bi se svoji druˇzini za podporo, mentorju izr. prof. dr. Patriciu Buli´cu, mentorju inˇz. Blaˇzu Plaskanu, podjetju Gorenje d.o.o. ter vsem drugim sodelavcem in pomoˇcnikom.

(6)
(7)

Kazalo

Povzetek Abstract

1 Uvod 1

2 Uporabljene tehnologije in orodja 3

2.1 Tehnologije . . . 4 2.2 Razvojna orodja . . . 10

3 Sistem za doloˇcanje pozicije 13

3.1 Wi-Fi senzor . . . 17 3.2 Programska knjiˇznica . . . 27 3.3 Testiranje . . . 36

4 Implementacija sistema 39

4.1 Uporaba sistema . . . 40

5 Sklepne ugotovitve 45

Celotna literatura 47

(8)
(9)
(10)

kratica angleˇsko slovensko

JSON JavaScript object notation notacija JavaScript objekta SDK software development kit komplet za razvoj programske

opreme IDE integrated development envi-

ronment

integrirano razvojno okolje USB universal serial bus univerzalni serijsko vodilo LED light-emitting diode svetleˇca dioda

RGB red green blue rdeˇca zelena modra

I/O input/output vhod/izhod

RSA Rivest–Shamir–Adleman AES advanced encryption stan-

dard

napreden ˇsifrirni standard COM communication port komunikacijski vhod FPGA field-programmable gate ar-

ray

terensko programirljiv niz vrat

HTML hyper text markup language jezik za oznaˇcevanje nadbese- dila

SSID service set identifier identifikator nabora storitev MIFA meandered inverted-F an-

tenna

vijugasta obrnjena-F antena UART universal asynchronous

receiver-transmitter

univerzalni asinhroni sprejemnik-oddajnik

RX/TX receive/transmit prejemanje/oddajanje

(11)

Povzetek

Naslov: Uporaba Wi-Fi senzorjev za doloˇcanje pozicije izdelkov na proizvo- dnem traku

Avtor: Domen Ramˇsak

Diplomsko delo je bilo ustvarjeno v sodelovanju s podjetju Gorenje d.o.o., nanaˇsa pa se na notranji projekt v podjetju, t.j. zasnovo sistema za razpo- znavanje lokacije gospodinjskih aparatov ob koncu njihove poti na produk- cijskem traku, za namene testiranja. Zaradi narave naprav je pri izdelavi sistema uporabljen postopek trilateracije z Wi-Fi senzorji. Delo je razde- ljeno na zasnovo, programiranje in testiranje sistema. V diplomskem delu je sprva predstavljen postopek zasnove sistema na podlagi podanih specifika- cij in obrazloˇzena izbira posameznih komponent. Programiranje je potekalo v dveh delih; usposabljanje ESP32 Wi-Fi senzorjev in ustvarjanje program- ske knjiˇznice v jeziku C#. Testiranje sistema je potekalo v fazah, s posto- poma pomembnejˇsimi testi, v realnih okoljih v podjetju Gorenje. Ob koncu diplomskega dela so predstavljeni rezultati kratke testne implementacije v produkcijsko linijo.

Kljuˇcne besede: Wi-Fi, produkcija, pozicioniranje.

(12)
(13)

Abstract

Title: Use of Wi-Fi sensors to determine the position of products on the production line

Author: Domen Ramˇsak

This thesis was created in collaboration with Gorenje d.o.o., and it relates to an internal project in the company, t.i. the design of a system for recognising the location of household appliances at the end of their way on a production line, for the purpose of testing. Because of the nature of these devices the method used, in the creation of this thesis, was trilateration, using Wi-Fi sensors. The thesis was split into multiple parts: design, programming and testing the system. The first thing presented is the process of designing the system, based on given specifications and explanations for why each system component was selected. Programming took place in two parts; setting up ESP32 Wi-Fi sensors and creating a library using C#. Testing the system took place in phases, with gradually more important tests, in real environ- ments in Gorenje. The results of a short test implementation on a production line were presented at the end of the thesis.

Keywords: Wi-Fi, production, positioning.

(14)
(15)

Poglavje 1 Uvod

Ce primerjamo gospodinjske aparate danes in nekaj desetletij nazaj, lahko ta-ˇ koj opazimo najveˇcjo spremembo – uporaba tako imenovanih ”pametnih zmo- gljivosti” v obliki vgrajenih raˇcunalniˇskih kontrolnih sistemov. Ti omogoˇcajo boljˇsi nadzor nad aparatom, veˇc zmogljivosti in (kljuˇcno za to diplomsko delo) uporabo Wi-Fi omreˇzij za nadzor in upravljanje naprave na daljavo. Takˇsni sistemi naˇceloma povzdignejo kakovost in koliˇcino moˇznega dela z napravo, a hkrati tudi poveˇcajo kompleksnost stroja in njegovih funkcij.

Takˇsne naprave morajo tako preˇziveti veˇc kompleksnih testnih reˇzimov, da se lahko zagotovita pravilno delovanje in kakovost produkta. Skoraj go- tovo je najpomembnejˇse konˇcno testiranje aparatov, ko so v napravo vgrajene vse potrebne komponente in je tako praktiˇcno ista kot tista, ki jo bodo kupili potroˇsniki. Pri tem se pojavi dilema, saj je za natanˇcno testiranje potreben dostop do notranjosti naprave, za kar bi jo bilo treba razstaviti – v zadnjih korakih produkcije je to praktiˇcno nemogoˇce. V pomoˇc tu pridejo Wi-Fi moduli, ki so hrbtenica povezljivosti pri gospodinjskih napravah.

V podjetju Gorenje d.o.o., kjer je avtor dela, kot njihov ˇstipendist, opravil veˇcino dela za diplomsko delo, se prav ti Wi-Fi moduli uporabljajo kot dosto- pna toˇcka za konˇcno testiranje naprav – specifiˇcno vseh notranjih komponent in pred-programiranih postopkov na aparatu. Naˇcrt diplomskega dela je bil ta postopek izboljˇsati in izdelati sistem, ki bo z minimalno prilagoditvijo

1

(16)

uporabljen na veˇc produkcijskih linijah v podjetju.

Predlagani projekt je bil razdeljen na dva dela; programiranje mikrokr- milnikov, ki bi sluˇzili kot Wi-Fi senzorji ter izdelava programske knjiˇznice, ki bi omogoˇcala povezavo in kontrolo nad temi mikrokrmilniki. Zaradi pre- cejˇsnje razˇsirjenosti in lahkotnosti uporabe smo za Wi-Fi senzorje izbrali mikrokrmilnike, ki so osnovani na platformi Arduino.

Zaradi tega so bili tudi cenovno ugodni in lahko dostopni. Programsko knjiˇznico pa smo spisali v ogrodju .Net, ki je primarna nosilka programske opreme v podjetju Gorenje.

V diplomskem delu sprva podrobneje opiˇsemo veˇcino tehnologij in oro- dij, ki smo jih uporabili, ter postopek, kako smo se odloˇcil zanje. Opis dela je razdeljen na programiranje in nastavljanje mikrokrmilnikov, programira- nje knjiˇznice in testiranje celotnega sistema. Na koncu pa je eno poglavje namenjeno implementaciji sistema in preverjanju kako sistem deluje v pro- dukcijskem okolju.

(17)

Poglavje 2

Uporabljene tehnologije in orodja

Delo diplomskega dela je bilo opravljeno v sklopu projekta v navezi s pod- jetjem Gorenje, zaradi ˇcesa smo bili pri izbiri tehnologij nekoliko omejeni – tako z ˇze razvitimi postopki v podjetju kot tudi s cenovnimi pregradami.

Konˇcni izdelek so bo namreˇc (v takˇsni ali drugaˇcni obliki) uporabljal na veˇc mestih znotraj podjetja, zato je bilo potrebno zagotoviti cenovno ugodnost in razˇsirljivost/zamenjavo delov sistema v prihodnosti.

3

(18)

2.1 Tehnologije

2.1.1 Izbira Wi-Fi senzorja

Ker se celoten sistem nanaˇsa na iskanje Wi-Fi signalov, ki jih oddajajo te- stirane naprave, je bilo sprva treba izbrati (in poslediˇcno razviti programsko opremo za uporabo) Wi-Fi senzorje, ki bodo kljuˇcni del celotnega sistema.

Prvotno smo zaˇceli razvoj z uporabo ESP8266 [18] Wi-Fi modulov, ki so danes izjemno razˇsirjeni in razmeroma poceni, a smo hitro ugotovili, da je njihova signalna moˇc premajhna za konsistentno uporabo. Tako smo neko- liko razˇsirili svoje kriterije za Wi-Fi senzor in testirali ter uporabili module ESP32 [17]. Razlike med tema dvema moduloma so predvsem v zmogljivosti procesnega ˇcipa in boljˇse antene, kar je posledica tega da je ESP32 nekoliko novejˇsi.

Ker je na bila tej toˇcki veˇcina naˇsih opazovanj glede signalne moˇci in zane- sljivosti teh dveh modulov dokaj neurejena, smo se odloˇcili narediti empiriˇcno analizo signalne moˇci (ki je izraˇzena v decibelih) in koliˇcine prejetih/poslanih podatkov – s tem smo lahko naredili konkretno primerjavo obeh modulov.

Nastavitev analize je bila preprosta; izmeniˇcno smo na dolˇzini enega me- tra in dveh metrov od izbranega kandidata postavili dva konstantno delujoˇca Wi-Fi modula (istega tipa kot Wi-Fi moduli znotraj veˇcine naprav, na kate- rih naj bi ta sistem deloval). Ta dva modula sta ustvarila vsak svoje omreˇzje (v naˇsem primeru sta to omreˇzji ”HIS-6cd0” in ”HIS-6d5c”).

(19)

Diplomska naloga 5

Slika 2.1: Pribliˇzen diagram razporeda modulov pri testiranju.

Senzor je nato na notranjo nastavljenem intervalu (pribliˇzno 100 ms) opravljal skeniranje brezˇziˇcnih omreˇzij in te podatke poˇsiljal na raˇcunalnik, kjer so bili shranjeni za obdelavo. Vsako uspeˇsno skeniranje je za vsako najdeno omreˇzje vrnilo vrednosti moˇci signala, razpon katerih je od 0 do -100 decibelov (veˇcja vrednost pomeni boljˇsi signal). S testiranjem v praznem delu laboratorija smo zagotovili, da je bila v okolici minimalna koliˇcina signalnega ˇsuma in da sta bila oba senzorja testirana v enakih pogojih. Pridobljene rezultate smo nato programsko obdelali in jih grafiˇcno prikazali.

(20)

Slika 2.2: Primerjava razporeditve signalne moˇci in poslediˇcno natanˇcnosti med ESP32 in ESP8266.

Kot je razvidno iz histograma (os x oznaˇcuje moˇc signala v decibelih, os y pa je koliˇcina meritev), je modul ESP32 veliko boljˇsi, saj so povpreˇcne vrednosti meritev manjˇse, hkrati pa je veliko manj meritev spodletelo (kar se na grafu vidi s koliˇcino niˇcelnih meritev). Lepo je razvidno tudi, da ESP32 zaradi veˇcje natanˇcnosti bolje loˇci dva testna Wi-Fi modula, kar je za namene uspeˇsnega sistema izjemno pomembno. Za glavni senzor v sistemu smo se tako odloˇcili uporabiti modul ESP32.

2.1.2 ESP32

Sploˇsno je ESP32 serija integriranih vezij oziroma mikrokontrolerjev, ki jih je razvilo in ustvarilo kitajsko podjetje Espressif Systems. Glavna funkcio- nalnost teh ˇcipov sta vgrajena Wi-Fi in (pri nekaterih modelih) Bluetooth tehnologije, vse ploˇsˇce pa so osnovane na Xtensa LX6 ali LX7 mikroprocesor- jih, ki so nastavljivi in razˇsirljivi procesorji [12] [13] podjetja Cadence Design Systems [7].

Specifiˇcno smo za to diplomsko nalogo izbrali razvijalsko ploˇsˇco ESP32-

(21)

Diplomska naloga 7 S2-Saola-1 [8], ki je verzija ˇcipa s samo Wi-Fi zmogljivostmi, saj Bluetooth ni bil predviden kot potreben. Prikazana je spodaj (slika 2.3).

Slika 2.3: Izgled ploˇsˇce ESP32-S2-Saola-1.

Izbrana ploˇsˇca vsebuje ESP32-S2-WROVER, generiˇcen Wi-Fi mikrokr- milnik z integriranim ˇcipom ESP32-S2 (ki je razˇsirjen LX7 mikroprocesor) in anteno PCB [17]. To so glavne komponente celotne ploˇsˇce, in edini pribliˇzno konstantni deli pri vseh razliˇcnih verzijah te ploˇsˇce. Ostale komponente (kot so vidne na zgornji sliki) so naˇceloma stranske, namenjene pomoˇci pri ra- zvoju, a so bile prisotne na ploˇsˇcah, ki smo jih uporabljali. Posebnega po- mena so bili I/O prikljuˇcki (ang. ”pins”), ki so omogoˇcili, da je bil lahko vsak senzor prikljuˇcen na lastno napajanje, kar poveˇca stabilnost sistema, saj je za industrijske namene napajanje preko USB prikljuˇcka lahko nezanesljivo.

Dodatno je vkljuˇcena LED–luˇcka, ki pomaga pri preverjanju stanja naprave, ne da bi se bilo potrebno nanjo direktno prikljuˇciti.

Pomembne lastnosti izbrane verzije mikrokrmilnika so predvsem boljˇsa Wi-Fi zmogljivost kot pri ESP8266, nizka poraba energije (do 310 mA pri polni zmogljivosti, ob prikljuˇcku na 5V [9]), dober temperaturni rang (od -40 do +125 stopinj Celzija, kar je pomembno v proizvodnem okolju) in vgrajeni enkripciji RSA in AES, kar pripomore tudi pri povezavi na testne naprave.

(22)

2.1.3 Programska oprema

Programski del projekta je razdeljen na dva dela. To sta izdelava programa, ki se bo izvajal na mikrokrmilniku, in izdelava programske knjiˇznice. Tu se poznajo velike razlike med zmogljivostjo vgrajenega vezja (mikrokrmil- nik) in polnega raˇcunalniˇskega sistema, zato je tudi pristop k programiranju drugaˇcen – med drugim je veliko bolj pomembno pravilno ravnanje s pomnil- nikom, saj moramo za objekte in strukture sami dodeljevati in odstranjevati prostor v pomnilniku.

Arduino SDK/C++

C++ [6] je eden izmed najbolj razˇsirjenih programskih jezikov na svetu (ˇcetrti po indeksu TIOBE) [20]. Ustvaril ga je Bjarne Stroustrup, danski raˇcunalniˇcar, prviˇc pa je izˇsel leta 1985. Glavni namen jezika je bila pred- vsem nadgradnja starejˇsega (a niˇc manj priljubljenega/zmogljivega) jezika C [4] z dodatkov razredov (ang. ”classes”) – tako je jezik postal bolj primeren za razvoj veˇcjih programskih sistemov. Skozi leta se je jezik spreminjal neod- visno od C-ja, trenutni stabilni standard pa je C++20 [21]. Zelo pomemben je tudi v svetu vgrajenih sistemov, prav zaradi okolja Arduino.

Programsko okolje Arduino[1] je skupek knjiˇzic in programske opreme, ki abstrahira nizkonivojske mikrokrmilnike, s ˇcimer tako olajˇsa delo progra- merju in zagotovi veˇcjo mero prenosljivosti kode. Implementira prevajanje kode iz programskega jezika C/C++ in programskih knjiˇznjic Arduino v mi- krokrmilniku razumljivo strojno kodo. Ustvarjalec tega programskega okolja kot veliko priljubljenih mikrokrmilnikov je istoimensko (prvotno italijansko) podjetje Arduino [3], ki razvija in ponuja odprto-kodno programsko in strojno opremo in vodi eno izmed veˇcjih programskih skupnosti in forumov na inter- netu.

(23)

Diplomska naloga 9 C# in .NET ogrodje

C#[5] je sploˇsni programski jezik, razvit v podjetju Microsoft v zaˇcetku 21.

stoletja. Ime izvira iz prvotnega poimenovanja COOL (ang. ”C-like Object Oriented Language”), kar se grobo prevede v ”C-ju podoben objektno orien- tiran programski jezik”, a je jezik veliko bolj visokonivojski kot C ali C++.

Glavna razlika je v tem, da se C in C++ prevedeta direktno v strojno kodo, medtem ko se C# ponavadi ”prevede” v CLR (ang. ”Common Language Runtime”) – virtualno okolje, ki uporablja JIT (ang. ”Just-In-Time) preva- jalnik za prevajanje in izvajanje .NET programov. Takˇsen pristop omogoˇca veˇcjo mero prenosljivosti in aktivno analizo delujoˇcih programov za sprotno prevajanje. Prvotna verzija je izˇsla leta 2002 hkrati s projektom .NET.

Ogrodje .NET(ang ”.NET framework”) [14] je okolje za razvijanje pro- gramov (predvsem na Microsoft platformah), ki vkljuˇcuje programske jezike, orodja in programske knjiˇznice. Ob prvotnem izidu leta 2002 je .NET Fra- mework zajemal vse zmoˇznosti okolja, danes pa je razbit na tri dele: .NET Framework, .NET Core (novejˇsa verzija, ki bo v prihodnosti edina aktivno posodobljena) in Xamarin/Mono (za veˇc-platformski razvoj aplikacij). Spe- cifiˇcno smo pri programskem delu diplomskega dela uporabljali .NET Fra- mework, ki ga uporabljajo v podjetju Gorenje. Arhitektura sistema .NET omogoˇca hkratno razvijanje aplikacije z veˇcimi drugaˇcnimi programskimi je- ziki (tistimi, ki so del ekosistema .NET). Razvijanje na veˇc platformah ureja standard .NET [15], ki omogoˇca da so programi zgrajeni na dogovorjenih API-jih za boljˇso in veˇcjo kompatibilnost.

Git

Kontrola verzije (angl. ”Version control”) je ena izmed najpomembnejˇsih tehnologij pri pisanju kakrˇsnih koli programskih projektov. Poleg zmoˇznosti nadzorovanja vseh sprememb v kodi in dostopa do zgodovine projekta kon- trola verzije deluje kot nekakˇsna rezerva v primeru, da se projekt izgubi. V diplomskem delu smo uporabljaliGit [26], enega izmed najbolj poznanih in razˇsirjenih sistemov za upravljanje z izvorno kodo. Specifiˇcna implementa-

(24)

cija, ki smo jo uporabljali, je bil Github, spletna platforma, ki omogoˇca shra- njevanje preko Git-a na njihovih streˇznikih. Poleg zagotavljanja, da imamo ves ˇcas na voljo kodo za projekt in da lahko ob napakah projekt povrnemo na prejˇsnjo verzijo, nam Git nudi tudi nekakˇsen pregled nad celotnim projektom, za boljˇso orientacijo.

2.2 Razvojna orodja

2.2.1 Arduino IDE

Arduino IDE (angl. ”Integrated Development Environment”)[2] je integri- rano razvojno okolje in urejevalnik kode za razvoj na mikrokrmilnikih, ki pod- pirajo programsko okolje Arduino. Od navadnih urejevalnikov se razlikuje predvsem po oˇzjem namenu – ponuja samo funkcionalnosti, ki so relevantne za povezavo, konfiguracijo, komunikacijo, programiranje in prevajanje kode za mikrokrmilnike. Omogoˇca tudi direktno povezavo na Arduino Cloud, kjer se nahaja veliko programskih knjiˇznic za razne programske funkcionalnosti ali podpora za razne ne-standardne mikrokrmilnike. Obstajata dve verziji razvojnega okolja; urejevalnik z grafiˇcnim vmesnikov ter CLI (angl. ”Com- mand Line Interface”), ki namenjen predvsem integraciji v druge programske projekte, kot je npr. Visual Studio Code.

2.2.2 Visual Studio Code

Code [25] je odprtokodno okolje, namenjeno primarno urejanju kode in bese- dil, ki ga razvija podjetje Microsoft. Zaradi odprte narave in velike skupnosti ima orodje izjemno fleksibilnost, saj obstaja velika koliˇcina programskih do- datkov, ki v urejevalnik dodajo zmogljivosti (kot npr. Arduino IDE CLI).

Je izjemno orodje za programiranje, ker omogoˇca veliko danes nepogreˇsljivih izboljˇsav: barvanje in predvidevanje kode, direktno povezavo na odlagaliˇsˇca Git, vgrajeni terminal, prevajanje in izvajanje veˇc programskih jezikov itd.

Kljub imenu ga je treba loˇciti od Visual Studi-a, ki je zaprtokodna program-

(25)

Diplomska naloga 11 ska oprema.

2.2.3 Visual Studio

Visual Studio [24] (v naˇsem primeru verzija ”Community 2019”) je program- sko okolje za razvijanje aplikacij, primarno v ogrodju .NET. Razvija ga Mi- crosoft in je veliko bolj tehniˇcno dovrˇsena, a tudi bolj programsko in strojno zahtevna programska oprema kot podobno poimenovan Visual Studio Code.

Zelo je osredotoˇcena na programske jezike pod okriljem Microsoft-a (C#, F#, ASP.NET, itd.) in vkljuˇcuje ˇstevilna orodja ne samo za pisanje, urejanje in prevajanje kode, ampak tudi za njeno poslediˇcno preverjanje, razhroˇsˇcevanje in popravljanje. Tako kot Code je izjemno priljubljeno orodje, ˇceravno v nekoliko oˇzjih krogih.

2.2.4 Ostala orodja

Termite Terminal

Termite Terminal [19] smo uporabljali za potrebe preverjanja in iskanja pro- blemov tako v kodi kot v strojni opremi. Omogoˇca povezavo na zunanje naprave preko standardnih COM priklopov (USB), tako za branje kot pisa- nje podatkov.

FPGA vmesniki in Wi-Fi moduli

Za namene testiranja programskih reˇsitev smo uporabljali v podjetju Gorenje razvite Wi-Fi module, prav takˇsne kot so v konˇcnih napravah. Za povezo- vanje na te module je bilo treba uporabiti vmesnike FPGA (angl. ”Field- Programmable Gate Array”), ki jih je razvilo podjetje FTDI (angl. ”Future Technology Devices International”) in so bili sprogramirani za prevajanje signalov iz povezave USB na Wi-Fi module.

(26)

Slika 2.4: Primer povezave vmesnika FPGA na Wi-Fi modul.

Preko kabla USB se preko vmesnika FPGA lahko poveˇzemo direktno na testni Wi-Fi modul (desno na sliki 2.4), s katerim lahko nato upravljamo preko lastniˇskega programa, razvitega v podjetju. Testni moduli se upora- bljajo za vse od simuliranja povezave na omreˇzje, komunikacije s streˇzniki, simuliranje naprave itd..

Sandcastle

Konˇcni izdelek projekta bo namenjen uporabi v podjetju Gorenje, zato je kljuˇcnega pomena tudi zagotavljanje dobre dokumentacije. Diplomsko delo se naˇceloma ˇsteje kot del tega, a bodo v veˇcjo pomoˇc komentarji znotraj kode in opis le-te. Pri tem nam je izjemno pomagalo orodje Sandcastle [27];

ogrodje za avtomatsko ustvarjanje enotnih dokumentacijskih datotek iz kode in komentarjev. Konˇcna dokumentacija je lahko v formatu spletne strani (v obliki HTML datotek s pomoˇcjo ogrodja ASP.NET) ali v obliku Windowsovih datotek za pomoˇc (s konˇcnico .chm).

(27)

Poglavje 3

Sistem za doloˇ canje pozicije

Opredelitev problema

Eno izmed zadnjih postajaliˇsˇc vsake naprave, izdelane na produkcijskem traku v podjetju Gorenje, je konˇcno testiranje celotnega izdelka. Ker se mora nato poslati v prodajo, je testiranje treba izvesti brez predelovanja naprave (torej brez odpiranja, uporaba kablov in drugih fiziˇcnih naprav za odpravljanje napak odpade), zato je oˇcitna reˇsitev tu uporaba vgrajenega Wi-Fi modula za povezavo na glavno ploˇsˇco naprave.

Problem, ki ga sistem, opisan v diplomskem delu namerava reˇsiti, je, kako prepoznati, katera naprava zaseda katero pozicijo na traku in pridobiti njene identifikacijske podatke za povezavo na bazno postajo, ki bo opravila testiranje. Trenutni naˇcin dela je namreˇc roˇcno izklapljanje in vklapljanje testiranih naprav, da se najde pravilno ime omreˇzja (ki ga oddaja naprava), kar je poˇcasno, hkrati pa je nato treba napravo ˇse povezati na bazno postajo preko Wi-Fi, preden se sploh lahko zaˇcne testiranje.

13

(28)

Slika 3.1: Primer razporeditve okolja za testiranje.

Zgornji diagram ilustrira primer razporeditve, kjer je podrobno lociranje naprav zelo pomembno, saj je lahko hkrati delujoˇcih veˇc naprav (vsaka s svojim omreˇzjem), ki jih je treba loˇciti. Pred vsakim parom strojev, ki so v testnem obmoˇcju, je tako par Wi-Fi senzorjev, ki so povezani vsak na svojo bazno postajo, ki njihove podatke analizira in se poveˇze na testirane naprave.

Hkrati obe bazni postaji med sabo komunicirata, da zagotovita pravilnost meritev iz posameznega senzorja – primerjata rezultate svojih senzorjev in izloˇcita tiste, ki ne spadajo znotraj doloˇcenega obmoˇcja (tako bazna postaja v obmoˇcju A ne bo ponesreˇci obdelovala naprave iz obmoˇcja B).

Takˇsna fiziˇcna razporeditev (realni primer na sliki 3.2) je praviloma zelo ugodna za takˇsen sistem, saj je vsak par naprav obrnjen stran od para na nasprotni strani. Ker so Wi-Fi moduli naˇceloma vgrajeni v sprednji del naprave, je tako laˇzje nadzorovati odboj Wi-Fi signalov za pravilne rezultate.

Upoˇstevati je treba tudi primer, kjer povezava med baznimi postajami

(29)

Diplomska naloga 15 zaradi narave testiranja, oziroma vrste naprav ni mogoˇca. Pri takˇsnih raz- poreditvah testne postaje je odboj Wi-Fi signala veliko veˇcji problem. Wi-Fi signal se namreˇc, tako kot vse ostale oblike elektromagnetnega valovanja, pri propagiranju po prostoru od doloˇcenih snovi (tistih z veˇcjo gostoto, kot so npr. kovine) odbija. S tem se lahko signal nehote prenese na mesta, kjer bi moral biti slaboten, ali pa preveˇc razprˇsi tam, kjer bi hoteli, da je moˇcan.

Med vsako bazno postajo so naˇceloma pregrade, tudi postaje blokira ve- liko direktnih signalov, a je preostali del okolja zelo odprt. Zaradi tega je, ˇceprav vsaka postaja testira le eno napravo, vsaki treba dodeliti dva senzorja, da se zagotovi natanˇcnost sistema.

Poleg fiziˇcnega omejevanja je tako zaradi takih razporeditev treba razmi- sliti tudi o programskih omejitvah, saj Wi-Fi senzor na eni strani testnega okolja ne potrebuje podatkov o omreˇzju, ki je preveˇc oddaljeno.

Slika 3.2: Primer dejanskega okolja za testiranje znotraj produkcijskega cen- tra.

(30)

Konˇcni sistem se bo uporabljal na veˇc toˇckah v podjetju, v veˇc razliˇcnih produkcijskih okoljih, ki pa si vse delijo podobno razporeditev naprav in baznih postaj. Kot je prikazano na zgornji sliki, so takˇsna mesta lahko zelo natrpana, za kar sta omejevanje Wi-Fi signalov in njihova primerna analiza kljuˇcnega pomena.

(31)

Diplomska naloga 17

3.1 Wi-Fi senzor

Kljuˇcen del celotnega sistema so ESP32 Wi-Fi senzorji, ki bodo pridobili vse potrebne podatke za nadaljnjo analizo. Za razvoj zadovoljivega modula smo si zadali slednje cilje pri oblikovanju senzorjev:

1. Zmoˇznost doslednega zaznavanja in beleˇzenja Wi-Fi omreˇzij

2. Doloˇcena mera nastavljivosti, sposobnost sprejemanja ukazov in spre- minjanja parametrov brez potrebe po popolnem re-programiranju 3. Zanesljiva komunikacija med senzorjev in bazno postajo (raˇcunalniˇskim

sistemom), z ustaljenim protokolom

4. Zunanji indikatorji stanja senzorja, ki so neodvisni od serijske povezave 5. Sposobnost pridobivanja notranjih podatkov iz testiranih naprav 6. Povezljivost senzorja preko drugega naˇcina kot USB kabel

3.1.1 Fiziˇ cne zmogljivosti

Za vodenje nadaljnjega razvoja je bilo treba pridobiti nekaj podatkov glede sposobnosti modulov. Poleg osnovnih podatkov, ki jih je podal proizvajalec, nas je predvsem zanimala zmogljivost Wi-Fi skeniranja (in povezovanja) pri razliˇcnih naˇcinih modulov. Ti namreˇc podpirajo vhodno napetost 3.3V ali 5V, kar je pomembno zaradi urejanja napajanja v proizvodnjem okolju – podati je treba toˇcne specifikacije ekipam, zadolˇzenim za namestitev sistema.

Zaradi najboljˇse zmogljivosti smo predvideli uporabo napajanja 5V, a smo zaradi drugih moˇznih implementacij, kjer je bolj dosegljiv vir 3.3V, ˇzeleli opraviti preizkus zmogljivosti.

Opravili smo podoben test kot pri primerjanju modulov ESP32 in ESP8266, torej dva testna Wi-Fi modula, ki sta vklopljena, da sta njuni omreˇzji dosto- pni (preko SSID), ter na razdalji enega metra in dveh metrov stran en senzor ESP32. Spodnji rezultati so prikazani v decibelih, kjer je veˇcja vrednost boljˇsi signal.

(32)

Slika 3.3: Primerjava razporeditve signalne moˇci pri razliˇcnih virih napajanja.

Kot je razvidno z grafa, moˇc Wi-Fi modula opazljivo pade pri niˇzji nape- tosti, v povpreˇcju za pribliˇzno tri decibele, kar je bil za nas zadosten dokaz, da je senzorje bolje uporabljati v naˇcinu 5V.

Med testiranjem smo sluˇcajno opazili tudi zanimivo lastnost senzorja; na isti razdalji je bila namreˇc opazna razlika v moˇci signala glede na usmerjenost Wi-Fi modula. Pri testiranju so se nam razlike zdele razmeroma velike, kar bi lahko potencialno vplivalo na uˇcinkovitost celotnega sistema v proizvodnji, zato smo opravili ˇse en test. Tokrat smo spet uporabili dva Wi-Fi modula, a samo en senzor, ki pa smo ga v vsaki fazi testiranja obrnili za 90 stopinj.

Slika 3.4: Orientacija Wi-Fi senzorja pri testiranju.

(33)

Diplomska naloga 19 Zgornji diagram prikazuje orientacijo pri posameznem testnem primeru.

Predvsem pomembna je lokacija oziroma usmerjenost antene (ki je na sliki oznaˇcena z ”A”), saj se je izkazalo, da je to glavni vplivni faktor za razlike pri merjenju moˇci signalov.

Slika 3.5: Primerjava razporeditve moˇci signalov pri posameznih orientacijah senzorja.

S slike je razvidno, da je najboljˇsi signal pri orientaciji 3, najslabˇsi pa pri orientaciji 4. Kot smo odkrili nekoliko kasneje, je glavni razlog za to orientacija MIFA (angl. ”meandered inverted-F antenna”) [10] antene na sprednji strani modula. Takˇsna antena ima tipiˇcno zunanjo povezavo na eni strani, konec antene pa je ostro vijugasto zvit (od tod angl. izraz ”meande- red”), kar oˇcitno povzroˇci razliˇcen nivo sprejemanja signala. Takˇsna antena je prikazana na spodnji sliki 3.6.

Ugotovitve so predvsem relevantne pri fiziˇcni postavitvi sistema in zasnovi ohiˇsja za Wi-Fi senzorje ter potencialnem ojaˇcevanju signalov.

(34)

Slika 3.6: Tipiˇcna usmeritev sevanja pri MIFA anteni.

Na ilustraciji je oznaˇcena tipiˇcna signalna moˇc na vsaki strani. Zelena barva je najboljˇsa, rumena slabˇsa, rdeˇca najslabˇsa. Pri modulu ESP32 je takˇsna razporeditev zrcaljena, zato je najboljˇsa tretja pozicija in ne ˇcetrta, kar se tiˇce moˇci signala.

3.1.2 Programiranje mikrokrmilnika

Razvijalci modulov ESP32 imajo za programiranje mikrokrmilnikov trenutno razviti dve reˇsitvi; integrirano orodje za programiranje na najniˇzjem nivoju (v jeziku C) ter knjiˇznico za razvoj v okolju Arduino. Kot omenjeno ˇze prej v diplomskem delu smo se odloˇcili za reˇsitev Arduino, saj nam je bolj poznana, hkrati pa je stopnja programiranja veliko laˇzja kot pa ˇcista C++ koda.

Pred zaˇcetkom smo najprej definirali protokol, na osnovi katerega bo

(35)

Diplomska naloga 21 potekala komunikacija med senzorjem in raˇcunalniˇskim sistemom na katerega bo povezan. ESP32 je zmoˇzen serijske komunikacije na veˇc naˇcinov oziroma preko veˇc razliˇcnih vhodno/izhodnih zatiˇcev na ploˇsˇci. Odloˇcili smo se za uporabo vgrajenih (in za to namenskih) zatiˇcev RX/TX (angl. krajˇsave za

”Receive” in ”Transmit”). Ti omogoˇcajo povezavo UART (angl. ”Universal asynchronous receiver-transmitter”) tako kot USB, a so zaradi pozicije bolj prilagodljivi, kar se tiˇce uporabe drugaˇcnih kablov kot USB (po meri je veliko laˇzje najti in prilagoditi veˇcnamenske, proti motnjam zaˇsˇcitene kable).

Pri povezavi smo definirali hitrost povezave (tudi imenovano ”baud rate”) na 115200 bitov na sekundo, ki zadostuje potrebam zanesljive in hitre komu- nikacije.

Protokol smo definirali na naslednji naˇcin:

1. Poˇsiljanje sporoˇcil na senzor ustreza vzorcu:

ukaz;parameter1:parameter2:...

kjer je ukaz loˇcen od parametrov s podpiˇcjem (;), parametri pa so med sabo loˇceni z dvopiˇcjem (:).

2. Odgovor na prejeta sporoˇcila pa izgleda tako:

$ukaz;{"result":rezultati}#

kjer je odgovor doloˇcen z zaˇcetnim znakom ’$’ in konˇcnim znakom ’#’.

Nazaj se poˇslje ukaz, ki ga je senzor dobil (in izvrˇsil), nato pa pridejo podatki, loˇceni s podpiˇcjem. Podatki so v obliki veljavnega JSON niza, kjer je kot glavni kljuˇc beseda ”result”, rezultati pa so lahko kar koli od niza karakterjev do nove veljavne JSON strukture.

3. Dodana je ˇse moˇznost takojˇsnjega odziva na ukaze:

$RCVD#

(36)

ki se poˇslje samo, ˇce je funkcionalnost aktivirana znotraj kode. Namen je zagotoviti, da raˇcunalniˇski sistem ve status poslanega ukaza, saj je pri nekaterih funkcijah (sploh kar se tiˇce skeniranja in povezovanja na omreˇzja) ˇcas med prejemanjem ukaza in poˇsiljanjem odgovora lahko tudi veˇc sekund (kar je v raˇcunalniˇskem in produkcijskem ˇcasu izjemno veliko).

Koda v okolju Arduino ima dva dela; ”setup”, ki se zaˇzene enkrat na zaˇcetku izvajanja, kjer se nastavijo vse potrebne vrednosti, kot npr. kateri serijski vmesnik naj uporablja, ter glavni del kode, ”loop”.

V strukturi ”loop” se koda konstanto izvaja v zanki. Tu senzor bere oziroma poskuˇsa brati iz definiranega serijskega vmesnika. Ko prejeme po- datke jih najprej oˇcisti vseh nezaˇzelenih znakov (kot so ’\n’ in ’\r’ – znaka za konec vrstice) in pridobljen ukaz razdeli na ukaz in morebitne parametre.

Ukaz primerja z notranjim seznamom ukazov, in ˇce ga najde, izvede funkcijo, povezano s tem ukazom.

Izvedena metoda nato vrne rezultate - ˇce je neuspeˇsna, tudi to pove z nizom ”FAIL”. Vse podatkovne strukture se resetirajo, da ne pride do uha- janja notranjega spomina, kar bi bilo pri razmeroma nizkih vrednostih na ESP32 (4MB spomina) lahko usodno za delovanje.

Za spremljanje delovanja ima ESP32-S2-Saola na voljo LED–luˇcko na ploˇsˇci, katere barva in stanje se nastavljaza znotraj kode. Zeleno sveti, ko uspeˇsno opravi operacijo, modro, ko je med izvajanjem, rumeno, ˇce dobi neznan ukaz in rdeˇce, ˇce naleti na napako ali teˇzavo.

(37)

Diplomska naloga 23 Sledeˇce je psevdokoda za funkcijo ”loop”:

void loop() {

String input, result, command;

String[] args;

input = Serial.read();

input.clean();

command = input.Split(’;’)[0];

args = input.Split(’;’)[1].Split(’:’);

result = "$" + command + ";{\"result\":";

switch(command) {

case "command_1":

result = method_1(args);

if result is OK:

LED.green():

else:

LED.red();

break;

...

default:

result += "{}";

LED.yellow();

break;

}

result += "}#";

Serial.write(result);

}

(38)

Programske metode

Ko mikrokontroler prejme in razˇcleni podani ukaz, zaˇzene ustrezno metodo s podanimi parametri. Na voljo so naslednje metode:

• getScanAverage(int repeat) – Uporabi vgrajen Wi-Fi ˇcip da ske- nira okoliˇska brezˇziˇcna omreˇzja za 100 ms. Parameter repeat nastavi kolikokrat se to skeniranje ponovi. Vsako ustrezno omreˇzje (vsi Wi-Fi moduli v podjetju ustrezajo nekemu standardu) nato doda v notranjo strukturo in na koncu vrne vsa najdena omreˇzja s povpreˇcno moˇcjo signala do tega.

• connect(string SSID, int wait, int repeat) – Wi-Fi senzor se poveˇze na izbrano omreˇzje. Parametri nastavijo, kako dolgo naj ˇcaka, preden konˇca poskus povezovanja in kolikokrat naj ponovno poskusi.

Vrne status postopka; ”OK” za uspeh, ”FAIL” za neuspeh.

• disconnect() – Senzor prekine povezavo do trenutno povezanega Wi- Fi omreˇzja.

• send(string command – Poˇslje ukaz na povezano napravo. Za to obstaja poseben postopek, kjer se je treba povezati na notranjo kom- ponento, nato pa vsak ukaz ustrezno zakodirati, da ga naprava sploh sprejme. ESP32 je tu posebno dobro opremljen, saj ima vgrajeno knjiˇznico za kriptografijo, ker je bil to tudi eden od namenov za upo- rabo. Vrne rezultate z naprave (ˇce je ukaz pravilen).

• setLimits(int near, int far) – Eden izmed naˇcinov za izloˇcevanje nezaˇzelenih omreˇzij (tistih, ki so predaleˇc stran) je ta funkcija, ki na- stavi meje za moˇc signala, ki jih potemgetScanAverageupoˇsteva pri skeniranju in vraˇcanju podatkov.

• setResponseSetting(bool setting)– Ta metoda nastavlja prej ome- njeno funkcijo takojˇsnjega odgovora na ukaze. Privzeto je izklopljena,

(39)

Diplomska naloga 25 saj je njena uporaba predvsem pri sistemih, kjer je velika ˇcasovna sti- ska.

• setDebug(bool setting) – Vklopi oziroma izklopi zunanjo LED za prikazovanje stanja. V primeru, da ta ne obstaja ali pa da po njej ni potrebe, se tako lahko izklopi.

• restart()– Ta metoda ponovno zaˇzene senzor ESP32. Predvsem pride v pomoˇc, ˇce senzor postane nenatanˇcen ali ˇce pride do pomanjkanja spomina (do ˇcesar naj naˇceloma nebi priˇslo, saj pri testiranju ni bilo opaˇzenih uhodov spomina). Vse nastavitve se pri tem ohranijo, saj so shranjene v ”flash” pomnilnik, ki se pri ponovnem zagonu ne pobriˇse.

Slika 3.7: Primer ukaza in odgovora v terminalu.

(40)

Procedura uporabe

Za veˇcino namenov v podjetju bo standardna uporaba Wi-Fi senzorja sledeˇca:

1. Senzor prejme ukaz za skeniranje omreˇzij. V obliki JSON vrne vsa najdena omreˇzja in njihove moˇci signala.

2. Raˇcunalniˇski sistem s pomoˇcjo programske knjiˇznice analizira podatke in izbere najboljˇso napravo.

3. Senzor dobi ukaz za povezavo. Sporoˇci status povezave.

4. Na napravo poˇslje zahtevani ukaz. Poˇcaka na odgovor in ga nato naprej poˇslje na raˇcunalniˇski sistem.

Pribliˇzno takˇsen postopek se nato ponavlja za vsako novo napravo. Se- veda je vmes treba zagotoviti, da se postopek nadaljuje ob napakah (ni naj- denih naprav, ne more se povezati na izbrano napravo itd.), a to je veˇcinoma delo za zunanji raˇcunalnik.

(41)

Diplomska naloga 27

3.2 Programska knjiˇ znica

Poleg senzorjev ESP32 je pomemben del celotnega sistema bazna postaja oziroma raˇcunalniˇski sistem, na katerega se senzor poveˇze. Raˇcunalnik na senzor poˇsilja ukaze in prejme podatke, ki jih nato analizira. Tega seveda ne stori avtomatsko, zato je bila potreba po izdelavi programske knjiˇznice, ki bo opravljala te funkcije.

Programska knjiˇznica, specifiˇcno datoteke ”.dll” (angl. ”Dynamic-link library”), ki so Microsoftova implementacija koncepta kodnih knjiˇznic, je strukturno podobna izvrˇsilnim datotekam (.exe, angl. krajˇsava za ”executa- ble”), z glavno razliko, da je njen namen kodo, podatke ali druge kodne vire ponuditi drugi aplikaciji. Datoteke DLL tako kode ne izvajajo, ampak jih lahko dodamo kot vir metod drugi aplikaciji.

Zakaj knjiˇznica in ne celotna aplikacija? Ker se bo takˇsen sistem upo- rabljal na veˇc mestih, kjer so specifike implementacije odvisne od sistema, ki bo kodo poganjal in vrste testne postaje. Za implementacijo mora poskr- beti drug oddelek v podjetju, zato je pomembno, da so metode na voljo za uporabo, a njihova implementacija ni preveˇc specifiˇcna.

Zaradi drugih delov sistema (znotraj podjetja) smo knjiˇznico poimenovali

”Pasture” (slov. ”paˇsnik”).

3.2.1 Nastavitve projekta

Programsko knjiˇznico smo spisali v programskem jeziku C#, v okolju .Net.

Pri pisanju smo se zanaˇsali na Visual Studio 2019, ki olajˇsa pisanje, testiranje in popravljanje kode.

Najprej je bilo treba projekt pravilno konfigurirati; nastaviti verzijo ogrodja .Net (v tem primeru ”Framework 4.6”), naˇcin zagona (da se po koda pravilno

”compile”-ala v datoteko DLL), vir podatkov itd. Spodnja slika prikazuje primer okna za konfiguriranje projektov v Visual Studiu.

(42)

Slika 3.8: Konfiguracija projekta v Visual Studiu.

Za pomoˇc pri obdelavi podatkov (JSON nizov specifiˇcno) smo dodali knjiˇznico Json.Net [11], ki je ena izmed najbolj priljubljenih knjiˇznic za razˇclenjevanje nizov JSON. Poleg tega smo pri programiranju uporabili nekaj ustaljenih programskih struktur, ki so del veˇcine aplikacij v podjetju.

3.2.2 Povezava na senzorje

Prva stvar, ki jo je bilo treba zagotoviti (kar se tiˇce zmogljivosti knjiˇznice), je bila zmoˇznost komuniciranja s senzorji ESP32. Za potrebe sistema so lahko na voljo od enega do trije senzorji. Ker so povezani na raˇcunalniˇski sistem preko serijskih vrat (imenovanih tudi ”COM ports” – kar se ne navezuje nujno na stare serijske konektorje, ampak tudi na novejˇse USB vrata), smo tu uporabili implementacijo UART tunela za serijsko komunikacijo. Zaradi fiziˇcnih ˇcipov UART na senzorju, smo tako lahko dosegli hkratno poˇsiljanje in prejemanje podatkov s senzorja.

(43)

Diplomska naloga 29 Za zagotovitev prenosa in analize podatkov je bilo treba pri izdelavi knjiˇznice (in sploh pri komunikaciji) uporabiti veˇcnitenje (angl. ”Multi- threading”) – zaganjanje veˇc delov kode hkrati znotraj procesa z uporabo niti (angl. ”Threads”). Uporabili smo Microsoftovo vgrajeno implementa- cijo iz knjiˇznice ”System.Threading”.

Za povezavo na senzorje smo ustvarili razred ”UARTTunnel”, ki v svojem konstruktorju (del kode, ki se izvede, ko se ustvari instanca razreda – objekt) sprejme nastavitve za povezavo, ustvari posluˇsalca na serijskih vratih in dve niti – eno za branje podatkov in eno za pisanje podatkov.

Naslednje je groba psevdokoda:

public UARTTunnel(string comPortName, SerialSettings settings) {

try {

_port = new SerialPort(comPortName, settings);

_port.Open();

}

catch (Exception) {

throw;

}

_writeThread = new Thread(new ThreadStart(WriteWorker));

_writeThread.Start();

_readThread = new Thread(new ThreadStart(ReadWorker));

_readThread.Start();

}

(44)

Tako ” writeThread” kot ” readThread” zaˇzeneta nove niti, ki poga- njata ustrezno funkcijo. Nit za branje tako poganja funkcijo ”WriteWorker”, ki ˇcaka na podatke s serijskih vrat, in jih preko sistema dogodkov (angl.

”Events”) poˇslje na glavno nit, ki podatke razˇcleni in ustrezno analizira. Nit za pisanje poganja funkcijo ”ReadWorker”, ki ˇcaka, da glavni del procesa zahteva poˇsiljanje ukaza.

3.2.3 Poˇ siljanje ukazov in analiza odgovorov

Znotraj knjiˇznice smo ustvarili razred ”Shepard”, ki skrbi za povezavo vseh delov kode v enotni objekt, za laˇzji in enoten dostop. Temu razredu na zaˇcetku podamo vse potrebne informacije – katera serijska vrata naj uporabi, vse meje, dostop do napak itd. Podamo tudi podatke o povezanih senzorjih v konfiguracijski datoteki, v obliki JSON.

”Shepard” vkljuˇcuje veˇc razliˇcnih metod za poˇsiljanje ukazov na senzorje, doloˇcanje pozicije omreˇzij, pridobivanje podatkov s testiranih naprav in ko- munikacijo z ostalimi baznimi postajami:

1. Uporaba posameznih metod za prilagojen postopek/proceduro

2. Zagon postopka, ki avtomatsko prehaja med stanji oziroma koraki pro- cedure

Veˇcinoma se bo v proizvodnem okolju uporabljal naˇcin 2, a je vedno dobro pustiti prostor za prilagoditev, namesto da bi bilo kasneje treba popravljati ali dopolnjevati kodo.

Uporaba posameznih metod

Glavni del tega postopka je metoda ”SendCommand()”, ki vzame ukaz v obliki niza in ga pretvori v polje (angl. ”array”) bajtov. Te lahko nato prejme

”UARTTunnel”, da jih poˇslje preko serijske povezave na senzor ESP32.

Prejete podatke nato obdela – pretvori jih iz oblike JSON v en sam niz, ki vsebuje rezultate ukaza. Ta je lahko nato naprej obdelan, ˇce vsebuje objekt JSON.

(45)

Diplomska naloga 31 Postopek se po prejetem odgovoru (ali sporoˇcitvi napake, ˇce se izide ˇcasovna omejitev) zakljuˇci, kar omogoˇci, da se lahko med poˇsiljanjem spe- cifiˇcnih ukazov izvedejo ˇse druge funkcije, kot resetiranje naprave.

Psevdokoda:

string SendCommand(string command, UARTTunnel tunnel) {

List bytes = GetBytes(command);

try {

tunnel.SendData(bytes);

}

catch (Exception e) {

ErrorEvent.Invoke("Can’t access ESP!");

return "FAIL";

}

string answer = WaitForAnswer();

if(answer != "FAIL") {

return GetStringFromJSON(answer);

}

return answer;

}

(46)

Analiza podatkov

Pridobljeni podatki se analizirajo s pomoˇcjo funkcij ”GetClosestNetworks()”

in ”DefineDirection()”, ki se uporabljata tudi v avtomatskem postopku.

”GetClosestNetworks()” vrne listo omreˇzij, urejeno po moˇci signala – od najbliˇzjega do najbolj oddaljenega omreˇzja. Pri raˇcunanju uporabi navadno povpreˇcje vseh vrednosti za vsako omreˇzje, a izloˇci tista, ki imajo premalo meritev (privzeto mora imeti omreˇzje vsaj 2 meritvi, da ni odstranjeno).

Metoda ”DefineDirection()” pa implementira veliko bolj zapleten posto- pek definiranja pribliˇzne lokacije dveh razliˇcnih naprav. Uporablja se samo v primeru, da sistem deluje v okolju, kjer je hkrati vkljuˇcenih in povezanih veˇc naprav na bazno postajo. Metoda najprej preveri, ˇce so podatki pravilni in je moˇzno izvesti izraˇcun pozicije; potrebni sta vsaj dve omreˇzji z zadostno koliˇcino podatkov (vsaj dve meritvi za obe omreˇzji, z vseh senzorjev). ˇCe je na voljo veˇc omreˇzij, metoda izbere najbliˇzji dve. Ko so podatki potr- jeni, se znotraj metode zgradijo matrike podatkov (za vsako omreˇzje ena), na podlagi katerih se nato izraˇcuna povpreˇcje signalov za vsa omreˇzja.

Omreˇzje 1 Senzor 1 Senzor 2 Senzor 3

Senzor 1 0 10 -10

Senzor 2 -10 0 20

Senzor 3 10 20 0

Tabela 3.1: Matrika za raˇcunanje pozicije pri treh senzorjih za omreˇzje 1.

Povpreˇcja se nato primerjajo in glede na vrednost razlike se doloˇci pozicija naprave (torej katera naprava je na kateri strani). Takˇsen postopek je zelo podoben trilateraciji [23], ki je podobna kot triangulacija [22], edina razlika je, da se pri raˇcunanju pozicije namesto kotov uporabi dolˇzina (v tej metodi se ta nadomesti z moˇcjo signala) do iskane toˇcke.

(47)

Diplomska naloga 33 Avtomatski postopek

Ce je na testnem obmoˇˇ cju potreben samo preprost postopek (iskanje naj- bliˇzjega omreˇzja, se nanj povezati in pridobiti njegov ID), potem se lahko z uporabo metode ”Start()” zaˇzene avtomatski postopek. Ta hkrati uporablja oba senzorja za pridobivanje podatkov.

Postopek, kot je definiran v knjiˇznici : 1. Trikrat zahteva skeniranje vseh omreˇzij

2. Podatke vseh skeniranj zdruˇzi v eno polje parov podatkov (angl. ”dic- tionary”) in izraˇcuna povpreˇcja za vsa omreˇzja

3. Izbere najboljˇse omreˇzje (povpreˇcno najmoˇcnejˇsi signal od vseh senzor- jev)

4. Se na izbrano omreˇzje poveˇze

5. Pridobi ID iz naprave in prekine povezavo z napravo

V pomoˇc so tu prej definirana metoda ”GetClosestNetworks”, ”Define- Direction” in ”SendCommand”, ki jo tokrat zaˇzenemo veˇckrat paralelno s pomoˇcjo veˇc niti. Zaradi narave postopka je tu treba vse niti uskladiti ozi- roma sinhronizirati. To storimo z notranjo spremenljivko, ki ji pravimo tudi

”semafor” – vsaka nit, ko pride do ”semaforja”, poˇcaka, da ta spremeni sta- nje, ki dopusti, da se nadaljuje izvajanje kode (reˇcemo tudi, da se ”semafor”

spremeni na ”zeleno” luˇc).

Zaradi veˇc-nitnosti je treba tudi zakleniti skupno podatkovno strukturo, kamor se shranjujejo podatki. Zaradi soˇcasnih dostopov do pomnilnika bi se lahko namreˇc podatki prepisali in popolno izgubili. Uporaba tako imenovanih

”kljuˇcavnic” sicer nekoliko vpliva na zmogljivost kode, a je za naˇse namene to zanemarljivo, hkrati pa zagotovi natanˇcnost podatkov.

(48)

3.2.4 Komunikacija z drugimi baznimi postajami

Pri nekaterih testnih mestih je lahko hkrati na zelo majhnem prostoru veˇc baznih postaj. Nekatere izmed teh baz so med sabo povezane preko omreˇzja znotraj produkcijskega okolja (ne pa vse). Pri takˇsnih testnih mestih obstaja moˇznost, da senzor zazna napravo, ki je del testov na drugi bazni postaji.

Ceprav so redki, se lahko pred takˇsnimi dogodki zavarujemo tako, da bazneˇ postaje med sabo komunicirajo in izloˇcajo omreˇzja, ki so veliko bliˇzje drugim postajam.

Tu je bilo pomembno ustvariti dva dodatna razreda, ki glavni del svoje funkcionalnosti izvajata na posebnih nitih; ”NetworkServer” in ”NetworkCli- ent”. Oba razreda se hkrati izvajata na vseh postajah, saj morajo konstantno posluˇsati in poˇsiljati svoje podatke.

”NetworkServer” (slov. ”omreˇzni streˇznik”) na svoji niti konstantno po- sluˇsa za povezavo preko vrat TCP do drugih postaj. Pridobljene podatke shrani v notranje polje, ki ga bo zadrˇzal za do 5 minut. Pri novih podatkih te primerja z lastnimi zaznanimi omreˇzji in nato izloˇci tiste, ki jih je druga bazna postaja zaznala z boljˇsim signalom.

”NetworkClient” (slov. ”omreˇzni klient”) pa na svoji niti preko omreˇzja poˇsilja rezultate skeniranj, vsakiˇc ko se ta zakljuˇcijo.

3.2.5 Varovanje pred puˇ sˇ canjem spomina

Tako imenovano puˇsˇcanje spomina (angl. ”Memory leaks”) je ena izmed najveˇcjih teˇzav za konstantno delujoˇce aplikacije, sploh v produkcijskem oko- lju, saj z lahkoto prekine delovanje aplikacije. Puˇsˇcanje spomina se navezuje na dogodek, ko neki vir znotraj kode zaseˇze del spomina (pomnilnika, angl.

”memory”), a ga nato nikoli ne izpusti. To se veˇcinoma zgodi zaradi ne- pravilnega zapiranja virov ali nepravilnega upravljanja s spominom (ˇce po- datkovne strukture nepravilno odstranimo/zapremo). C# kot visokonivojski jezik veˇcinoma nima teh teˇzav, vendar pa se puˇsˇcanje spomina lahko prikrade v kodo, kadar se ukvarjamo z nitmi in dostopom do datotek, zunanjih naprav

(49)

Diplomska naloga 35 itd.

Zaradi uporabe v produkcijskem okolju, je puˇsˇcanje pomnilnika ena iz- med veˇcjih skrbi. Za izognitev temu so v podjetju Gorenje doloˇceni standardi kode, eden izmed njih je uporaba skupine metod in objektov ”Dispose”. Ti so del tudi Microsoftovega standarda za C#, in so na voljo v njihovi do- kumentaciji [16]. Uporabljati je treba predvsem vmesnik ”IDisposable”, pri ustvarjanju razredov in kot del tega metodo ”Dispose()”, kjer je treba im- plementirati pravilno zapiranje in odstranjevanje vseh virov znotraj razreda.

Simptomatiˇcno pri puˇsˇcanju pomnilnika je poˇcasno naraˇsˇcanje porabe pomnilnika (znotraj celotnega operacijskega sistema) in manjˇsi ”hribˇcki” pri pomnilniku na kopici (del pomnilnika namenjenega shranjevanju delujoˇcega stanja in spremenljivk med delovanjem procesa).

Znotraj C++ kode za Wi-Fi senzor je zagotavljanje, da se pomnilnik pravilno uporabi, veliko bolj transparentno, saj mora tako za dodelitev kot sprostitev pomnilnika poskrbeti razvijalec. Za to se uporabita funkciji ”.mal- loc()” in ”.free()”.

(50)

3.3 Testiranje

Celoten postopek testiranja je bil razdeljen na dve faze; notranje testiranje kode z uporabo tako imenovanih testov enot (angl. ”unit tests”), katerih namen je postopno testiranje vseh delov kode (metod) s testnimi podatki in sintetiˇcno ustvarjenimi objekti.

[TestMethod]

public void Test_DefineDirection_Basic() {

float[] measurements = new float[6] { -30, -20, -10, -40, -40, -50 };

Setup(out Shepard scanner, out Network network1, out Network network2, out _, measurements);

List<Network> networkList = new List<Network>() { network1, network2 };

Dictionary<string, string> expected = new Dictionary<string, string>() {

{ "left", network2.NetworkName }, { "right", network1.NetworkName } };

Dictionary<string, string> actual = scanner.DefineDirection(networkList);

CollectionAssert.AreEquivalent(expected, actual);

}

(51)

Diplomska naloga 37 Zgoraj je primer takˇsnega testa za metodo ”DefineDirection”. Znotraj testne metode so ustvarjeni umetni podatki in umetni objekti, testirani pa so samo rezultati testirane metode. Namen takˇsnih testov je sprotno pre- verjanje, ˇce so naˇse spremembe vplivale na obstojeˇco kodo na nepravilen naˇcin. Tako se izognemo reˇsevanju istih problemov in nepotrebnemu (ali neuˇcinkovitemu) spreminjanju kode.

Ce so bili pri doloˇˇ ceni reviziji programa testi uspeˇsni, se je testiranje prestavilo na simulacijo delovnega okolja. Z uporabo testnih naprav v la- boratoriju povezljivosti v podjetju Gorenje smo lahko reˇsitev preverili na (pribliˇzno) realnem sistemu.

Slika 3.9: Testno okolje v laboratoriju povezljivosti.

Posamezna testiranja so trajala pribliˇzno eno uro, pri ˇcemer so se kon- stanto zbirali podatki za nadaljnjo obdelavo. ˇCe se je pri delovanju pokazala

(52)

napaka, je bilo testiranje prekinjeno, spremenila se je koda, nato pa se je postopek testiranja zaˇcel ponovno.

Ko se je delovanje programske opreme izkazalo za primerno, je sledilo ˇse dvotedensko testiranje vzdrˇzljivosti – sistem bo moral namreˇc v proizvodnji delovati praktiˇcno 24 ur na dan, skoraj vse dni v tednu. Testiranje je bilo na ˇzalost veˇckrat prekinjeno zaradi izpadov elektriˇcnega toke, a je pri zadnjem testiranju celoten sistem (tako senzorji kot programska oprema) uspeˇsno de- loval skupno 10 dni, kar se je ˇstelo kot zadostno za nadaljevanje projekta in testiranje oziroma implementacijo v proizvodnji.

Slika 3.10: Testno okolje za testiranje vzdrˇzljivosti sistema.

(53)

Poglavje 4

Implementacija sistema

Po uspeˇsnem testiranju vzdrˇzljivosti se je lahko zaˇcela faza implementacije oziroma testne implementacije (celoten postopek je dokaj dolgotrajen, zato smo za namene diplomskega dela to ˇsteli kot implementacije) v realnem pro- dukcijskem okolju. Izbrana linija je bila pri testiranju pomivalnih strojev – primer razporeditve je bil podan spodaj, na sliki (4.1) .

Slika 4.1: Izbrana linija za implementacijo.

39

(54)

4.1 Uporaba sistema

4.1.1 Razporeditev

Za konˇcno implementacijo sta bila uporabljena dva modula ESP32 ob spodnji strani naprave v enoti za testiranje. Specifiˇcno je bila ta lokacija izbrana zaradi pozicije Wi-Fi modulov v vsaki napravi (pralnem stroju). Na spodnji sliki (4.2) so oznaˇcene omenjene lokacije.

Slika 4.2: Razporeditev senzorjev.

4.1.2 Zaˇ sˇ cita pred motnjami

Zaradi narave delovnega okolja – hkrati deluje veˇc naprav v enotah za te- stiranje, veˇc strojev in raznih drugih brezˇziˇcnih omreˇzij, ki se uporabljajo v okolici – je bilo treba senzorje zaˇsˇcititi pred motnjami. Znotraj program- ske opreme smo lahko naredili le toliko, preostalo pa je bilo treba zagotoviti fiziˇcno. Glavni deli ˇsˇcitenja so bili uporaba primernih povezovalnih kablov

(55)

Diplomska naloga 41 (dvojna parica, zaˇsˇcitna folija), snovanje primernega (kovinskega) ohiˇsja in usmerjevalne antene.

Slika 4.3: Dve razliˇcici prototipa ohiˇsja za senzor.

4.1.3 Testiranje

Pred resno uporabo smo sistem testirali, preverili smo povpreˇcje moˇci si- gnalov (tako do najbliˇzje enote kot do drugih blizu sistema), zanesljivosti postavljenih omejitev (tako programerskih kot uˇcinkovitost prej omenjenih fiziˇcnih ukrepov) in hitrost izvajanja celotnega postopka.

Ugotovili smo, da so vse omejitve (skupaj z razporeditvijo in usmeritvijo modulov in anten) moˇcno pripomogli k razloˇcnemu signalu do ciljne naprave, saj je bila ustrezno izbrana v vseh pomembnih primerih (ter v veliki veˇcini vseh primerov, ko smo testirali brez omejitev/ohiˇsij).

Hitrost postopka je bila zadovoljiva, ˇceprav bi se lahko nekoliko izboljˇsala – sklepali smo, da je nekoliko poˇcasna zaradi Wi-Fi modulov znotraj naprav;

izboljˇsave na tem mestu so v naˇcrtu za prihodnost tega projekta.

(56)

Na sploˇsno je bilo testiranje zadovoljivo in uspeˇsno.

4.1.4 Konˇ cni rezultati

Konˇcan sistem je bil v ˇcasu pisanja diplomskega dela (delno) implementiran na dveh produkcijskih trakih – eden izmed njih v industrijskem objektu zunaj Slovenije. Sistem je bil le za krajˇsi ˇcas testiran, a je dosegel veˇcino ciljev diplomskega dela:

1. Z zadovoljivo natanˇcnostjo (razlike vsaj 10 dB v signalu med najbliˇzjo in naslednjo najbliˇzjo napravo) prepoznava testirane naprave.

Slika 4.4: Graf razporeditev moˇci signala pri testiranju na realnem primeru.

Na grafu so prikazane pridobljene vrednosti moˇci signala iz dveh sen- zorjev ESP32 do dveh naprav v testnem obmoˇcju. Z rdeˇco je oznaˇcena bliˇznja naprava, ki bi jo senzorji morali zaznati, z zeleno pa sosednja naprava, ki je sistem ne bi smel uporabiti. S ˇcrtkano ˇcrto so oznaˇcene povpreˇcne vrednosti za obe naprave. Lepo je razvidno, da so razlike zadovoljive glede na zadane cilje.

(57)

Diplomska naloga 43 2. Omogoˇca veˇc razliˇcnih razporeditev in konfiguracij sistema.

• Zaradi modularne narave sistema (lahko uporabimo enega ali dva senzorja) in nastavljivosti tako senzorjev kot programske knjiˇznice je podpora novega produkcijskega traka samo vpraˇsanje pravilne nastavitve.

3. Celoten postopek se je ˇcasovno dosledno izvajal znotraj trde meje 30 sekund.

Slika 4.5: Graf razporeditve dolˇzin ˇcasa izvajanja za posamezni postopek.

Zgornji graf prikazuje meritve ˇcasa trajanja celotnega postopka. Po- stopek je bil izveden veˇc kot 500-krat, prikazana je razporeditev teh ˇcasov. Veˇcinoma je celoten postopek (skeniranje, izbira najbliˇzje na- prave, pridobitev podatkov) trajal v povpreˇcju pribliˇzno 15 sekund, kot je prikazano na grafu. Nekajkrat je bil ˇcas postopka nekoliko daljˇsi, ker ni bilo najdene prave naprave ali pa se na izbrano napravo ni bilo moˇzno povezati, na kar je lahko vplivalo veˇc faktorjev. Razvidno je, da je nekajkrat ˇcas postopka skoraj prebil mejo 30 sekund, zato bi na

(58)

tem podroˇcju lahko v prihodnje nekoliko izboljˇsali sploˇsno uˇcinkovitost celotnega sistema, kar bi pripomoglo h krajˇsim (in bolj varnim) ˇcasom.

4. Pravilno pridobi potrebne podatke iz naprav in pravilno ravna z napa- kami v povezavi.

• Znotraj opravljenih testov sistem ni nikjer dosegel nepopravlji- vega stanja (kjer sistem napake ne bi mogel opraviti z dostopnimi orodji).

5. Povezuje se samo na ustrezne naprave in pravilno zavrˇze vse zunaj mej.

(59)

Poglavje 5

Sklepne ugotovitve

V diplomskem delu so predstavljeni naˇcrtovanje, zasnovanje in poslediˇcno izdelovanje sistema za boljˇse testiranje povezljivih gospodinjskih aparatov, ki so izdelani na produkcijskih trakih v podjetju Gorenje d. o. o. Problem je bil predstavljen v okviru dela v podjetju, kjer smo sistem ustvarili. Vse dele takˇsnega sistema smo podrobno predstavili in opisali njihovo mesto v tem sistemu.

Med izdelavo smo bolje spoznali brezˇziˇcna omreˇzja in zanimivosti njihovih propagacij po prostoru. Glavna naloga naˇsega dela, ki je vplivala na zasnovo vseh delov sistema, je bila kako jih uporabiti za pravilno delovanje. V veselje nam je bilo nadgraditi svoje znanje o vgrajenih sistemih in mikrokontrolerjih, ki so prikazali zanimiv fiziˇcni kontrast priˇcakovanemu programerskemu delu.

Programiranje za uˇcinkovit in dokaj preprost sistem, ki ga bodo primarno uporabljali drugi ljudje, je bila prvotna izkuˇsnja, zanimivo je bilo delati z veˇc razliˇcnimi oddelki v podjetju, za doseganje teh ciljev.

S testiranjem smo spoznali meje programskih reˇsitev v kontekstu vgraje- nih sistemov, uporabljenih v industrijskem okolju, ter kako se odnese strog reˇzim preverjanja tudi takˇsnih, dokaj preprostih, sistemov, preden se upora- bijo na produkcijskih linijah.

Sistem Wi-Fi senzorjev je bil v ˇcasu pisanja diplomskega dela na kratko preverjen, a je njegova implementacija v realne sisteme popolnoma naˇcrtovana.

45

(60)

Ker bomo pri podjetju Gorenje najverjetneje ostali dalj ˇcasa po opravi tre- nutnega izobraˇzevanja, bomo odgovorni za nadgradnje in morebitne poprave tega sistema.

(61)

Celotna literatura

[1] Arduino IDE.url:https://www.arduino.cc/en/Guide/Introduction (pridobljeno 10. 6. 2021).

[2] Arduino IDE. url: https://www.arduino.cc/en/software (prido- bljeno 10. 6. 2021).

[3] Arduino podjetje. url: https://www.arduino.cc/en/Main/AboutUs (pridobljeno 10. 6. 2021).

[4] C (programski jezik). url: https : / / en . wikipedia . org / wiki / C _ (programming_language)(pridobljeno 10. 6. 2021).

[5] C#.url:https://en.wikipedia.org/wiki/C_Sharp_(programming_

language)(pridobljeno 10. 6. 2021).

[6] C++. url: https://www.cplusplus.com/info/description/ (pri- dobljeno 10. 6. 2021).

[7] Cadence Design Systems. url: https://www.cadence.com/en_US/

home/company.html(pridobljeno 10. 6. 2021).

[8] ESP32-S2-Saola-1 ploˇsˇca. url: https : / / docs . espressif . com / projects/esp- idf/en/latest/esp32s2/hw- reference/esp32s2/

user-guide-saola-1-v1.2.html.

[9] ESP32-S2-Saola-1 ploˇsˇca.url:https://www.espressif.com/sites/

default / files / documentation / esp32 - s2 - wrover _ esp32 - s2 - wrover-i_datasheet_en.pdf.

[10] Inverted-F antenna.url:https://en.wikipedia.org/wiki/Inverted- F_antenna(pridobljeno 10. 6. 2021).

47

(62)

[11] Json.NET. url: https : / / www . newtonsoft . com / json (pridobljeno 10. 6. 2021).

[12] LX6 mikroprocessor.url:https://mirrobo.ru/wp-content/uploads/

2016/11/Cadence_Tensillica_Xtensa_LX6_ds.pdf.

[13] LX7 mikroprocessor. url: https://ip.cadence.com/uploads/1099/

TIP_PB_Xtensa_lx7_FINAL-pdf.

[14] Microsoft. .NET ogrodje. url: https : / / dotnet . microsoft . com / learn/dotnet/what-is-dotnet-framework(pridobljeno 10. 6. 2021).

[15] Microsoft. .NET standard. url: https : / / dotnet . microsoft . com / platform/dotnet-standard (pridobljeno 10. 6. 2021).

[16] Microsoft. Dispose. url: https : / / docs . microsoft . com / en - us / dotnet / standard / garbage - collection / implementing - dispose (pridobljeno 10. 6. 2021).

[17] Espressif Systems.Opis ESP32.url: https://docs.espressif.com/

projects/esp- idf/en/latest/esp32s2/hw- reference/esp32s2/

user - guide - saola - 1 - v1 . 2 . html # getting - started (pridobljeno 10. 6. 2021).

[18] Espressif Systems. Opis ESP8266. url: https : / / www . espressif . com/en/products/socs/esp8266 (pridobljeno 10. 6. 2021).

[19] Termite Terminal. url: https://www.compuphase.com/software_

termite.htm(pridobljeno 10. 6. 2021).

[20] TIOBE indeks. url:https://www.tiobe.com/tiobe-index/ (prido- bljeno 10. 6. 2021).

[21] Trenutni C++ standard. url: https : / / isocpp . org / std / the - standard(pridobljeno 10. 6. 2021).

[22] Triangulacija.url:https://en.wikipedia.org/wiki/Triangulation (pridobljeno 10. 6. 2021).

[23] Trilateracija. url: https://en.wikipedia.org/wiki/True-range_

multilateration (pridobljeno 10. 6. 2021).

(63)

Diplomska naloga 49 [24] Visual Studio (Community 2019).url:https://visualstudio.microsoft.

com/(pridobljeno 10. 6. 2021).

[25] Visual Studio Code. url: hhttps://code.visualstudio.com/ (pri- dobljeno 10. 6. 2021).

[26] Wikipedia. Wikipedia stran o Git. url: https://en.wikipedia.org/

wiki/Git(pridobljeno 10. 6. 2021).

[27] Eric Woodruff. Sandcastle. url: https://ewsoftware.github.io/

SHFB/html/bd1ddb51- 1c4f- 434f- bb1a- ce2135d3a909.htm (prido- bljeno 10. 6. 2021).

Reference

POVEZANI DOKUMENTI

Centralni sistem za upravljanje sicer omogoˇ ca veˇ c razliˇ cnih protokolov (Zi- gbee, Z-Wave, Wi-fi) za komunikacijo, vendar smo za konˇ cne naprave izbrali tiste, ki komunicirajo

opravljanja, ne moremo šteti kot delovno razmerje (za č asna in ob č asna dela, ter zaposlitev za malo delo v skladu s sedaj.. veljavnim Zakonom o prepre č evanju dela in

Pri povezavi Wi-Fi Direct je ena naprava prav tako vedno povezana kot streˇ znik, druga pa kot odjemalec, vendar pa lahko podatkovni tok potuje od ene naprave do druge v obeh

V okviru diplomske naloge bomo implementrirali Android aplikacijo (v nada- ljevanju aplikacija), ki bo omogoˇ cala poˇsiljanje zvoka med dvema napravama preko protokola Wi-Fi

Tam kjer je sredinska toˇ cka svetlejˇsa (vrednost toˇ cke je veˇ cja) od sosednje zapiˇsemo 1, sicer pa 0. Vsaka toˇ cka ima osem so- sednjih. Preberemo jih v smeri urinega

Cilj diplomske naloge je razvoj mikrokrmilne knjižnice za mikrokrmilno platformo Arduino UNO, ki bo opravljala komunikacijo preko serijskega vmesnika UART z brezžičnim modulom

V arhitekturi mikrostoritev sta moˇ zni dve glavni uporabi: uporaba GraphQL za omogoˇ canje komunikacije med mikrostoritvami in uporaba GraphQL kot zdruˇ zitev veˇ c mikrostoritev v

Z zamenjavo mikrokrmilnika Arduino z NodeMCU, kateri je cenovno ugo- dnejˇsi, smo zadostili osnovnim potrebam, saj le ta ˇ ze vsebuje vgrajen modul Wi-Fi. Poleg mikrokrmilnika