Inhaltsverzeichnis:

Raspberry Pi Smart Scale - Gunook
Raspberry Pi Smart Scale - Gunook

Video: Raspberry Pi Smart Scale - Gunook

Video: Raspberry Pi Smart Scale - Gunook
Video: Raspberry Pi Smart Scale | GIT TECH'D 2024, Juli
Anonim
Image
Image

Sind Sie es leid, jeden Morgen auf diese langweilige, alte Badezimmerwaage mit schlechten Nachrichten zu starren? Diejenige, von der du oft "Ich hasse dich" zu dir sagst, wie jedes Mal, wenn du darauf trittst. Warum hat noch niemand eine Skala entwickelt, die wirklich Spaß macht oder zu deren Verwendung motivierend ist? Es ist an der Zeit, eine Waage zu schaffen, die nicht nur intelligent ist, sondern auch ein bisschen mehr Persönlichkeit hat, um Ihren Tag zu verschönern. Wir werden unsere eigene hackbare Personenwaage mit Gewichtsverfolgung und Textnachrichten bauen, die mit einem eingebauten Sinn für Humor ausgestattet ist.

Dies ist ein unterhaltsames, einfaches Projekt, das ein Wii-Balance-Board, einen Raspberry Pi und eine Online-Datenanalyseplattform kombiniert, um eine mit dem Internet verbundene Waage zu erstellen, die von einem Python-Skript gesteuert wird, das Sie hacken können.

Projektlevel: AnfängerUngefähre Bearbeitungszeit: 20 MinutenSpaßfaktor: Unermesslich

In dieser Schritt-für-Schritt-Anleitung werden Sie:

  • Verbinden Sie ein Wii-Balanceboard über Bluetooth mit einem Raspberry Pi Führen Sie ein Python-Skript aus, das Ihr Gewicht misst, wenn Sie auf das Balanceboard treten
  • Verwenden Sie einen Raspberry Pi, um Ihr Gewicht an einen Cloud-Dienst zu streamen (Initial State)
  • Richten Sie jedes Mal eine SMS-Benachrichtigung ein, wenn Sie sich wiegen
  • Erstellen Sie ein Dashboard zur Gewichtserfassung, auf das Sie in Ihrem Webbrowser zugreifen können

Schritt 1: Ausrüstung

Wii Balance Board Waage
Wii Balance Board Waage

