Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Health Band - Een slimme assistent voor ouderen

Componenten en benodigdheden

Infineon DPS310
× 1
Arduino Nano R3
× 1
Espressief ESP8266 ESP-01
× 1
Jumperdraden (algemeen)
× 1
3,7 V LiPo-batterij
× 1

Benodigde gereedschappen en machines

Soldeerbout (algemeen)

Apps en online services

Arduino IDE
Blynk

Over dit project

Is uw geliefde oud en alleenstaand? U hoeft zich geen zorgen te maken. Met behulp van de DPS310-druksensor van Infineon hebben we een virtuele assistent ontwikkeld die netjes om je arm past in de vorm van een band, die dit tijdrovende werk voor je doet en je geliefden in veilige handen achterlaat!

"Ouderen vertegenwoordigen momenteel ongeveer 14,5 procent van de Amerikaanse bevolking , en tegen 2030 zullen er ongeveer 74 miljoen ouderen zijn. Nu de zorgkosten escaleren en zorginstellingen onder druk komen te staan ​​om adequate zorg te bieden, zijn nieuwe oplossingen voor het beheer van de gezondheid van ouderen noodzakelijk."

Na een snelle zoektocht en het zien van de schokkende cijfers is dit onze poging om ouderen te helpen!

HET VERHAAL

Het is een paar jaar geleden dat mijn oma last had van de eerste tekenen van de ziekte van Alzheimer en helaas lijkt haar toestand te verslechteren. Dit resulteerde in een reeks onverwachte problemen zoals

1) dwalen naar haar werk (ook al werd haar geadviseerd dat niet te doen)

2) haar maaltijden overslaan of soms dubbele maaltijden eten

3) haar oefeningen niet doen

Dit alles vanwege het gebrek aan geheugen en ook haar onwetendheid over haar toestand.

Dit leidde ertoe dat mijn moeder bijna de hele dag bij haar moest zijn, zeven dagen per week. Deze taak bleek erg vermoeiend en tijdrovend. Toen kwamen we op het idee om een ​​virtuele assistent te maken die het gedrag en de activiteiten van mijn oma in de gaten kon houden en indien nodig ook een familielid kon alarmeren in geval van nood. Mijn moeder een pauze geven en tegelijkertijd de patiënt in veilige handen houden!

COMPONENTEN IN HET SYSTEEM / CONCEPT

Hoewel dit systeem zich voornamelijk richt op de problemen waarmee een Alzheimer-patiënt wordt geconfronteerd, hebben we in ons project veel andere systemen ingeprent die van invloed zijn op het leven van alle ouderen en hen helpen om zelfstandig de obstakels van hun dagelijks leven te overwinnen.

Een van de belangrijkste kenmerken van de druksensor van Infineon is de grootte! Dit maakt het belangrijkste onderdeel draagbaar en super veelzijdig. In het hart van ons systeem hebben we de Arduino Nano die vervolgens via de I2C-bus is verbonden met de DPS310-druksensor. Acties en gedragingen worden gecodeerd om de live beweging van de patiënt te simuleren. Aan de hand van deze grafieken of waarden bepalen we de toestand van de patiënt en waarschuwen we een lid in geval van nood. De gegenereerde gegevens worden vervolgens weergegeven in een kleine app met Blynk.

Dit hele systeem zal worden geïntegreerd in een compacte maar goed uitziende draagbare band, waardoor deze technologie naadloos in het leven van de patiënt wordt geïntegreerd.

FUNCTIES EN MOGELIJKHEDEN

Dit zijn de belangrijkste functies en bewegingen die onze band kan analyseren/detecteren:

Herfst - studies tonen aan dat het grootste probleem met ouderen is dat ze hun evenwicht verliezen en vallen. Vaak zijn patiënten hulpeloos en pas na een tijdje komt er hulp. Dit kan gemakkelijk worden vermeden met de Health Band door de detectie van een plotselinge drukdaling. Na detectie wordt er automatisch een bericht naar familieleden gestuurd om te voorkomen dat het letsel erger wordt.

