SmartWristband
Componenten en benodigdheden
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Benodigde gereedschappen en machines
|
Apps en online services
| ||||
| ||||
| ||||
| ||||
|
Over dit project
Projectoverzicht
Ik merkte dat ik dit onderwerp in het verleden overlas, terwijl ik uiteindelijk een paar uur besteedde aan het bedenken van oplossingen die de wereld zouden helpen op dit fragiele moment, oplossingen die een verandering zouden kunnen maken en ons zouden helpen gedijen in een wereld die onder onze voeten verschuift .
Ik keek naar de zorg voor mensen met zwakke vormen van het virus . Een categorie mensen die vaak over het hoofd wordt gezien. Dit zijn de mensen die de pech hadden het virus op te lopen, maar die het geluk hadden alleen zwakke symptomen te hebben . Maar de gezondheid van deze patiënten is extreem veranderlijk en kan verergeren in een kwestie van uren . Hun gezondheid moet in detail worden gecontroleerd.
Het blijkt dat landen verschillende benaderingen hebben om voor deze patiënten te zorgen:sommigen zullen ze in een ziekenhuis opnemen (overvolle ziekenhuizen met patiënten die buiten de campus kunnen worden gevolgd), sturen ze naar thuisisolatie . Maar er is een probleem met de tweede optie:de gezondheid van deze patiënten kan snel verslechteren en moeten daarom worden gecontroleerd.
Er bestaat zeker zware, omvangrijke apparatuur die dit doet. Maar de problemen zijn duidelijk; aangezien de meerderheid van de zieke bevolking zwakke vormen van het virus zal uitoefenen, hebben deze dure, ongemakkelijke apparaten niet de capaciteit om op te schalen en te worden ingezet voor de hele bevolking (vanwege de prijs en omvang). Het is onnodig te zeggen dat sommige patiënten in de verleiding komen om hun huis te "ontwijken" en niet echt om het virus geven, deze mensen zijn een gevaar voor de samenleving en zichzelf en moeten worden gecontroleerd om ervoor te zorgen dat ze hun huis niet verlaten.
SmartWristband is een op een polsbandje vastgehouden apparaat die de vitale functies en geolocatie van de patiënt bewaakt zorgen voor hun veiligheid terwijl ze het virus bestrijden binnen de beperkingen van hun huis. Het apparaat wordt aangedreven door een Arduino MKR GSM 1400 en is uitgerust met zowel een IR temperatuur- als hartslagsensor het verzamelen van cruciale informatie over de gezondheid van de patiënt. Verhoogde temperatuur en onregelmatige hartslag zijn tekenen van de progressie van het virus. De patiënt zal deze veranderingen niet direct opmerken, SmartWristband streeft ernaar dit te doen en de gegevens live en veilig te streamen naar het ziekenhuis dat de patiënt controleert.
Het apparaat zal ook de locatie van de gebruiker volgen ervoor zorgen dat ze altijd thuis zijn . Al deze gegevens zijn gecentraliseerd in een schaalbare database waardoor duizenden van deze apparaten internationaal kunnen worden ingezet.
Het ziekenhuis krijgt toegang tot een dashboard waar ze de gezondheid kunnen zien van alle patiënten die worden gecontroleerd in een oogopslag evenals een specifiek rapport dat ingaat op de gedetailleerde toestand van elke patiënt.
Machine learning-algoritmen zijn ook geïmplementeerd in de applicatie om de temperatuur en hartslag van de patiënt te voorspellen in de nabije toekomst, zodat het ziekenhuis weet wat het kan verwachten en wanneer het de patiënt moet opnemen.
De patiënt heeft ook toegang tot een mobiel dashboard laat ze hun hartslag en temperatuur zien en wanneer ze hun polsbandje moeten opladen.
Het apparaat is comfortabel genoeg voor de patiënt om dag en nacht te dragen zonder het te merken. SmartWristband zal ook opmerken of de gebruiker het apparaat heeft afgedaan , waardoor het ziekenhuis in dit geval wordt gewaarschuwd.
SmartWristband is een goedkope, schaalbare, open source-oplossing voor de zorg voor patiënten die naar zelfisolatie zijn gestuurd met zwakke vormen van het virus monitoring de ontwikkeling van hun aandoening en waarschuwing medisch personeel door middel van machine learning en een gebruiksvriendelijke dashboard-ervaring als een patiënt aandacht nodig heeft.
Projectoverzicht
In dit gedeelte wordt gekeken naar de functionaliteit van de applicatie en krijgt u een goed begrip van wat het doet.
Verzamelde gegevens
Gegevens worden verzameld door het apparaat met tussenpozen van 5 minuten. Dit wordt gedaan om een relatief live beeld te geven van de toestand van de patiënt met een zo laag mogelijk batterijverbruik. Het apparaat verzamelt twee soorten gegevens:vitaal en locatie.
Vitale gegevens hebben betrekking op de hartslag en temperatuur van de patiënten terwijl de locatiegegevens verwijzen naar de geolocatie van de patiënt . Het apparaat verwerkt deze gegevens niet lokaal maar stuurt het eenvoudig door naar Azure waar de verwerking plaatsvindt.
Waarom worden deze gegevens verzameld?
De temperatuur- en hartslaggegevens kunnen aangeven of de huidige toestand van de patiënt degenereert door de trend te analyseren. Studies tonen aan dat een onregelmatige hartslag en hoge temperatuur een teken zijn van de aanwezigheid van het virus. Als deze vitale functies in de loop van de tijd degenereren (d.w.z. de temperatuur stijgt geleidelijk), is dit een teken dat de toestand van de patiënt mogelijk verslechtert. De patiënt realiseert zich dit misschien pas later, maar het apparaat zal deze tekens wel herkennen zodra ze verschijnen.
De geolocatiegegevens worden ook verzameld door het apparaat, dit wordt gedaan om ervoor te zorgen dat de patiënt thuis blijft in quarantaine en houdt zich aan de regels van het isolement. Azure controleert of de gebruiker thuis is en meldt dit op het doktersdashboard.
Een blik op het apparaat
Ik heb het prototype gemaakt met comfort in het achterhoofd. Het apparaat kan eenvoudig om de pols van de patiënt worden geplaatst, zowel links als rechts. Het is uitgerust met een hartslagsensor en IR-temperatuursensor die aan de onderkant van het apparaat uitsteken om de huid van de patiënt aan te raken.
Deze sensoren zorgen voor nauwkeurige metingen zonder ongemak te veroorzaken. Houd er rekening mee dat voor verdere temperatuurprecisie de sensor op een locatie moet worden geplaatst, zoals onder de arm in een kussen.
Het apparaat gebruikt de onbewerkte gegevens die door de hartslagsensor worden uitgevoerd om te controleren of het apparaat door de patiënt wordt gedragen. De sensor geeft een zeer specifiek gegevenspatroon af wanneer deze in contact komt met de huid en daarom geeft het ontbreken van dit patroon aan dat het apparaat niet wordt gedragen.
Levensduur batterij
Er zijn strenge tests uitgevoerd om de levensduur van de batterij van het apparaat nauwkeurig te meten. Het apparaat heeft een totale batterijduur van 8 dagen met een enkele lading. Dit betekent dat als de patiënt twee weken moet worden onderzocht, de batterij één keer moet worden opgeladen. De batterij kan worden opgeladen terwijl het apparaat wordt gedragen.
Als alternatief kunnen gegevens worden verzameld met tussenpozen van 10 minuten , in wezen verdubbeling van de batterijduur van het apparaat omdat het zou slapen tussen het lezen, en heel weinig batterij zou verbruiken. De resterende levensduur van de batterij en het aantal resterende uren van de batterij worden weergegeven op het dashboard van de patiënt en de arts.
Ontwikkelingskosten
De ontwikkelkosten in het geval van het project bestaan uit eenmalige en terugkerende kosten. De ontwikkelingskosten voor één apparaat zouden € 70 bedragen, inclusief de behuizing. Terugkerende kosten ontstaan in de backend. Ik gebruik Hologram als mijn serviceprovider en kost me € 5 voor het verzenden van gegevens gedurende 2 weken per apparaat. De backend kosten inclusief datastreaming en de database bedragen €30 voor 2 weken.
De totale kosten voor 100 apparaten bedragen ongeveer € 7.035. Houd er rekening mee dat deze apparaten herbruikbaar zijn.
Houd er rekening mee dat de backend-kosten schaalbaar zijn en hetzelfde zullen zijn, ongeacht het aantal geïmplementeerde apparaten. De kosten kunnen drastisch worden verlaagd wanneer componenten in bulk worden gekocht en aangepaste circuits worden gebruikt.
Het doktersdashboard
Het is erg belangrijk voor het ziekenhuis om de gezondheid van deze thuisgestuurde patiënten te allen tijde te kunnen volgen en waarschuwingen te krijgen als ze niet in orde zijn. Het ziekenhuis heeft toegang tot een dashboard met de vitale functies van alle bewaakte patiënten en een specifiek rapport voor al deze patiënten. Hierdoor kunnen artsen op de hoogte worden gesteld als een patiënt hulp nodig heeft en kunnen ze de patiënt dan gedetailleerder bekijken om precies te zien wat het probleem is.
De arts zal een melding ontvangen in de vorm van een e-mail en waarschuwing in het dashboard als een patiënt niet thuis is, het apparaat niet draagt of een onregelmatige temperatuur en/of hartslag heeft .
De artsen ontvangen ook gegevenswaarschuwingen als e-mails wanneer de vitale functies van een patiënt abnormaal zijn, zodat onmiddellijk actie kan worden ondernomen.
Het rapport is opgedeeld in 3 delen:de patiënt (met details over de vitale functies), de locatie (locatie van de patiënt en indien thuis) en het apparaat (batterijniveau, ID). Machineleren wordt ook gebruikt om de gezondheid van de patiënt in de nabije toekomst te voorspellen en de arts te laten zien of de gezondheid van de patiënt in de loop van de tijd verslechtert.
Patiëntdashboard
Ik vind dat patiënten ook toegang moeten hebben tot deze gegevens om te weten hoe het met ze gaat en om zelfbewust te worden. Zowel een desktop als een mobiele ervaring is beschikbaar voor de patiënt, zodat ze hun gegevens direct kunnen krijgen.
Houd er rekening mee dat voorspellings- en geolocatiegegevens niet worden weergegeven op het dashboard van de patiënt omdat ze die informatie niet nodig zouden hebben.
Massaproductie en schaalbaarheid
Het apparaat is geschikt voor massaproductie en schaalbaar vanwege de lage prijs en eenvoudige constructie. Het apparaat kan overal ter wereld worden gebruikt met mobiele dekking om mensen over de hele wereld te beschermen.
100% open source
Bij het ontwikkelen van dit project heb ik ervoor gezorgd dat alle gebruikte middelen, bibliotheken en andere, open source waren om ervoor te zorgen dat de applicatie zo snel mogelijk zonder bureaucratie kon worden ontwikkeld en vrijgegeven. Dit project is volledig open source en beschikbaar op GitHub.
Gegevensverzameling
Het apparaat verzamelt de geolocatiegegevens van de gebruiker die als vertrouwelijk worden beschouwd. Het apparaat verwerkt deze gegevens niet lokaal, maar vertrouwt op de cloud om dit veilig te doen, zodat de gegevens van de gebruiker niet kunnen worden gekaapt. De verbinding met de Azure-database is versleuteld en beveiligd, zodat de gegevens niet in verkeerde handen kunnen vallen.
Verder gaan
Tijdens de ontwikkeling van dit project kwamen er tal van ideeën in me op om het product verder te ontwikkelen en te verbeteren. In dit gedeelte worden ze gedetailleerd beschreven.
- Het verzamelen van het zuurstofniveau in het bloed kan worden geïmplementeerd zonder dat er hardware hoeft te worden gewijzigd, omdat deze waarde kan worden geëxtraheerd uit de bestaande hartslagsensor. De SpO2-waarden in het bloed zijn een indicatie van de schade die het virus heeft aangericht.
- De hartslag van de patiënt kan worden gemeten door middel van kussentjes die op de borst en andere delen van het lichaam worden geplaatst en die een nauwkeurigere temperatuurweergave bieden, waardoor de nauwkeurigheid van de metingen toeneemt.
- De ontwikkeling van een 3D-geprinte behuizing zou in een toekomstige iteratie de voorkeur hebben. De grootte van het apparaat kan ook drastisch worden verkleind, waardoor het nog comfortabeler is om te dragen.
De frontend van de applicatie
Het bovenstaande diagram toont de architectuur van de applicatie die op het apparaat draait. Dit zijn de stappen die het apparaat elke 5 minuten neemt. Het apparaat verzamelt alle gegevens , controleert of het gedragen is door de gebruiker en verpakt ze en verzendt ze naar de backend via GSM .
Het apparaat houdt ook de tijd bij , krijgt het de tijd van een aangewezen server en synchroniseert het zijn ingebouwde RTC met dit tijdstempel wanneer het voor de eerste keer wakker wordt of nadat het is uitgeschakeld.
De backend van de applicatie
De gegevens die door het apparaat worden verzonden, worden ontvangen in de Azure IoT Hub waar het werd veilig afgeleverd . Een taak voor streamanalyse haalt vervolgens deze gegevens uit de hub en duwt deze naar een Cosmos DB databank. De patiënt en arts Power Bi-rapporten bevraag deze gegevens vervolgens met tussenpozen uit de database, voer algoritmen voor machine learning uit en geef de gegevens vervolgens weer. Het dokterdashboard verzamelt vervolgens alle bewaakte patiënten en geeft een overzicht van hun gezondheid.
Waarom Azure?
Ik gebruik Azure graag boven andere alternatieven vanwege het gebruiksgemak en de navigatie, evenals de beschikbaarheid van geweldige gratis plannen voor ontwikkeling. Ik hou ook van hun gebruikersinterface en integratie met andere Microsoft-producten die ik gebruik.
Marktonderzoek
Veel landen hebben alternatieven geïmplementeerd voor het monitoren van patiënten met coronavirus terwijl ze thuis in zelfisolatie zijn. Taiwan heeft een revolutionair volgsysteem geïmplementeerd waar de patiënten gevolgd worden via hun mobiele telefoon om ervoor te zorgen dat ze thuis blijven.
Andere landen hebben ook ideeën geïmplementeerd om de gezondheid van mensen in zelfisolatie te controleren en sommige systemen werken beter dan andere. Maar geen enkel product verzamelt zowel de essentiële informatie over de toestand van de patiënt als zijn/haar locatie in een klein, comfortabel pakket.
Doelgroep
Dit apparaat is bedoeld voor mensen die door het ziekenhuis naar huis worden gestuurd om zichzelf te isoleren omdat ze positief zijn getest op een zwakke vorm van het virus of asymptomatisch zijn.
Voordelen van het gebruik van SmartWristband
- Ervoor zorgen dat patiënten naar zelfisolatie worden gestuurd zijn thuis blijven
- Bewaken van de vitaliteit van de patiënt zonder dat ze in het ziekenhuis hoeven te liggen
- Ruimte vrijmaken in ziekenhuizen voor mensen met ernstige manifestaties van het virus
- Doktoren waarschuwen naar de toestand van alle patiënten in zelfisolatie 25/7
- Een comfortabele monitoringoplossing bieden voor de patiënt
- Het ziekenhuis voorzien van een prognose van de gezondheid van de patiënt
- De patiënt informeren over hun gezondheid via een mobiel en desktop-dashboard
- Kosteneffectief en schaalbaar
Projectuitvoering
Deze sectie zal u begeleiden bij de constructie van het project en zal de stappen behandelen die nodig zijn om deze applicatie te ontwikkelen.
Stap 1:Alles bij elkaar zoeken
Het eerste dat we moeten doen, is alle benodigde componenten bij elkaar krijgen. De benodigde componenten en services worden hieronder vermeld:
- Arduino MKR GSM 1400
- GSM-antenne (wordt geleverd met de MKR-gsm)
- DFRobot Hartslagsensor
- IR-temperatuursensor
- 3.7v LiPo-batterij (ik gebruikte 1.800mAh)
- Hologram simkaart
Naast de benodigde hardware zijn er, voordat we met het project aan de slag gaan, ook een aantal services die moeten worden opgezet. Gebruik de onderstaande tutorials om aan de slag te gaan.
- Verkrijg de Arduino IDE of gebruik de webeditor
- Maak uw Hologram-account aan en sluit uw simkaart aan
- Maak een Azure-account
- Maak een Power Bi-account
Stap 2:Werken met de MKR GSM
Voordat we het project zelf gaan maken, moeten we de MKR GSM configureren om verbinding te maken met Azure IoT . Hiervoor moeten we een certificaat genereren en opslaan op het apparaat om de verbinding met de backend te kunnen verifiëren.
Er is een tutorial over Hackster die dit behandelt voor de MKR NB. Volg deze tutorial vanaf het begin en houd er rekening mee dat je moet stoppen nadat je het certificaat hebt gegenereerd . Zorg ervoor dat u de SHA1-tekenreeks opslaat omdat we het later nodig zullen hebben. De tutorial is hier.
Stap 3:Alles met elkaar verbinden
Het volgende dat we moeten doen, is alles bedraad maken. Hieronder is een afbeelding met de schema's voor het maken van dit project. Merk op dat uw componenten er waarschijnlijk niet uitzien zoals die in de schema's. Zorg ervoor dat je de temperatuursensor hebt aangesloten op A4 op het apparaat en de hartslagsensor naar A5 . Vergeet niet de simkaart te plaatsen!
Stap 4:Op naar de IoT Hub
Oké, nu we dat allemaal hebben gedaan, kunnen we verder met de IoT-hub . We werken in de backend voor de volgende paar stappen om dat eerst uit de weg te ruimen. Zorg ervoor dat u een Azure-account heeft voordat u doorgaat.
Het eerste dat u hoeft te doen, is navigeren naar uw console (portal.azure.com) en klik op een bron maken knop linksboven in het scherm. typ nu IoT Hub en selecteer de optie in de vervolgkeuzelijst.
Klik op maken nadat de installatie is voltooid. Houd er rekening mee dat we in dit voorbeeld een gratis tier IoT-hub . zullen gebruiken zodat we niet in rekening worden gebracht voor het gebruik ervan. Als u deze oplossing implementeert, overweeg dan om de laag naar S1 te wijzigen (of S2/S3 afhankelijk van de schaal).
Maak een nieuwe resourcegroep en geef uw IoT-hub een naam. Klik nu op de Grootte en schaal optie uit de bovenstaande stappen. Zorg ervoor dat u bent ingesteld zoals hieronder.
Klik nu op Bekijken en maken en de bron implementeren . Wacht tot de IoT Hub is gemaakt en dan openit door te klikken op Alle bronnen uit het menu aan de rechterkant van het scherm.
We moeten nu een apparaat maken en koppel deze aan de IoT-hub. Navigeer naar de IoT-apparaten optie in het menu aan de rechterkant van het scherm en klik op de optie. Klik op de Nieuwe knop om een nieuw apparaat toe te voegen naar de IoT-hub. Voer de volgende gegevens in:
Zorg ervoor dat u de primaire vingerafdruk en de secundaire vingerafdruk vervangt door uw SHA1-waarde geëxtraheerd in de tweede stap.
Klik op opslaan en we zijn klaar om te gaan!
Stap 5:De Cosmos DB-database maken
Nu moeten we de database maken waarin de gegevens die door ons apparaat worden verzonden, worden opgeslagen. Ik gebruik Azure's Cosmos DB omdat het gewend is om JSON-bestanden op te slaan dat is wat we vanaf het apparaat verzenden.
Navigeer eerst terug naar de knop Een bron maken uit het menu aan de rechterkant en klik erop. Zoeken naar Cosmos DB en selecteer vervolgens de optie.
Selecteer de resourcegroep die is gemaakt met de IoT Hub en geef het een naam, houd de rest van de instellingen hetzelfde. Zorg ervoor dat de regio hetzelfde is op zowel de IoT-hub als de database om kosten voor regiooverdracht te voorkomen.
En dat is het! Wacht tot de resource is geïmplementeerd en dan zijn we klaar om verder te gaan!
Stap 6:De streaminganalysetaak maken
Dus nu we onze IoT-hub en database hebben opgezet, moeten we de twee met elkaar verbinden zodat de gegevens die in onze IoT Hub worden ingevoerd, naar de database worden gestreamd zodra ze worden ontvangen.
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 file. 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
- Temperatuur
- 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).
En dat is het! 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/SmartWristbandAangepaste onderdelen en behuizingen
Schema's
schematics_HcrW1SiwfW.fzzProductieproces