SmartArmband
Komponenten und Verbrauchsmaterialien
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Notwendige Werkzeuge und Maschinen
|
Apps und Onlinedienste
| ||||
| ||||
| ||||
| ||||
|
Über dieses Projekt
Projektübersicht
Ich habe dieses Thema in der Vergangenheit überlesen, während ich am Ende ein paar Stunden damit verbracht habe, über Lösungen nachzudenken, die der Welt in diesem fragilen Moment helfen könnten, Lösungen, die eine Veränderung bewirken und uns helfen könnten, in einer Welt zu gedeihen, die sich unter unseren Füßen verändert .
Ich habe mir die Betreuung von Menschen mit schwachen Formen des Virus angesehen . Eine Kategorie von Menschen, die oft übersehen wird. Dies sind die Menschen, die sich unglücklicherweise mit dem Virus infiziert haben, aber das Glück haben, nur schwache Symptome zu haben . Aber die Gesundheit dieser Patienten ist extrem volatil und kann sich innerhalb von Stunden verschlechtern . Ihr Gesundheitszustand muss detailliert überwacht werden.
Wie sich herausstellt, haben die Länder unterschiedliche Ansätze zur Versorgung dieser Patienten:Einige werden sie in ein Krankenhaus einweisen (überfüllte Krankenhäuser mit Patienten, die außerhalb des Campus überwacht werden könnten), andere senden sie zur Selbstisolierung zu Hause . Bei der zweiten Option gibt es jedoch ein Problem – die Gesundheit dieser Patienten könnte schnell degenerieren und müssen daher überwacht werden.
Es gibt sicher schwere, sperrige Geräte, die dies tun. Aber die Probleme liegen auf der Hand; Da die Mehrheit der erkrankten Bevölkerung schwache Formen des Virus ausübt, können diese teuren, unbequemen Geräte nicht skaliert und auf das gesamte Gebiet eingesetzt werden Bevölkerung (wegen des Preises und der Sperrigkeit). Es ist unnötig zu erwähnen, dass einige Patienten versucht sind, ihr Zuhause zu „entfernen“ und sich nicht wirklich für das Virus interessiert, diese Menschen sind eine Gefahr für die Gesellschaft und sich selbst und sollten überwacht werden, um sicherzustellen, dass sie ihr Zuhause nicht verlassen.
SmartWristband ist ein Armbandgerät das die Vitalwerte und die Geolokalisierung des Patienten überwacht sich um ihre Sicherheit zu kümmern, während sie das Virus innerhalb der Beschränkungen ihres Zuhauses bekämpfen. Das Gerät wird von einem Arduino MKR GSM 1400 betrieben und ist sowohl mit einem IR-Temperatur- als auch mit einem Herzfrequenzsensor ausgestattet Sammeln wichtiger Informationen über die Gesundheit des Patienten. Erhöhte Temperatur und unregelmäßiger Herzschlag sind Anzeichen für das Fortschreiten des Virus. Der Patient wird diese Änderungen nicht sofort bemerken, SmartWristband möchte dies tun und die Daten live und sicher streamen an das Krankenhaus, das den Patienten überwacht.
Das Gerät verfolgt außerdem den Standort des Nutzers sicherstellen, dass sie jederzeit zu Hause sind . All diese Daten werden in einer skalierbaren Datenbank zentralisiert Dadurch können Tausende dieser Geräte international eingesetzt werden.
Das Krankenhaus hat Zugriff auf ein Dashboard wo sie den Gesundheitszustand aller überwachten Patienten einsehen können auf einen Blick sowie ein spezifischer Bericht, der den detaillierten Zustand jedes Patienten beschreibt.
Maschinelle Lernalgorithmen werden auch in der Anwendung implementiert, um Temperatur und Herzfrequenz des Patienten vorherzusagen in naher Zukunft, damit das Krankenhaus weiß, was zu erwarten ist und wann der Patient ins Krankenhaus eingeliefert werden muss.
Der Patient hat auch Zugriff auf ein mobiles Dashboard zeigt ihnen ihre Herzfrequenz und Temperatur sowie wann sie ihr Armband aufladen müssen.
Das Gerät ist bequem genug für den Patienten, um es Tag und Nacht zu tragen ohne es zu merken. SmartWristband wird auch bemerken, wenn der Benutzer das Gerät abgenommen hat , in diesem Fall das Krankenhaus alarmieren.
SmartWristband ist eine kostengünstige, skalierbare Open-Source-Lösung zur Betreuung von Patienten, die mit schwachen Formen des Virus in Selbstisolation geschickt wurden Überwachung die Entwicklung ihres Zustands und Benachrichtigung medizinisches Personal durch maschinelles Lernen und eine benutzerfreundliche Dashboard-Erfahrung wenn ein Patient Aufmerksamkeit benötigt.
Projektzusammenfassung
In diesem Abschnitt werden die Funktionen der Anwendung untersucht und ein umfassendes Verständnis ihrer Funktionsweise vermittelt.
Erhobene Daten
Die Daten werden vom Gerät in Intervallen von 5 Minuten gesammelt. Dies geschieht, um eine relativ Live-Ansicht des Zustands des Patienten bei möglichst geringem Batterieverbrauch zu ermöglichen. Das Gerät erfasst zwei Arten von Daten:Vitaldaten und Standortdaten.
Vitaldaten beziehen sich auf Herzfrequenz und Temperatur der Patienten, während sich die Standortdaten auf die Geolokalisierung des Patienten beziehen . Das Gerät verarbeitet diese Daten nicht lokal sondern leitet es einfach an Azure weiter, wo die Verarbeitung stattfindet.
Warum werden diese Daten gesammelt?
Die Temperatur- und Herzfrequenzdaten können durch Trendanalyse anzeigen, ob sich der aktuelle Zustand des Patienten verschlechtert. Studien zeigen, dass eine unregelmäßige Herzfrequenz und hohe Temperaturen ein Zeichen für das Vorhandensein des Virus sind. Wenn diese Vitalzeichen im Laufe der Zeit nachlassen (d. h. die Temperatur steigt allmählich an), ist dies ein Zeichen dafür, dass sich der Zustand des Patienten möglicherweise verschlechtert. Der Patient erkennt dies möglicherweise erst später, aber das Gerät nimmt diese Anzeichen auf, sobald sie erscheinen.
Die Geolokalisierungsdaten werden auch vom Gerät erfasst, um sicherzustellen, dass der Patient zu Hause bleibt in Quarantäne und hält sich an die Regeln der Isolation. Azure prüft, ob der Benutzer zu Hause ist und meldet dies im Arzt-Dashboard.
Ein Blick auf das Gerät
Ich habe den Prototyp mit Komfort im Hinterkopf erstellt. Das Gerät wird einfach am Handgelenk des Patienten platziert, entweder an der linken oder rechten Hand. Es ist mit einem Herzfrequenzsensor und einem IR-Temperatursensor ausgestattet, die an der Unterseite des Geräts herausragen, um die Haut des Patienten zu berühren.
Diese Sensoren liefern präzise Messungen, ohne Beschwerden zu verursachen. Beachten Sie, dass der Sensor zur weiteren Temperaturpräzision an einer Stelle wie unter dem Arm in einer Unterlage platziert werden sollte.
Das Gerät verwendet die vom Herzfrequenzsensor ausgegebenen Rohdaten, um zu überprüfen, ob das Gerät vom Patienten getragen wird. Der Sensor gibt ein ganz bestimmtes Datenmuster aus, wenn er mit der Haut in Kontakt kommt. Daher weist das Fehlen dieses Musters darauf hin, dass das Gerät nicht getragen wird.
Akkulaufzeit
Strenge Tests wurden durchgeführt, um die Batterielebensdauer des Geräts genau zu messen. Das Gerät hat eine Gesamtakkulaufzeit von 8 Tagen mit einer einzigen Ladung. Das heißt, wenn der Patient zwei Wochen lang befragt werden soll, müsste der Akku einmal aufgeladen werden. Der Akku kann geladen werden, während das Gerät getragen wird.
Alternativ könnten die Daten in Intervallen von 10 Minuten gesammelt werden , im Wesentlichen Verdoppelung der Akkulaufzeit des Geräts da es zwischen den Lesevorgängen schlafen würde und sehr wenig Batterie verbrauchen würde. Die verbleibende Batterielebensdauer sowie die Anzahl der Stunden der verbleibenden Batterielebensdauer werden auf dem Patienten- und Arzt-Dashboard angezeigt.
Entwicklungskosten
Die Entwicklungskosten des Projekts setzen sich aus einmaligen und wiederkehrenden Kosten zusammen. Die Entwicklungskosten für ein Gerät betragen 70 Euro inklusive Gehäuse. Im Backend fallen wiederkehrende Kosten an. Ich verwende Hologramm als meinen Dienstanbieter, der mich 5 € kostet, um Daten 2 Wochen lang pro Gerät zu senden. Die Backend-Kosten inklusive Datenstreaming und Datenbank betragen 30€ für 2 Wochen.
Die Gesamtkosten für 100 Geräte betragen etwa 7.035 €. Beachten Sie, dass diese Geräte wiederverwendbar sind.
Beachten Sie, dass die Back-End-Kosten skalierbar sind und unabhängig von der Anzahl der bereitgestellten Geräte gleich bleiben. Die Kosten können drastisch gesenkt werden, wenn Komponenten in großen Mengen gekauft und kundenspezifische Schaltungen verwendet werden.
Das Arzt-Dashboard
Es ist sehr wichtig für das Krankenhaus, den Gesundheitszustand dieser Patienten, die nach Hause geschickt werden, jederzeit zu überwachen und benachrichtigt zu werden, wenn es ihnen nicht gut geht. Das Krankenhaus hat Zugriff auf ein Dashboard, das die Vitalwerte aller überwachten Patienten sowie einen spezifischen Bericht für alle anzeigt. Auf diese Weise können Ärzte benachrichtigt werden, wenn ein Patient Hilfe benötigt, und können sich den Patienten dann genauer ansehen, um genau zu sehen, was das Problem ist.
Der Arzt erhält eine Benachrichtigung in Form einer E-Mail und Alarm im Dashboard, wenn ein Patient nicht zu Hause ist, das Gerät nicht trägt oder eine unregelmäßige Temperatur und/oder Herzfrequenz hat .
Die Ärzte erhalten auch Datenwarnungen als E-Mail, wenn die Vitalwerte eines Patienten abnormal sind, sodass sofort Maßnahmen ergriffen werden können.
Der Bericht ist in 3 Abschnitte unterteilt:der Patient (mit Angaben zu den Vitalwerten), Standort (Standort des Patienten und falls zu Hause) und dasGerät (Batteriestand, ID). Maschinelles Lernen wird auch verwendet, um den Gesundheitszustand des Patienten in naher Zukunft vorherzusagen, um dem Arzt zu zeigen, ob sich der Gesundheitszustand des Patienten im Laufe der Zeit verschlechtert.
Patienten-Dashboard
Ich denke, dass Patienten auch auf diese Daten zugreifen können sollten, um zu wissen, wie es ihnen geht, und sich ihrer selbst bewusst zu werden. Dem Patienten steht sowohl ein Desktop- als auch ein mobiles Erlebnis zur Verfügung, damit er seine Daten im Handumdrehen abrufen kann.
Beachten Sie, dass Prognose- und Geolokalisierungsdaten nicht auf dem Dashboard des Patienten angezeigt werden weil sie diese Informationen nicht brauchen würden.
Massenproduktion und Skalierbarkeit
Das Gerät ist aufgrund seines geringen Preises und der einfachen Konstruktion für die Massenproduktion geeignet und skalierbar. Das Gerät kann an jedem Ort der Welt einsatzbereit sein, mit Mobilfunkabdeckung, die Menschen weltweit schützt.
100 % Open Source
Bei der Entwicklung dieses Projekts habe ich darauf geachtet, dass alle verwendeten Assets, Bibliotheken und andere, Open Source sind, um sicherzustellen, dass die Anwendung so schnell wie möglich ohne Bürokratie entwickelt und freigegeben werden kann. Dieses Projekt ist vollständig Open Source und auf GitHub verfügbar.
Datenerfassung
Das Gerät sammelt die Geolokalisierungsdaten des Benutzers, die als vertraulich gelten. Das Gerät verarbeitet diese Daten nicht lokal, sondern verlässt sich auf die Cloud, um dies sicher zu tun, um sicherzustellen, dass die Daten des Benutzers nicht gekapert werden können. Die Verbindung mit der Azure-Datenbank ist verschlüsselt und sicher, sodass die Daten nicht in falsche Hände geraten können.
Weiter gehen
Bei der Entwicklung dieses Projekts kamen uns zahlreiche Ideen zur Weiterentwicklung und Verbesserung des Produkts in den Sinn, die in diesem Abschnitt detailliert beschrieben werden.
- Die Erfassung des Blutsauerstoffgehalts kann ohne Änderung der Hardware implementiert werden, da dieser Wert aus dem vorhandenen Herzfrequenzsensor extrahiert werden kann. Die SpO2-Werte im Blut sind ein Hinweis auf den Schaden, den das Virus angerichtet hat.
- Die Herzfrequenz des Patienten kann durch Pads auf der Brust und anderen Körperbereichen erfasst werden, die eine genauere Temperaturdarstellung ermöglichen und die Genauigkeit der Messungen erhöhen.
- Die Entwicklung eines 3D-gedruckten Gehäuses wäre in einer zukünftigen Iteration vorzuziehen. Die Größe des Geräts lässt sich zudem drastisch verkleinern, wodurch es noch angenehmer zu tragen ist.
Das Frontend der Anwendung
Das obige Diagramm zeigt die Architektur der auf dem Gerät ausgeführten Anwendung. Dies sind die Schritte, die das Gerät alle 5 Minuten ausführt. Das Gerät sammelt alle Daten , prüft, ob es getragen wird durch den Benutzer und verpackt sie und sendet sie über GSM an das Backend .
Das Gerät verfolgt auch die Zeit , erhält es die Zeit von einem bestimmten Server und synchronisiert seine Onboard-RTC mit diesem Zeitstempel, wenn es zum ersten Mal aufwacht oder nachdem es ausgeschaltet wurde.
Das Backend der Anwendung
Die vom Gerät gesendeten Daten werden im Azure IoT Hub empfangen wo es sicher geliefert wurde . Ein Stream Analytics-Job extrahiert diese Daten dann aus dem Hub und überträgt sie in eine Kosmos-DB Datenbank. Der Patient und der Arzt Power Bi-Berichte fragen Sie diese Daten dann in Zeitintervallen aus der Datenbank ab, führen Sie Machine-Learning-Algorithmen aus und zeigen Sie die Daten anschließend an. Das Arzt-Dashboard sammelt dann alle überwachten Patienten und gibt einen Überblick über ihren Gesundheitszustand.
Warum Azure?
Ich liebe es, Azure wegen der Benutzerfreundlichkeit und Navigation sowie der Verfügbarkeit großartiger kostenloser Entwicklungspläne gegenüber anderen Alternativen zu verwenden. Ich mag auch ihre Benutzeroberfläche und die Integration mit anderen Microsoft-Produkten, die ich verwende.
Marktforschung
Viele Länder haben Alternativen zur Überwachung von Patienten mit Coronavirus eingeführt, während sie sich zu Hause selbst isolieren. Taiwan hat ein revolutionäres Tracking-System eingeführt wo die Patienten über ihr Mobiltelefon verfolgt werden um sicherzustellen, dass sie zu Hause bleiben.
Auch andere Länder haben Ideen zur Überwachung der Gesundheit von Menschen in Selbstisolation umgesetzt, und einige Systeme funktionieren besser als andere. Aber kein Produkt sammelt sowohl wichtige Informationen über den Zustand des Patienten als auch seinen Aufenthaltsort in einem kleinen, komfortablen Paket.
Zielgruppe
Dieses Gerät richtet sich an Personen, die vom Krankenhaus nach Hause geschickt werden, um sich selbst zu isolieren, weil sie positiv auf eine schwache Form des Virus getestet wurden oder asymptomatisch sind.
Vorteile der Verwendung von SmartWristband
- Sicherstellen, dass Patienten in die Selbstisolation geschickt werden sind zu Hause bleiben
- Überwachung der Vitalwerte der Patienten ohne dass sie im Krankenhaus sein müssen
- Freiraum in Krankenhäusern für Menschen mit schweren Manifestationen des Virus
- Ärzte alarmieren zum Zustand aller Patienten in Selbstisolation 25/7
- Bereitstellung einer komfortablen Überwachungslösung für den Patienten
- Das Krankenhaus mit einer Prognose versorgen der Gesundheit des Patienten
- Information des Patienten über seine Gesundheit über ein mobiles und Desktop-Dashboard
- Kostengünstig und skalierbar
Projektdurchführung
Dieser Abschnitt führt Sie durch die Konstruktion des Projekts und behandelt die Schritte, die zur Entwicklung dieser Anwendung erforderlich sind.
Schritt 1:Alles zusammenbringen
Als erstes müssen wir alle benötigten Komponenten zusammenstellen. Die benötigten Komponenten und Dienste sind unten aufgeführt:
- Arduino MKR GSM 1400
- GSM-Antenne (im Lieferumfang des MKR GSM enthalten)
- DFRobot Herzfrequenzsensor
- IR-Temperatursensor
- 3,7 V LiPo-Akku (ich habe 1.800 mAh verwendet)
- Hologramm-SIM-Karte
Bevor wir mit dem Projekt beginnen, müssen neben der benötigten Hardware auch einige Dienste eingerichtet werden. Verwenden Sie die unten verlinkten Tutorials, um loszulegen.
- Holen Sie sich die Arduino-IDE oder verwenden Sie den Web-Editor
- Erstellen Sie Ihr Hologramm-Konto und verbinden Sie Ihre SIM-Karte
- Erstellen Sie ein Azure-Konto
- Ein Power Bi-Konto erstellen
Schritt 2:Arbeiten mit dem MKR GSM
Bevor wir mit der Erstellung des Projekts selbst beginnen, müssen wir das MKR GSM konfigurieren, um eine Verbindung mit Azure IoT herzustellen . Dazu müssen wir ein Zertifikat generieren und speichern auf dem Gerät, um die Verbindung mit dem Backend überprüfen zu können.
Es gibt ein Tutorial auf Hackster, das dies für den MKR NB behandelt. Bitte folgen Sie diesem Tutorial von Anfang an und beachten Sie, dass Sie aufhören sollten, nachdem Sie das Zertifikat generiert haben . Bitte achten Sie darauf, die SHA1-Zeichenfolge zu speichern wie wir es später brauchen werden. Das Tutorial ist hier.
Schritt 3:Alles miteinander verbinden
Als nächstes müssen wir alles verkabeln. Unten ist ein Bild, das die Schaltpläne zeigt für die Erstellung dieses Projekts. Beachten Sie, dass Ihre Komponenten wahrscheinlich nicht wie die in den Schaltplänen aussehen. Stellen Sie sicher, dass Sie den Temperatursensor an A4 angeschlossen haben auf dem Gerät und dem Herzfrequenzsensor auf A5 . Vergiss nicht, die SIM-Karte einzulegen!
Schritt 4:Auf den IoT Hub
Ok, jetzt, da wir alles erledigt haben, können wir mit dem IoT-Hub fortfahren . Wir arbeiten im Backend für die nächsten Schritte, um das zuerst aus dem Weg zu räumen. Stellen Sie sicher, dass Sie über ein Azure-Konto verfügen, bevor Sie fortfahren.
Als erstes müssen Sie zu Ihrer Konsole navigieren (portal.azure.com) und klicken Sie auf Ressource erstellen Schaltfläche oben links auf dem Bildschirm. Jetzt IoT Hub eingeben und wählen Sie die Option aus der Dropdown-Liste aus.
Klicken Sie auf Erstellen nachdem die Einrichtung abgeschlossen war. Beachten Sie, dass wir in diesem Beispiel einen kostenlosen IoT-Hub verwenden werden damit uns die Nutzung nicht in Rechnung gestellt wird. Wenn Sie diese Lösung bereitstellen, erwägen Sie, die Stufe auf S1 zu ändern (oder S2/S3 je nach Skala).
Erstellen Sie eine neue Ressourcengruppe und benennen Sie Ihren IoT-Hub. Klicken Sie nun auf Größe und Skalierung Option aus den obigen Schritten. Stellen Sie sicher, dass Sie wie unten beschrieben eingerichtet sind.
Klicken Sie nun auf Überprüfen und erstellen und bereitstellen der Ressource . Warten Sie, bis der IoT Hub erstellt wurde, und öffnen Sie indem Sie auf Alle Ressourcen klicken aus dem Menü auf der rechten Seite des Bildschirms.
Wir müssen jetzt ein Gerät erstellen und verbinden Sie es mit dem IoT-Hub. Navigieren Sie zu den IoT-Geräten Option im Menü auf der rechten Seite des Bildschirms und klicken Sie auf die Option. Klicken Sie auf Neu Schaltfläche zum Hinzufügen eines neuen Geräts zum IoT-Hub. Geben Sie die folgenden Zugangsdaten ein:
Stellen Sie sicher, dass Sie den primären Fingerabdruck und den sekundären Fingerabdruck durch Ihren SHA1-Wert ersetzen im zweiten Schritt extrahiert.
Klicken Sie auf Speichern und wir können loslegen!
Schritt 5:Erstellen der Cosmos DB-Datenbank
Jetzt müssen wir die Datenbank erstellen, in der die von unserem Gerät gesendeten Daten gespeichert werden. Ich verwende Cosmos DB von Azure da es gewohnt ist, JSON-Dateien zu speichern das ist, was wir vom Gerät senden.
Navigieren Sie zunächst zurück zum Button Ressource erstellen aus dem Menü auf der rechten Seite und klicken Sie darauf. Suche nach Cosmos DB und wählen Sie dann die Option.
Wählen Sie die mit IoT Hub erstellte Ressourcengruppe aus und geben Sie ihm einen Namen, behalten Sie die restlichen Einstellungen bei. Stellen Sie sicher, dass die Region dieselbe ist sowohl auf dem IoT-Hub als auch auf der Datenbank, um regionale Transferkosten zu vermeiden.
Und das ist es! Warten Sie, bis die Ressource bereitgestellt wurde, und dann können wir weitermachen!
Schritt 6:Streaming-Analysejob erstellen
Nachdem wir nun unseren IoT-Hub und die Datenbank eingerichtet haben, müssen wir die beiden miteinander verbinden damit die in unseren IoT Hub eingegebenen Daten beim Empfang in die Datenbank gestreamt werden.
Start off by creating a new resource by typing Stream Analytics Job . Now select the resource group used up until now and ensure that the number of streaming units is set to 1. If delivering a high quantity of devices, you may want to consider creating more streaming units to handle the greater number of devices.
Wait for the resource to deploy and then select it from the All Resources button on the menu on the left.
Now that we are in the resource, select the Inputsbutton from the menu on the left to select our input. Click on Add Stream Input and then select IoT Hub from the list of options.
Enter the name of your IoT hub and then select it from the menu shown. Do not change any other settings. Click Save. Now click on the Outputs option from the menu on the left of the screen and select the Cosmos DB option from the list provided.
Name the output and then select the database from the options provided. Select Create New under Database and set the database name to SmartWristband and the container name to data . Leave the document ID empty. Now click Save .
The final thing we need to do is click on Query from the options. We need to supply the service with code to route all the data from the IoT hub into the database. Copy and paste the code below into the space provided. The code will map all inputted values to outputs which will then be stored in a JSON format in the Cosmos DB.
SELECT
time as time,
id as name,
geoLat as latitude,
geoLng as longitude,
isWorn as isWorn,
heartrate as heartrate,
temperature as temperature,
battery as battery
INTO
[universum-smartwristband-db]
FROM
[universum-smartwristband-hub]
After that is done, click on the Save Query button from the menu at the top of the screen and we are ready to go. Now all we need to do is click back on Overview from the menu on the left and then start the streaming by pressing the Start button.
Step 7:Libraries Required
All libraries used in this project are open source. Below is the list of all libraries used and the links to their GitHub repositories. Please make sure you download and install them before moving on.
- MKRGSM Library - https://github.com/arduino-libraries/MKRGSM
- RTCZero Library - https://github.com/arduino-libraries/RTCZero
- Arduino Bear SSL Library - https://github.com/arduino-libraries/ArduinoBearSSL
- ArduinoECCX08 Library - https://github.com/arduino-libraries/ArduinoECCX08
- Arduino MQTT Client Library - https://github.com/arduino-libraries/ArduinoMqttClient
- Arduino Low Power Library - https://github.com/arduino-libraries/ArduinoLowPower
- DFRobot Heartrate Library - https://github.com/DFRobot/DFRobot_Heartrate
Step 8:Preparing the Variables
Now we can focus on the frontend of the application . Open the code from the GitHub repo in the Arduino IDE or web IDE and follow along with the steps below to edit the variables in the document so that the MKR GSM will be able to connect to Azure IoT.
The first thing we will need to do is navigate to the IoT hub created and copy the hostname shown. Now open the secrets.h file from the project and input this string into the SECRET_BROKER field.
The next thing is getting the device name. This is simply the name given to the device in the IoT Hub. Copy the name displayed and then paste it in the SECRET_DEVICEID field in the secrets.h Datei. At the end, your file should look something like this.
The last thing you need to do is change the DEVICE_ID . I included this feature so that all devices would have a specific ID when deployed . You can set the ID to the name of the patient or a string to be able to identify the devices and distinguish them.
Finally, I want to talk about the MODE option . When I created this project, I needed to have a way to easily test and troubleshoot the application before deploying it. The mode of the application solves this. There are two modes in which the application can be set:
- DEVELOP_TIME is the developing mode. Here, the device prints verbose to the serial (the device only works connected to the computer with the serial monitor on). The device also wakes up and collects data every 10 seconds.
- RELEASE_TIME is the release mode. Here, the application works as expected, it can work on the field without the need of a connection to a computer, it will also take samples every 5 minutes as opposed to 10 seconds.
We will toggle between these modes later, for now, leave it in DEVELOP_MODE .
Step 9:Flashing the Developer Version
Now that all the setup is done, we need to test the code out to ensure it is running in the DEVELOP_MODE. To do this, ensure that you followed all the steps above and then connect your device to your PC or mac via USB and then upload the sketch.
Open the serial monitor (ctrl/cmd-shift-m) and view the verbose. It will take a while to configure the first time, ensure that the data is being sent to the IoT Hub correctly. Then visit the IoT Hub and check the graphs to see if data was received. You are now ready to deploy the application! If you need help troubleshooting, you can contact me through Hackster.
Step 10:Shipping the release version
To change to the release version, all you need to do is change the MODE definition in the secrets.h file to RELEASE_TIME . Now upload this code to the device, ensure the LiPo battery is connected and then unplug it from the computer.
You should see the onboard LED of the device flashing every 10 minuets indicating that a cycle is running. Check the IoT Hub and Cosmos DB database to ensure that the data is going through. Now you are ready to deploy the device!
Ensure you send some data to the backend before continuing as we will need this when creating the dashboard.
Step 11:Onto the Dashboard
Creating the dashboard is meticulous work and takes a long amount of time. In this section I will explain working with the data in the Power Bi dashboards and reports , I will not go over how to design the dashboard because this is up to personal preference but will link tutorials that show you how to do this in detail.
Doctor Dashboard
I will start with the doctor dashboard. Make sure you have Power Bi desktop installed on your PC. Mac users can use the Power Bi online version to create this report, everything is basically the same.
Launch the application and click on the Get Databutton . Now navigate to the Azure option and select Cosmos DB from the options.
Now go to your Cosmos DB resource and copy the URI link and paste it in the field in Power Bi. Sign in if this is required.
Now we need to go to the keys window in the Cosmos DB dashboard and copy the PRIMARY KEY and paste it into the Account Key field . Now navigate through the database and ensure that the datafile is checked. Click load and then we are ready to go!
Now that you are in the report, find the Transform databutton from the menu at the top of the screen. Click it to get a table with data.
Click on the button next to the title of the table and select the fields shown above. You should see your table expand.
Now we need to change the data types of the rows. Identify the Data Type button from the menu at the top of the screen and change the values accordingly.
Now click on Close and Apply and you will be brought back to the dashboard. Your dashboard should look something like this.
The next thing we will need to do is create measures to process data and convert it into different forms in the report. Open the Stream Analytics Script folder from the GitHub repo in Visual Studio code . I installed an extension called DAX for Power Bi to get context highlighting:
There are a number of files which have to be edited specifically for the patient as they hold the patient’s information. The list of files that must be edited is below:
- Address.dax
- Age.dax
- Gender.dax
Open these files in VS code and edit them there.
Now we will create new measures in Power Bi using these files. To do so, open the Power Bi report and click on the New Measurebutton from the menu at the top of the screen.
Copy and paste the first file’s content into the text bar. Ensure that the Format and Data Category are set accordingly (i.e. set the category of latitude data to latitude). Now repeat this step for all other files , creating a new measure for each . Your dashboard should look like below:
Now we are moving on to the fun part – designing the dashboard. Please look at the tutorials below to get an idea of how to create infographics and style the dashboard:
- Basic Power Bi
- Complete Guide to Power Bi
- Free Udemy Course on Power Bi
- Forecasting data (ML) in Power Bi (used on temperature, heart rate and battery level)
This is how my dashboard looked at the end:
Now after the dashboard is designed, we need to publish it on the web so that we can access it from anywhere, on any device. Note that the data in the report is automatically refreshed when the user opens it (there is also a refresh button).
Click on the Publish button from the menu at the top of the screen and select My Workspace as the destination. Wait for the dashboard to upload.
To continue working on this, open the Power Bi report in the browser . We will now be working on the dashboard that summarises all patients. To do this, click on the tile depicting the status of the patient to see a menu.
From the menu, select the pin visual button and create a new dashboard . This visual will pin to the dashboard. Repeat this for the following cards:
- Name
- Status
- Temperatur
- Heart rate
The doctor will be able to see a glimpse of all the patients being monitored on this dashboard.
Finally, click on the temperature card in the dashboard and the on the menu button, select the Manage Alerts button to open a menu where you can set alerts for the visual. Configure this as below and repeat the step with heart rate (set the threshold to 100).
And that’s it, we now need to work on the patient dashboard.
Patient Dashboard
We will start this dashboard by copying the doctor dashboard as we will be using all the measures and data collected there but display it in a different way.
I kept all the data there but removed the forecasting for the temperature and heartrate sections (to prevent patients from worrying to much about it) and removed the location section (because the patient knows where they are).
I also developed a mobile version of this dashboard . To do so, navigate to the View menu and then select Mobile Layout . From there, we only need to drag and drop the existing tiles onto the mobile phone to create this layout.
After this is done, we will upload the dashboard online again as done before. This dashboard can be shared with the patient through the Power Bi app where they can get a mobile version of the application showing them all the information they need as well as an online view.
Step 12:Finally, the enclosure
So now that everything is done, we need to create an enclosure for the project, now ideally it would be 3D printed, but because I don’t have a 3D printer (I really need to get one), I cut pieces of plastic out and assembled them that way. I do though have a 3D design made for the enclosure of the prototype.
The device is quite big in this instance and a future and industrial version will obviously be reduced in size (I just didn’t want to solder all the components onto a PCB so I could reuse them in future projects).
And that’s it! The project is done!
Reflection
I really enjoyed making this project. I spent a couple of hours in March brainstorming ideas to tackle the coronavirus and when this contest was announced, I started working on one of the best ideas that I believed would truly have an impact on the community – SmartWristband.
I am very proud to take part in this international effort to provide the world with low-cost scalable solutions that would help combat the virus. I was inspired by the Taiwanese government because of their smart tracking devices that ensure that people confirmed with the virus stay at home and abide by the rules of the quarantine. I felt like this system could be improved to further enhance the safety of the patient by also monitoring their heart rate and temperature while at home.
Coronavirus is a tricky problem to tackle and truly needs a lot of cooperation and devotion to overcome. I believe that this application is implementable at global level to help monitor the health of patients confirmed with weak forms of the virus allowing them to stay at home and liberate space in hospitals that can be assigned to more urgent cases.
The thing I enjoyed the most out of the making of this project was the dashboard, I really enjoyed designing it (I am a visual person). I encountered some problems connecting the Arduino MKR GSM to Azure IoT. This was because I set the expiry date of the device’s certificate to something like 2 minutes (took me a while to realise).
I really hope you enjoyed the read and thanks for taking the time and interest. Have a great day and take care.
Code
Code
The GitHub Repohttps://github.com/Andrei-Florian/SmartWristbandKundenspezifische Teile und Gehäuse
Schaltpläne
schematics_HcrW1SiwfW.fzzHerstellungsprozess