Oefening - voor oude mensen kan het nogal moeilijk zijn om ze aan het sporten te krijgen of te gaan wandelen, ook al blijven ze dan fit en gezond. We dachten dat een manier om ze te motiveren zou kunnen zijn door ze te laten zien hoeveel stappen ze hebben gezet of hoeveel tijd ze hebben gelopen, zodat ze iets hebben om hen aan te sporen om te oefenen.

En in het geval van mijn oma hebben de dokters haar gezegd dat ze ongeveer 1000 stappen moet lopen die ze wil, maar ze verliest de tel. Een balie helpt haar ook!

Zodra de Health Band een "golf"-beweging detecteert, leidt dit af dat de patiënt met zijn/haar oefening is begonnen. Van top tot top of van dal tot dal wordt één cyclus gemarkeerd. Terwijl stappen worden genomen, wordt het aantal cycli gegenereerd en vervolgens weergegeven, zodat u uw eigen stappenteller kunt maken.

Koorts - deze is vrij eenvoudig, de sensor geeft ook de temperatuur aan. De band die in contact is met de arm geeft de live temperatuur van de patiënt. Eventuele pieken of dalen worden automatisch opnieuw gewaarschuwd via een bericht aan familieleden.

Staat - vertelt de familieleden de live toestand van de patiënt. Als de Health Band bijvoorbeeld niet veel drukveranderingen detecteert, kan de patiënt slapen.

We hebben drie toestanden:slapen, wakker en sporten. (dat gezegd hebbende, we hebben deze functie nog niet geperfectioneerd omdat we soms verkeerde "statussen" ontvingen. We zijn ook van plan meer staten toe te voegen)

CIRCUIT

De krachtige DPS310-sensor van Infineon kan via Bluetooth worden gesynchroniseerd met een app. De app genereert live visuele representaties van de sensor. Hoewel het nuttig was, had het zijn beperkingen voor ons concept.

Dus om gebruik te maken van de datastroom van de sensor hebben we een Arduino Nano aangesloten via de I2C-bus. Hierdoor konden we de gegevens berekenen, waardoor we verschillende scenario's konden afleiden waarin de patiënt zich bevond.

Toen we dat opgelost hadden, hebben we de Arduino aangesloten op een ESP8266 WiFi-module, waardoor deze met een mobiele app kan communiceren.

INSTELLEN

Voordat u alles instelt, moet u pinnen aan de sensor toevoegen. Knip twee stukken van zeven pinnen af ​​en soldeer ze vast. Je zou een breadboard kunnen gebruiken om dingen gemakkelijker te maken.

  • DPS310 Druksensor naar Arduino Nano (I2C)

OPMERKING :de oriëntatie van de sensor is zoals afgebeeld op de afbeelding

Pin 1 (SDA) op sensor => Analoge pin 4 op Arduino

Pin 2 (SCL) op sensor => Analoge pin 5 op Arduino

Pin 8 (GND) op sensor => GND op Arduino

  • Arduino Nano naar ESP8266 (WiFi-module)

OPMERKING :de oriëntatie van de module is zoals afgebeeld op de afbeelding

Pin 1 op WiFi-module => Digitale Pin 11 op Arduino

Pin 2 op WiFi-module => Digitale pin 10 op Arduino

Pin 7 (GND) op WiFi-module => GND op Arduino

Pin 8 (Power) op wifi-module => 3v3 op Arduino

DE BAND MAKEN

Omdat alle componenten klein zijn, passen ze netjes om je pols. Om de eigenlijke band te maken, gebruikten we Canvas en Schuim om de componenten in te bedden. En dan klittenband om de banden te vormen.

Om je DIY Health-band te maken, begin je met het snijden van schuim op de breedte van je hand. Rangschik vervolgens de verschillende sensoren en knip de uiteindelijke maat uit. Rond de randen af ​​om het een netter uiterlijk te geven. Druk pinnen in het schuim (waardoor het bescherming en grip krijgt) en plaats de batterij in een kleine sleuf.

