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?
V preteklem nadaljevanju smo izkoristili potencial AWS DynamoDB v povezavi z AWS IoT Core in obenem spoznali majhno, a priročno Microchipovo razvojno ploščico PIC-IoT, ki združuje WINC1510 Wi-Fi komunikacijski modul, PIC24FJ128GA705 mikrokontroler, SAMD21E18A razhroščevalnik (USB/RS-232 most in PIC24FJ128GA705 programator), napetostni regulator in polnilnik litijevih baterijskih akumulatorjev, iz katerih se lahko napaja.
Tokrat se podrobneje lotimo Microchip PIC32WFI32E Couriosity Board razvojne plošče z Microchip WFI32E Wi-Fi modulom, ki združuje USB in Wi-Fi povezljivost v enem čipu, še posebej s stališča zagotavljanja varnosti storitev. Preverili bomo tudi novosti na področju razvoja ESP32 modulov in alternativne IoT združljive infrastrukture v oblaku, Google Cloud in Microsoft Azure. Še vedno pa bo rdeča nit uporaba AWS storitev.
Microchip WFI32E01 modul in PIC32WFI32E Couriosity Board
Čeprav spajkanje modula na razvojno ploščo ni najpreprostejše, je priprava električne sheme za vgradnjo v krmilno vezje sorazmerno enostavna. Za osnovno delovanje potrebuje le stabilizirano napajanje in nekaj zaščitnih uporov. Opcijsko lahko za pogon ure realnega časa pripeljemo še sinusni signal s 32,768 kHz.
Ta vsebina je samo za naročnike
Microchip WFI32E01 modul temelji na 200 MHz mikrokontrolerskem čipu PIC32MZ1025W104 s 1024 kB Flash RAMa in 256 kB SRAMa za program in podatke ter RAMa za podatkovni izravnalnik 64kB RAM. Wi-Fi deluje v načinih AP (dostopne točka), STA (postaja), SoftAP (programska dostopna točka), pri čemer strojno podpira komunikacijske protokole WPA, WPA2 in WPA3 ter kriptografske algoritme SSL, TLS v1.2 in TLS v1.3. Opcijsko lahko dodamo tudi zunanji kriptografski čip. Ima tudi funkcijske enote: USB s polno hitrostjo, 10/100 Mbps ethernet, CAN, CAN-FD, dva 12-bitna A/D pretvornika, 6 CVD vhodov za zaslone na dotik, 3 zaporedne vmesnika, dva I2C vmesnika in dva SPI vmesnika. Za splošne vhode-izhode lahko porabimo do 37 priključkov. Modul izdelujejo v štirih različicah s PCB anteno (PE), PCB anteno iz priključkom za zunanjo anteno (PC), z modulom Trust&GO in PCB anteno (UE) ter z modulom Trust&GO in priključkom za zunanjo anteno (UC).
Kot vidimo, funkcionalnosti WFI32E01 modulu res ne manjka, a za hiter začetek dela z njim si je dobro omisliti modularno razvojno ploščo Microchip PIC32WFI32E Couriosity Board z vtičnim konektorjem za ploščice z WIFI moduli in možnostjo vgradnje hčerinskega modula za priklop v Ethernet. Razvojna plošča ima vgrajen tudi programator/razhroščevalnik, lahko pa WFI32E01 modul programiramo tudi s PICkitom 3 ali 4 ali drugim združljivim programatorjem prek zunanjega ICSP priključka, za kar potrebujemo tudi novejša MPLAB X in XC32 (npr. MPLAB v5.45 in XC32 v2.5). Microchip PIC32WFI32E Couriosity board ima vgrajen še 32-megabitni zunanji Flash RAM in dve kontrolni LED. V Flash RAM lahko namestimo daljše programe, podobno kot pri ESP modulih, potrebno za združljivost s priljubljenim razvojnim okoljem Arduino. Res da ima PIC32MZ mikrokontroler v WFI32 modulu 1 MB Flash RAMa, vendar pa ga nemalokrat potrebujemo več, za kar pride prav dodatni pomnilniški modul na PIC32WFI32E Couriosity Boardu.
Microchip PIC32WFI32E Couriosity Board lahko razširimo z IO1XPlainedPro modulom z ležiščem za mikro SD kartico, temperaturnim in svetlobnim tipalom, nizkofrekvenčnim filtrom in nekaj signalnimi LED-icami. Modul ima tudi ID čip, s pomočjo katerega lahko v ugnezdeni programski kodi vselej preverimo, ali je priključen. Drugi opcijski dodatni modul temelji na MCP2200 namenskem mikrokontrolerju in ga lahko povežemo prek GPIO dvovrstičnega konektorja.
Konektor z GPIO priključki je po drugi strani namenjen predvsem raziskovalnemu eksperimentiranju, saj lahko z njim na enostaven način povežemo raznovrstne lastne zunanje naprave. Med zunanjimi priključki omenimo še mikroBUS, ki omogoča povezovanje razširitvenih plošč podjetja Mikroelektronika in ležišče PHY za standardno Microchipovo Ethernet hčerinsko ploščico s čipom LAN8720A, prek katere Couriosity board povežemo v ožičeni Ethernet.
WFI32E01 modul ni prispajkan na Couriosity board, namesto tega ima slednji posebno vtičnico, v katero vtaknemo hčerinsko ploščico WFI32E01 modulom. Hčerinska ploščica je priložena modulu, gotovo pa bomo v prihodnosti lahko dokupili tudi hčerinske ploščice s prihajajočimi novejšimi različicami WFI32 modulov
V prihodnosti za testiranje novih različic WFI32 modulov tako ne bomo potrebovali novega Couriosity Boarda, ampak bomo preprosto odvili vijaka in vstavili hčerinsko ploščico z novim modulom.
Posebnost PIC32WFI32E Couriosity Board je tudi ročni preklop med tremi možnostmi napajanja: iz USB vtičnice gostitelja, USB vtičnice gosta ali prek napajalnih priključkov. Microchipove razvojne plošče imajo navadno vgrajen krmilnik napajanja, kot smo to videli tudi v preteklem nadaljevanju pri PIC-IoT modulu, no tu pa so se dozdevno zaradi nekoliko cenejše izvedbe odločili za ročni preklop s pretikanjem mostička.
Vzpostavitev povezave z AWS in enostavni primeri uporabe
Podobno kot PIC-IoT, ima tudi Microchip PIC32WFI32E Couriosity Board ugnezdeno programsko opremo za hitro testiranje AWS storitev preko Microchipove spletne strani. Najprej prek spletne strani Cayenne.com nastavimo poverilnice za dostop do lokalne Wi-Fi dostopen točke, nato pa se Couriosity Board lahko samodejno poveže z AWS storitvami, kot smo videli v preteklem nadaljevanju. Pri vzpostavljeni povezavi lahko na Microchipovi spletni strani vidimo grafični prikaz iz tipal zajetnih vrednosti.
Nekoliko zahtevnejši test je upravljanje LED iz AWS oblaka. LED ponazarja aktiviranje in deaktiviranje krmiljene naprave, za kar bi morali dodati le še krmilno logiko. Obenem iz računalniškega oblaka sprejemamo tudi stanje LED. Vendar je zdaj pred nami nekoliko težja naloga, saj moram primer uporabe namestiti na Microchip PIC32WFI32E Couriosity Board, obenem pa moramo tudi sami pripraviti zaledno AWS storitev, kar vključuje prijavo v AWS konzolo, izgradnjo sence IoT naprave, pripravo e-certifikatiov in e-ključev itn., o čemer ste že lahko prebrali v preteklih nadaljevanjih. Primer je vsekakor poučen in se ga začetnikom splača natančno preučiti, saj z njim prehodijo vse korake, ki so potrebni za uporabo AWS IoT Core storitev.
Obenem se naučimo uporabljati tudi dodatke Microchip Harmony Confirguratorja, med katerimi je najpomembnejša javanska aplikacija Microchip Harmony Content Manager, ki omogoča enostaven prenos manjkajočih programskih orodij, vtičnikov, programskih knjižnic in številnih primerov iz GitHuba v MPLAB X razvojno okolje. Lahko ga uporabljamo kot vtičnik ali pa kot samostojno aplikacijo. Vendar je pogoj, da predhodno namestimo MPLAB X razvojno okolja vsaj različica 5.40. Priznam, da sem bil vseeno malo razočaran, ko sem odkril, da aplikacija ne deluje na Raspberry Pi, ker ne najde nekaterih Microchipovih javanskih programskih knjižnic. Kakorkoli, prenosa primerov se lahko lotite tudi prek spletne strani https://github.com/Microchip-MPLAB-Harmony, le da boste morali v tem primeru sami prenesti tudi vse potrebne programske knjižnice in programska orodja oziroma vtičnika za Microchip Harmony Configurator.
Programiranje
Ker Microchip PIC32WFI32E Couriosity Board temelji na PIC32MZ, je razvojno okolje zanj nekoliko drugačno kot za PIC24 mikrokontroler, na katerem temelji starejša in enostavnejša PIC-IoT razvojna plošča. Razvoj vgrajene programske kode za PIC32 mikrokontrolerje poteka v Microchip Harmony, medtem, ko podpora za PIC18 in PIC24 temelji na Microchipovih aplikacijskih knjižnicah. Vseeno pa potrebujemo dovolj novo različico Microchip Harmony Configuratorja, ki jo lahko k sreči skoraj samodejno prenesemo ali posodobimo s spleta.
Implementacija ugnezdene programske opreme je 4-nivojska. Nanajnižjem nivoju so programske knjižnice za upravljanje Ethertnet in Wi-Fi funkcijskih enot, ki so implementirane v programski knjižnici pic32mzw1.a.
Slednja iz drugega nivoja kličejo sistemske storitve in sklad TCP/IP programskih funkcij, na najvišjem nivoju pa je programska aplikacija.
Za komunikacijo z AWS storitvami je potrebno podpreti protokola TCP/IP in MQTT. Razvojno okolje Microchip Harmony omogoča integracijo obeh v MPLAB X Harmony Configuratorju v obliki Wi-Fi storitev. Pri tem komunikacija s strojno opremo na povezovalnem nivoju poteka prek gonilnikov, ki uporabljajo programsko knjižnico PIC32MZW1.a za komunikacijo z Wi-Fi funkcijsko enoto PIC32MZ mikrokontrolerja WFI32 modula.
Programska koda za MPLAB X razvojno okolje za povezavo z AWS storitvami prek MQTT protokola je na aplikacijskem nivoju zelo drugačna od Arduino kode, saj je veliko vzporednosti implementirane eksplicitno v obliki programske implementacije avtomatov stanj, oziroma korakov izvajanja algoritmov, med katerimi prehajamo z IF stavki.
Razlika je tudi neposredna uporaba podpornih programskih knjižnic, ki so v Arduino okolju skrite v programski kodi chipKit. V MPLAB X razvojnem okolju namesto tega uporabljamo Harmony Configurator z generatorjem skeletne programske kode. Potrebne programske knjižnice preprosto izberemo v drevesnem pregledu. Pri tem si lahko pomagamo tudi s številnimi primeri programske kode za različna področja uporabe. Po drugi strani, novejše različice Harmony Configuratorja samodejno predlagajo aktivacijo in/ali deaktivacijo (nekaterih) odvisnih programskih knjižnic in gonilnikov v drevesnem pregledu, zato je možnost, da bi pri kaj pozabili ali bi bilo kaj odveč, manjša. Je pa res, da le programer najbolje pozna svojo programsko kodo, zato moramo včasih ponujeno tudi zavrniti.
Prek spletne strani WFI32 modula oziroma iz GitHuba lahko potegnemo tudi gradivo PIC32MZW1 Workshop spletne delavnice, v kateri se naučimo osnov programiranja in uporabe WFI32 modulov. V primerjavi s projekti za ožičeni Ethernet, ki so na voljo za PIC32MZ Starter kite, sta novost programska modula WIFI PROVISIONING SERVICE in WIFI SERVICE, ki omogočata enostavno uporabo Wi-Fi funkcionalnosti WFI32 modulov, poleg njiju pa še knjižnice za kriptografijo in uporabo kriptografskih modulov. Povejmo še, da v delavnici ni prikazana AWS spletna konzola, ki smo jo uporabili tudi mi v preteklih nadaljevanju, ampak so namesto tega za izvedbo nastavitev in izgradnjo e-certifikatov za MQTT komunikacijo uporabili terminalski dostop iz ukaznega okna. Vgradnja e-certifikatov v vgrajeno programsko kode je enostavna, saj njihovo vsebino enostavno prekopiramo v programske datoteke, podobno kot smo to že videli v preteklih nadaljevanjih v Arduino razvojnem okolju.
AWS in Microchip MQTT knjižnica za WFI32E01 in PIC-IoT
MQTT protokol, ki ga potrebujemo za komunikacijo z AWS, smo omenili že v preteklih nadaljevanjih, tokrat pa nas bodo zanimale posebnosti Microchipove implementacije, ki jo uporabljamo v MPLAB X razvojnem okolju. Microchipova implementacija MQTT podpira vse funkcije in tipe sporočil tega protokola, dodaja pa jim še nekatere opcijske lastnosti. Podprti tipi sporočil so CONNECT, CONNACK, PUBLISH, PINGREQ, PINGRESP, SUBSCRIBE in DISCONNECT.
MQTT programsko knjižnico uporabljamo s pomočjo javnega API (aplikacijskega programskega vmesnika), obenem pa ima knjižnica za podporo lastnemu delovanju tudi interni API. Kakorkoli, iz uporabniške aplikacije najprej pokličemo funkcijo MQTT_Client_Initialize(), ki pripravi vse potrebno za delovanje MQTT protokola pod pogojem, da je zagotovljena TCP/IP dostopnost (AWS) MQTT strežnika. Nato z ukazom MQTT_CreateConnectPacket ustvaromo paket za vzpostavitev povezav z MQTT strežnikom, z ukazoma MQTT_CreatePublishPacket in MQTT_CreateSubscribePacket pa pakete za objavo in naročanje sporočil. Za pošiljanje paketov uporabljamo ukaze mqttSendConnect, mqttSendPublish in mqttSendPublish, medtem ko moramo za njihovo sprejemanja pripraviti prekinitveni podprogram, ki se zažene vsakič, ko iz MQTT strežnika prispe nov paket.
Vsekakor je tak način dela bolj zapleten kot pri uporabi AWS MQTT programske knjižnice, vendar pa omogoča večjo pretočnost podatkov in zanesljivost prenosa. Poleg tega lahko z ukazi, kot je mqttCurrentState, sproti preverjamo tudi stanje povezave z AWS MQTT strežnikom in stanje prenosa podatkov. Je pa res, da so tovrstne funkcionalnosti v Arduino programerju skrite in se odvijajo v ozadju, a če želi izdelati program za podrobnejšo in zanesljivejšo komunikacijo z MQTT strežnikom jih mora prav tako uporabiti.
Arduino, Wi-Fi, PIC32 in WFI32E01
Arduino razvojno okolje omogoča enostavno izgradnjo vgrajene strojne opreme, ki vključuje enostavno uporabo AWS storitev. Čeprav PIC mikrokontrolerje redkeje uporabljamo v Arduino razvojnem okolju, je kljub temu na voljo široka chipKit podpora istoimenske spletne skupnosti proizvajalcev strojne opreme in programskih razvojnih orodij. Člani chipKit sproti dodajajo Arduino podpore za svoje nove razvojne plošče z odprto arhitekturo, ki jih zato lahko za lastno uporabo izdelamo tudi sami. Vendar je navadno kljub temu temu cenejši in hitrejši nakup razvojne plošče.
Čeprav programske podpore chipKit spletne skupnosti proizvajalcev razvojnih plošč za Arduino razvojno okolje še ni, jo morda vseeno lahko pričakujemo že v tem letu, saj je WFI32E modul na osnovi v PIC32MZ1025W104 mikrokontrolerja zaradi velikih zmogljivosti vsekakor zanimiv tudi za ljubiteljske razvijalce, ki niso vajeni zahtevnejšega MPLAB X razvojnega okolja, predvsem pa si želijo primerov uporabe, ki jih je enostavno nadgrajevati in integrirati v kompleksnejše rešitve za vsakdanjo rabo.
Največ zanimanja vzbuja vgrajeni USB vmesnik, skupaj z Wi-Fi in Ethernet vmesnikom ter 1 MB Flash RAMa, kar ponuja raznolike možnosti (samo)gradnje naprav, kot so spletni usmerjevalniki v obliki USB ključka, obenem pa tudi možnost vgradnje nalagalnika ugnezdene programske opreme. Spomnimo, da moramo pri ESP modulih programsko kodo naložiti prek sorazmerno počasne RS232 povezave, pri čemer potrebujemo za nalaganje prek USB tudi ustrezen vmesniški modul, oziroma mikrokontroler, kot je namenski MCP2200, ki ga lahko kupimo tudi v obliki mikro modula, ki ga nataknemo na enega od priključkov Microchip PIC32WFI32E Couriosity Board.
Zmogljivost, varnost in zanesljivost delovanja
Podporo za delovanje Wi-Fi povezave predstavlja skupek kompleksnih programskih knjižnic, ki podpirajo delovanje različnih strežniških storitev. Dobro je, če njihove različice v razvojnem okolju stalno posodabljamo, saj s tem zakrpamo tudi varnostne luknje v ugnezdeni programski opremi, na katere ne moremo neposredno vplivati. Po drugi strani, so navadno varnejši novejši Wi-Fi moduli, denimo ESP32 v primerjavi z ESP8266 ali WFI32E01 v primerjavi z WINC1510. Zato nove naprave raje ne gradimo iz starejših Wi-Fi modulov. Prav tako starejši moduli pogosto nimajo vgrajenega naravnega vira naključnih števil, ki zagotavlja neponovljivost zaporedja naključnih števil ob ponovnem vklopu modula, kar je osnova za zagotavljanje varnosti s pomočjo kriptografskih algoritmov.
TCP/IP podpira delovanje številnih omrežnih protokolov na višjih nivojih, od katerih so za zagotavljanje varnosti podatkov še posebej pomembni kriptografski standardni algoritmi, kot sta SSL in TLS, ki še posebej pri povezavah Wi-Fi preprečujejo vpoglede v vsebine podatkovnih paketov.
Pomembna je tudi strojna podpora za šifriranje in dešifriranje podatkov, ki prihrani veliko zmogljivosti mikrokontrolerja. Denimo, pogosto uporabljani protokol HTTPS vključuje šifriranje podatkov z SSL ali TLS algoritmom in je še posebej pomemben pri uporabi AWS storitev. Ko sem pred leti testiral PIC32MZ EC Starter Kit brez strojne podpore za šifriranje podatkov, je bil spletni HTTP strežnik znatno hitrejši od HTTPS strežnika. Zato ne preseneča, da so pri Microchipu pripravili AWS podporo za PIC32MZ EF Starter Kit, za starejši PIC32MZ EC Starter Kit pa ne.
PIC32MZ EF Starter Kit je zanimiv tudi v povezavi z WINC1510 modulom omogoča podobne funkcionalnosti kot jih ima Microchip PIC32WFI32E Couriosity Board, pri čemer ima na voljo več RAMa in dvakrat več Flash RAMa (2 MB), a je povezava z Wi-Fi veliko počasnejša. Kljub temu je modul zanimiv za ožičene AWS aplikacije, katerih prednost je manjša izpostavljenost omrežja morebitnim hekerskim napadom.
Ko smo že pri varnosti omrežij, omenimo da še tako dober Wi-Fi modul ne more preprečiti programerskih neumnosti, kot je izbira prekratkega ali samoumevnega gesla internetne dostopne točke, ki ga je sorazmerno lahko uganiti. Vsekakor moramo pred resno uporabo zamenjati tudi vsa morebiti prednastavljena gesla, e-certifikate in e-ključe z lastnimi, v kar nas AWS storitve tudi prisilijo, če do njih dostopamo neposredno in ne prek Microchipove spletne strani. Prednost slednje predvsem v tem, de deluje instantno na osnovi pred vnesenih poverilnic v vsaki razvojni plošči (kot je PIC-IoT) in se nam zato ni potrebno registrirati za uporabo AWS storitev, niti nam ni potrebno v njih izvajati nastavitve. Je pa res, se si prav veliko več od sprotnega grafičnega prikaza s tipal zajetih podatkov in možnosti komunikacije med različnimi IoT moduli od nje ne moremo obetati, saj temelji na AWS storitvah, ki jih je vsekakor smiselno in potrebno prilagoditi lastnim potrebam, kot smo videli v preteklih nadaljevanjih.
Glede zanesljivosti delovanja še to! Odgovor na vprašanje, ali se lahko Wi-Fi povezava poruši tudi na razdalji do 10 m, kakršna je med sobami v blokovskih stanovanjih, je vsekakor pritrdilen. Pri tem sta odločilna dva faktorja, promet po lokalnem omrežju, v katerega je povezana naša dostopna točka in Wi-Fi promet podatkov na enem od trinajstih frekvenčnih pasov, ki si jih delimo sosedi. Vsekakor se splača algoritem dostopne točke prilagoditi tako, da se ta vselej pojavi na manj obremenjenem frekvenčnem pasu.
AWS alternative
Doslej smo omenjali zgolj AWS storitve, vendar bi lahko veliko napisali tudi o podpori za preostala velika računalniška oblaka, v katerih lahko najamemo računalniško infrastrukturo. Google Cloud Platform lahko uporablja vsak, ki ima Googlov račun, večina ga uporablja zgolj za dostop do elektronske pošte, čeprav Google ponuja še kopico drugih storitev. Kljub temu se večina uporabnikov najprej vpraša, koliko stane uporaba Googlovih oblačnih storitev in ali je na voljo zastonjsko preizkusno obdobje. Obakrat lahko odgovorimo pritrdilno. Google nam ob registraciji v Google Cloud Platform, pri kateri nam ni potrebno ponovno vnašati osebnih podatkov, vnesti moramo zgolj podatke, ki se nanašajo na pristop k uporabi Google Cloud Platform. Za nagrado dobimo 300 USD, ki jih lahko porabimo za testiranje Googlovih storitev v oblaku. Vendar se nam v nasprotju z Amazonovim AWS ni potrebno bati, da bi morali začeti plačevati z lastnim denarjem. Googlove storitve namesto tega prenehajo delovati. Delovanje storitev je sicer podobno AWS storitvam in storitvam Microsoft Aure, zato se podrobnosti Microsoft Azure in Google Cloud Platform raje lotimo v kakem od prihodnjih člankov.
ESP in PIC mikrokontrolerji, ko gre zares!
Spoznali smo delovanje popularnega AWS računalniškega oblaka, ki je gotovo ena izmed odličnih osnov za razvoj novih, kompleksnejših IoT rešitev po tudi kompleksnih strežniških rešitev, pri katerih želimo namesto lastne uporabljati najeto navidezno strežniško infrastrukturo, ki jo lahko prilagodimo svojim željam in potrebam pa tudi debelini svoje denarnice. Prednost AWS infrastrukture v oblaku je tudi v razpršenosti podatkovnih centrov, v katerih domuje, po celem svetu. Tako ni bojazni, da bo ob pravilnem koncipiranju navidezne strežniške infrastrukture ob takšni ali drugačni katastrofi v enem podatkovnem centru ostali brez podatkov ali razpoložljivosti storitev, če le imamo internetno povezavo.
V prihajajoči seriji člankov z naslovom ESP in PIC mikrokontrolerji, ko gre zares! bomo spoznali, kako malo ali veliko je potrebno, da iz razvojnih plošč ali načrtov strojne opreme, objavljenih v spletu, ustvarimo izdelke za vsakdanjo rabo, ki jim lahko zaupamo.
Začeli bomo z novim pogledom na uporabniške vmesnike, ki morajo zagotavljati zanesljivost delovanja. Na primer, del uporabniškega vmesnika je lahko tudi mikro stikalo, pri katerem moramo upoštevati tudi možnost neželenih kratkih impulzov, ki ne smejo sprožiti akcije, kot tudi možnost njegove okvare, ko ostane stalno pritisnjeno ipd. Lahko uporabniku ponudimo zasilni izhod?
Zanimali nas bodo odzivnost, zanesljivost in redundanca strojne opreme, kakor tudi kaj storiti, na primer, če se sistem sesuje zaradi preveč izpraznjenega vira napajanja. Denimo, ESP moduli lahko zaznajo t.i. brownout situacije, v katerih se navadno samodejno ponovno zaženejo, lahko pa namesto tega odklopijo določene električne porabnike in nadaljujejo z delom, ko se zaradi manjše obremenitve napajalna napetost spet dvigne.
Razmišljali bomo tudi o tem, kako pisati programe ugnezdene programske opreme tako, da se mikrokontroler ne zazanka tudi, če med delovanjem naprave dopove katera od perifernih naprav. Denimo, če vremenska postaja uporablja zunanji čip za merjenje temperature, ki je povezan z nekaj metri kabla, moramo v strojni opremi kot v programu za prenos podatkov upoštevati možnost, da pride od zaustavitve komunikacije zaradi indukcije kratkotrajnega negativnega impulza, ali da se kabel preprosto pretrga. Kako zaznamo take situacije? Kaj če zunanjega tipala ne moramo resetirati? Navadno pomaga, če ugasnemo in ponovno prižgemo napajanje. Zanimalo nas bo, kako storimo brez človeškega posredovanja. Lotili se bomo tudi nekaterih razvojnih plošč in preverili, kako se jih da izboljšati. Vsekakor pa nas bo zanimalo tudi, kako je mogoče napravo narediti zanesljivejšo z uporabo več mikrokontrolerjev, ki medsebojno preverjajo svoje pravilno delovanje. V tem pogledu je še posebej zanimivo področje robotike, zato bomo omenjene zamisli preizkusili na tudi na pravem robotu, ki ga skupaj krmilita ESP8266 in ESP32. Skratka veliko praktičnih primerov in rešitev, od enostavnih do bolj kompleksnih, med katerimi ne bodo manjkali spletni radio, usmerjevalnik ethernet-Wi-Fi, Wi-Fi krmilnik velikega električnega porabnika z vgrajeno vklopno-izklopno uro itn…
Avtor: dr. Simon Vavpotič
https://sites.google.com/site/pcusbprojects
2021/296