Home > Technologie > Schlaf n 'Tweet

Schlaf n 'Tweet

0
Advertisement

Schlaf n 'Tweet

Schritt 1: Der Schlaf n 'Tweet

Schlaf n 'Tweet

Schlaf n 'Tweet

Jetzt bin ich glücklich genug, an der größten Firma in der Welt als Universität von Waterloo, Koop-Student zu arbeiten. Es könnte nicht einmal ein Unternehmen, das Sie schon gehört haben. Sie heißen Upverter und wir versuchen, die Art und Weise, wie Menschen Design, Bau, Freigabe und Zusammenarbeit auf Elektronik zu ändern. Mein Job (auch der coolste Job in der Welt) ist, interessante Probleme zu finden, die entweder gewesen sein oder konnten mit Elektronik gelöst werden. Ich zeige, was wir bei Upverter machen und was die Gemeinde baut. Und ich veröffentliche nicht nur meine Erfahrungen, sondern ich entwerfe auch die Lösungen für diese Probleme und Open Source meine Erfahrungen, Entdeckungen und meine Entwürfe. Ich helfe, den Kerninhalt einer Gemeinschaft zu teilen, die Elektronik teilt. Wie ich schon sagte, es ist ein ziemlich cooler Job. So eines Tages, hier bin ich bei der Arbeit - tun die coolsten Job jemals, wenn eine E-Mail um das Büro über einen Twitter-Wettbewerb gesendet wird. Und so fing ich an mich zu denken ... Was ist ein Problem, dass twitter und ein Arduino lösen kann? Aber seine noch mehr als das - was REAL Problem kann ich lösen, die nicht gelöst wurde, bevor oder zumindest nicht geöffnet wurde, mit twitter und Arduino? Ich komme darauf zurück, aber genau in diesem Moment bin ich tief im Gedanken des Denkens und mein Kollege Jaco fängt an zu prahlen, was für ein toller Nachtschlaf er hatte, wie sehr er seine Wakemate, Yadda, Yadda, Yadda WARTE AB!

Es ist irgendwie selbstverständlich, aber der Schlaf ist sehr wichtig. Wir alle brauchen es und machen es zum größten Teil anders. Problem ist Technik hat noch eine Möglichkeit zu gehen, bevor wir genau erkennen können, was mit jemandem geschieht, während sie schlafen, ohne ihren Schlaf zu ruinieren oder sie wie Frankenstien zu verdrahten. Zum Beispiel, wenn Sie zu einem professionellen gehen, um Ihren Schlaf analysieren Sie in Sensoren wie EEGs, EMGs oder EOGs abgedeckt werden. Die Oberseite ist sie messen alles, was Ihr Körper tut, während Sie schlafen. . . Aber die Nachteile sind sie weit von angenehm, um zu Bett zu tragen. Vielleicht gibt es hier etwas, das ich ein bisschen besser machen kann ...

Als Folge der schlechte Tech, Actigraphy hat sich die häufigere Methode, um ein bisschen Einblick in, wie Menschen schlafen und seine wirklich die einzige Option, wenn es um persönliche Schlaf-Tracking kommt. Für die Actigraphie gibt es keine Kopf- oder Brust-Sensoren, sondern nur eine Vorrichtung, die um das Handgelenk auf der nicht dominierenden Hand getragen wird. Das Gerät enthält normalerweise einen Beschleunigungsmesser, der dann verwendet wird, um zu bestimmen, welcher Schlafzustand der Benutzer ist. Alle diese Daten werden dann mit Ihrem Mobiltelefon synchronisiert, das Sie auch auf ihre Website hochladen können, um Ihre Bewegungen während der Nacht zu analysieren. Worst case = ein fuzzy Handgelenk widgit, besten Fall weiter zu gehen! Wir haben 12 Monate Geld und wir müssen es maximal nutzen!

