blogy logo
login PRIHLÁS SA
BLOG deadawp
ČLÁNKY
DISKUSIE
3
SLEDOVAŤ BLOG
PHP, Arduino programátor
deadawp



Overenie kradnutých vozidiel - Arduino + Ethernet / ESP32 / ESP8266
pridal deadawp 30.12. 2019 o 1:12



Ako fanúšik Facebookovej skupiny HAKA som sa rozhodol vyhotoviť rozhranie s využitím mikrokontrolérov pre overenie ŠPZ áut, ktoré môžu byť potencionálne kradnuté. Ako komunikačný nástroj som využil až tri platformy, pričom som pre každú platformu vyhotovil zdrojový kód s rovnakou funkčnosťou.

Využil som Arduino s Ethernet modulom (shieldom) Wiznet W5100 a dve WiFi platformy - ESP8266 a ESP32. Nakoľko je stránka Ministerstva vnútra Slovenskej republiky pod HTTP protokolom, je možné využiť aj spomínaný Ethernet shield, nakoľko HTTPS spojenia nepodporuje, na HTTP bude dostačujúci.

Princípom programu je odoslanie zadanej ŠPZ na webovú stránku Ministerstva vnútra Slovenskej republiky a z odpovede webservera vyskladať, či je vozidlo kradnuté, alebo nie. Obsahom HTTP POST požiadavky je parameter - (parameter input okna pre ŠPZ) s jeho hodnotou, v tomto prípade ŠPZ auta.

Webserver odpovie vypísaním celej HTML stránky, ktorú vie mikrokontróler spracovávať po riadkoch. Na základe údajov, ktoré sa v zdrojovom kóde vyskytujú vieme vypísať výstup.

Programová implementácia: 
V prípade zadania ŠPZ, po ktorej nie je vyhlásené pátranie webserver vypíše informáciu: "Podmienke vyhovuje: 0 záznamov". Mikrokontróler pri načítavaní stránky po riadkoch overuje, či nenarazil na takýto text. Arduino má práve vo svojom jazyku možnosť porovnať, či načítaný reťazec obsahuje aj takýto reťazec, funkcie pre objekt String, napríklad: indexOf. V prípade, že áno, môžem s 100% istotou vypísať, že auto s danou ŠPZ nie je kradnuté. Cyklus načítavania môžem následne programovo ukončiť v predstihu, nemusím načítavať stovky riadkov zdrojového kódu.

Ak je vozidlo kradnuté, výpis je trošku zložitejší. Ak je vozidlo kradnuté, zaznamenáme výpis v HTML programe:  "Podmienke vyhovuje: 1 záznam". Následne na základe skúmania zdrojového kódu zistíme, ako je formátovaný výpis o vozidle. Výpis existuje formou HTML tabuľky, pričom element je medzi tagmi NAŠA INFORMÁCIA. Aj túto informáciu načítame v jednom z riadkov. Použitím funkcie jazyka C - strok() môžeme na základe terminátorov získať informáciu - parsovaním, ktorá je medzi tagovacími značkami ><. Použitie strok funkcie vyžaduje pretypovanie načítaného reťazca typu String na pole znakov!

Ako však správne určiť tento riadok?
Nad každým riadkom s (pre nás dôležitou) informáciou je riadok obsahujúci nadpis pre danú informáciu, napríklad: Druh vozidla, Značka vozidla, VIN kód. To znamená, že môžeme softvérovo očakávať, že na ďalšom riadku bude daná informácia, ktorú získame spomedzihtml párového tagu. Môžme teda povedať, že web scrapingom prostredníctvom mikrokontroléra vieme získať informácie, ktoré o vozidle potrebujeme.

Metódy vstupu do systému:
Systém obsahuje niekoľko metód vstupu. Je možné využiť jednorázové zadanie ŠPZ do zdrojového kódu pre mikrokontróler. Možno využiť UART rozhranie, prípadne odosielať po RS232 ŠPZ a automaticky na základe vstupu generovať výstup. (Priložený obrázok). Alebo aj iné metódy - Arduino ako webserver do HTML inputu načíta danú ŠPZ, ktorú následne odošle, zadávanie prostredníctvom dotykového TFT displeja, tlačidiel s reprezentáciou na LCD znakovom displeji a pod.

Po RS232, respektíve UART je možné zadať aj viacero ŠPZ zároveň, ktoré sa budu postupne z tohto poľa načítavať. ŠPZ v poli musia byť oddelené novým riadkom, teda znakom \n. Každá z platforiem má rozdieľnu veľkosť hardvérového buffra pre UART. V prípade Arduina je to 64 bajtov, ESP8266 ponúka 128 bajtový buffer, v prípade ESP32 je možné emulovať až 1024 bajtový buffer. Nakoľko má každá ŠPZ 7 bajtov, pre Arduino je možné využiť pole s 9 ŠPZ zároveň, pre ESP8266 18 ŠPZ, pre ESP32 až 146. Rozhranie podporuje aj zadanie C značiek, či iných - špeciálnych evidenčných čísel s variablinou dĺžkou. Odozva systému je cca do 7 sekúnd, závisí od mikrokontroléra. Arduino s Ethernet shieldom je zo všetkých podporovaných platforiem najpomalšie, čo sa prejaví aj na dobe odozvy, kým stačí Arduino načítať všetky riadky zdrojového kódu (načítavajú sa po jednom a prepisujú). 

Ďalšie praktické využitie tohto systému:
Systém môže byť ľahko intergrovaný do technológie OpenCV, kedy je možné v reálnom čase načítať ŠPZ a HTTP požiadavkou na server overiť, či je vozidlo kradnuté. To znamená, že v reálnom čase vieme overiť, či vozidlo pred nami, alebo v protismere je kradnuté, prípadne jeho evidenčné číslo. Možno používať priamo na aute za jeho prevádzky. Prípadne staticky monitorovať z centrálneho miesta premávku a overovať jednotlivé vozidlá, ktoré na komunikácii premávajú.

Využitie aj v prípade rôznych parkovacích automatov, ktoré odfotia ŠPZ auta pri vstupe do parkoviska. Táto informácia môže byť odoslaná do mikrokontróleru práve po UART/RS232 rozhraní a na základe overenia môže daný parkovací systém/automat dané auto zablokovať a z parkoviska ho nepustiť, privolať políciu, kontaktovať správcu parkoviska.

Viac zaujímavých projektov je možné nájsť na mojich stránkach: https://arduino.php5.sk/



Prístupov 287
Kvalita článku
hlasov 0

PRÍSPEVKY
SLEDUJETE
Prosím prihláste sa pre možnosť pridania komentáru.
Prihláste sa, alebo použite facebook login facebook login
ĎALŠIE ČLÁNKY V BLOGU
ThingSpeak - IoT platforma pre Arduino /...
[ 16.1.2020] (príspevkov 0)
Vzorkovanie signálu - MATLAB
[ 15.1.2020] (príspevkov 0)
Meranie napätia - Arduino
[ 13.1.2020] (príspevkov 0)
Meranie jednosmerného prúdu - Arduino
[ 12.1.2020] (príspevkov 0)
Hlasom ovládané auto - ESP8266 (NodeMCU)
[ 10.1.2020] (príspevkov 0)
Frekvenčné spektrum - MATLAB
[ 10.1.2020] (príspevkov 0)
Overenie kradnutých vozidiel - Arduino +...
[ 30.12.2019] (príspevkov 0)
OPC UA - (ESP8266, ESP32, Arduino + Eth...
[ 21.12.2019] (príspevkov 0)
Šum v 8-bitových obrazoch - MATLAB
[ 5.12.2019] (príspevkov 0)