Vo voľnom čase sa venujem programovaniu mikrokontrolérov ESP8266, ESP32 od Espressif Systems, AVR ATmega (Arduino vývojové kity) vo frameworku Wiring (Arduino Core) v prostredí Arduino IDE.
Primárne sú programované pre účely zberu dát, ovládania GPIO, čítania hodnôt z digitálnych senzorov, ADC prevodníka, prenosu dát.
Mám skúsenosti s obsluhou analógových a digitálnych vstupov, prerušení pre rôzne stavy detekcie hrany digitálneho vstupného signálu (RISING / FALLING) so SW debouncingom.
Viem navrhnúť pseudo-multitasking programu pre obsluhu zberníc, výpočtov, požiadaviek na server a pod.
Dokážem navrhnúť optimalizovaný firmvér pre ESP8266 / ESP32 pre prevádzku na batériu - Ultra Low Power (ULP), režim hlbokého spánku.
Ovládam komunikáciu s perifériami cez štandardné zbernice - UART / RS232 / RS485 / I2C / SPI / OneWire s kompatibilnou Arduino (C/C++) knižnicou.
Pre konektivitu do siete a internetu som využíval technológiu WiFi / Ethernet (komunikácia cez SPI u Arduino dosiek, resp. RMII pri ESP32 s PHY Ethernet) / Sigfox LPWAN (komunikácia cez HW / SW UART) pre prenos dát do cloudovej služby, alebo vlastného backendu dosiahnuteľného cez internet, LAN sieť.
Mám skúsenosti s prenosom dát cez UDP datagramy, ale aj cez štandardné TCP protokoly napr. HTTP(s) / MQTT(s) a ich implementáciou pod týmito mikrokontrolérmi.
Venujem sa tvorbe jednoduchých responzívnych (Bootstrap) webových rozhraní v HTML5, ktoré môžu bežať na mikrokontroléroch v režime webservera, alebo na webhostingu s podporou PHP (procedurálne, nie OOP) scriptov pre backend umožňujúci spracovanie, archiváciu (MySQL).
Vizualizáciu nameraných údajov zo senzorových uzlov realizujem v grafickej reprezentácii (Google Charts / Gauges).
Mnou vytvorené webové rozhrania umožňujú na základe požiadaviek aplikácie aj vzdialené (remote) ovládanie GPIO s možnosťou konfigurácie riadiacich údajov pre logiku aplikácie (napr. cieľová teplota, hysteréza).
Ovládanie v manuálnom / automatickom režime na základe podmienok --> nameraných fyzikálnych veličín, rozhodovacieho prahu, času... Logika spustená vykonaním PHP scriptu, ktorý spustí mikrokontróler a načíta payload (JSON, RAW...) v Response webservera, na ktorý dokáže vykonať callback.
Vytvoril som pár jednoduchých webaplikácii s možnosťou multiuser prístupu (session), ktoré umožňujú používateľovi vizualizovať dáta z jeho mikrokontroléra s možnosťou jeho vzdialenej správy.
Webové rozhranie umožňuje vygenerovať zdrojový kód pre mikrokontróler na základe nastavených údajov s možnosťou autentizácie mikrokontroléra cez argument v POST requeste, alebo cez HTTP autentizáciu (Basic Auth / Bearer token, Digest a iné).
Na FEI TUKE som realizoval diplomovú prácu s využitím frameworku ESP-IDF (jazyk C) pre mikrokontróler ESP32 od Espressif Systems.
Využíval som operačný systém reálneho času FreeRTOS a osvojil som si elementárne základy spúšťania úloh (tasks) a mechanizmy blokovania úloh, napr. fronta - Queue.
Finálna implementácia firmvéru diplomovej práce pre ESP32 obsahovala Remote Over The Air (OTA) aktualizácie firmvéru distribuovaného cez cloudové úložisko (podpisová schéma ECDSA pre digitálny podpis firmvéru).
Downlink firmvéru cez zabezpečený prenosový kanál - HTTPS protokol so zápisom do voľnej (pasívnej) partície vo flash pamäti.
Vygenerovaný vlastný Root CA certifikát, certifikát pre doménu nástrojom OpenSSL, implementácia do HTTPD služby Cent OS pre HSTS presmerovanie (v bakalárskej práci využitá i autentizácia klienta klientským certifikátom).
Súčasťou riešenia diplomovej práce bolo aj permanentné spustenie HW funkcionalít ESP32 cez eFuses - Secure Boot V1, Flash Encryption v režime pre produkčné aplikácie (Release) pre zabezpečenie firmvéru, odtlačku Bootloadera (digestu) a bootovacieho procesu.
Využil som aj balík ESPTOOL s nástrojmi esptool.py (práca s flash ESP32), espefuse.py (práca s eFuses), espsecure.py (kryptografické operácie, generovanie kľúčov, podpisovanie firmvéru).
Referencie na mnou realizované projekty - DEMO na vyskúšanie:
Screenshoty z realizovaných projektov - Arduino / ESP8266 / ESP32:
Hladinomer - Dashboard
Prehľad aktuálnej výšky hladiny vody a objemu studne s dynamickou aktualizáciou dát cez jQuery GET.
Hladinomer - Graf
Historické merania výšky hladiny vody v studni v tabuľkouvej reprezentácii s tendenciou vývoja hladiny a časovou značkou merania.
Meteostanica - Graf
Grafická vizualizácia meteorologických údajov o tlaku, teplote a vlhkosti vzduchu.
RFID vrátnik (open-source)
Real-time výpis priloženia RFID karty s výsledkom overenia (ne)autorizovaného zamestnanca.
Vykurovanie - ESP8266
Hlavný prehľad nameraných teplôt z DS18B20 senzorov na OneWire zbernici, stav výstupu pre kotol, obehové čerpadlo, prevádzkový režim.
Vykurovanie - ESP8266 - Graf
Grafická reprezentácia teplôt, aktivity kotla, obehového čerpadla. Dobeh vykurovania na vode v radiátoroch, systéme.
Ethernet termostat
Webserver bežiaci na Arduine s Ethernet shieldom Wiznet pre konfiguraciu regulačných teplôt a vizualizáciu stavu výstupu.
RFID Dominator
Stopky pre Airsoft s RFID vstupom s kompatibilným náramkou kartou ISO/IEC 14443
Tlačidlový Dominator
Stopky dvoch časov pre Airsoft s tlačilovým vstupom pre 2 tímy, rozhodcu a erasera.
Mastermind - Logik
Implementácia hry Mastermind na LCD znakovom displeji - DEV debug verzia s výpisom hľadaného čísla.
WebScraper
UART vstup s ĚCV vozidla, overenie kradnutého vozidla na stránkach Minv so scrapovanim obsahu z HTML kódu.
Escape Room
Arduino + Ethernet s tlačidlovým vstupom s možnosťou vzdialenej zmeny hľadaného kódu obsluhou Escape Room v reálnom čase. Ovládanie elektronického zámku (solenoidu) cez relé.
Ovládanie relé
Ovládanie 2x 8 relé pre 2 používateľov s 1x remote hardvérom. Každý používateľ má práva obsluhovať svojich 8 relé.
Riadenie ventilov kotla
Riadenie ventilov kotla na základe teploty, kontrola prítomnosti 230V pre signalizačné relé do vyššieho systému - Jablotron pre SMS notifikáciu.
UDP datagramy
Ovládanie ESP32 cez UDP datagramy zasielané cez nástroj Packet Sender v prostredí Windows.
Screenshoty z realizovaných úloh a zadaní - MATLAB:
Kružnicová trilaterácia
Určenie polohy mobilného terminálu sieťou - vysielacími stanicami s rôznou chybovosťou.
Beamforming - Massive MIMO
Formovanie lúčov (beams) vysielacou stanicou k mobilným terminálom s optimalizáciu lúča proti interferencii v 5G sieťach.
Náhodný šum
Vplyv náhodného šumu na 8-bitové obrázky. Vloženie šumu do 1. (LSB) až 8. bitu (MSB) Grayscale 8-bitového modelu, spojenie do výsledného obrázku.
Vzorkovanie signálu
Vplyv pod a nadvzorkovania analógového signálu s jeho spätnou reprezentáciou po digitalizácii.
Frekvenčné spektrum
Vplyv interpolácie na spektrum signálu s vložením vzoriek do spektra. Predchádza aliasingu (prekrývaniu spektier).
Zhoda hashov
Percentuálne porovnanie hashov po znakoch v hexadecimálnej reprezentácii s vizualizáciu zhody stĺpcovými grafmi.
Priebeh útlmu signálu
Grafická reprezentácia útlmu signálu pre voľný priestor a pre Friisov vzťah s logaritmickým priebehom.
Detekčná charakteristika
Priemer detekčného kužeľa vo vzťahu k vzdialenosti objektu (hladiny vody) so známou charakteristikou detekcie - 15°.
Transformácie obrázkov
Úprava obrázku do Grayscale vlastnou a vstavanou metódou, zmenšenie rozlíšenia, transponovanie matice obrázka, diagonálne skosenie.