Also jetzt, da ich Sie mit dem Hintergrund gelangweilt habe - ich kann mir vorstellen, dass Sie wissen, was ich als nächstes sagen werde ... Warum nicht meine eigenen bauen? Jeder kann gehen, ein WakeMate kaufen. Aber wie viele Menschen haben ihre eigenen gebaut, in der Wolke entworfen und offen für die Welt? Null! Nun, das ist nicht wahr ... Ich denke, seine mindestens ein jetzt! Haha. Und für die Hasser - wie für warum Open Source es? Weil ich glaube, dass eines Tages die Innovation, die möglich wird, von mir zurückgeben, um die Gemeinschaft wird mein Leben in einer positiven Weise beeinflussen. Etwas, das sonst niemals möglich gewesen wäre. Und so wurde der Schlaf n 'Tweet geboren.

Der Sleep n 'Tweet ist grundsätzlich nur ein Arduino mit einem Ethernet-Schild, das den Überblick über Ihre Vitalität (Bewegung + Herzfrequenz) während Sie schlafen. Ich habe es nicht fast so weit gedrückt, wie es gehen könnte, denken Sie es mehr als ein funktionierender Prototyp als ein poliertes Produkt - aber das Potenzial ist riesig! Es könnte verwendet werden, um die Vitalität zu verfolgen und tweet alles, was Sie wollen, je nachdem, was Sie Filter auf sie setzen. Es könnte hergestellt werden, um sehr, sehr klein zu sein. Und es könnte auch auf fast alles, was für Bewegungs-und IR-oder Fluss-Änderungen zu überprüfen - aber jetzt bleiben wir schlafen bleiben.

Schritt 2: Wie es funktioniert

Schlaf n 'Tweet

Schlaf n 'Tweet

Schlaf n 'Tweet

Überblick
Also hier werde ich Ihnen einen Überblick, wie das Gerät funktioniert und Funktionen, so dass Sie zumindest verstehen, was Sie machen zu machen. Wenn Sie nur scharf auf Ihre eigenen haben, können Sie diesen Abschnitt überspringen, ich werde nicht verletzt, wenn Sie tun. Ich werde hier alle Engineering-Labor-Bericht zu gehen. In 3 ... 2 .... 1 .... GO! So verwendet dieses Gerät den Arduino für seine Basis. Das Arduino weiß und tut alles, sobald wir es programmieren. Es weiß nichts, bis wir das tun. Auf der Oberseite der Unterseite ist das Arduino Ethernet-Schild, das das Arduino Gespräch zu allen Internets heraus dort lässt. So ermöglicht die Arduino mit Twitter mit ein wenig Programmieren zu kommunizieren. Steming aus dem Arduino sind zwei Sensor-Schaltungen; Den Beschleunigungsmesser und den IR-Herzfrequenzsensor. Wir kommen in den nächsten Minuten.

Arduino
Für dieses Projekt habe ich den Arduino Uno und einen Ethernet-Schild dazu genutzt. Sie müssen sicherstellen, dass die Pins 12 und 13 (Punkt zu Pins im Bild) offen sind, da diese für die Kommunikation zwischen dem Arduino und dem Ethernet-Schild verwendet werden. Das saugt, weil Pins 12 und 13 sind mein Favorit zu verwenden. Ich weiß nicht, was es über sie ist, genau wie die Zahlen, aber das dauerte mir 30 Minuten, um es herauszufinden. Also habe ich Pin 9 verwendet, um zu steuern, ob die Infrarot-LED und die rote LED aktiv sind und ich habe Pin 8 verwendet, um zu lesen, ob es eine Änderung im IR-Fototransistor gab oder nicht. Die Stifte A0, A1 und A2 wurden verwendet, um den Beschleunigungsmesser zu kümmern. Für Energie verband ich den 5v Stift mit dem Herzfrequenzkreis und verband den 3.3v Stift mit dem Beschleunigungsmesserstromkreis. Das ist im Grunde, wie ich die Gehirne des Geräts angeschlossen. Immer noch viele Stifte offen für andere Dinge, vielleicht ein Feuchtigkeitssensor zu sehen, wenn Sie schwitzen Eimer im Schlaf sind. Oder ein Drucksensor, um zu sehen, wenn Sie ein Glied brechen für Stunden und Stunden jede Nacht.