Draai nu de band om en soldeer de verbindingen, de pinnen zouden er gewoon uit moeten steken...Doe een testrun om te zien of alles werkt.

Voeg klittenband toe om bandjes te maken. Wikkel de band in canvas en plak deze vast met hete lijm, dit geeft een nette afwerking en gevoel!

Aangezien we geen 3D-printer hebben, zijn we van plan om dit prototype in de toekomst te upgraden met een 3D-print erop die perfecte sleuven zal hebben voor alle componenten die een ergonomisch ontwerp geven aan onze Health Band!

***We zullen dit project updaten, wanneer we ons definitieve 3D-geprinte model printen, met foto's en printbestanden***

DE VERSCHILLENDE ALGORITHMEN CODEREN

Voordat we beginnen met het programmeren van ons systeem, zijn er bepaalde bibliotheken die u moet installeren om het programma te laten werken. De bibliotheken die u moet downloaden zijn:

  • Draadbibliotheek (Meestal komt het vooraf geïnstalleerd, dit is verantwoordelijk voor de communicatie tussen de Arduino Nano en DPS310 druksensor) https://github.com/PaulStoffregen/Wire
  • DPS310-druksensorbibliotheek https://github.com/Infineon/DPS310-Pressure-Sensor
  • Blynk-bibliotheek (voor de Arduino Nano om te kunnen communiceren met de Blynk-cloud) https://github.com/blynkkk/blynk-library

Nadat u elk van de bibliotheken hebt gedownload, volgt de installatie voor elk hetzelfde proces:open de Arduino IDE en ga naar schets (bovenaan het raam). Klik vervolgens in de vervolgkeuzelijst op inclusief bibliotheek . Klik vervolgens op voeg .ZIP-bibliotheek toe . Navigeer nu naar de plek waar je de bestanden hebt opgeslagen die je hebt gedownload en klik op openen. Herhaal het proces voor alle drie de bibliotheken.

Nu kunt u proberen de proefcode te downloaden en controleer of het compileert. Upload het naar je Arduino Nano en zorg ervoor dat je live data krijgt door de seriële monitor . te openen (weergegeven door het monitorpictogram in de rechterbovenhoek van de IDE).

Als dat goed werkt, ga je gang en upload je de hoofdcode, waarna je kunt beginnen met het bouwen van je app.

DE APP BOUWEN

Om verbinding te maken met internet gebruiken we een vooraf gebouwd platform genaamd Blynk, dat kan worden gedownload van de Android Play Store, onderstaande link. Er zijn talloze voorbeelden over het gebruik van de app met de Arduino die allemaal beschikbaar zijn door naar bestanden te gaan in de Arduino IDE, dan voorbeelden en onder de Blynk-lijst.

Link naar blynk-app :https://play.google.com/store/apps/details?id=cc.

We hebben de App gebruikt om op een gebruiksvriendelijke manier representaties van de gegevens te maken.

Selecteer Arduino Nano als je microcontroller en als ''verbindingstype'' WiFi . U ontvangt dan een e-mail met de "auth token" die u in de code moet invoeren (vermeld in de code).

We hebben verschillende widgets toegevoegd, zoals een Meter om de actuele temperatuur weer te geven, een Waardeweergave voor de stappenteller en een LCD-display de huidige staat tonen. Dit zijn de basisbouwstenen waaraan u nog veel meer functies kunt toevoegen voor andere specifieke gevallen.

CONCLUSIES, ALGEMEEN SUCCESVOL!

Het project had enkele fouten en verkeerde lezingen. Een daarvan was de lichaamstemperatuur. afgelezen door de HealthBand was 36° Celsius (polstemperatuur), terwijl de medische thermometer het als 36,8° Celsius (okseltemperatuur) aangaf.

