Table des matières:

Balance intelligente Raspberry Pi : 10 étapes (avec photos)
Balance intelligente Raspberry Pi : 10 étapes (avec photos)

Vidéo: Balance intelligente Raspberry Pi : 10 étapes (avec photos)

Vidéo: Balance intelligente Raspberry Pi : 10 étapes (avec photos)
Vidéo: JetHome JetHub H1 контроллер умного дома, установка Supervised Home Assistant, настройка zigbee2mqtt 2024, Juillet
Anonim
Image
Image

Êtes-vous fatigué de regarder ce pèse-personne ennuyeux, vieux et mauvais tous les matins ? Celui que tu dis souvent "je te déteste" comme à chaque fois que tu marches dessus. Pourquoi personne n'a créé une échelle réellement amusante ou motivante à utiliser ? Il est temps de créer une balance qui n'est pas seulement intelligente, mais qui a un peu plus de personnalité pour égayer votre journée. Nous allons créer notre propre pèse-personne piratable, avec suivi du poids et messagerie texte, doté d'un sens de l'humour intégré.

Il s'agit d'un projet amusant et facile qui combine une balance Wii, un Raspberry Pi et une plate-forme d'analyse de données en ligne pour créer une balance connectée au Web contrôlée par un script Python que vous pouvez pirater.

Niveau du projet: DébutantTemps approximatif pour terminer: 20 minutesFacteur amusant: Incommensurable

Dans ce didacticiel pas à pas, vous allez:

  • connectez une planche d'équilibre Wii à un Raspberry Pi via Bluetooth exécutez un script Python qui mesure votre poids lorsque vous montez sur la planche d'équilibre
  • utiliser un Raspberry Pi pour diffuser votre poids vers un service cloud (état initial)
  • configurer une notification SMS à chaque fois que vous vous pesez
  • créer un tableau de bord de suivi du poids auquel vous pouvez accéder dans votre navigateur Web

Étape 1: Équipement

Balance Wii Balance Board
Balance Wii Balance Board