Herzfrequenzsensor
Der Herzfrequenzsensor besteht aus einem Operationsverstärker, der mit einer IR-LED und einem IR-Fototransistor verbunden ist. Kurz gesagt, das Design funktioniert durch Shinning eine IR-LED auf den Finger und empfängt einige Menge an Licht durch den Fototransistor. Wenn Ihr Herz pumpt Blut, wird das Volumen des Bluts in Ihrem Finger zu ändern, und so wird die Menge an Licht durch den Fototransistor aufgenommen. Diese Wertveränderung wird ziemlich klein sein, also müssen wir die Änderung ein paar Kerben mit einem Operationsverstärker treten. Der, den ich eingerichtet habe, sollte das Signal etwa 10 000 mal grob multiplizieren. Jetzt, was wir mit diesem verstärkten Signal tun können, pumpt es in den Arduino und liest die Änderungen als Einsen und Nullen. Ich habe auch eine LED zwischen dem Arduino und dem Operationsverstärker angeschlossen, so dass Sie direkt das Signal ansehen können, das in den Arduino geht. Was ich getan habe, ist die Zeit zwischen Herzfrequenz und nach 5 Schlägen gemessen, nehme ich den Durchschnitt, um eine Schläge pro Minute zu komponieren. Ich habe auch Filter im Platz im Programm, um alle unangemessenen Frequenzen auszuschließen. Zum Beispiel, wenn die Herzfrequenz kommt zu 100ms zwischen Beats, ich weiß, diese Lesung ist falsch, weil das menschliche Herz nicht schlagen 600 mal pro Minute. Ich habe den gültigen Bereich 30BPM bis 250BPM. Ich fand den IR-Sensor funktioniert auf mehreren Teilen des Körpers, aber am besten auf den Finger.

Beschleunigungsmesser
Ich benutzte ein Beschleunigungsmesser vormontiert aus Sparkfun den gerufenen ADXL335, aber Sie können Ihre eigenen zu bauen , die nicht so schwer ist. (Das Schema ist hier ) Der Beschleunigungsmesser ist direkt auf die analogen Pins des Arduino angeschlossen. Konstante Lesungen werden über ihre Orientierung gegeben und ich grundsätzlich erkenne ich die Änderungen in der Orientierung und log sie als Bewegungen. Ich musste ein paar Dinge im Programm tun, um Unregelmäßigkeiten wie Zucken zu bekämpfen. Ich nehme einen Zeitrahmen, in dem die Anzahl der gelesenen Bewegungen mit der Anzahl der gelesenen Nicht-Bewegungen verglichen wird. Dann ändere ich auch die Empfindlichkeit. Also, wenn Sie um 5 bewegen wird es eine positive Bewegung zu erkennen. Grundsätzlich ist mehr Bewegung eine höhere Zahländerung.

Setzen Sie sie alle zusammen und Sie haben eine Weise des Lesens someones Herzrate und -bewegungen. Lets bewegen, was Sie tatsächlich haben, um diesen bösen Jungen zu bauen.

Schritt 3: Teile / Werkzeuge / Fertigkeiten

Schlaf n 'Tweet

Schlaf n 'Tweet

Schritt 4: Schaltpläne

Schlaf n 'Tweet

Embed-Code: Um diese habe ich die Upverter EDA-Tool - das ist eine ziemlich neue und anders, so werde ich eine Minute zu erklären. Sie sollten wirklich nur check it out bei upverter.com, aber aus Mangel an eine bessere Analogie seiner Google Docs vs Microsoft Word. Es gibt viel weniger Funktion Blähungen, es läuft in Ihrem Web-Browser, seine Zusammenarbeit, seine Open-Source-Hardware konzentriert, und es ist das erste Werkzeug, das mir erlaubt, meine Designs im Web ohne Rückgriff auf PDFs zu teilen. Ich kann wirklich die Entwürfe nehmen, die ich in Upverter baue und sie in andere Aufstellungsorte a'la YouTube einbette - das ist sehr, sehr cool. Meine Freunde können dann mit meinem Design spielen, eine Stückliste exportieren, die Teile bestellen oder sogar Gabel es und machen ihre eigenen Änderungen, und dann etwas Cool ist möglich ... Was ich entworfen habe, wird ein Baustein der Zukunft Elektronik eher als ein Sackgasse-Projekt in meinem Keller. Jetzt Upverter ist noch lange nicht fertig, und es gibt eine Menge von Features kommen die Pfeife, aber seine bis zu dem Punkt, wo wir Tonnen von Benutzern Anmeldung, Gabelung Inhalt, Erstellen von Teilen, und nur generell entwerfen kühlen Elektronik. Sie sollten wirklich check it out, beitreten und helfen, gestalten die Zukunft der Elektronik-Design. Sie können direkt einen Blick auf den Schaltplan und bearbeiten Sie es hier: http: //upverter.com/mkiss/1645/Sleep-n'-Tweet/.

