Amazonove spletne storitve v računalniškem oblaku (AWS) lahko uporabljamo tudi v IoT napravah z ESP8266, ESP32, WINC15x0, WFI32E in drugimi IoT Wi-Fi moduli. Kako jo izdelamo in kako deluje AWS IoT naprava? Katere storitve ponuja oblak? Kako z njim povežemo dve oddaljeni napravi? Kako varno je? Koliko stane?
Povezava AWS IoT naprave z AWS VPC strežnikom
V preteklem nadaljevanju smo se najprej loti alternativnih možnosti dostopa do AWS IoT storitev z množico razvojnih plošč na osnovi WINC15x0 modula. Zanimala nas je tudi alternativna možnost ožičene komunikacije IoT naprave z AWS oblakom, za katero smo uporabili kar Microchip PIC32MZ EF Starter kit z vgrajeno LAN8720 hčerinsko ploščico. Za alternativno testirane AWS nastavitev in storitev ter ustreznosti izdelanih e-certifikatov, smo na PC namestili tudi DOS AWS konzolo in OPENSSL. V nadaljevanju smo preizkusili Microchipov Wi-Fi modul WINC1510 in spoznali, kako uporabljamo AWS IoT z AWS Lambda funkcijami, ki omogočajo analitične in statistične obdelava podatkov, ne da bi za to potrebovali lasten navidezni AWS strežnik. Nazadnje smo v AWS vzpostavili tudi navidezni strežnik.
Tokrat bomo videli, kako IoT napravo povežemo z AWS navideznim PC, ki smo ga ustvarili v preteklem nadaljevanju. Lotili se bomo tudi razvoja AWS Lambda funkcij za razpoznavanje slik iz ESP32-CAM in videli, kako pri tem koristno uporabljamo AWS S3 storitve.
Povezava AWS IoT naprave z AWS VPC strežnikom
Ta vsebina je samo za naročnike
Prednost AWS VPC strežnikov je varna in nadzorovana navidezna omrežna in računalniška infrastruktura, s katero lahko ob pravilni konfiguraciji spremljamo vse parametre svojega navideznega računalniškega sistema. Komunikacija IoT naprave z navideznim strežnikom preko Interneta poteka enako kot, če bi kot strežnik uporabili službeni ali domači PC s stalnim IP naslovom. Vendar bi morali doma sami skrbeti za internetno varnost, tako na nivoju strojne kot programske opreme. AWS VPC omogoča predvsem varen dostop kjerkoli iz interneta, ob pogoju da pravilno izvedemo namestitev programske opreme na AWS VPC strežnik ter nastavitve AWS usmerjevalnika, AWS požarnega zidu in AWS VPC strežnika. V preteklem nadaljevanju smo v AWS ustvarili navidezni VPC strežnik (WINSRV19: pregled nastavitev operacijskega sistema pokaže, da slučajno teče na 2,3 GHz Intel Xeon E5-2686 v4 procesorju), na katerega bomo najprej namestili različne lastne TCP/IP strežniške storitvene aplikacije, nato pa bo do njih dostopali iz AWS IoT naprave. To je vsekakor dobra alternativa za tiste, ki so že razvili lastno IoT programsko opremo in jo želijo le poganjati v AWS računalniškem, oblaku. Slednji nudi tudi stalno razpoložljivost, za kar moramo pri lastnem računalniškem sistemu poskrbeti sami.
Lotimo se dela! Najprej moramo izbrati komunikacijski protokol, pri čemer imamo poled MQTT na voljo širok nabor standardnih protokolov za varno komunikacijo, ko sta HTTPS in SFTP, Telnet itn. Pri tem moramo podpro za izbrani protokol zagotoviti tako na strežniku kot AWS IoT napravah.
Implementacija Telneta v AWS
Telnet je enostaven komunikacijski protokol za znakovno komunikacijo, ki deluje na osnovi TCP/IP. V Arduino razvojnem okolju smo ga večkrat implementirali v ugnezdeni programski opremi za ESP8266 in ESP32 v seriji člankov WiFi z ESP8266 in ESP32 za domači hardware [SE282-SE291]. Pri tem se je dobro obnesel tudi pri krmiljenju robotiziranega modela velikega traktorja, ki lahko tako sprejema ukaze tudi iz pametnega telefona, računalniške tablice, notesnika, ali drugega računalnika z Wi-Fi vmesnikom.
Če hočemo za IoT module pripraviti storitev v navideznem računalniku v AWS oblaku, potrebujemo strežniško aplikacijo Telnet tudi za navidezni strežnik, ki smo ga izdelali v preteklem nadaljevanju. Ker smo izbrali strežnik Windows Server 2019 Datacenter, lahko tako aplikacijo izdelamo v programskem jeziku C#.NET in prevedemo v eni izmed različic Microsoft Visual Studio.NET. Projekt Microsoft Visual Studio 2015.NET. Za prevajanje lahko uporabimo tudi novejšo ali starejšo različico tega razvojnega orodja. Za uporabo starejše različice je potrebno izdelati nov projekt (npr. TelnetServer.sln) in vanj prenesti datoteke program.cs, server.cs, client.cs. Pri tem povozimo originalno datoteko program.cs. Nato program prevedemo. Datoteko ts.zip s preizkusnim telnetnim strežnikom TelnetServer.exe lahko prenesemo iz spletne strani https://sites.google.com/site/pcusbprojectsdownloads.
Če ste medtem že vzpostavili svoj navidezni Microsoft Windows WAS strežnik WINSRV19 v okviru EC2 storitev, se z njim povežite prek oddaljenega namizja (Windows protokol RDP). Najprej v dashboardu Server Managerja kliknite na Add roles an features, nato pod Server Selection izberite edini strežnik (WINSRV19) in nato kliknite na Features. Zdaj izberite na .NET Framework 3.5 Features in izberite samo .NET 3.5 Framework. V meniju poiščite še program Telenet Client in prav ga tako izberite, nakar lahko nadaljujete z gumbom Next in nazadnje kliknete Install. Povejmo še, da lahko nameščanje .NET Frameworka 3.5 preskočimo, če kodo originalno prevedemo za .NET Framework 4.5 ali višjo različico, vseeno pa potrebujemo Telnet Client, če želimo namestitev telnetnega strežnika najprej lokalno preizkusiti na navideznem Windows Server strežniku.
Zdaj moramo iz spletne strani sites.google.com/site/pcusbprojectsdownloads prenesti datoteko ts.zip, vendar moramo prej v Internet Explorerju Windows Server 2019 prenose datotek omogočiti. Iz glavnega menija Internet Explorerja odpremo Tools, kliknemo Internet Options in nato odpremo zavihek Security. Izberemo ikono Internet in kliknemo na gumb Custom Level. V pregledu lastnosti izberemo Downloads/File Download in izberemo možnost Enable. Zdaj bomo datoteko lahko iz spletne strani prenesli v navidezni strežnik. Datoteko ts.zip nato shranimo v izbrano mapo (npr. Documents) in jo razširimo.
Zdaj moramo v požarni zid v Inbound Connections dodati izjemo za TerminalServer.exe. To storimo tako, da se podamo v Control Panel in kliknemo na Windows Firewall in nato na levi strani izberemo Allow an app or feature through Windows Firewall in kliknemo gumb Allow another app… Zdaj moramo po kliku na gimb Browse le še poiskati TerminalServer.exe nazadnje klikniti na gumb Add.
Zdaj končno lahko zaženemo datoteko TerminalServer.exe, a ker ni digitalno popisana, nam Windows zagona ne bo dovolil, če v pojavnem oknu ne kliknemo More info in nato Run anyway. Delovanje telnetnega strežnika lahko zdaj spremljamo v njegovem konzolnem oknu. Preizkusimo tako, da odpremo še Command Prompt in natikamo telnet <Private IP Address>. Private IP Address je dostopen samo znotraj segmenta, katerem je naš strežnik, ne pa tudi v Internetu. Zato nanj ne vpliva AWS usmerjevalnik s požarnim zidom. Če je vse pravilno nameščeno, bomo v Command Promptu zagledali poziv za prijavo. Uporabniško ime je root geslo pa r00t. Oba lahko nastavimo v izvorni programski kodi, ki jo dobite v datoteki ts-src.zip iz prej omenjene spletne strani.
Odpiranje navideznega strežnika v Internet
Pri odpiranju navideznega strežnika v Internet moramo biti pazljivi, saj nikakor ne smemo odpreti vseh vrat in vseh načinov dostopov, ampak samo tiste, ki jih zares potrebujemo. V EC2 Management Console v stranskem pregledu poiščem Security Groups in izberemo varnostno skupino, ki pripada navideznemu strežniku, na katerem teče TelnetServer.exe. Zdaj izberemo zavihek Inbound rules in kliknemo Edit Inbound rules. Kliknemo na Add rule, nakar lahko dodamo Custom TCP, pri katerem kot vrednost v Port range vnesemo 23, oziroma standardna vrata za telenet, razen če smo prej v programski kodi TelnetServerja nastavili druga vrata.
Zdaj lahko dostop do telenet strežnika preverimo tudi z IoT ESP32 napravo preko javnega IP naslova, Public IP Address. Če smo pravilno izvedli nastavitve usmerjevalnika in požarnega zidu Windows 2019, bo dostop deloval enako kot testu v strežniku. Pri tem spomnimo, da smo v preteklem nadaljevanju VPC usmerjevalnik omejili samo na lastni zunanji IP naslov, kar pomeni, da je AWS VPC okolje dostopno samo iz našega računalnika (domačega) pod pogojem, da imamo stalni IP naslov. Vsekakor je to dodatni varnostni element, ki nam omogoča, da si morda nekoliko poenostavimo prijavo v AWS VPC strežnik, tako da naredimo še kakega uporabnika z enostavnejšim geslom…
Omenimo še, da bi lahko namesto lastnega uporabili tudi Windows Server 2019 Telnet Server, vendar smo lastnega izdelali zato, ker je za enostavne aplikacije prikladnejši, saj izvorno kodo strežnika v Microsoft Visual Studio.NET razvijamo naprej podobno kot bi jo v Arduino okolju.
Nestrežniške storitve
AWS Lambda, AWS DynamoDB in AWS S3 storitve predstavljajo resno alternativo pravkar opisanim strežniškim storitvam. Prednost nestrežniške implementacije storitev sta njihovi večja varnost in enostavnejše vzdrževanje, saj za AWS strežnike in sistemsko programsko opremo v njih skrbi Amazon. Sami moramo zgolj izdelati in vzdrževati programsko kodo storitev, ki temelji na AWS razvojnih programskih knjižnica, preko katerih dostopamo do funkcionalnosti AWS računalniške infrastrukture. Sami moramo poskrbeti tudi za definicijo načina shranjevanja podatkov, ki jih lahko shranjujemo v AWS DynamoDB tabelah, ali pa kot datoteke na AWS S3 navideznih podatkovnih pogonih.
Uporaba funkcij AWS Lambda zahteva predpripravo tako na stani AWS IoT Core in AWS S3 storitev, kot tudi dopolnitev primera vgrajene programske opreme za MQTT povezavo IoT naprave z AWS IoT Core storitvami, predstavljenega v SE293. Ker pa bi bilo samo naštevanje funkcionalnosti dolgočasno, se bomo lotili konkretnega primera, ki je zanimiv tudi za lastno implementacijo varnostnih sistemov v okviru AWS storitev.
Razpoznavanje slik z ESP32-CAM v AWS oblaku
V Svetu elektronike je bilo o ESP32-CAM že veliko napisanega, a primer povezave ESP32-CAM z AWS Lambda in AWS S3 storitvami, ki omogočajo prepoznavanje in shranjevanje slik v AWS oblaku, je še posebej zanimiv za graditelje varnostnih sistemov, ki se pogosto srečujejo tudi s problemom varnega prenosa obveščevalnih podatkov preko Interneta, predvsem pa njihove varne hrambe. AI Thinkerjev ESP32-CAM modul lahko že z AI Thinkerjevim primerom ugnezdene programske preme za Arduino razvojno okolje uporabimo tudi za osnovno sprotno razpoznavanje obrazov, vendar je mogoče le sprotno ogledovanje slik s spletnim brskalnikov na oddaljenem računalniku z internetno povezavo.
Povezava z AWS omogoča več. Poleg tega, da kamera morebitnega storilca kaznivega dejanja posname, se posnetki takoj varno shranijo v Internetu in jih morebitni storilec ne more odnesti seboj. Nekateri so doslej v ta namen uporabljali DropBox, Google Drive in podobne storitve, namesto katerih lahko uporabimo tudi AWS S3, ki se lepo vklaplja v portfelj AWS storitev.
Kaj potrebujemo?
V preteklem nadaljevanju ste lahko prebrali, kako se registriramo in povežemo z AWS konzolo, za tokratni eksperiment pa potrebujemo še ESP32-CAM modul, ki ga lahko naročite skoraj v vsaki svetovni spletni trgovini z elektronskimi komponentami (npr. www.amazon.de, www.farnell.com, www.digikey.com) ter 3,3 V vmesnik USB/RS-232, ki ga lahko kupite (npr. FTDI ali CH341) ali izdelate sami. Na spletni strani PC USB Projects (sites.google.com/site/pcusbprojects) najdete načrte za vmesnike na osnovi PIC32MX250F128B, PIC18F14K50 in MCP2200. Vsekakor potrebujete tudi dovolj zmogljivo 5 V napajanje prek USB (vsaj kakih 500 mA), da bo ESP32-CAM modul dobro deloval, medtem ko se lahko USB/RS-232 vmesnik napaja kar iz računalnikovega priključka USB. Kot vmesnik USB/RS-232 je mogoče uporabiti tudi Arduino Uno, vendar to zahteva dodatno vezje za prilagoditev napetostnih nivojev iz 5 V na 3,3 V. Vsekakor potrebujemo tudi Wi-Fi dostopno točko z dostopom do Interneta, kar omogoča večina novejših modemov slovenskih internetnih operaterjev, lahko pa v začasno dostopno točko premenimo tudi pametni telefon, prenosni ali namizni računalnik z dostopom do interneta in Wi-Fi vmesnikom.
Priprava storitev AWS Lambda in AWS S3
Če hočemo slike iz ESP32-CAM modula shranjevati v AWS, moramo v njem pripraviti funkcije za zajem in obdelavo podatkov ter model za shranjevanje podatkov. Dela se bomo lotili po korakih: Najprej bomo izdelali AWS senco ESP32-CAM IoT naprave v AWS IoT Core in zanjo pridobili certifikate, podobno kot smo naredili že v SE293, le da tokrat z nekoliki bogatejšo funkcionalnostjo. Sledi izdelava AWS S3 vedra (AWS S3 bucket), v katerega bom shranjevali zajete slike iz ESP32-CAM, temu pa priprava dveh Lambda funkcij. V AWS IoT Core moramo vgraditi še pravila, ki bodo omogočala posredovanje podatkov obdelave slik nazaj v ESP32-CAM. Mimogrede omenimo še, da lahko ESP32-CAM opremimo s tremi LED (npr. zeleno, rumeno in rdečo), s katerimi lahko neposredno vidimo sprotno delovanje razpoznave slik. Tisti, ki se jim ne ljubi spajkati oziroma na tablici za prototipiranje (proto boardu) priklapljati LED in 330 uporov pa lahko namesto tega priklopijo vmesnik USB/RS-232, ki ga potrebujemo tudi za programiranje ESP32-CAM. Več o tem v nadaljevanju.
AWS senca ESP32-CAM IoT naprave
Tako kot v preteklem nadaljevanju, se najprej prijavimo v AWS konzolo in izberemo IoT Core storitve, nato pa v levem stranskem pregledu seznam Things. Zdaj lahko ustvarimo novo napravo oziroma stvar. Ker bomo senco ESP32-CAM IoT naprave uporabili v ugnezdeni programski kodi, je dobro, da jo poimenujete myesp32-cam-example, saj tako kode ne bo potrebno prilagajati. Ostale nastavitve pustimo kot so in nadaljujemo na drugi ekran, na katerem ustvarimo nov elektronski certifikat za komunikacijo ESP32-CAM z AWS in ga aktiviramo (gumb Activate). Namesto tega lahko uporabite tudi obstoječi certifikat, če ste že izdelali kako drugi IoT napravo.
Naslednji korak je izgradnja varnostne politike, ki jo poimenujemo Esp32Policy. Tokrat bomo pri opisu varnostne politike natančnejši kot v SE293, saj bomo natančno opredelili dovoljene operacije. Predloga za izgradnjo politike je priložena v datoteki z izvorno kodo ESP32-CAM vgnezdene programske opreme na spletni strani PC USB Projects. V predlogo JSON na označena mesta vnesete svojo regijo in ID svojega AWS računa. Nato politiko povežete z myesp32-cam-example.
Izgradnja AWS S3 vedra
Tako imenovano vedro za shranjevanje podatkov bomo poimenovali esp32-recognition-<ID AWS računa>. Pri tem <ID AWS računa> zamenjate z vašim ID računa v AWS. Namesto tega lahko za ime AWS S3 vedra uporabite tudi katerokoli drugo ime, ki še ni uporabljeno za ta namen. JSON datoteka s predlogo z definicije vedra, v katero na označena mesta vnesete ID svojega uporabniškega računa in uporabniško ime, je priložena v datoteki z izvorno kodo ESP32-CAM vgrajene programske opreme. V slednji najdete tudi XML datoteko s CORS konfiguracijo, ki omogoča komunikacijo prek HTTPS in jo prav tako vgradimo v vedro.
AWS Lambda funkciji
Koda Lambda funkcij v programskem jeziku Python 3.8 in omogoča pripravo podpisanih AWS S3 spletnih povezav URL, kakor tudi API za razpoznavanje predmetov. Tudi ta koda je priložena izvorni kodi vgrajene programske opreme za ESP32-CAM. V kodo prve funkcije, ki jo bomo imenovali esp32-request-url in je zadolžena za generiranje URL, moramo po kopiranju vnesti ime vedra, ki je v našem primeru esp32-recognition-<ID AWS računa>. Za izvajanje funkcije moramo v datoteki JSON (priložena) dodati tudi ustrezna dovoljenja za dostop do AWS S3 vedra in objavo sporočil za IoT napravo.
Druga funkcija, esp32-request-recognition, ki je prav tako pripravljena v programskem jeziku Python 3.8, prepoznava predmete na slikah. Podobno, kot pri prvi funkciji, moramo tudi tej v datoteki JSON (priložena) zagotoviti ustrezne pravice izvajanja, s katerimi pokliče AWS Lambda storitev prepoznavanja, nakar objavi MQTT temo.
Določitev AWS IoT Core pravil
Jedrna IoT Core pravila izvajajo klice AWS Lambda funkcij glede na vsebino prispelih MQTT sporočil. Prvi pravilo izvaja klic esp32-request-url Lambda funkcije ob prispetju URLjev preko HTTPS protokola, zato ga lahko opredelimo kot naslednji enostavni SQL stavek: SELECT * FROM ‘esp32/pub/url’. Podobno, opredelimo tudi drugo pravilo za klic esp32-request-recognition Lambda funkcije kot: SELECT * FROM ‘esp32/pub/data’, saj ta funkcija vrne odgovor o prepoznavi.
Testiranje delovanja lastnih AWS funkcionalnosti
Tako, naredili smo kar nekaj opravil in preden se lotimo programiranja in povezovanja ESP32-CAM z AWS oblakom, je pametno preveriti, ali pravkar pripravljene funkcije delujejo. Testiramo tako, da v oknu AWS IoT Core storitev iz stranskega levega pregleda izberemo rubriko Test ter se prijavimo na temo esp32/sub/url. Nato sestavimo JSON datoteko z vsebino {”payload”:”virtual-esp32-device”} in jo objavimo na esp32/pub/url kot novo temo. Kot odgovor pričakujemo <ime datoteke>/<podpisan URL>. URL lahko preverimo z orodji, kot je Postman (poštar), v katerih izberemo funkcijo PUT, pri kateri izberemo binarno telo, in kot vsebino prilepimo prejeti URL. Ko pošljemo zahtevo (PUT), se mora v AWS S3 vedru pojaviti nova datoteka.
Zdaj lahko v AWS S3 vedro prenesemo testno datoteko test.jpg, ki smo jo prej ustvarili. Ponovno gremo v rubriko Test v IoT Core, se prijavimo na MQTT temo esp32/sub/data in v temi esp32/pub/data objavimo JSON datoteko z naslednjo vsebino: {”payload”:”test.jpg”}. Odgovor, ki vsebuje ključne besede Amazonove storitve razpoznavanja, ima temo esp32/sub/data.
Priprava strojne opreme
Delovanje ESP32-CAM in možnosti izboljšanja njenega delovanja so natančno predstavljene na spletni strani PC USB Projects v projektu ESP32-CAM based secure flash LED camera. Vezje je izdelano tako, da za programiranje kamere ni potrebno pretikanje kablov, pri čemer je za USB/RS-232 vmesnik in krmilnik ESP32-CAM uporabljen Microchipov MCP2200. Tako je vgradnja nove vgrajene programske opreme v ESP32-CAM mogoča samo z uporabo programske opreme. Res je, da vezje nima LED-ic niti mikrostikala, s katerim sprožimo razpoznavanje predmeta na slik, lahko pa namesto tega uporabimo RS-232 povezavo, preko katere z ukazom sprožimo prepoznavanje. Po izvedenem prepoznavanju ESP32-CAM vrne rezultati.
Če si vseeno želite mikrostikala in lučk, povejmo, da morate mikrostikalo za upravljanje prepoznave vezati med GPIO12 in 3,3 V, medtem ko priključke GPIO13, GPIO14 in GPIO15 uporabite za povezavo rdeče, rumene in zelene LED. Morda opozorimo, da si od vrha navzdol priključki na levi strani modula ESP32-CAM sledijo takole: 5 V, masa, GPIO12, GPIO13, GPIO15, GPIO14, GPIO2 in GPIO4, z desne strani pa 3,3 V, GPIO16, GPIO0,masa,VCC,GPIO3,GPIO1,masa.
Kakorkoli, če boste projekta povezave ESP32-CAM z AWS oblakom lotili bolj bazično, se pretikanju kablov ali pritiskanju mikrostikal za reset in programiranje vsekakor ne boste mogli izogniti. Za programiranje modula moramo vhod GPIO0 spojiti na maso, za normalno delovanje pa ga ni potrebno povezati, saj modul že vsebuje 10 k ohmski upor na maso. Priključka U0TxD in U0RxD omogočata prenos programske kode v načinu za programiranje in prenos sporočil in ukazov med normalnim delovanjem modula. Zato lahko USB/RS-232 most uporabimo tako za programiranje kot za diagnostiko in krmiljenje ESP32-CAM med normalnim delovanjem.
Kakorkoli, vezje AWS IoT naprave za prepoznavo predmetov in nalaganje slik v AWS S3 vedro je tako enostavno, da ga lahko sestavimo celo z vtičmi kabli na tablici za prototipiranje.
Izgradnja ugnezdene programske opreme za ESP32-CAM
Na uradnem blogu AWS konzole je objavljen primer povezava ESP32-CAM z AWS za razvojno okolje PlatformIO (vtičnik platformio.platformio-ide-2.2.1.vsix), ki je vtičnik za Microsoftov zastonjski urejevalnik programske kode Microsoft Visual Studio VSCode, v katerega lahko sicer vgradimo še številne druge vtičnike prevajanje, razhročevanje, nameščanje in poganjanje programskih kod v različnih programskih jezikih. VSCode deluje v Windows z nameščenim .NET Framework 4.5.2 ali novejšim, lahko pa z določenimi dodatnimi razvojnimi namestimo tudi v operacijske sisteme Linux in Apple Mac X.
Kakorkoli, PlatformIO je prirejen za spletno namestitev, kar pomeni, da smo pri namestitvi na nov računalnik in pri vseh posodobitvah povsem odvisni od številnih strežnikov v Internetu, iz katerih orodje za namestitev sproti črpa datoteke in razvojna orodja. Po drugi strani pa že površen pregled programske kode razkrije, da glavna programska datoteka main.cpp med prevajanjem vključi programsko knjižnico Arduino.h, ki je v razvojnem okolju Arduino v vsakem primeru vključena in je ni potrebno posebej navajati. Zato lahko PlatformIO za AWS primer z ESP32-CAM sorazmerno enostavno priredimo za Arduino. Kar sem storil tudi sam. Da z razlago ne bi izgubljali preveč prostora, povejmo le še, da lahko datoteko ESP32-CAM-SV-AWS.zip z izvorno kodo primera potegnete iz spletne strani PC USB Projects.
Kako deluje ugnezdena programska oprema?
Pred koncem tokratnega nadaljevanja namenimo še nekaj besed razlagi in nastavitvam ugnezdene programske kode. Za povezavo z Wi-Fi moramo v programsko kodo vgrajene programske opreme vnesti SSID in geslo, za povezavo z AWS pa še elektronski certifikat AWS oblaka in elektronski certifikat sence ESP32-CAM v AWS. Do AWS dostopamo preko končne točke za svojega uporabnika v določeni AWS regiji (root ali IAM, o tem ste že brali v SE292), zato moramo v programsko kodo vnesti tudi URL naslov končne točke (endpoint address), ki vsebuje naš uporabniški ID in oznako regije. Ker pa vsega programja ne bomo napisali sami, moramo pri kopiranju vzorčne programske opreme paziti, da na označenih mestih pravilno vnesemo svoje poverilnice.
Zdaj se lahko posvetimo delovanju programske opreme. Osnovna programska koda za zajem slik z ESP32-CAM ni kaj dosti spremenjena, razlika je predvsem v tem, da nam pri razpoznavanju slik slednje zajemamo na zahtevo, oziroma ob pritisku na mikrostikalo, ki je vezano na GPIO12. Zajem slik z OV2640 je skrit v programskih knjižnicah, zato zajem slike izvedemo z eno samo funkcijo.
Preostali del glavnega programa skrbi za prenos slike v AWS oblak in proženje funkcij za njeno razpoznavanje in vračanje rezultatov razpoznave.
Naslednjič
Podatkovna zbirka AWS DynamoDB omogoča strukturirano hrambo in hitro dostopnost podatkov. Zato je nepogrešljiva pri številnih IoT aplikacijah, ki se spogledujejo s področjem informatike. Prihodnjič se lotimo projekta, s katerim bomo izkoristili tudi njen potencial v povezavi z AWS IoT Core in AWS Lambda storitvami.
Avtor: dr. Simon Vavpotič
https://sites.google.com/site/pcusbprojects
2021-294