Onze algoritmen voor de stappen bleken aanvankelijk verkeerde tellingen te geven, maar na verschillende pogingen tot wijziging werkte het vrij nauwkeurig. Een ander probleem was de staatsfunctie. We hebben meer variabelen en verklaringen toegevoegd om andere toestanden beter te begrijpen.

Uiteindelijk konden we de problemen oplossen door opnieuw te kalibreren en de HealthBand verzamelt met succes de benodigde gegevens. Mijn oma heeft de afgelopen twee weken geen assistente gehad en de band heeft het goed gedaan!

Op dit moment zijn de herfst- of koortsmeldingen niet getest, omdat dergelijke situaties zich niet hebben voorgedaan, maar theoretisch werken ze!

Dit is een geweldig project geweest en kan vrij gemakkelijk worden geïmplementeerd, we hopen dat deze band levens kan redden en oude mensen in veilige handen kan houden!

Code

  • Gegevenstest genereren
  • HealthBand met Blynk-applicatie
Gegevenstest genererenArduino
Nadat de verschillende bibliotheken zijn geïnstalleerd, voert u dit programma uit om te zien of alles werkt. U zou een livestream van gegevens of waarden op de seriële monitor moeten krijgen.
#include void setup(){ Serial.begin(9600); terwijl (!Serial); //Oproep begint te initialiseren ifxDps310 // De parameter 0x76 is het busadres. Het standaardadres is 0x77 en hoeft niet te worden opgegeven. //ifxDps310.begin(Draad, 0x76); //Gebruik in plaats daarvan de onderstaande regel met commentaar om het standaard I2C-adres te gebruiken. ifxDps310.begin(Draad); // BELANGRIJKE OPMERKING //Als u wordt geconfronteerd met het probleem dat de DPS310 een temperatuur van rond de 60 C aangeeft, hoewel deze rond de 20 C (kamertemperatuur) zou moeten zijn, heeft u mogelijk een IC met een probleem met de zekeringbit //Bel de volgende functie rechtstreeks after begin() om dit probleem op te lossen (hoeft maar één keer te worden aangeroepen na het opstarten) //ifxDps310.correctTemp(); //temperatuurmetingssnelheid (waarde van 0 tot 7) //2^temp_mr temperatuurmeetresultaten per seconde int temp_mr =2; //temperatuur oversampling rate (waarde van 0 tot 7) //2^temp_osr interne temperatuurmetingen per resultaat // Een hogere waarde verhoogt de precisie int temp_osr =2; //drukmetingssnelheid (waarde van 0 tot 7) //2^prs_mr drukmeetresultaten per seconde int prs_mr =2; //drukoverbemonsteringssnelheid (waarde van 0 tot 7) //2^prs_osr interne drukmetingen per resultaat //Een hogere waarde verhoogt de precisie int prs_osr =2; //startMeasureBothCont activeert achtergrondmodus //temperatuur en druk worden automatisch gemeten // Hoge precisie en hoge meetsnelheden zijn niet beschikbaar. // Raadpleeg de datasheet (of trial and error) voor meer informatie int ret =ifxDps310.startMeasureBothCont(temp_mr, temp_osr, prs_mr, prs_osr); //Gebruik in plaats daarvan een van de becommentarieerde regels hieronder om alleen temperatuur of druk te meten //int ret =ifxDps310.startMeasureTempCont(temp_mr, temp_osr); //int ret =ifxDps310.startMeasurePressureCont(prs_mr, prs_osr); if (ret !=0) { Serial.print("Init MISLUKT! ret ="); Serial.println(ret); } else { Serial.println("Init compleet!"); }}void loop(){ unsigned char pressureCount =20; lange int druk [druktelling]; niet-ondertekende char temperatuurCount =20; lange int temperatuur [temperatureCount]; //Deze functie schrijft de resultaten van continue metingen naar de arrays die als parameters zijn opgegeven //De parameters temperatureCount en pressureCount moeten de grootte van de arrays temperatuur en druk bevatten wanneer de functie wordt aangeroepen //Na het einde van de functie, temperatureCount en pressureCount houd het aantal waarden vast dat naar de arrays is geschreven //Opmerking:de Dps310 kan niet meer dan 32 resultaten opslaan. Als de resultatenbuffer vol is, worden er geen nieuwe meetresultaten opgeslagen int ret =ifxDps310.getContResults(temperature, temperatureCount, pressure, pressureCount); if (ret !=0) { Serial.println(); Serieel.println(); Serial.print("FAIL! ret ="); Serial.println(ret); } else { Serial.println(); Serieel.println(); Seriële.afdruk (temperatuurtelling); Serial.println(" temperatuurwaarden gevonden:"); for (int i =0; i  
HealthBand met Blynk-applicatieArduino
Dit is het definitieve programma, enkele variabelen en drempels moeten handmatig worden ingevoerd om de gezondheidsband goed te laten werken, volg de opmerkingen en maak de aanpassingen. Stel de widgets in de Blynk-app in volgens uw behoeften en uw assistent zou tot leven moeten komen!
#include #include #include #define BLYNK_PRINT Serialchar auth[ ] ="YourAuthToken";// Uw WiFi-inloggegevens.// Stel wachtwoord in op "" voor open netwerken.char ssid[] ="YourNetworkName";char pass[] ="YourPassword";const unsigned char pressureLength =50;unsigned char pressureCount =0;long int pressure[pressureLength];unsigned char temperatuurCount =0;const unsigned char temperatuurLength =50;long int temperature[temperatureLength];/*deze drempels zullen veranderen afhankelijk van waar u zich momenteel bevindt, deze waarden werkten perfect in onze kustgebied waar de gemiddelde temperatuur 34 graden Celsius*/int was pressureFallingThresh =1;int pressureSleepingThresh =4;int tempFeverThresh =39;int pressureJogThresh =5;void setup(){ Serial.begin(9600); Blynk.begin(auth, ssid, pass); terwijl (!Serial); ifxDps310.begin(Draad); int ret =ifxDps310.setInterruptPolariteit(1); ret =ifxDps310.setInterruptSources(1, 0, 0); // wis de interruptvlag door ifxDps310.getIntStatusFifoFull(); int interruptPin =3; pinMode (interruptPin, INPUT); attachInterrupt(digitalPinToInterrupt(interruptPin), onFifoFull, RISING); //start van een continue meting net als voorheen int temp_mr =3; int temp_osr =2; int prs_mr =1; int prs_osr =3; ret =ifxDps310.startMeasureBothCont(temp_mr, temp_osr, prs_mr, prs_osr); if (ret !=0) { Serial.print("Init MISLUKT! ret ="); Serial.println(ret); } else { Serial.println("Init compleet!"); }}void loop(){ Blynk.run(); Serial.println("loop running"); vertraging (500); if (pressureCount ==pressureLength &&temperatureCount ==temperatuurLength) { // print results Serial.println(); Serieel.println(); Seriële.afdruk (temperatuurtelling); Serial.println(" temperatuurwaarden gevonden:"); for (int i =0; i  tempFeverThresh){ feverEmail(); } Serial.println ("graden van Celsius"); } Serieel.println(); Serial.print (druktelling); Serial.println(" gevonden drukwaarden:"); for (int i =0; i   

Schema's


Productieproces

  1. De veiligheidsnormen voor slimme apparaten begrijpen
  2. Slimme jaloezieën
  3. IOT - Smart Jar met ESP8266, Arduino en ultrasone sensor
  4. Iron Man
  5. Vind mij
  6. Hoe de massa van de aarde te meten met Arduino
  7. Arduino-luchtbevochtigerbediening
  8. Arduino-joystick
  9. De terugverdientijd vinden voor slimme productie
  10. Software voor de slimme fabriek:de voordelen van hardware-onafhankelijke software
  11. De handmatige lintzaag voor elke gelegenheid