Schritt 5: Der Build

Schlaf n 'Tweet

Schlaf n 'Tweet

Schlaf n 'Tweet

Schlaf n 'Tweet

Die Stückliste, die ich Ihnen gegeben habe, sind die beste Kombination, der ich begegnete. Ich ermutige Sie zu versuchen, eine bessere zu finden, aber diese funktionierte gut für mich. Es ist eine relativ einfache Schaltung zu bauen. Das einzige, was einige Zeit dauert, ist die Einrichtung der Herzfrequenz-Monitor. Eine Sache, die ich fand, dass perfekt funktionierte, war ich hatte 8 Verbindungen zum Arduino; Genau die Menge der Kabel in einem cat5 Ethernet-Kabel. Es ist keine Überraschung, was jemand schläft, wenn 8 kleine Drähte an ihnen angeschlossen sind. Sie reißen sie zu Fetzen in der Mitte ihres Schlafes. So schaltete ich eine weibliche Verbindungsstück zu meinem Stromkreis ein, also könnte ich ein Ethernet-Kabel zwischen dem Arduino und der Sensoreinheit anspannen. Stellen Sie sicher, dass das Kabel kein Crossover-Kabel ist. Dies wird dazu führen, dass viele schreckliche Dinge passieren. Ich las die Ausgabe von meinem Beschleunigungsmesser und bekam nur Nullen und hatte Angst, dass ich gebratene Firma Eigentum und sie schlugen uns hier. Stellt sich heraus, das Kabel Ich hing war ein Crossover und es wirklich durcheinander mit meinem Kopf. Ich erhielt eine kleine schlagen, aber nichts zu ernst.

Wenn Sie sicherstellen möchten, dass Ihre IR-LED richtig funktioniert, greifen Sie eine Kamera. Das menschliche Auge ist unfähig, IR-Licht zu detektieren, aber es wird sich auf jeder Kamera als helles weißliches Purpur zeigen.

Ein paar Dinge, die ich gefunden wurden Flattening die 1 uF Kondensatoren wirklich senkte das Profil des Gerätes, so konnte ich es in den Kunststoff-Fall fand ich. Ohne dies zu tun wird das Gerät jab Sie, wenn Sie schlafen. Ich habe eine Hack-Säge, um die Platine auf eine vernünftige Größe zu trimmen, so könnte ich alles in den Fall passen und verwendet einige nette Verdrahtung, um die Reichweite des IR-Sensors zu verlängern.

Ich löste dann die Komponenten alle zusammen und das ist alles, was es zu tun gab. Ich heiß geklebt die Drähte an der Spitze der Leiterplatte zu, so dass sie nicht abbrechen. Als ich zum ersten Mal mein Chef mit ihm schlafen, zermalmte er die Drähte und brach ein paar. Also schäumte ich den Heißleim auf die Steckverbinder nach Zak. Ich war auch herumfummeln mit dem Sensor, wenn der Draht schnappte und es war ein echter Schmerz, um es wieder auf, so empfehle ich die Verklebung der Spitze. Auch wenn es nicht die schönsten aussehen, verhindert es eine Menge von Schmerzen, Leiden und Verlust der Zeit.

Schritt 6: Programmierung

Schlaf n 'Tweet