Hier ist eine Liste aller Geräte, die wir in diesem Tutorial verwenden werden, mit Links, wo Sie jeden Artikel kaufen können.

  • Raspberry Pi 3 mit SD-Karte und Netzteil (https://init.st/psuufmj)
  • Wii-Balance-Board (https://init.st/qg4ynjl)
  • Wiederaufladbarer Wii Fit-Akku (https://init.st/iyypz2i)
  • 3/8" Filzgleiter (https://init.st/8gywmjj)
  • Bleistift (Ich gebe Ihnen keinen Link, wo Sie einen Bleistift kaufen können … Sie sollten einen davon besitzen)

Hinweis: Wenn Sie einen Raspberry Pi 1 oder 2 haben, benötigen Sie einen Bluetooth-Adapter (https://init.st/7y3bcoe)

Schritt 2: Wii Balance Board-Skala

Warum ein Wii Balance Board? Es stellt sich heraus, dass es sich um eine wirklich schöne, langlebige Waage mit Bluetooth-Konnektivität handelt. Auf diese Weise können wir es mit einem Einplatinencomputer (Raspberry Pi) verbinden, um Ihr Gewicht in einem Python-Skript zu lesen und diese Messungen an einen Online-Datendienst zu senden, um coole Dinge zu tun. Außerdem besteht eine gute Chance, dass Sie oder jemand, den Sie kennen, bereits einen hat, der einfach nur Staub ansammelt.

Wir müssen ein paar einfache Änderungen an unserem Wii Balance Board vornehmen, um dieses Projekt wirklich praktisch und bequem zu machen.

Schritt 3: Bluetooth-Setup

Der Raspberry Pi 3 wird mit integriertem Bluetooth geliefert, alles was wir brauchen, um mit dem Wii Balance Board zu kommunizieren. Wenn Sie einen Raspberry Pi 1 oder 2 haben, müssen wir einen unserer USB-Anschlüsse verwenden, um einen Adapter anzuschließen.

Schalten Sie Ihren Pi ein (ich gehe davon aus, dass Sie Raspbian bereits installiert haben und es bootet) und gehen Sie zu Ihrem Raspberry Pi-Terminalfenster. Sie können die Adresse Ihres Bluetooth-Dongles mit dem Befehl "hcitool dev" sehen:

$ hcitool devDevices:hci0 00:1A:7D:DA:71:13

Installieren Sie die Bluetooth-Module, die wir in unseren Python-Skripten verwenden werden:

$ sudo apt-get install python-bluetooth

Nach Abschluss der Installation können wir uns mit dem Wii Balance Board verbinden und mit ihm kommunizieren. Wir werden unser Board nicht dauerhaft mit unserem Pi koppeln, wie dies bei den meisten unserer Bluetooth-Geräte der Fall ist. Das Wii Balance Board war nie dazu gedacht, mit etwas anderem als einer Wii gepaart zu werden, und die dauerhafte Kopplung erwies sich als ziemlich verwirrende Herausforderung. Das Pairing erfolgt jedes Mal, wenn wir unser Python-Skript ausführen.

Schritt 4: Ablesen der Skala

Es ist Zeit, unser Wii Balance Board mit unserem Raspberry Pi zu verbinden. Wir werden dies tun, indem wir eine Version des Skripts Gr8W8Upd8M8.py von Stavros Korokithakis (https://github.com/skorokithakis/gr8w8upd8m8) ändern. Das Python-Skript, das wir für diesen Schritt verwenden werden, befindet sich hier. Sie können den Inhalt dieser Datei in eine Datei kopieren, die Sie auf Ihrem Raspberry Pi erstellen, oder Sie können alle Python-Dateien klonen, die wir für dieses gesamte Projekt verwenden. Machen wir letzteres. Geben Sie die folgenden Befehle in ein Terminal auf Ihrem Raspberry Pi ein:

$ cd ~$ git clone $ git clone https:github.com/initialstate/smart-scale.git klonen in 'smart-scale'… remote: Objekte zählen: 14, fertig. remote: Objekte komprimieren: 100% (12/12), fertig. remote: Total 14 (Delta 1), wiederverwendet 8 (Delta 0), pack-wiederverwendet 0 Objekte auspacken: 100% (14/14), fertig. Konnektivität prüfen… fertig.

Klonen in 'smart-scale'… remote: Objekte zählen: 14, fertig. remote: Objekte komprimieren: 100% (12/12), fertig. remote: Total 14 (Delta 1), wiederverwendet 8 (Delta 0), pack-wiederverwendet 0 Objekte auspacken: 100% (14/14), fertig. Konnektivität prüfen… fertig.

Sie sollten zwei Python-Dateien im neuen Smart-Scale-Verzeichnis sehen – smartscale.py und wiiboard_test.py.

$ cd smart-scale$ lsREADME.md smartscale.py wiiboard_test.py

Führen Sie das Skript wiiboard_test.py aus, um die Kommunikation zu testen und Gewichtswerte vom Wii Balance Board zu erfassen:

$ sudo python wiiboard_test.py

Sie sehen die folgende Antwort:

Board entdecken…Drücken Sie jetzt die rote Sync-Taste auf dem Board

Entfernen Sie die Batterieabdeckung unter der Platine, um die rote Synchronisierungstaste zu finden. Stellen Sie sicher, dass Sie die Taste innerhalb weniger Sekunden nach der Ausführung des Skripts drücken, da sonst eine Zeitüberschreitung auftritt. Sobald dies erfolgreich ist, sehen Sie etwas Ähnliches wie folgt:

Wiiboard unter Adresse 00:23:CC:2E:E1:44Verbindungsversuch gefunden…Verbunden mit Wiiboard unter Adresse 00:23:CC:2E:E1:44Wiiboard verbundenACK zum Datenschreiben empfangen84.9185297 lbs84.8826412 lbs84.9275927 lbs

Das Skript wiiboard_test.py nimmt die in Zeile 10 angegebene Anzahl von Gewichtsmessungen und gibt den Durchschnitt aus:

# --------- Benutzereinstellungen ---------WEIGHT_SAMPLES = 500# ------------------------- --------

Sie können mit dieser Zahl spielen, indem Sie den Wert ändern und das Skript erneut ausführen, um die Abweichung des gemessenen Gewichts und die für jede Messung erforderliche Zeit anzuzeigen. Wiegen Sie sich, wiegen Sie Ihren Hund, wiegen Sie was auch immer und sehen Sie, ob die Messungen Sinn machen. Um das Skript zu stoppen, drücken Sie STRG+C.

Sie haben Ihr Wii Balance Board nun erfolgreich in eine mit Raspberry Pi verbundene Waage umgebaut. Jetzt machen wir es zu einer coolen Skala.

Schritt 5: Hardware-Optimierungen

Hardware-Optimierungen
Hardware-Optimierungen

Nintendo ging davon aus, dass Sie Ihr Wii Balance Board immer mit vier AA-Batterien betreiben würden und enthielt kein Netzteil. Es wäre unpraktisch, nur Batteriestrom zu haben, da wir unser Wii-Board nicht dauerhaft über Bluetooth mit unserem Pi koppeln können. Wir müssen es synchronisieren und dann synchron bleiben lassen, ohne die Batterien zu entladen, damit wir einfach auf die Waage treten und wiegen können. Glücklicherweise gibt es mehrere Adapter von Drittanbietern für das Wii Balance Board, die wir verwenden können, um eine konstante Stromversorgung aus einer Steckdose bereitzustellen. Ersetzen Sie die Batterien durch einen Akku und stecken Sie das Netzteil in eine Steckdose.

Die Notwendigkeit, das Wii Balance Board und den Raspberry Pi jedes Mal zu koppeln, wenn wir unser Python-Skript ausführen, stellt aufgrund der Position der Synchronisierungstaste eine weitere Unannehmlichkeit dar. Die Synchronisierungstaste befindet sich unten auf dem Wii-Board, was bedeutet, dass wir sie jedes Mal umdrehen müssten, wenn wir synchronisieren müssen. Wir können dies beheben, indem wir einen kleinen Hebel mit einem Bleistift und drei 3/8-Zoll-Filzpads machen, wie oben gezeigt. Der wiederaufladbare Akku legt den Sync-Knopf auf die Unterseite des Boards frei. Kleben Sie einen Bleistift (oder etwas Ähnliches) auf, der überspannt vom Sync-Knopf zur äußeren Vorderseite des Boards. Stapeln Sie drei 3/8 Filzpads (oder etwas Ähnliches) in der Mitte des Bleistifts, um einen stationären Drehpunkt zu erstellen. Passen Sie auf, dass Sie nicht zu viel von dem Stift aus der Tafel herausnehmen, da Sie nicht möchten, dass jemand ihn versehentlich herauswirft. Drehen Sie das Board um und Sie können die Synchronisierungstaste drücken, indem Sie einfach auf den Hebel drücken. Ein bisschen ein Hack, aber effektiv.

Je nachdem, wie Sie Ihr Wii-Board aufbewahren, möchten Sie vielleicht die Gummi-Griffpads von den Füßen des Boards entfernen (die Pads sind einfach Aufkleber, die Sie abhebeln können). An den Füßen des Boards können 3/8-Zoll-Filzpads zum einfachen Gleiten angebracht werden.

Schritt 6: Ausgangszustand

Ausgangszustand
Ausgangszustand

Wir möchten unser Gewicht / unsere Daten an einen Cloud-Dienst streamen und diesen Dienst unsere Daten in ein schönes Dashboard verwandeln lassen, auf das wir von unserem Laptop oder Mobilgerät aus zugreifen können. Unsere Daten brauchen ein Ziel. Wir werden den Anfangszustand als dieses Ziel verwenden.

Schritt 1: Registrieren Sie sich für das Initial State AccountGehen Sie zu https://iot.app.initialstate.com und erstellen Sie ein neues Konto.

Schritt 2: Installieren Sie den ISStreamerInstallieren Sie das Initial State Python-Modul auf Ihrem Pi: Führen Sie an einer Eingabeaufforderung (vergessen Sie nicht, zuerst eine SSH-Verbindung zu Ihrem Pi herzustellen) den folgenden Befehl aus:

$ cd /home/pi/$ \curl -sSL https://get.initialstate.com/python -o - | sudo bash

Schritt 3: Machen Sie AutomagicNach Schritt 2 sehen Sie etwas Ähnliches wie die folgende Ausgabe auf dem Bildschirm:

pi@raspberrypi ~ $ \curl -sSL https://get.initialstate.com/python -o - | sudo bashPassword: Beginnen Sie mit ISStreamer Python Einfache Installation! Die Installation kann ein paar Minuten dauern, trinken Sie einen Kaffee:) Aber vergessen Sie nicht, wiederzukommen, ich werde später Fragen haben!

Gefunden easy_install: setuptools 1.1.6

Gefunden pip: pip 1.5.6 aus /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg (python 2.7) pip Hauptversion: 1 pip Nebenversion: 5 ISStreamer gefunden, aktualisiert… Anforderung bereits aktuell: ISStreamer in /Library/Python/2.7/site-packages Aufräumen… Wollen Sie automatisch ein Beispielskript bekommen? [j/n]

(Die Ausgabe kann anders sein und länger dauern, wenn Sie das Python-Streaming-Modul Initial State noch nie installiert haben)

Wenn Sie aufgefordert werden, automatisch ein Beispielskript abzurufen, geben Sie y ein. Dadurch wird ein Testskript erstellt, das wir ausführen können, um sicherzustellen, dass wir Daten von unserem Pi in den Initial State streamen können. Sie werden aufgefordert:

Wo möchten Sie das Beispiel speichern? [Standard:./is_example.py]:

Sie können entweder einen benutzerdefinierten lokalen Pfad eingeben oder die Eingabetaste drücken, um den Standard zu akzeptieren. Sie werden aufgefordert, Ihren Benutzernamen und Ihr Passwort einzugeben, die Sie gerade bei der Registrierung Ihres Initial State-Kontos erstellt haben. Geben Sie beides ein und die Installation wird abgeschlossen.

Schritt 4: Zugriffsschlüssel

Schauen wir uns das erstellte Beispielskript an.

$ nano is_example.py

In Zeile 15 sehen Sie eine Zeile, die mit streamer = Streamer(bucket_ …) beginnt. Diese Zeile erstellt einen neuen Daten-Bucket namens „Python Stream Example“und ist mit Ihrem Konto verknüpft. Diese Zuordnung erfolgt aufgrund des access_key=“…“Parameter in derselben Zeile. Diese lange Reihe von Buchstaben und Zahlen ist Ihr Zugangsschlüssel für das Initial State-Konto. Wenn Sie in Ihrem Webbrowser zu Ihrem Initial State-Konto gehen, klicken Sie oben rechts auf Ihren Benutzernamen und dann auf "Meine Einstellungen"., finden Sie denselben Zugriffsschlüssel unten auf der Seite unter „Streaming-Zugriffsschlüssel“.

Jedes Mal, wenn Sie einen Datenstrom erstellen, leitet dieser Zugriffsschlüssel diesen Datenstrom an Ihr Konto weiter (geben Sie Ihren Schlüssel also nicht an Dritte weiter).

Schritt 5: Führen Sie das Beispiel aus

Führen Sie das Testskript aus, um sicherzustellen, dass wir einen Datenstrom zu Ihrem Initial State-Konto erstellen können. Führen Sie Folgendes aus:

$ python is_example.py

Schritt 6: Gewinn

Gehen Sie in Ihrem Webbrowser zu Ihrem Initial State-Konto zurück. Ein neuer Daten-Bucket namens „Python Stream Example“sollte links in Ihrem Log-Regal angezeigt werden (möglicherweise müssen Sie die Seite aktualisieren). Sie können die Daten in Tiles anzeigen, um dieselben Daten im Dashboard-Formular anzuzeigen.

Schritt 7: Endgültiges Skript

Angenommen, Sie haben den Befehl "git clone https://github.com/InitialState/smart-scale.git " in Teil 2 ausgeführt, das letzte Skript, das alles zusammenfügt, heißt smartscale.py in Ihrem ~/smart-scale-Verzeichnis. (https://github.com/InitialState/smart-scale/blob/master/smartscale.py)

Einige Einstellungen müssen im Skript vorgenommen werden, bevor Sie es ausführen können. Öffnen Sie smartscale.py in Ihrem bevorzugten Texteditor wie Nano.

$ cd ~$ cd smart-scale$ nano smartscale.py

Oben in dieser Datei befindet sich der Abschnitt Benutzereinstellungen.

# --------- Benutzereinstellungen ---------BUCKET_NAME = ":apple: My Weight History"BUCKET_KEY = "weight11"ACCESS_KEY = "PLATZIEREN SIE IHREN ANFANGSSTATUS-ZUGRIFFSSCHLÜSSEL HIER"METRIC_UNITS = FalseWEIGHT_SAMPLES = 500THROWAWAY_SAMPLES = 100WEIGHT_HISTORY = 7# ---------------------------------

  • BUCKET_NAME legt den Namen des Daten-Buckets Anfangszustand fest, in den Ihr Gewicht/Ihre Daten gestreamt werden. Dies kann hier eingestellt und später in der Benutzeroberfläche geändert werden.
  • BUCKET_KEY ist die eindeutige Bucket-ID, die angibt, wohin Ihre Daten gestreamt werden. Wenn Sie einen anderen Bucket/ein anderes Dashboard erstellen möchten, verwenden Sie hier eine andere Kennung (*beachten Sie, wenn Sie einen Bucket archivieren, können Sie seinen Schlüssel nicht in einem neuen Bucket wiederverwenden).
  • ACCESS_KEY ist Ihr Kontoschlüssel für den Anfangsstatus. Wenn Sie Ihren ACCESS_KEY nicht in dieses Feld eingeben, werden Ihre Daten nicht in Ihrem Konto angezeigt.
  • Mit METRIC_UNITS können Sie Ihr Gewicht in kg angeben, wenn es auf True gesetzt ist, oder in lb, wenn es auf False gesetzt ist.
  • WEIGHT_SAMPLES gibt an, wie viele Messungen durchgeführt und gemittelt werden, um Ihr tatsächliches Gewicht zu erhalten. 500 Messungen dauern etwa 4-5 Sekunden und liefern ziemlich genaue Ergebnisse.
  • THROWAWAY_SAMPLES gibt die Anzahl der Samples an, die beim ersten Betreten des Boards weggeworfen werden. Dies verhindert, dass die anfänglichen Schritte und Verschiebungen die endgültige Messung verfälschen. Dieser sollte immer viel kleiner als WEIGHT_SAMPLES sein.
  • WEIGHT_HISTORY legt die Anzahl der durchgeführten Messungen fest, bevor ein zusätzliches Update gesendet wird. Nur Messungen, die im Abstand von zwei Stunden oder mehr durchgeführt wurden, zählen für die Historie.

Nachdem Sie jeden Parameter in diesem Abschnitt angegeben und Ihre Änderungen gespeichert haben, können Sie das endgültige Skript ausführen. Bevor wir das Skript ausführen, lassen Sie uns durchgehen, was es tun wird.

  • Zu Beginn des Skripts werden Sie aufgefordert, Ihr Wii Balance Board mit Ihrem Raspberry Pi zu koppeln. Verwenden Sie den Hebel, den Sie in Abschnitt 2: Hardware-Tweaks zusammengehackt haben, um die Synchronisierungstaste zu drücken, wenn Sie dazu aufgefordert werden.
  • Sobald das Skript ausgeführt wird, treten Sie auf das Wii-Board, um mit der Messung Ihres Gewichts zu beginnen. Nach 4-5 Sekunden wird Ihr Gewicht automatisch an Ihr Initial State-Konto gesendet.
  • Nachdem wir SMS-Benachrichtigungen eingerichtet haben (in einigen Schritten), erhalten Sie kurz nach Ihrer Messung eine Textnachricht.

Führen Sie das Skript aus, um die Magie zu starten.

$ sudo python smartscale.py

Schritt 8: Dashboard

Armaturenbrett
Armaturenbrett

Gehen Sie zu Ihrem Initial State-Konto und klicken Sie auf den neuen Daten-Bucket mit dem Namen, der dem Parameter BUCKET_NAME (d. h. My Weight History) entspricht. Klicken Sie auf Kacheln, um Ihr Gewichtsverlauf-Dashboard anzuzeigen. Wenn Sie Ihre Daten zum ersten Mal in Kacheln anzeigen – Update, Weight Date und Weight (lb) sollten Sie drei Kacheln sehen. Sie können Ihr Dashboard anpassen, indem Sie die Größe von Kacheln ändern und verschieben sowie die Ansichtstypen ändern und sogar Kacheln hinzufügen. Dieses Dashboard bietet Ihnen die Möglichkeit, Ihren Gewichtsverlauf auf einen Blick zu sehen. Es ist mobilfreundlich und Sie können es sogar mit anderen Personen teilen.

Sie können Ihrem Dashboard ein Hintergrundbild hinzufügen, um Ihren Daten mehr Persönlichkeit und Kontext zu verleihen.

Schritt 9: SMS

SMS
SMS

Lassen Sie uns eine SMS-Benachrichtigung erstellen, wenn die Waage eine Gewichtsmessung durchführt. Stellen Sie sicher, dass Ihr Gewichtsverlaufsdaten-Bucket geladen ist.

  1. Klicken Sie im Daten-Bucket-Fenster auf die Einstellungen des Buckets (unter seinem Namen).
  2. Klicken Sie auf die Registerkarte Auslöser.
  3. Wählen Sie den Datenstrom aus, auf den getriggert werden soll. Sie können die Dropdown-Liste verwenden, um aus vorhandenen Streams auszuwählen, sobald ein Daten-Bucket geladen wurde, oder Sie können den Stream-Namen/-Schlüssel manuell eingeben. Im obigen Beispiel-Screenshot ist "Update" ausgewählt.
  4. Wählen Sie den Bedingungsoperator aus, in diesem Fall 'match'.
  5. Wählen Sie den Triggerwert aus, der eine Aktion auslöst (geben Sie den gewünschten Wert manuell ein). Geben Sie lb ein, wenn Sie keine metrischen Einheiten verwenden, oder geben Sie kg ein, wenn Sie metrische Einheiten verwenden. Immer wenn der Stream "Update" "lb" (oder "kg") enthält, erhalten Sie eine SMS-Benachrichtigung.
  6. Klicken Sie auf die Schaltfläche „+“, um die Triggerbedingung hinzuzufügen.
  7. Geben Sie Ihre E-Mail-Adresse oder Telefonnummer in das Feld "Kontakte zur Benachrichtigung" ein.
  8. Klicken Sie auf die Schaltfläche "+", um die Kontaktinformationen hinzuzufügen.
  9. Geben Sie einen beliebigen Bestätigungscode ein, wenn Sie eine neue Telefonnummer hinzufügen, um die Einrichtung abzuschließen.
  10. Klicken Sie unten auf die Schaltfläche Fertig, um zum Hauptbildschirm zurückzukehren. Ihr Trigger ist jetzt aktiv und wird ausgelöst, wenn die Bedingung erfüllt ist.

Sobald die Einrichtung abgeschlossen ist, erhalten Sie jedes Mal, wenn Sie sich wiegen, eine SMS, die Ihr Gewicht, die Veränderung Ihres Gewichts seit der letzten Messung und einen zufälligen Witz / eine Beleidigung / ein Kompliment enthält.

Schritt 10: Fazit

Sie haben unbegrenzte Möglichkeiten, auf dem aufzubauen, was Sie jetzt erstellt haben. Hier sind einige Ideen für dieses Projekt:

  • Sie können Daten aus anderen Quellen in das gleiche Gewichtsverlaufs-Dashboard (Info) streamen, um Ihr eigenes persönliches Gesundheits-Dashboard zu erstellen.
  • Sie können die Witze in den Funktionen messageWeighFirst, messageWeighLess, messageWeighMore und messageWeighSame an Ihren eigenen Humor anpassen.
  • Sie können die Witze in praktische Nachrichten umwandeln oder entfernen und den Waagencode verwenden, um das Gewicht von etwas Wichtigeres als Ihrem eigenen Körpergewicht zu verfolgen.
  • Mit dem gleichen Ansatz können Sie Ihren eigenen intelligenten Bier-/Weinkühlschrank erstellen. Dafür gibt es hier schon ein tolles Tutorial.

Hacken Sie los und lassen Sie es mich wissen, wenn dieses Tutorial Sie dazu inspiriert, etwas Erstaunliches zu schaffen.

Empfohlen: