{"id":968,"date":"2020-01-08T19:48:50","date_gmt":"2020-01-08T18:48:50","guid":{"rendered":"https:\/\/wordpress.labs.fhv.at\/openlabs\/?p=968"},"modified":"2020-03-04T17:16:07","modified_gmt":"2020-03-04T16:16:07","slug":"smart-alps-dokumentation","status":"publish","type":"post","link":"https:\/\/wordpress.labs.fhv.at\/openlabs\/2020\/01\/08\/smart-alps-dokumentation\/","title":{"rendered":"Smart Alps Dokumentation"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\"><strong>Vorhandene Situation <\/strong><\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Alpe_WegQuelle.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"224\" src=\"https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Alpe_WegQuelle-300x224.jpg\" alt=\"\" class=\"wp-image-971\" srcset=\"https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Alpe_WegQuelle-300x224.jpg 300w, https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Alpe_WegQuelle-402x300.jpg 402w, https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Alpe_WegQuelle.jpg 667w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/figure><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Das\nQuellwasser auf der Alpe wird in einem Wasserreservoir gespeichert, welches in\neinem nicht leicht zug\u00e4nglichen Gel\u00e4nde liegt. Dies bedeutet, wenn man den\naktuellen Wasserstand wissen m\u00f6chte, muss man jedes Mal den Weg zum Reservoir\nerklimmen und dieses \u00f6ffnen, um nachzusehen. Weiters ist die Wasserabdeckung\nnicht \u00fcber das ganze Jahr gegeben und es ist schwer zu analysieren, ob sich ein\nzweites Reservoir rentieren w\u00fcrde.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Alpe_Reservoir.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"225\" height=\"300\" src=\"https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Alpe_Reservoir-225x300.jpg\" alt=\"\" class=\"wp-image-972\" srcset=\"https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Alpe_Reservoir-225x300.jpg 225w, https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Alpe_Reservoir.jpg 390w\" sizes=\"auto, (max-width: 225px) 100vw, 225px\" \/><\/a><figcaption>Das Reservoir auf im Wald \u00fcber der Alpe<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Aufgabe:<\/h3>\n\n\n\n<p>Der Wasserstand im Reservoir soll mithilfe\neines autonomen Systems ermittelt, an einen Server \u00fcbertragen und ausgewertet\nwerden. Dadurch k\u00f6nnten die Daten bequem von Zuhause aus abgefragt werden. Beim\nReservoir selbst sind keine bestehende Stromversorgung und Datenanbindung\nvorhanden. Durch die rauen Wetterbedingungen in den Alpen muss das System\ndauerhaft vor den Einfl\u00fcssen von au\u00dfen gesch\u00fctzt werden. Optional, wenn es die\nZeit zul\u00e4sst, kann noch eine Anzeige mit den wichtigsten Daten auf der Alpe\ninstalliert werden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Konzept<\/h2>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Konzept_Messaufbau.png\"><img loading=\"lazy\" decoding=\"async\" width=\"199\" height=\"300\" src=\"https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Konzept_Messaufbau-199x300.png\" alt=\"\" class=\"wp-image-974\" srcset=\"https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Konzept_Messaufbau-199x300.png 199w, https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Konzept_Messaufbau.png 672w\" sizes=\"auto, (max-width: 199px) 100vw, 199px\" \/><\/a><figcaption>Das Konzept des Messaufbaus im CAD<\/figcaption><\/figure>\n\n\n\n<p>Der Aufbau\nunterteilt sich in eine Haupt- und eine Sensorstation. In der Hauptstation\nbefindet sich die LoraWAN Sendeplatine, sowie die Energieversorgung mit\nBatterie sowie Photovoltaikzelle und der Hauptarduino. Sie ist isoliert und\nenth\u00e4lt ein Heizpad damit auch bei winterlichen Temperaturen die Batterie vor\ndem Laden auf Betriebstemperatur gebracht werden kann. <\/p>\n\n\n\n<p>In der Sensorstation\nbefindet sich ein weiterer Arduino, der den Ultraschallsensor und den\nDurchflusssensor auswertet.<\/p>\n\n\n\n<p>F\u00fcr dieses\naufgeteilte Konzept haben wir uns aufgrund von zwei Argumenten entschieden. Zum\neinen die lange Leitungsl\u00e4nge, die direktes Auswerten von Signalen aufgrund des\nSpannungsabfalls schwierig macht. Zum anderen der knappe Speicher auf dem\nHauptarduino, der vor allem durch die LoraWAN Library stark belegt ist. So w\u00e4re\ndie Auswertung der Sensorrohdaten auf dem Hauptarduino nur eingeschr\u00e4nkt\nm\u00f6glich.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">L\u00f6sung<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Hauptstation<\/h4>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Hauptstation.png\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"182\" src=\"https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Hauptstation-300x182.png\" alt=\"\" class=\"wp-image-975\" srcset=\"https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Hauptstation-300x182.png 300w, https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Hauptstation-768x466.png 768w, https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Hauptstation-494x300.png 494w, https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Hauptstation.png 936w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption>Bild der ge\u00f6ffneten Haupstation<\/figcaption><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Energieversorgung mit Photovoltaik und LiFePo4 Akku<\/li><li>Energiemanagement<\/li><li>LoRaWAN Sendemodul<\/li><li>Temperatursensor<\/li><\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Sensorstation<\/h4>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Sensorstation.png\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"275\" src=\"https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Sensorstation-300x275.png\" alt=\"\" class=\"wp-image-976\" srcset=\"https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Sensorstation-300x275.png 300w, https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Sensorstation-327x300.png 327w, https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Sensorstation.png 536w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption>Bild der ge\u00f6ffneten Sensorstation<\/figcaption><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Ultraschallabstandsensor f\u00fcr F\u00fcllstandmessung<\/li><li>Steuerung und Auswertung des Durchflusssensors<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Sensorik<\/h2>\n\n\n\n<p>F\u00fcr die Messung des Wasserstandes wurde ein Ultraschallsensor der Firma Maxbotix ausgew\u00e4hlt. Dieser ist wasserdicht und verf\u00fcgt \u00fcber eine Aufl\u00f6sung von einem Millimeter mit bis zu 7m Reichweite. Des Weiteren hat er ein sehr geringen Abstrahlwinkel von 11\u00b0, was n\u00f6tig ist, um keine Reflektionen von der Wand des Reservoirs zu erhalten, die die Messung verf\u00e4lschen k\u00f6nnen. <\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Maxbotix_Sensor.png\"><img loading=\"lazy\" decoding=\"async\" width=\"381\" height=\"379\" src=\"https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Maxbotix_Sensor.png\" alt=\"\" class=\"wp-image-979\" srcset=\"https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Maxbotix_Sensor.png 381w, https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Maxbotix_Sensor-150x150.png 150w, https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Maxbotix_Sensor-300x298.png 300w, https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-content\/uploads\/sites\/17\/2020\/01\/Maxbotix_Sensor-302x300.png 302w\" sizes=\"auto, (max-width: 381px) 100vw, 381px\" \/><\/a><figcaption>Der Ultraschallsensor, ein Maxbotix 7389<\/figcaption><\/figure>\n\n\n\n<p>Zus\u00e4tzlich zu der Aufgabenstellung wurden in\nden beiden Geh\u00e4usen zwei kombinierte Temperatur- und Luftfeuchtesensoren\nverbaut. Mit diesen Sensoren kann der \u201eGesundheitszustand\u201c der Geh\u00e4use\nfestgestellt werden. Dabei wurden 1-wire Sensoren verwendet. Bei der\nHauptstation wurde zus\u00e4tzlich ein externer 1-wire Temperatursensor verbaut, um\ndie Umgebungstemperatur zu messen.<\/p>\n\n\n\n<p>Um den \u00dcberlauf des Reservoirs zu messen wurde ein eigener Sensor entwickelt. Dieser basiert auf dem kapazitiven Messprinzip. Je mehr Wasser zwischen den beiden Kondensatorplatten hindurchflie\u00dft, umso niedriger wird die Kapazit\u00e4t der Anordnung. Die Kapazit\u00e4t der Anordnung wird durch einen astabilen Multivibrator mit 555 Timer-IC ausgewertet. Diese Schaltung ver\u00e4ndert ihre Schwingfrequenz je nach angeschlossener Kapazit\u00e4t. Diese Frequenz kann \u00fcber einen Frequenzz\u00e4hler auf dem Arduino ausgewertet und auf den Abfluss umgerechnet werden. Die Idee zum Durchflusssensor haben wir von diesem Video: https:\/\/youtu.be\/ATY3bhiUqg4<br><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Daten\u00fcbertragung und Programmierung<\/h4>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">TheThingsNetwork <\/h3>\n\n\n\n<p>TheThingsNetwork verwaltet das von uns genutzte LoraWAN Netzwerk. Von\nunserem Ger\u00e4t gesendete Daten sind auf den Servern von TheThingsNetwork\nabrufbar. Auf der Website m\u00fcssen alle Ger\u00e4te registriert und einer Anwendung\nzugeordnet werden. TTN \u00fcbernimmt auch die Umwandlung von einer Serie von Bytes,\nwie sie von unserem Ger\u00e4t verschickt werden, in das JSON Format, welches f\u00fcr\ndie weitere Verarbeitung genutzt wird.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Visualisierung via Senseforce<\/h3>\n\n\n\n<p>Senseforce ist ein im Campus V ans\u00e4ssiges Unternehmen, das\nDatenanalysetools zur Verf\u00fcgung steht. Wenn an den MQTT Broker Daten gesendet\nwerden, werden diese automatisch in die Datenbank \u00fcbernommen. Im Webinterface\nvon Senseforce k\u00f6nnen die Daten dann einfach gefiltert und mit Diagrammen\nvisualisiert werden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">MQTT<\/h3>\n\n\n\n<p>MQTT ist\nein Standard, um Daten von IoT Ger\u00e4ten zu \u00fcbertragen. Es gibt einen Broker\n(Serveranwendung) an den die Daten gesendet werden. Um die Daten verschiedener\nAnwendungen zu trennen sind sie in Themen (topics) organisiert. Von dem Broker\nk\u00f6nnen dann alle Daten eines Themas abgerufen werden. Die Daten werden im JSON\nFormat verschickt.<\/p>\n\n\n\n<p>Die MQTT\nMessages m\u00fcssen vom MQTT Broker von TTN abgerufen und dann an den MQTT Broker\nvon Senseforce weitergesendet werden. Da wir auf beide Broker keinen Zugriff\nau\u00dferhalb des Abrufens bzw. Sendens von Daten haben, k\u00f6nnen wir keine direkte\nVerbindung zwischen ihnen herstellen. Deshalb kommt eine MQTT Bridge zum\nEinsatz, die Messages vom TTN Broker abruft, kurz zwischenspeichert und dann\nzum Senseforce Broker hochl\u00e4dt. Das erfordert einen dauerhaft verf\u00fcgbaren\nWebserver und erh\u00f6ht dadurch den Betriebsaufwand. Eine gute dauerhafte L\u00f6sung\nhaben wir hier noch nicht.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Unterer Arduino (Sensorarduino)<\/h3>\n\n\n\n<p>Die Aufgabe des Sensor-Arduinos ist es den Ultraschall- und den\nDurchflusssensor auszulesen. Um Sendezeit zu sparen sollen die Daten mit\nm\u00f6glichst wenigen Bytes \u00fcbertragen werden. Um Speicherplatz am Sendearduino zu\nsparen sollen die Bytes direkt aus der seriellen Verbindung weitergesendet\nwerden, ohne daf\u00fcr noch Berechnungen durchf\u00fchren zu m\u00fcssen.<\/p>\n\n\n\n<p>Die gesamte untere Box ist in der Regel spannungsfrei und wird nur\neingeschaltet, wenn Messwerte ben\u00f6tigt oder andere Befehle gegeben werden. Der\nSensordarduino wartet dann auf einen Befehl.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Ermittlung des\nWasserstands<\/h4>\n\n\n\n<p>Der\nUltraschallsensor gibt einen Puls aus, dessen L\u00e4nge sich abh\u00e4ngig vom\ngemessenen Abstand linear ver\u00e4ndert. Dabei entspricht &nbsp;Pulsl\u00e4nge &nbsp;Abstand. Da die\nGenauigkeit des Sensors bei 5mm liegt und wir ohnehin entschieden haben, dass\neine Genauigkeit von &nbsp;ausreicht, wird\nmit einem Integer in Zentimetern weitergerechnet. Mit der bei Inbetriebnahme im\nSpeicher hinterlegten H\u00f6he des Sensors \u00fcber dem Boden des Tanks wird aus dem\nAbstand die F\u00fcllh\u00f6he errechnet. Dieser Wert darf maximal 255cm betragen, da bei\nder \u00dcbertragung nur ein Byte vorgesehen ist. Der Tank ist aber nur 2m tief,\nsodass eine \u00dcberschreitung dieser Grenze bei korrekten Messungen nicht m\u00f6glich\nist.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Ermittlung des\nDurchflusses<\/h4>\n\n\n\n<p>Zur\nBestimmung des Durchflusses muss die Frequenz der Schaltung des Durchflusssensors,\ndie von der Kapazit\u00e4t des Plattenkondensators abh\u00e4ngt, gemessen werden. Dazu\nwird die Bibliothek FreqCount verwendet. Diese z\u00e4hlt die Peaks in einem\nbestimmten Zeitfenster und errechnet daraus die Frequenz. Da die Messwerte mit\ndieser Methode stark schwanken, wird ein Mittelwert aus drei Messungen\ngebildet. Anhand der empirisch ermittelten Formel wird daraus ein Durchfluss\nermittelt. <\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Temperatur und\nLuftfeuchtigkeit<\/h4>\n\n\n\n<p>Die Messung\nvon Temperatur und Luftfeuchtigkeit ist an allen relevanten Stellen der\nProgramme vorbereitet, aber noch nicht implementiert. Eine Umsetzung mit DHT11\nund DHT22 Sensoren scheiterte an Timingproblemen, da die von uns eingesetzten\nArduinos eine Taktfrequenz von &nbsp;haben, die\nLibrary f\u00fcr die Sensoren aber f\u00fcr &nbsp;ausgelegt ist. Da\ndieses Feature mit niedriger Priorit\u00e4t erst kurz vor Ende des Projekts umgesetzt\nwerden sollte, fehlte die Zeit, um andere Sensoren zu bestellen und zu\nimplementieren.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">EEPROM<\/h4>\n\n\n\n<p>Um das Programm f\u00fcr jeden Tank einsetzen zu k\u00f6nnen sind einige Werte f\u00fcr\ndie Berechnungen als Variablen hinterlegt. \u00dcber die serielle Debug-Schnittstelle\nk\u00f6nnen sie ge\u00e4ndert werden, ohne das Programm neu aufspielen zu m\u00fcssen. Da f\u00fcr\ndas Energiemanagement vorgesehen ist, den Arduino zwischendurch vollst\u00e4ndig\nabzuschalten, k\u00f6nnen die Variablen nicht im normalen Variablenspeicher gespeichert\nwerden. Stattdessen kommt der im Arduino vorhandene \u201eelectrically erasable\nprogrammable read-only memory\u201c (EEPROM) zum Einsatz. Die einzelnen Bytes k\u00f6nnen\nmit einer Library wie bei einem Array ausgelesen werden. Auch der Sommer- bzw.\nWintermodus wird im EEPROM eingestellt. EEPROM Speicher eignet sich allerdings nicht,\num ihn oft zu beschreiben. Da der Tank nicht oft gewechselt wird und auch nur\nzweimal j\u00e4hrlich ein Wechsel zwischen Sommer- und Wintermodus ansteht, ist aber\nnicht zu erwarten, dass der Speicher fr\u00fchzeitig unbrauchbar wird.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Oberer Arduino (Sendearduino)<\/h3>\n\n\n\n<p>Die\nwesentlichen Aufgaben des oberen Arduinos sind die Datenverbindung \u00fcber LoraWAN\nund das Energiemanagement. Auch einige Sensoren sind verbaut, diese machen aber\nnur einen Bruchteil des Codes aus.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Datenverarbeitung und\n\u00dcbertragung<\/h4>\n\n\n\n<p>Die\nwichtigste Aufgabe ist das Betreiben des LoraWAN Funkchips. Einen Gro\u00dfteil der\nArbeit erledigt die LMIC Bibliothek automatisch. Wichtig ist, die Funktion\nos_runloop_once() regelm\u00e4\u00dfig auszuf\u00fchren, da darin wichtige Aufgaben f\u00fcr das\nAufrechterhalten einer Verbindung erledigt werden Ein Timer startet in einem\nregelm\u00e4\u00dfigen Abstand den \u00dcbertragungsprozess. Dazu werden zun\u00e4chst die Daten\nvom Sensorarduino angefragt. Diese Daten werden dann in ein Array \u00fcbertragen\nund die \u00dcberwachungswerte (Temperatur, Luftfeuchtigkeit, Batterie) hinzugef\u00fcgt.\nDann wird der Sendevorgang in Auftrag gegeben. Alles weitere regelt die LMIC\nBibliothek.<\/p>\n\n\n\n<p>Folgendes\nByte-Array wird \u00fcber LoraWAN \u00fcbertragen:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"\"><tbody><tr><td>\n  0\n  <\/td><td>\n  1\n  <\/td><td>\n  2\n  <\/td><td>\n  3\n  <\/td><td>\n  4\n  <\/td><\/tr><tr><td>\n  Ultraschall\n  <\/td><td>\n  \u00dcberfluss\n  <\/td><td>\n  Luftfeuchtigkeit Innen unten\n  <\/td><td>\n  Temperatur Innen unten\n  <\/td><td>\n  Modus\n  <\/td><\/tr><tr><td>\n  5\n  <\/td><td>\n  6\n  <\/td><td>\n  7\n  <\/td><td>\n  8\n  <\/td><td>\n  9\n  <\/td><\/tr><tr><td>\n  Batterie-spannung\n  <\/td><td>\n  Temperatur Au\u00dfen\n  <\/td><td>\n  Luftfeuchtigkeit Innen oben\n  <\/td><td>\n  Temperatur Innen oben\n  <\/td><td>\n  LDR\n  <\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Energiemanagement<\/h4>\n\n\n\n<p>Das\nEnergiemanagement wurde noch nicht implementiert, die einzelnen Funktionen aber\nbereits geplant. Es sind dabei zwei Aufgaben zu bew\u00e4ltigen:<\/p>\n\n\n\n<p class=\"has-text-align-center\">Minimierung des Energieverbrauchs<\/p>\n\n\n\n<p>Die Zeitspanne zwischen zwei \u00dcbertragungen\nbetr\u00e4gt mindestens 5 Minuten. Dazwischen beschr\u00e4nken sich die Aufgaben des\nArduinos auf das Energiemanagement. Durch Versetzen in einen Schlafmodus f\u00fcr\nwenige Sekunden kann der Energieverbrauch drastisch gesenkt werden. Beim\nAufwachen kann dann das Energiemanagement und gegebenenfalls auch eine neue\n\u00dcbertragung vorgenommen werden. Danach wird das Ger\u00e4t wieder in den Schlafmodus\nversetzt. Die Sensorbox wird, solange keine Daten f\u00fcr eine \u00dcbertragung ben\u00f6tigt\nwerden, ganz abgeschaltet. Durch Auslesen der Batterie kann ein Energieengpass\nfr\u00fchzeitig erkannt werden. Unter einer bestimmten Spannung wird die\nSendefrequenz schrittweise reduziert.<\/p>\n\n\n\n<p class=\"has-text-align-center\">Optimierung der Batterieladung und Verhindern einer \u00dcberladung<\/p>\n\n\n\n<p>Um die Lebensdauer der Batterie zu schonen ist\nes sinnvoll, die Solarzelle abzuschalten, wenn die Batterie vollgeladen ist.\nDazu wird die Batteriespannung gemessen und \u00fcber einem bestimmten Grenzwert ein\nMOSFET durchgeschalten, um die Solarzelle kurzzuschlie\u00dfen. Im Winter kann es\nau\u00dferdem vorkommen, dass die Temperatur der Batterie so niedrig ist, dass ein\nLadevorgang ineffizient und f\u00fcr die Batterie sch\u00e4dlich w\u00e4re. \u00dcber einen\nlichtabh\u00e4ngigen Widerstand wird festgestellt, ob die Sonne scheint und die\nSolarzelle Energie bereitstellt. \u00dcber den Temperatursensor im Inneren wird\nfestgestellt, ob ein Heizen der Batterie notwendig ist. Wenn beide Bedingungen\nerf\u00fcllt sind wird eine Heizmatte neben der Batterie angeschaltet bis eine Mindesttemperatur\nerreicht ist. <\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Speicherplatz<\/h4>\n\n\n\n<p>Die LMIC\nBibliothek verbraucht sehr viel Speicherplatz, insbesondere f\u00fcr Variablen. Bei\nder Programmierung war daher besonders auf den Speicherverbrauch zu achten. An\neinzelnen Stellen konnte der Beispielcode, auf dem unser Programm aufbaut, noch\neffizienter gestaltet werden. Durch die Verwendung des zweiten Arduinos konnte\nSpeicherplatz gespart werden, indem die Daten \u00fcber die serielle Verbindung\nbereits vollst\u00e4ndig verarbeitet ankommen und nur noch \u00fcber das LoraWAN Netzwerk\nweitergeleitet werden m\u00fcssen. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Kommunikation zwischen den Arduinos<\/h3>\n\n\n\n<p>Die Kommunikation zwischen den beiden Arduinos l\u00e4uft \u00fcber eine einfache\nserielle Verbindung mit zwei Leitungen (VCC und GND sind ohnehin verbunden). Da\nauf der Platine des Sende-Arduinos die eingebaute serielle Schnittstelle\nbereits f\u00fcr Debugzwecke vorgesehen ist wird mit der SoftwareSerial Library eine\nweitere Schnittstelle simuliert. Am Sensorboard wird die serielle Schnittstelle\nverwendet.<\/p>\n\n\n\n<p>Die Kommunikation beginnt immer mit einem Befehl des Sendearduinos and den\nSensor, der darauf gegebenenfalls antwortet. Es gibt 3 Befehle, die theoretisch\nmit 2 Bits \u00fcbertragen werden k\u00f6nnten. Eine Umsetzung mit 8 Bits ist allerdings\neinfacher, da so der Byte oder Char Datentyp verwendet werden k\u00f6nnen. Die Werte\nder Befehle sind anhand der Anfangsbuchstaben der Befehle gew\u00e4hlt und haben\nkeine technische Bedeutung. <\/p>\n\n\n\n<p><em>0x52 \u2013 Request \u2013 Abfragen von Sensorwerten<\/em><\/p>\n\n\n\n<p>Es wird folgende Reihe von Bytes \u00fcbertragen:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"\"><tbody><tr><td>\n  Ultraschall\n  <\/td><td>\n  \u00dcberfluss\n  <\/td><td>\n  Luftfeuchtigkeit\n  <\/td><td>\n  Temperatur\n  <\/td><td>\n  Modus\n  <\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><em>0x57- Winter mode \u2013 Winter Modus einstellen<\/em><\/p>\n\n\n\n<p><em>0x53- Summer mode \u2013 Sommermodus einstellen<\/em><\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zusammenfassung<\/h2>\n\n\n\n<p>Im Projekt wurden eine Hauptstation und eine Sensorstation gebaut, sowie programmiert. Die Hauptstation beheimatet die Energieversorgung mit Solarpanel und LiFePo4-Akkumulator und dem Energiemanagement. Des Weiteren sind dort ein Arduino und ein LoRaWAN-Funkmodul, die das Senden der Daten \u00fcbernehmen. Zudem ist au\u00dferhalb der Hauptstation ein Temperatursensor befestigt, um die Au\u00dfentemperatur zu erfassen.<br> In der Sensorstation befindet sich ein weiterer Arduino, der die Messwerte von zwei Sensoren erfasst, umrechnet und via serielle Schnittstelle an den Hauptarduino weiterleitet. Die Sensoren sind zum einen der Ultraschall-Abstandssensor, der den Wasserstand misst, und zum anderen der Durchflusssensor, der den \u00dcberlauf des Reservoirs erfasst.<br> Aktuell noch nicht umgesetzt, wird allerdings noch nachgereicht, ist die Visualisierung der erfassten Messwerte auf der Online-Plattform Senseforce. Der Auftraggeber wird zudem bei einer knappen Wasserlage per E-Mail benachrichtigt, damit er weitere Ma\u00dfnahmen einleiten kann.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zugang Senseforce<\/h2>\n\n\n\n<p>Unter diesem Link k\u00f6nnt ihr unsere Visualisierung der Sensordaten einsehen.<\/p>\n\n\n\n<p><a href=\"https:\/\/fhv.senseforce.io\/\">https:\/\/fhv.senseforce.io\/<\/a> <\/p>\n\n\n\n<p>mit der Email    <em>FhvVisitor@gmail.com<\/em>      und dem Passwort    <em>SmartCity2k<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fragen oder Anregungen<\/h2>\n\n\n\n<p>Falls ihr Fragen oder auch Anregungen habt, erreicht ihr uns unter folgenden Email-Adressen: <\/p>\n\n\n\n<p>tim.strutzberg@students.fhv.at<\/p>\n\n\n\n<p>robert.theobold@students.fhv.at<\/p>\n\n\n\n<p>georg.wehinger@students.fhv.at<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vorhandene Situation Das Quellwasser auf der Alpe wird in einem Wasserreservoir gespeichert, welches in einem nicht leicht zug\u00e4nglichen Gel\u00e4nde liegt. Dies bedeutet, wenn man den aktuellen Wasserstand wissen m\u00f6chte, muss man jedes Mal den Weg zum Reservoir erklimmen und dieses &hellip; <a href=\"https:\/\/wordpress.labs.fhv.at\/openlabs\/2020\/01\/08\/smart-alps-dokumentation\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":272,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[33],"tags":[],"class_list":["post-968","post","type-post","status-publish","format-standard","hentry","category-smartalps"],"_links":{"self":[{"href":"https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-json\/wp\/v2\/posts\/968","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-json\/wp\/v2\/users\/272"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-json\/wp\/v2\/comments?post=968"}],"version-history":[{"count":9,"href":"https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-json\/wp\/v2\/posts\/968\/revisions"}],"predecessor-version":[{"id":985,"href":"https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-json\/wp\/v2\/posts\/968\/revisions\/985"}],"wp:attachment":[{"href":"https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-json\/wp\/v2\/media?parent=968"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-json\/wp\/v2\/categories?post=968"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.labs.fhv.at\/openlabs\/wp-json\/wp\/v2\/tags?post=968"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}