Das Programm hat 5 Hauptabschnitte. Alle twitter Bibliotheken müssen eingeschlossen werden, damit dieses arbeitet. Sie können die Bibliotheken und eine süße kurze Anleitung erhalten Sie hier .

Utility-Funktionen
Das einzige Dienstprogramm, das ich habe, ist, die 5 Beat-Lesedauer zu nehmen und sie zu konvertieren und sie dann zu einem Beats pro Minute zu konvertieren.

Twitter
Hier wird die Twitter-Nachricht verarbeitet und gesendet. Sie werden benachrichtigt, wenn etwas schief geht und die Fehlermeldung vom Twitter im seriellen Monitor gegeben wird. Dies ist ein wichtiges, weil Netzwerke sind immer ein Schmerz. Auch nicht Twitter wird aufgeregt, wenn Sie Duplikate senden. Also, wenn Sie Herz ist das gleiche für zwei Tweets in einer Reihe, und Sie sind oder nicht bewegen. Es wird nicht tweet, wenn sich nicht etwas geändert hat.

Sensoren
In der Funktion Prüfbewegung sehen Sie, dass Vergangenheits- und Gegenwartswerte verglichen werden, um festzustellen, ob eine Änderung vorliegt. Die Veränderung ist eine Bewegung irgend einer Art. Ich habe, wenn Aussagen so eingestellt, um eine Bewegung in allen drei Dimensionen erfasst, und ich habe eine Empfindlichkeit so einstellen, können Sie genau festlegen, wie viel Bewegung macht sich auf die Bewegungsfunktion. Die Anzahl von Malen bewegt wird dann verglichen mit der Gesamtzahl der Bewegung liest und dann wird eine endgültige Entscheidung ist bestanden, ob es war oder nicht Bewegung während der Zeitperiode. Diese Zeiträume sind wie Fenster. Also, wenn ich in der 30-Sekunden-Fenster bewegen, wird der Arduino tweet, dass ich innerhalb von 30 Sekunden bewegt haben. Wenn ich noch bin, wird es sagen, ich bleibe bis zum nächsten Fenster. Es ist auch so gehen zu jucken die Nase oder Dinge gefiltert worden, wie das wird nicht als Gesamtbewegung gezählt werden.

Der Herzfrequenzsensor zählt die Zeit zwischen jedem Herzschlag für 5 Schläge und dann Mittelwerte. Die Zeit zwischen den Beats wird nicht aufgenommen, wenn sie außerhalb des Bereichs eines menschlichen Herzens liegt. Andernfalls würde jede Zuckung oder Berührung des Sensors als ein wilder Schlag pro Minute-Wert registrieren. Es sei denn, Sie Lance Armstrong sind oder ein Kolibri Ihre BPM sollte unter 30bpm erfolgen zwischen 30 und 220. In Studien sein ist äußerst unwahrscheinlich, und über 250bpm bedeutet in der Regel ein Arzt würden Sie mit einem Defibrillator gerne schocken. Diese Strecke kann im Programm leicht geändert werden, wenn Sie gerade geschehen, um Herrn Armstrong zu sein. Oder ein Summenvogel squirrle Mannesache.

Ausgabe
Dies ist, wo Sie verbringen viel Zeit, wenn Fehler gemacht werden. Ich verbrachte ein paar Stunden leer starrte auf dieses Fenster für viele Stunden während dieses Projekts. Ich hoffe, dass Sie auch tun, denn wenn es das erste Mal funktioniert, haben Sie es nicht richtig gemacht.

Der Ausgang nimmt einfach alle aufgezeichneten Informationen auf und gibt sie an die serielle Konsole in der Funktion printStatus aus. Dies ist für jede Fehlersuche oder Anfrage.

Die tweetStatus nimmt die Informationen aus den Sensoren gesammelt und Tweets eine Nachricht in Abhängigkeit von welchem ​​Zustand Sie sind in im Schlaf.

Arduino-Funktionen
Nur die Einrichtung und die Hauptschleife. Ziemlich selbsterklärend.

Hier ist der Code:
#if defined (ARDUINO) && ARDUINO> 18 // Arduino 0019 oder später
#einschließen
#endif
#einschließen
#einschließen
#einschließen
#einschließen
#einschließen