Voici une liste de tous les équipements que nous utiliserons dans ce tutoriel avec des liens vers où vous pouvez acheter chaque article.

  • Raspberry Pi 3 avec une carte SD et une alimentation (https://init.st/psuufmj)
  • Balance Board Wii (https://init.st/qg4ynjl)
  • Batterie rechargeable Wii Fit (https://init.st/iyypz2i)
  • Coussinets en feutre 3/8" (https://init.st/8gywmjj)
  • Crayon (je ne vous donne pas de lien vers où acheter un crayon… vous devriez en posséder un)

Remarque: si vous possédez un Raspberry Pi 1 ou 2, vous aurez besoin d'un adaptateur Bluetooth (https://init.st/7y3bcoe)

Étape 2: Balance Wii Balance Board

Pourquoi une Wii Balance Board ? Il s'avère que c'est une très belle balance durable dotée d'une connectivité Bluetooth. Cela nous permettra de le connecter à un ordinateur monocarte (Raspberry Pi) pour lire votre poids dans un script Python et envoyer ces mesures à un service de données en ligne pour faire des trucs sympas. De plus, il y a de fortes chances que vous ou quelqu'un que vous connaissez en ayez déjà un qui collecte simplement la poussière.

Nous devrons apporter quelques modifications simples à notre Wii Balance Board pour vraiment rendre ce projet pratique et pratique.

Étape 3: configuration Bluetooth

Le Raspberry Pi 3 est livré avec Bluetooth intégré, tout ce dont nous avons besoin pour communiquer avec la Wii Balance Board. Si vous avez un Raspberry Pi 1 ou 2, nous devrons utiliser un de nos ports USB pour brancher un adaptateur.

Allumez votre Pi (je suppose que vous avez déjà installé Raspbian et qu'il démarre) et accédez à la fenêtre de votre terminal Raspberry Pi. Vous pouvez voir l'adresse de votre dongle bluetooth avec la commande "hcitool dev":

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

Installez les modules bluetooth que nous utiliserons dans nos scripts Python:

$ sudo apt-get install python-bluetooth

Une fois l'installation terminée, nous sommes prêts à nous connecter et à communiquer avec la Wii Balance Board. Nous n'associerons pas en permanence notre carte à notre Pi comme nous le faisons avec la plupart de nos appareils Bluetooth. La Wii Balance Board n'a jamais été conçue pour être associée à autre chose qu'une Wii, et l'association permanente s'est avérée être un défi assez déroutant. L'appariement se produira chaque fois que nous exécuterons notre script Python.

Étape 4: Lecture de l'échelle

Il est temps de connecter notre Wii Balance Board à notre Raspberry Pi. Nous le ferons en modifiant une version du script Gr8W8Upd8M8.py de Stavros Korokithakis (https://github.com/skorokithakis/gr8w8upd8m8). Le script python que nous utiliserons pour cette étape se trouve ici. Vous pouvez copier le contenu de ce fichier dans un fichier que vous créez sur votre Raspberry Pi ou vous pouvez cloner tous les fichiers python que nous utiliserons pour l'ensemble de ce projet. Faisons ce dernier. Tapez les commandes suivantes dans un terminal sur votre Raspberry Pi:

$ cd ~$ git clone $ git clone https:github.com/initialstate/smart-scale.git clonage dans 'smart-scale'… remote: Comptage des objets: 14, terminé. remote: Compression d'objets: 100 % (12/12), terminé. remote: Total 14 (delta 1), réutilisé 8 (delta 0), pack-used 0 Déballage des objets: 100% (14/14), terminé. Vérification de la connectivité… terminé.

clonage dans 'smart-scale'… remote: Comptage d'objets: 14, terminé. remote: Compression d'objets: 100 % (12/12), terminé. remote: Total 14 (delta 1), réutilisé 8 (delta 0), pack-used 0 Déballage des objets: 100% (14/14), terminé. Vérification de la connectivité… terminé.

Vous devriez voir deux fichiers python dans le nouveau répertoire smart-scale - smartscale.py et wiiboard_test.py.

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

Exécutez le script wiiboard_test.py pour tester la communication et prendre des mesures de poids à partir de la Wii Balance Board:

$ sudo python wiiboard_test.py

Vous verrez la réponse suivante:

Découvrir le tableau…Appuyez maintenant sur le bouton de synchronisation rouge du tableau

Retirez le couvercle de la batterie sous la carte pour localiser le bouton de synchronisation rouge. Assurez-vous d'appuyer sur le bouton quelques secondes après l'exécution du script, sinon un délai d'attente se produira. Une fois réussi, vous verrez quelque chose de similaire à ce qui suit:

Wiiboard trouvé à l'adresse 00:23:CC:2E:E1:44Essayer de se connecter… Connecté au Wiiboard à l'adresse 00:23:CC:2E:E1:44Wiiboard connectéACK à l'écriture de données reçue84.9185297 lbs84.8826412 lbs84.9275927 lbs

Le script wiiboard_test.py prend le nombre de mesures de poids spécifié à la ligne 10 et affiche la moyenne:

# --------- Paramètres utilisateur ---------WEIGHT_SAMPLES = 500# ------------------------- --------

Vous pouvez jouer avec ce nombre en changeant la valeur et en réexécutant le script pour voir la variation du poids mesuré et le temps requis pour chaque mesure. Pesez-vous, pesez votre chien, pesez n'importe quoi et voyez si les mesures ont du sens. Pour arrêter le script, appuyez sur CTRL+C.

Vous avez maintenant converti avec succès votre Wii Balance Board en une balance connectée Raspberry Pi. Maintenant, faisons-en une échelle cool.

Étape 5: Ajustements matériels

Ajustements matériels
Ajustements matériels

Nintendo a supposé que vous alimenteriez toujours votre Wii Balance Board avec quatre piles AA et n'incluait pas d'adaptateur secteur. N'avoir que la batterie serait gênant car nous ne pouvons pas coupler de manière permanente notre Wii Board à notre Pi via Bluetooth. Nous devons le synchroniser, puis lui permettre de rester synchronisé sans vider les batteries afin que nous puissions simplement monter sur la balance et peser. Heureusement, il existe plusieurs adaptateurs tiers conçus pour la Wii Balance Board que nous pouvons utiliser pour fournir une alimentation constante à partir d'une prise murale. Remplacez les piles par une batterie et branchez l'adaptateur secteur dans une prise murale.

Devoir coupler la Wii Balance Board et le Raspberry Pi à chaque fois que nous exécutons notre script Python présente un autre inconvénient en raison de l'emplacement du bouton de synchronisation. Le bouton de synchronisation se trouve en bas de la Wii Board, ce qui signifie que nous devrions le retourner à chaque fois que nous devons synchroniser. Nous pouvons résoudre ce problème en fabriquant un petit levier à l'aide d'un crayon et de trois tampons en feutre de 3/8" comme indiqué ci-dessus. La batterie rechargeable expose le bouton de synchronisation à la surface inférieure de la carte. Collez un crayon (ou quelque chose de similaire) qui s'étend sur du bouton de synchronisation à l'extérieur de la planche. Empilez trois coussinets en feutre de 3/8" (ou quelque chose de similaire) au centre du crayon pour créer un pivot stationnaire. Veillez à ne pas trop exposer le crayon du tableau, car vous ne voulez pas que quelqu'un le jette accidentellement. Retournez la planche et vous pouvez appuyer sur le bouton de synchronisation en appuyant simplement sur le levier. Un peu bidon mais efficace.

Selon la façon dont vous rangez votre Wii Board, vous voudrez peut-être retirer les patins en caoutchouc des pieds de la planche (les patins sont simplement des autocollants que vous pouvez retirer). Des patins en feutre de 3/8 peuvent être placés sur les pieds de la planche pour un glissement facile.

Étape 6: État initial

Etat initial
Etat initial

Nous voulons diffuser notre poids/données vers un service cloud et faire en sorte que ce service transforme nos données en un joli tableau de bord auquel nous pouvons accéder depuis notre ordinateur portable ou appareil mobile. Nos données ont besoin d'une destination. Nous utiliserons l'état initial comme destination.

Étape 1: Inscrivez-vous au compte d'état initial Accédez à https://iot.app.initialstate.com et créez un nouveau compte.

Étape 2: installez ISStreamerInstallez le module Python Initial State sur votre Pi: À une invite de commande (n'oubliez pas d'abord de SSH dans votre Pi), exécutez la commande suivante:

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

Étape 3: créez de l'Automagic Après l'étape 2, vous verrez quelque chose de similaire à la sortie suivante à l'écran:

pi@raspberrypi ~ $ \curl -sSL https://get.initialstate.com/python -o - | sudo bashPassword: Début de l'installation facile d'ISStreamer Python ! Cela peut prendre quelques minutes à installer, prenez un café:) Mais n'oubliez pas de revenir, j'aurai des questions plus tard !

Trouvé easy_install: setuptools 1.1.6

Pip trouvé: pip 1.5.6 de /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg (python 2.7) version majeure de pip: 1 pip version mineure: 5 ISStreamer trouvés, mise à jour… Exigence déjà à jour: ISStreamer dans /Library/Python/2.7/site-packages Nettoyage… Voulez-vous obtenir automatiquement un exemple de script ? [o/N]

(la sortie peut être différente et prendre plus de temps si vous n'avez jamais installé le module de streaming Python Initial State auparavant)

Lorsque vous êtes invité à obtenir automatiquement un exemple de script, tapez y. Cela créera un script de test que nous pouvons exécuter pour nous assurer que nous pouvons diffuser des données vers l'état initial à partir de notre Pi. Vous serez invité:

Où voulez-vous enregistrer l'exemple ? [par défaut:./is_example.py]:

Vous pouvez soit taper un chemin local personnalisé, soit appuyer sur Entrée pour accepter la valeur par défaut. Vous serez invité à saisir votre nom d'utilisateur et votre mot de passe que vous venez de créer lors de l'enregistrement de votre compte Initial State. Entrez les deux et l'installation se terminera.

Étape 4: Clés d'accès

Jetons un coup d'œil à l'exemple de script qui a été créé.

$ nano is_example.py

Sur la ligne 15, vous verrez une ligne qui commence par streamer = Streamer(bucket_ …. Cette ligne crée un nouveau seau de données nommé « Python Stream Example » et est associé à votre compte. Cette association se produit à cause de access_key = « … » sur cette même ligne. Cette longue série de lettres et de chiffres est la clé d'accès de votre compte Initial State. Si vous accédez à votre compte Initial State dans votre navigateur Web, cliquez sur votre nom d'utilisateur en haut à droite, puis accédez à « Mes paramètres », vous trouverez cette même clé d'accès en bas de la page sous « Clés d'accès en streaming ».

Chaque fois que vous créez un flux de données, cette clé d'accès dirigera ce flux de données vers votre compte (donc ne partagez votre clé avec personne).

Étape 5: Exécuter l'exemple

Exécutez le script de test pour vous assurer que nous pouvons créer un flux de données sur votre compte Initial State. Exécutez ce qui suit:

$ python is_example.py

Étape 6: Profiter

Revenez à votre compte Initial State dans votre navigateur Web. Un nouveau compartiment de données appelé "Python Stream Example" aurait dû s'afficher à gauche dans votre étagère de journaux (vous devrez peut-être actualiser la page). Vous pouvez afficher les données dans Tiles pour voir ces mêmes données sous forme de tableau de bord.

Étape 7: Script final

En supposant que vous ayez exécuté la commande "git clone https://github.com/InitialState/smart-scale.git " dans la partie 2, le script final qui rassemble tout s'appelle smartscale.py dans votre répertoire ~/smart-scale. (https://github.com/InitialState/smart-scale/blob/master/smartscale.py)

Quelques paramètres doivent être définis dans le script avant de pouvoir l'exécuter. Ouvrez smartscale.py dans votre éditeur de texte préféré tel que nano.

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

Près du haut de ce fichier, il y a une section Paramètres utilisateur.

# --------- Paramètres utilisateur ---------BUCKET_NAME = ":apple: Mon historique de poids"BUCKET_KEY = "weight11"ACCESS_KEY = "PLACEZ VOTRE CLÉ D'ACCÈS À L'ÉTAT INITIAL ICI"METRIC_UNITS = FalseWEIGHT_SAMPLES = 500THROWAWAY_SAMPLES = 100WEIGHT_HISTORY = 7# ---------------------------------

  • BUCKET_NAME définit le nom du seau de données d'état initial dans lequel votre poids/données seront diffusés. Cela peut être défini ici et modifié ultérieurement dans l'interface utilisateur.
  • BUCKET_KEY est l'identifiant de compartiment unique qui spécifie où vos données seront diffusées. Si vous souhaitez créer un compartiment/un tableau de bord différent, utilisez un identifiant différent ici (*remarque, si vous archivez un compartiment, vous ne pouvez pas réutiliser sa clé dans un nouveau compartiment).
  • ACCESS_KEY est votre clé de compte Initial State. Si vous ne mettez pas votre ACCESS_KEY dans ce champ, vos données n'apparaîtront pas dans votre compte.
  • METRIC_UNITS vous permet de spécifier votre poids en kg s'il est défini sur True ou en lb s'il est défini sur False.
  • WEIGHT_SAMPLES spécifie le nombre de mesures prises et moyennées ensemble pour obtenir votre poids réel. 500 mesures prennent environ 4 à 5 secondes et fournissent des résultats assez précis.
  • THROWAWAY_SAMPLES spécifie le nombre d'échantillons qui sont jetés lorsque vous montez pour la première fois sur le tableau. Cela empêche les étapes initiales et le décalage de secouer la mesure finale. Cela doit toujours être bien inférieur à WEIGHT_SAMPLES.
  • WEIGHT_HISTORY définit le nombre de mesures prises avant l'envoi d'une mise à jour supplémentaire. Seules les mesures prises à deux heures ou plus d'intervalle comptent pour l'historique.

Une fois que vous avez spécifié chaque paramètre dans cette section et enregistré vos modifications, vous êtes prêt à exécuter le script final. Avant d'exécuter le script, voyons ce qu'il va faire.

  • Au début du script, il vous sera demandé de coupler votre Wii Balance Board avec votre Raspberry Pi. Utilisez le levier que vous avez piraté dans la section Partie 2: Ajustements matériels pour appuyer sur le bouton de synchronisation lorsque vous y êtes invité.
  • Une fois le script en cours d'exécution, montez sur la Wii Board pour commencer à mesurer votre poids. Après 4 à 5 secondes, votre poids sera automatiquement envoyé sur votre compte Initial State.
  • Après avoir configuré les notifications SMS (en quelques étapes), vous recevrez un SMS peu de temps après votre mesure.

Exécutez le script pour lancer la magie.

$ sudo python smartscale.py

Étape 8: Tableau de bord

Tableau de bord
Tableau de bord

Accédez à votre compte État initial et cliquez sur le nouveau compartiment de données portant le nom correspondant au paramètre BUCKET_NAME (c'est-à-dire Mon historique de poids). Cliquez sur Mosaïques pour afficher le tableau de bord de votre historique de poids. Vous devriez voir trois vignettes la première fois que vous affichez vos données dans Vignettes: mise à jour, date de poids et poids (lb). Vous pouvez personnaliser votre tableau de bord en redimensionnant et en déplaçant les vignettes, ainsi qu'en modifiant les types de vue et même en ajoutant des vignettes. Ce tableau de bord vous donne la possibilité de voir votre historique de poids en un coup d'œil. Il est compatible avec les appareils mobiles et vous pouvez même le partager avec d'autres personnes.

Vous pouvez ajouter une image d'arrière-plan à votre tableau de bord pour donner plus de personnalité et de contexte à vos données.

Étape 9: SMS

SMS
SMS

Créons une alerte SMS chaque fois que la balance prend une mesure de poids. Assurez-vous que votre seau de données d'historique de poids est chargé.

  1. Cliquez sur les paramètres du compartiment (sous son nom) dans la fenêtre du compartiment de données.
  2. Cliquez sur l'onglet Déclencheurs.
  3. Sélectionnez le flux de données sur lequel déclencher. Vous pouvez utiliser la liste déroulante pour sélectionner parmi les flux existants une fois qu'un compartiment de données a été chargé ou vous pouvez saisir manuellement le nom/la clé du flux. Dans l'exemple de capture d'écran ci-dessus, "Mettre à jour" est sélectionné.
  4. Sélectionnez l'opérateur conditionnel, dans ce cas 'match'.
  5. Sélectionnez la valeur de déclenchement qui déclenchera une action (tapez manuellement la valeur souhaitée). Tapez lb si vous n'utilisez pas d'unités métriques ou tapez kg si vous utilisez des unités métriques. Chaque fois que le flux "Update" contient "lb" (ou "kg"), vous recevrez une notification par SMS.
  6. Cliquez sur le bouton '+' pour ajouter la condition de déclenchement.
  7. Saisissez votre adresse e-mail ou votre numéro de téléphone dans le champ « Contacts à notifier ».
  8. Cliquez sur le bouton '+' pour ajouter les informations de contact.
  9. Saisissez un code de vérification si vous ajoutez un nouveau numéro de téléphone pour terminer la configuration.
  10. Cliquez sur le bouton Terminé en bas pour revenir à l'écran principal. Votre déclencheur est maintenant actif et se déclenchera lorsque la condition sera remplie.

Une fois la configuration terminée, vous recevrez un SMS à chaque fois que vous vous pesez qui contient votre poids, combien votre poids a changé depuis la dernière mesure, et une blague / insulte / compliment aléatoire.

Étape 10: Conclusion

Il existe des options illimitées pour vous permettre de construire sur ce que vous avez maintenant créé. Voici quelques idées pour ce projet:

  • Vous pouvez diffuser des données provenant d'autres sources dans le même tableau de bord d'historique de poids (informations) pour créer votre propre tableau de bord de santé personnel.
  • Vous pouvez modifier les blagues dans les fonctions messageWeighFirst, messageWeighLess, messageWeighMore et messageWeighSame selon votre propre sens de l'humour.
  • Vous pouvez transformer les blagues en messages pratiques ou les supprimer et utiliser le code de la balance pour suivre le poids de quelque chose de plus important que votre propre poids corporel.
  • Vous pouvez créer votre propre réfrigérateur à bière/vin intelligent en utilisant la même approche. Il y a déjà un tutoriel génial fait pour ça ici.

Piratez et faites-moi savoir si ce tutoriel vous inspire pour créer quelque chose d'incroyable.

Conseillé: