ERK'2021, Portorož, 347-350 347 Zasnova in izvedba pametne sidrne boje kot naprave IoT Januš Likozar 1 , Aleš Jaklič 1 1 Fakulteta za računalništvo in informatiko, Univerza v Ljubljani, Večna pot 113, 1000 Ljubljana E-pošta: ales.jaklic@fri.uni-lj.si Abstract. We present design and implementation of a smart buoy IoT device for anchor monitoring of recreational vessels. All current solutions solve this problem by monitoring the position of the vessel itself, which is in many cases not reliable enough. Visual monitoring of the anchor requires diving. Our system solves this problem with a buoy attached to the anchor with a cable. The buoy is equipped with a GNSS module that tracks its geographic position in real time and an underwater IP camera, that also allows visual inspection of the anchor in real time. We developed a web and mobile application for user friendly interaction with the system and we experimentally evaluated the precision of positional data from the GNSS module 1 Uvod V delu bomo predstavili zasnovo in izvedbo pametne sidrne boje za nadzor položaja sidra. Podobne obstoječe rešitve, ki temeljijo na položaju plovila in ne sidra, so opisane v [5]. Shematski prikaz principa delovanja sistema prikazuje Slika 1. Z mobilno napravo (pametni telefon, tablica, prenosni računalnik) se uporabnik poveže na WiFi dostopno točko boje. Nato pa preko spletne oziroma mobilne aplikacije prejme alarm, če se sidro in posledično sidrna boja premakne. Sidro lahko nadzira tudi vizualno preko podvodne nadzorne kamere, ki lebdi nad sidrom. Slika 1. Shematski prikaz sistema za nadzor sidra 2 Metodologija Računalniški sistem pametne sidrne boje sestavljajo: računalnik Raspberry Pi 4 z 2 GB pomnilnika RAM, modem Huawei E3372 LTE USB Stick za dostop do mobilnega internetnega omrežja, navigacijski modul za GNSS NEO-M9N proizvajalca U-Blox AG (Slika 4), ter IP podvodna kamera proizvajalca Barlus. 2.1 Modul za vklop in izklop naprave Ker je celotna naprava napajana baterijsko in se boja večino časa nahaja v vodi, smo razvili namensko vezje, ki omogoča brezstični vklop in izklop celotnega sistema s pomočjo trajnega magneta in reed releja, programski vklop in izklop IP kamere ter spremljanje napetosti baterije. Shemo elektronskega zapaha prikazuje Slika 2. Sam zapah tvorita tranzistorja U2 ter Q4. Ko približamo magnet reed releju in se njegova kontakta skleneta, prične prevajati tranzistor Q1 in nato še U2 ter Q4 in s tem zapah preide v stanje, ko se naprava vključi. Ko je sistem enkrat vključen, lahko programsko preverjamo ponovno prisotnost magneta ob reed releju z branjem vhoda na GPIO20. Če je magnet prisoten več kot 2 sekundi, sprožimo ob odmiku magneta proces ugašanja operacijskega sistema naprave. V datoteki /boot/config.txt (dtoverlay=gpio-poweroff, gpiopin=16) lahko definiramo, da se ob zaključku ugašanja operacijskega sistema na GPIO16 pojavi kratek 100 ms impulz napetosti, ki preko tranzistorja Q3 odklene zapah in s tem odklopi baterijo od naprave. Slika 2. Shema vezja za brezstični vklop in izklop naprave Slika 3. Vezje za merjenje napetosti baterije LiPo Za baterijo uporabljamo baterijo LiPo s 4 zaporedno vezanimi celicami (4S 2200 mAh). Njeno preostalo 348 kapaciteto ocenjujemo preko izmerjene napetosti celotne baterije. Za merjenje uporabljamo preprost napetostni delilnik s kondenzatorjem za filtriranje visokofrekvenčnih motenj ter 12-bitni pretvornik AD MCP3002 (Slika 3). AD pretvornik je na Raspberry Pi povezan preko vodila SPI. 2.2 Modul za določanje položaja z GNSS Za določanje geografskega položaja sidrne boje smo izbrali GNSS modul NEO-M9N proizvajalca U-Blox AG (Slika 4). Modul lahko v dobrih pogojih za sprejem signalov GNSS doseže natančnost nekaj metrov [3]. Modul že vsebuje podporo za vodilo USB, tako da smo ga lahko neposredno priključili na USB vrata Raspberry Pi, kjer je programsko dosegljiv preko zaporednih vrat na /dev/ttyACM0. Za delovanje ne potrebuje nobenih dodatnih gonilnikov. Modul uporablja tako standardiziran protokol NMEA, kot tudi lastniški protokol proizvajalca - UBX. Slednji ponuja dostop do polne funkcionalnosti modula. Za naš namen smo uporabljali protokol UBX in sicer dve sporočili UBX-NAV-PVT (Navigation PVT Solution) ter UBX-NAV-GEOFENCE (Geofencing Status). Proizvajalec modula zagotavlja programsko opremo za konfiguracijo in testiranje modula U-Center na MS Windows operacijskem sistemu [4]. Za naš primer uporabe je polega samega geografskega položaja zelo pomemben še podatek o oceni natančnosti določenega položaja (Slika 5). Slika 4. GNSS modul NEO-M9N proizvajalca U-Blox AG Slika 5. Primer podatkov sporočila UBX-NAV-PVT prikazanih v programski opremi U-center 2.3 Podvodna IP kamera Za kamero smo izbrali podvodno kamero UW-S5- 4DCSX30 proizvajalca Barlus z resolucijo 5 MP, ki smo jo s kablom UTP CAT5e neposredno povezali z Ethernet priključkom na Raspberry Pi. Kamera ima precej obsežen nabor nastavitev, ki so dosegljive preko spletnega vmesnika. Opremljena je tudi z belimi in IR LED za osvetlitev scene. Obe vrsti luči je možno programsko prižigati in ugašati preko preprostega vmesnika API, ki uporablja protokol HTTP. Sama slika se prenaša v živo preko protokola RTSP (Real Time Streaming Protocol) in jo lahko prikazujemo na odjemalcih s programsko opremo VLC oziroma s knjižnico libVLC. 2.4 Spletna aplikacija za uporabo sidrne boje Za namene demonstracije uporabe in testiranja sistema smo razvili spletno aplikacijo, ki prikazuje položaj boje oziroma sidra na zemljevidu [5]. Uporabnik lahko položaj sidra uporabi za definiranje geografske ograde z različnimi radiji. V primeru, ko boja zapusti definirano območje ograde z določeno verjetnostjo, modul GPS pošlje ustrezno sporočilo in s tem v spletni aplikaciji sproži vizualni in zvočni alarm. Programska oprema je sestavljena iz spletnega strežnika in spletnega odjemalca, ki teče v brskalniku. Tako smo omogočili uporabo mobilnih telefonov, tablic in prenosnih računalnikov kot odjemalcev. Strežniški program je napisan v programskem jeziku Python in uporablja ogrodje za gradnjo spletnih aplikacij Flask [6], za sam spletni strežnik pa uporabljamo WSGI http strežnik Gunicorn [7]. Naš program tako komunicira z modulom GNSS preko protokola UBX in ustrezne podatke posreduje odjemalcu preko zahtev HTTP. Spodaj je opisanih nekaj glavnih dostopnih točk: /index in /camera: Glavni dve točki, preko katerih odjemalec prejme spletno aplikacijo. Prva za pogled na zemljevidu, druga pa za pogled skozi kamero. /status: Strežnik enkrat na sekundo komunicira z modulom GNSS, ki pošilja trenutni položaj, nastavljeno območje geografske ograde sidra ter ali je modul znotraj te ograde. Strežnik si shranjuje te podatke in ob prejeti zahtevi odjemalca posreduje zadnje pridobljene podatke. /history: Enkrat na minuto si strežnik shrani trenutni položaj boje. Ob zahtevi na to točko strežnik odjemalcu pošlje celotno zgodovino položajev od zagona sistema. /anchor: Ob prejemu zahteve na to točko strežnik na modulu GNSS nastavi območje geografske ograde na trenutno lokacijo s podanim radijem. Če je radij 0, se to območje odstrani. Spletna aplikacija za odjemalce je napisana v jeziku JavaScript in uporablja knjižnice Bootstrap za oblikovanje strani ter Mappa [8] za prikaz in risanje po zemljevidu. Čez celoten zaslon na aplikaciji je izrisan zemljevid. V vrstici pod zemljevidom so nastavitve za strežnik, kjer lahko nastavimo trenuten položaj boje kot 349 položaj sidra, prikažemo zgodovino premikanja sidra, ugasnemo sistem in ostale nastavitve (Slika 6). Ko nastavimo sidro, se na trenutnem položaju pokaže krog z izbranim radijem, ki označuje geografsko ogrado - dovoljeno območje boje. Dokler je boja znotraj območja, je krog prozoren, ko je na robu, je siv, ko je zunaj pa rdeč. Poleg tega se nam, ko zapusti območje, sproži zvočni in vizualni alarm. . Slika 6. Prikaz spletne aplikacije na pametnem telefonu Na vrstici nad zemljevidom se lahko premaknemo na stran s kamero. Kamera že vsebuje svoj strežnik, preko katerega lahko zahtevamo trenutno sliko. Odjemalec zahteva sliko enkrat na sekundo, in jo prikaže čez celotno stran. 2.5 Mobilna aplikacija za uporabo sidrne boje Spletna aplikacija ima svoje prednosti, ampak ne podpira vseh funkcij, ki jih potrebujemo za praktično uporabo naprave. Slika 7. Prikaz mobilne aplikacije na pametnem telefonu Tako ne more delovati v ozadju in ne more prejemati videa iz kamere preko protokola RTSP. V ta namen smo po spletni aplikaciji razvili še mobilno aplikacijo za Android pametne telefone in tablice z uporabo knjižnice libVLC [9]. Tako lahko gledamo video sliko v živo in prejmemo obvestilo oziroma alarm tudi, ko je zaslon izključen ali pa telefon uporabljamo za kaj drugega (Slika 7). 3 Eksperimentalni rezultati Natančnost našega sistema smo preverili eksperimentalno. Sistem smo postavili zunaj na prosto brez večjih ovir v bližini in si eno uro zapisovali lokacijo in predvideno natančnost modula enkrat na sekundo. Sistem je ves čas miroval. Slika 8. Graf predvidene natančnosti modula Predvidena natančnost modula (Slika 8) se giblje nekje med 3 in 4.5 metri, povprečna natančnost pa je bila 3.64 metra. Slika 9. Graf odmika geografske širine Slika 10. Graf odmika geografske dolžine 350 Lokacija je predstavljena kot odmik od povprečne lokacije (Slika 9 in Slika 10). Povprečni odmik geografske dolžine je 0.51 metra, širine pa 0.93 metra. Slika 11. Graf odmika lokacije od povprečne predvidene lokacije Na Sliki 11 je predstavljen absoluten odmik od povprečne predvidene lokacije modula. Povprečen odmik je bil 0.88, največji pa 3.2 metra. Distribucija odmikov, je predstavljena na Sliki 12. Slika 12. Histogram odmikov lokacije sistema Slika 13. Graf predvidenih lokacij modula Na Sliki 13 je grafični prikaz lokacije sistema tekom eksperimenta v 2D ravnini. Iz rezultatov lahko razberemo, da je bila povprečna natančnost modula še boljša, kot pa je bila predvidena na modulu. 4 Zaključek in nadaljnje delo Uspelo nam je zasnovati in izdelati cenovno dostopen prototip pametne sidrne boje, ki ustreza konceptu najosnovnejšega sprejemljivega produkta (MVP) (Slika 14). Nadaljnje izboljšave prototipa bodo zasnova elektronike in programske opreme za brezžično polnjenje baterije sistema ter izboljšava natančnosti modula za določanje geografske lokacije. Pri slednjem bomo spremljali razvoj sistema European Geostationary Navigation Overlay Service (EGNOS) in preučili možnost hkratne uporabe inercialne navigacije ter računalniškega vida [10], ki bi lahko zaznale oranje sidra po morskem dnu in s tem še hitreje opozorile uporabnika, da sidro ne drži dobro. Slika 14. Prototip pametne sidrne boje Literatura [1] https://www.raspberrypi.org/documentation/configuration/ wireless/access-point-bridged.md (dostopno 27. 7. 2021) [2] Configure the RPi as a Local Network Access Point (wired and wireless) - Raspberry Pi Forums, https://www.raspberrypi.org/forums/viewtopic.php?f=36 &t=271865 (dostopno 27. 7. 2021) [3] https://www.u-blox.com/en/product/neo-m9n-module (dostopno 27. 7. 2021) [4] https://www.u-blox.com/en/product/u-center (dostopno 27. 7. 2021) [5] J. Likozar: Nizkocenovni računalniški sistem za slikovno podvodno opazovanje, Diplomsko delo, Fakulteta za računalništvo in informatiko, Univerza v Ljubljani, 2020 [6] https://palletsprojects.com/p/flask/ (dostopno 27. 7. 2021) [7] https://gunicorn.org/ (dostopno 27. 7. 2021) [8] https://mappa.js.org/ (dostopno 27. 7. 2021) [9] https://www.videolan.org/vlc/libvlc.html (dostopno 27. 7. 2021) [10] P. Henkel, A. Sperl, U. Mittmann, R. Bensch and P. Färber, "Precise Positioning of Robots with Fusion of GNSS, INS, Odometry, LPS and Vision," 2019 IEEE Aerospace Conference, 2019, pp. 1-6, doi: 10.1109/AERO.2019.8741724.