// Beschleunigungsmesser-Zustand
Int x, y, z;
// Messwerte des Beschleunigungsmessers
Boolean movementHistory [5] = {false, false, false, false, false};
// Die Zeit des letzten Herzschlags
Unsigned long lastMovementReadingTime = 0;
// Die Anzahl der Lesevorgänge
Int movementReads = 0;
// Anzahl der Verschiebungen beim Lesen
Int movementCount = 0;

// Status des Herzfrequenzsensors
Int irSensorState = 0;
// Herzfrequenzmessungen
Int pulseTime [5] = {0,0,0,0,0};
// Die Zeit des letzten Herzschlags
Unsigned long currentTime = 0;

// Herzfrequenz-Pins
Int SensorPin = 8;
Int LEDpin = 9;

// benötigt für twitter
Unsigned long lastPrint = 0;
Unsigned long lastTweet = 0;

// Ethernet-Schild-Einstellungen
Byte Mac [] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};

// Ersetzen Sie hier eine Adresse in Ihrem eigenen Netzwerk
Byte ip [] = {192, 168, 0, 250};

// Ihr Token zu Tweet (erhalten Sie es von http://arduino-tweet.appspot.com/)
Twitter twitter ( "Setzen Sie Ihr Token hier.");

// =============================
// Utility-Funktionen
// =============================

/ * Dauert durchschnittlich die Zeit zwischen Herzschlägen * /
Int calcPulseRate ()
{
Int pulseRate;
Pulsfrequenz = Pulszeit [0] + Pulszeit [1] + Pulszeit [2] + Pulszeit [3] + Pulszeit [4]; // dann 60 / durchschnittlich, um BPM zu erhalten
PulseRate = 60000 / (pulseRate / 5);
Return pulseRate;
aufrechtzuerhalten.

// ========================================================================
// Twitter
// ========================================================================

/ * Tweets die eingegebene Nachricht an twitter * /
Void tweet (char * msg)
{
Serial.println ( "verbindet ...");
If (twitter.post (msg)) {
// Geben Sie & Serial an, um die empfangene Antwort auf Serial auszugeben.
// Wenn keine Ausgabe erforderlich ist, können Sie einfach das Argument weglassen, zB
// int status = twitter.wait ();
Int status = twitter.wait (& Serial);
Wenn (status = = 200) {
Serial.println ( "OK");
} Else {
Serial.print ( "failed: code");
Serial.println (status);
aufrechtzuerhalten.
} Else {
Serial.println ( "Verbindung fehlgeschlagen.");
aufrechtzuerhalten.
aufrechtzuerhalten.

// ========================================================================
// Sensoren
// ========================================================================

/ * Prüft, ob eine Änderung der Beschleunigungssensorposition vorliegt * /
Boolesche checkMovement () // -Funktion vergleicht alte Werte mit neuen und erkennt nur, wenn eine bestimmte Bewegungsmenge vorhanden ist
{
Boolean ret = false;
Int Empfindlichkeit = 3;
Int newX, newY, newZ;

/ * Lesen Sie die neuen Werte * /
NewX = analogRead (0); // Analogeingangsbuchse 0 lesen
NewY = analogRead (1); // Analogeingangsbuchse 1 lesen
NewZ = analogRead (2); // Analogeingangsbuchse 2 lesen

/ * Nach Änderungen überprüfen * /
Wenn (x-newX> Empfindlichkeit || x-newX <-sensitivity)
{
Ret = true;
aufrechtzuerhalten.
Sonst if (y-newY> Empfindlichkeit || y-newY <-sensitivity)
{
Ret = true;
aufrechtzuerhalten.
Sonst if (z-newZ> Empfindlichkeit || z-newZ <-sensitivity)
{
Ret = true;
aufrechtzuerhalten.

If (millis () - lastMovementReadingTime> 30000)
{
(Int i = 4, i> 0, i-)
{
BewegungHistorie [i] = BewegungHistorie [i-1]; // Aktualisiert das Array, so dass der erste Wert geändert werden kann
aufrechtzuerhalten.
MovementHistory [0] = falsch;

// Einschaltdauer = 10%
Wenn (10 <= ((movementReads / movementCount) * 100))
{
MovementHistory [0] = wahr;
aufrechtzuerhalten.

MovementReads = 0;
MovementCount = 0;
LastMovementReadingTime = millis ();
aufrechtzuerhalten.

Wenn (ret)
{
MoveCount ++;
aufrechtzuerhalten.
MovementReads ++;

// Neue Werte speichern
X = newX;
Y = newY;
Z = newZ;

/ * Serial.print (newX);
Serial.print ( "");
Serial.print (newY);
Serial.print ( "");
Serial.println (newZ); * /
// return, ob es Bewegung gibt
Return movementHistory [0];
aufrechtzuerhalten.

/ * Liest den IR-Sensor und bekommt die Zeit zwischen den Herzschlägen * /
Int getHeartRate ()
{
// Dient zum Speichern des Status des Fototransistors
Int newState = digitalRead (SensorPin);

// Es gab eine Änderung
If (newState! = IrSensorState)
{
If (newState == 1)
{// beat ist 1 oder 0 dieses, wenn statment nur eingegeben wird, wenn 1 auf 0 oder 0 auf 1 wechselt
(Int i = 4, i> 0, i-)
{
PulseTime [i] = pulseTime [i-1]; // Aktualisiert das Array, so dass der erste Wert geändert werden kann
aufrechtzuerhalten.

aufrechtzuerhalten.
* Dies ist der Filter für das System. Die Herzfrequenz darf nicht über 250 BPM oder unter 30 BPM gehen
* Andere Filtermethoden. Überprüfen Sie, ob der Wert zwischen den Schlägen größer als ein bestimmter Wert ist. Eine große Veränderung funktioniert nicht, gewichtetes Mittel. Verzögerung Zeug.
* /
Wenn (millis () - currentTime> 240 && Millis () - currentTime <2000 / * && isMoving () == false * /)
{
PulseTime [0] = millis () - currentTime; // behält die Zeit zwischen Beats in einem vernünftigen Bereich, um Verwirrung zu vermeiden
aufrechtzuerhalten.
aufrechtzuerhalten.

If (newState == 0)
{
CurrentTime = millis ();
aufrechtzuerhalten.

// Neuen Zustand speichern
IrSensorState = newState;
aufrechtzuerhalten.

// Berechnet die Pulsfrequenz am Ende
Return calcPulseRate ();
aufrechtzuerhalten.

// =========
// Ausgabe
// =========

/ * Druckt alle Informationen auf den seriellen Monitor * /
Void printStatus (boolean isMoving, int pulseRate)
{
Wenn (millis () - lastPrint> = 1000)
{
// Bewegungsstatus drucken
Serial.print ( "Bewegung:");
Wenn (isMoving)
{
Serial.println ( "True");
aufrechtzuerhalten.
sonst
{
Serial.println ( "False");
aufrechtzuerhalten.

// Impulsstatus drucken
Wenn (pulseTime [4] == 0)
{
Serial.println ( "Kalibrieren"); // Wenn keine 5 Messungen durchgeführt wurden, kalibriert das Gerät noch
} sonst
{
Serial.print (pulseTime [0]); // Druckt die Daten
Serial.print ( ",");
Serial.print (pulseTime [1]);
Serial.print ( ",");
Serial.print (pulseTime [2]);
Serial.print ( ",");
Serial.print (Pulszeit [3]);
Serial.print ( ",");
Serial.print (pulseTime [4]);
Serial.print ( ",");
Serial.print ( "BPM:");
Serial.println (pulseRate);
aufrechtzuerhalten.
LastPrint = Millis ();
aufrechtzuerhalten.
aufrechtzuerhalten.

/ * Findet die passende Nachricht nach Bewegungen und Pulsfrequenz und sendet die Nachricht an die Tweet-Funktion * /
Void tweetStatus (boolean isMoving, int pulseRate)
{
Char msg [140];
// Ist die Zeitspanne zwischen Tweets und anderen Filtern, um zu entscheiden, welche Nachricht an twitter gesendet werden soll
If (millis () - lastTweet> = 300000) // 5 Minuten
{
Wenn (pulseRate> 120 && isMoving)
{
Sprintf (msg, "Awake mit einer Pulsrate von:% d", pulseRate);
aufrechtzuerhalten.
Sonst wenn (pulseRate> 120 &&! IsMoving)
{
Sprintf (msg, "Aufregender Traum mit einer Pulsrate von:% d", PulsRate);
aufrechtzuerhalten.
sonst
{
Sprintf (msg, "Sleeping mit einer Pulsrate von:% d", pulseRate);
aufrechtzuerhalten.

Tweet (msg);
// aktualisiert das letzte Mal, seit ein Tweet gemacht wurde
LastTweet = millis ();
aufrechtzuerhalten.
aufrechtzuerhalten.

// =======================================================================
// Arduino-Funktionen
// =======================================================================

/ * Die Arduino-Setup-Funktion * /
Void setup ()
{
Verzögerung (1000);
Ethernet.begin (mac, ip);
Serial.begin (9600);
PinMode (LEDpin, AUSGANG);
PinMode (SensorPin, INPUT);
DigitalWrite (LEDpin, HIGH); // Schaltet die IR-LED ein oder aus
aufrechtzuerhalten.

/ * Die Arduino-Ablaufschleife, die die Sensoren prüft und dann je nach Status der Sensoren einen Tweet sendet * /
Void Schleife ()
{
Boolean isMoving = false;
Int heartRate = 0;

/ * Überprüft den Beschleunigungsmesser auf Änderungen zu sehen, ob sich das Gerät bewegt oder nicht * /
IsMoving = checkMovement ();
/ * Berechnet die durchschnittliche Herzfrequenz in Schlägen pro Minute entsprechend den vom IR-Tranistor ermittelten Unterschieden * /
HeartRate = getHeartRate ();

/ * Sendet eine Meldung an die serielle Konsole * /
PrintStatus (isMoving, heartRate);
/ * Sendet eine Nachricht an twitter je nach Benutzer Herzfrequenz und Bewegung * /
TweetStatus (isMoving, heartRate);
aufrechtzuerhalten.

Schritt 7: Gehäuse und Sockel

Schlaf n 'Tweet

Schlaf n 'Tweet

Für den Fall benutzte ich eine Minze-Box, die ich von einem Baumarkt in der Nähe von Upverters Standort abholte. Ich wünschte, ich hätte etwas gefunden, das ein bisschen hübscher war, aber ich konnte nichts finden. Ich hätte einen Kissenbezug um ihn herum genäht, um ihn weich zu machen, aber ich baue Elektronik und kann nicht nähen. Ich hätte auch nicht in der Lage, Ihnen Jungs zeigen, wenn ich entweder hatte. SoI schneiden Sie einen kleinen Schlitz in der Frontseite unter Verwendung einer Bügelsäge, also könnte ich den Sensor durch sie setzen. Ich dann heiß geklebt ein cat5 weibliche Buchse auf der Seite, so dass die Armbandeinheit könnte mit dem Arduino mit einem Cat5-Ethernet-Kabel angeschlossen werden.

Ich begann mit nur einem Header und verband die beiden mit der blanken Verkabelung aus dem Kabel, aber wenn ich dies getestet wurden die Drähte gebrochen und der Steckverbinder wurde nach dem Schlafen entfernt. Ich erinnere mich an das Aufwachen verheddert in den Kabeln, weil die Kopfzeile wurde nicht verbunden, was mich in Panik und brechen mehr Zeug, bevor schnell, bevor sie wieder schlafen. Also habe ich beschlossen, nur mit dem RJ45-Anschluss, der ist schön und sicher mit viel Kleber. Danach habe ich eine andere Buchse gewechselt, um auf den Arduino zu passen, damit ich die beiden zusammen haken konnte. Dann war ich fertig!

Schritt 8: Schlussgedanken und v2.0 Ideen

Schlaf n 'Tweet

Related Reading