Sommario:

Bilancia intelligente Raspberry Pi: 10 passaggi (con immagini)
Bilancia intelligente Raspberry Pi: 10 passaggi (con immagini)

Video: Bilancia intelligente Raspberry Pi: 10 passaggi (con immagini)

Video: Bilancia intelligente Raspberry Pi: 10 passaggi (con immagini)
Video: Elisa Esposito ha tradito gentisosa con Gilbert Nana 2024, Novembre
Anonim
Image
Image

Sei stanco di fissare ogni mattina quella noiosa, vecchia e cattiva bilancia pesapersone? Quello che spesso ti dici "ti odio" come ogni volta che lo calpesti. Perché nessuno ha creato una bilancia che sia effettivamente divertente o motivante da usare? È tempo di creare una bilancia che non sia solo intelligente, ma che abbia un po' più di personalità per illuminare la tua giornata. Costruiremo la nostra bilancia da bagno hackerabile, con monitoraggio del peso e messaggi di testo, dotata di un senso dell'umorismo integrato.

Questo è un progetto divertente e facile che combina una bilancia Wii, un Raspberry Pi e una piattaforma di analisi dei dati online per creare una bilancia connessa al web controllata da uno script Python che puoi hackerare.

Livello del progetto: Principiante Tempo approssimativo per il completamento: 20 minuti Fattore divertimento: Incommensurabile

In questo tutorial passo passo, dovrai:

  • collega una bilancia Wii a un Raspberry Pi tramite bluetooth esegui uno script Python che misura il tuo peso quando sali sulla bilancia
  • usa un Raspberry Pi per trasmettere il tuo peso a un servizio cloud (stato iniziale)
  • imposta una notifica SMS ogni volta che ti pesi
  • crea una dashboard per il monitoraggio del peso a cui puoi accedere nel tuo browser web

Passaggio 1: attrezzatura

Bilancia Wii Balance Board
Bilancia Wii Balance Board

Ecco un elenco di tutte le attrezzature che utilizzeremo in questo tutorial con i collegamenti a dove è possibile acquistare ciascun articolo.

  • Raspberry Pi 3 con scheda SD e alimentatore (https://init.st/psuufmj)
  • Wii Balance Board (https://init.st/qg4ynjl)
  • Batteria ricaricabile Wii Fit (https://init.st/iyypz2i)
  • Feltrini da 3/8" (https://init.st/8gywmjj)
  • Matita (non ti do un link dove comprare una matita… dovresti possederne una)

Nota: se hai un Raspberry Pi 1 o 2, avrai bisogno di un adattatore bluetooth (https://init.st/7y3bcoe)

Passaggio 2: bilancia Wii Balance Board

Perché una Wii Balance Board? Si scopre che è una bilancia davvero bella e resistente con connettività bluetooth. Questo ci consentirà di collegarlo a un computer a scheda singola (Raspberry Pi) per leggere il tuo peso in uno script Python e inviare tali misurazioni a un servizio dati online per fare cose interessanti. Inoltre, ci sono buone probabilità che tu o qualcuno che conosci ne abbia già uno che sta semplicemente raccogliendo polvere.

Avremo bisogno di fare un paio di semplici modifiche alla nostra Wii Balance Board per rendere questo progetto davvero pratico e conveniente.

Passaggio 3: configurazione Bluetooth

Il Raspberry Pi 3 è dotato di bluetooth integrato, tutto ciò di cui abbiamo bisogno per comunicare con la Wii Balance Board. Se hai un Raspberry Pi 1 o 2, dovremo usare una delle nostre porte USB per collegare un adattatore.

Accendi il tuo Pi (presumo che tu abbia già installato Raspbian e si avvia) e vai alla finestra del terminale Raspberry Pi. Puoi vedere l'indirizzo del tuo dongle bluetooth con il comando "hcitool dev":

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

Installa i moduli bluetooth che utilizzeremo nei nostri script Python:

$ sudo apt-get install python-bluetooth

Al termine dell'installazione, siamo pronti per connetterci e comunicare con la Wii Balance Board. Non abbineremo permanentemente la nostra scheda al nostro Pi come facciamo con la maggior parte dei nostri dispositivi bluetooth. La Wii Balance Board non è mai stata pensata per essere abbinata a qualcosa di diverso da una Wii, e l'associazione permanente si è rivelata una sfida piuttosto confusa. L'accoppiamento avverrà ogni volta che eseguiamo il nostro script Python.

Passaggio 4: leggere la scala

È ora di collegare la nostra Wii Balance Board al nostro Raspberry Pi. Lo faremo modificando una versione dello script Gr8W8Upd8M8.py di Stavros Korokithakis (https://github.com/skorokithakis/gr8w8upd8m8). Lo script Python che utilizzeremo per questo passaggio si trova qui. Puoi copiare il contenuto di questo file in un file che crei sul tuo Raspberry Pi oppure puoi clonare tutti i file Python che utilizzeremo per l'intero progetto. Facciamo quest'ultimo. Digita i seguenti comandi in un terminale sul tuo Raspberry Pi:

$ cd ~$ git clone $ git clone https:github.com/initialstate/smart-scale.git cloning into 'smart-scale'… remote: Conteggio oggetti: 14, fatto. remoto: Compressione di oggetti: 100% (12/12), fatto. remoto: Totale 14 (delta 1), riutilizzato 8 (delta 0), confezione riutilizzata 0 Disimballaggio degli oggetti: 100% (14/14), fatto. Controllo della connettività… fatto.

clonazione in 'smart-scale'… remoto: Conteggio oggetti: 14, fatto. remoto: Compressione di oggetti: 100% (12/12), fatto. remoto: Totale 14 (delta 1), riutilizzato 8 (delta 0), confezione riutilizzata 0 Disimballaggio degli oggetti: 100% (14/14), fatto. Controllo della connettività… fatto.

Dovresti vedere due file python nella nuova directory smart-scale: smartscale.py e wiiboard_test.py.

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

Esegui lo script wiiboard_test.py per testare la comunicazione e prendere le letture del peso dalla Wii Balance Board:

$ sudo python wiiboard_test.py

Vedrai la seguente risposta:

Alla scoperta della scheda…Premi il pulsante rosso di sincronizzazione sulla scheda ora

Rimuovere il coperchio della batteria sotto la scheda per individuare il pulsante di sincronizzazione rosso. Assicurati di premere il pulsante entro pochi secondi dall'esecuzione dello script o si verificherà un timeout. Una volta riuscito, vedrai qualcosa di simile a quanto segue:

Trovato Wiiboard all'indirizzo 00:23:CC:2E:E1:44Prova a connettersi…Connesso a Wiiboard all'indirizzo 00:23:CC:2E:E1:44Wiiboard connessoACK alla scrittura dati ricevuta84.9185297 lbs84.8826412 lbs84.9275927 lbs

Lo script wiiboard_test.py sta prendendo il numero di misurazioni del peso specificato nella riga 10 e sta emettendo la media:

# --------- Impostazioni utente ---------WEIGHT_SAMPLES = 500# ----------- --------

Puoi giocare con questo numero modificando il valore e rieseguendo lo script per vedere la variazione del peso misurato e il tempo richiesto per ogni misurazione. Pesati, pesa il tuo cane, pesa qualunque cosa e vedi se le misurazioni hanno senso. Per interrompere lo script, premere CTRL+C.

Ora hai convertito con successo la tua Wii Balance Board in una bilancia connessa Raspberry Pi. Ora, rendiamolo una bella scala.

Passaggio 5: modifiche hardware

Modifiche hardware
Modifiche hardware

Nintendo presumeva che avresti sempre alimentato la tua Wii Balance Board con quattro batterie AA e non includeva alcun adattatore di alimentazione CA. Avere solo la batteria sarebbe scomodo perché non possiamo accoppiare in modo permanente la nostra Wii Board al nostro Pi tramite bluetooth. Dobbiamo sincronizzarlo, quindi consentirgli di rimanere sincronizzato senza scaricare le batterie in modo da poter semplicemente salire sulla bilancia e pesare. Fortunatamente, ci sono diversi adattatori di terze parti realizzati per la Wii Balance Board che possiamo usare per fornire alimentazione costante da una presa a muro. Sostituire le batterie con una batteria e collegare l'adattatore CA a una presa a muro.

Dover accoppiare Wii Balance Board e Raspberry Pi ogni volta che eseguiamo il nostro script Python presenta un altro inconveniente dovuto alla posizione del pulsante di sincronizzazione. Il pulsante di sincronizzazione si trova nella parte inferiore della Wii Board, il che significa che dovremmo capovolgerlo ogni volta che dobbiamo sincronizzare. Possiamo risolvere questo problema facendo una piccola leva usando una matita e tre feltrini da 3/8 "come mostrato sopra. Il pacco batteria ricaricabile espone il pulsante di sincronizzazione alla superficie inferiore della lavagna. Nastro una matita (o qualcosa di simile) che si estende dal pulsante di sincronizzazione alla parte anteriore esterna della lavagna. Impila tre feltrini da 3/8 "(o qualcosa di simile) al centro della matita per creare un perno fisso. Fai attenzione a non esporre troppa matita dalla lavagna poiché non vuoi che qualcuno la butti fuori accidentalmente. Capovolgi la scheda e puoi premere il pulsante di sincronizzazione semplicemente premendo la leva. Un po' un trucco ma efficace.

A seconda di come riponi la tua Wii Board, potresti voler rimuovere i cuscinetti in gomma dai piedini della scheda (i pad sono semplicemente adesivi che puoi staccare). I feltrini da 3/8 possono essere posizionati sui piedi della tavola per un facile scorrimento.

Passaggio 6: stato iniziale

Stato iniziale
Stato iniziale

Vogliamo trasmettere il nostro peso/dati a un servizio cloud e fare in modo che quel servizio trasformi i nostri dati in una bella dashboard a cui possiamo accedere dal nostro laptop o dispositivo mobile. I nostri dati hanno bisogno di una destinazione. Useremo lo stato iniziale come destinazione.

Passaggio 1: registrarsi per l'account di stato inizialeVai a https://iot.app.initialstate.com e crea un nuovo account.

Passaggio 2: installa ISStreamerInstalla il modulo Python stato iniziale sul tuo Pi: al prompt dei comandi (non dimenticare di eseguire prima SSH nel tuo Pi), esegui il seguente comando:

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

Passaggio 3: fai un po' di AutomagicDopo il passaggio 2 vedrai qualcosa di simile al seguente output sullo schermo:

pi@raspberrypi ~ $ \curl -sSL https://get.initialstate.com/python -o - | sudo bashPassword: inizio dell'installazione facile di ISStreamer Python! L'installazione potrebbe richiedere un paio di minuti, prendi un caffè:) Ma non dimenticare di tornare, avrò domande più tardi!

Trovato easy_install: setuptools 1.1.6

Trovato pip: pip 1.5.6 da /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg (python 2.7) pip major version: 1 pip minor version: 5 ISStreamer trovato, aggiornamento… Requisito già aggiornato: ISStreamer in /Library/Python/2.7/site-packages Pulizia… Vuoi ottenere automaticamente uno script di esempio? [sì/n]

(l'output potrebbe essere diverso e richiedere più tempo se non hai mai installato il modulo di streaming Initial State Python prima)

Quando viene richiesto di ottenere automaticamente uno script di esempio, digitare y. Questo creerà uno script di test che possiamo eseguire per assicurarci di poter trasmettere i dati allo stato iniziale dal nostro Pi. Ti verrà chiesto:

Dove vuoi salvare l'esempio? [predefinito:./is_example.py]:

Puoi digitare un percorso locale personalizzato o premere invio per accettare l'impostazione predefinita. Ti verranno richiesti il nome utente e la password che hai appena creato quando hai registrato il tuo account di stato iniziale. Inserisci entrambi e l'installazione verrà completata.

Passaggio 4: chiavi di accesso

Diamo un'occhiata allo script di esempio che è stato creato.

$ nano è_esempio.py

Nella riga 15, vedrai una riga che inizia con streamer = Streamer(bucket_ …. Questa riga crea un nuovo bucket di dati denominato "Python Stream Example" ed è associato al tuo account. Questa associazione avviene a causa di access_key="…" parametro su quella stessa riga. Quella lunga serie di lettere e numeri è la chiave di accesso al tuo account di stato iniziale. Se vai al tuo account di stato iniziale nel tuo browser web, fai clic sul tuo nome utente in alto a destra, quindi vai su "Le mie impostazioni", troverai la stessa chiave di accesso nella parte inferiore della pagina sotto "Chiavi di accesso allo streaming".

Ogni volta che crei un flusso di dati, quella chiave di accesso indirizzerà quel flusso di dati al tuo account (quindi non condividere la tua chiave con nessuno).

Passaggio 5: eseguire l'esempio

Esegui lo script di prova per assicurarci di poter creare un flusso di dati sul tuo account Stato iniziale. Esegui quanto segue:

$ python è_esempio.py

Passaggio 6: profitto

Torna al tuo account di stato iniziale nel tuo browser web. Un nuovo bucket di dati chiamato "Python Stream Example" dovrebbe essere visualizzato a sinistra nel tuo scaffale di registro (potrebbe essere necessario aggiornare la pagina). Puoi visualizzare i dati in Tiles per vedere questi stessi dati nel modulo dashboard.

Passaggio 7: script finale

Supponendo che tu abbia eseguito il comando "git clone https://github.com/InitialState/smart-scale.git " nella parte 2, lo script finale che mette insieme tutto si chiama smartscale.py nella tua directory ~/smart-scale. (https://github.com/InitialState/smart-scale/blob/master/smartscale.py)

Alcune impostazioni devono essere impostate nello script prima di poterlo eseguire. Apri smartscale.py nel tuo editor di testo preferito come nano.

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

Nella parte superiore di questo file, c'è una sezione Impostazioni utente.

# --------- Impostazioni utente ---------BUCKET_NAME = ":apple: Cronologia del mio peso"BUCKET_KEY = "weight11"ACCESS_KEY = "METTI QUI LA TUA CHIAVE DI ACCESSO ALLO STATO INIZIALE"METRIC_UNITS = FalseWEIGHT_SAMPLES = 500THROWAWAY_SAMPLES = 100WEIGHT_HISTORY = 7# ----------------------------------

  • BUCKET_NAME imposta il nome del bucket di dati dello stato iniziale in cui verranno trasmessi i tuoi dati/peso. Questo può essere impostato qui e modificato in seguito nell'interfaccia utente.
  • BUCKET_KEY è l'identificatore univoco del bucket che specifica dove verranno trasmessi i tuoi dati. Se desideri creare un bucket/dashboard diverso, utilizza qui un identificatore diverso (*nota, se archivi un bucket, non puoi riutilizzare la sua chiave in un nuovo bucket).
  • ACCESS_KEY è la chiave dell'account dello stato iniziale. Se non inserisci la tua ACCESS_KEY in questo campo, i tuoi dati non verranno visualizzati nel tuo account.
  • METRIC_UNITS ti consente di specificare il tuo peso in kg se impostato su True o lb se impostato su False.
  • WEIGHT_SAMPLES specifica quante misurazioni vengono prese e calcolate insieme la media per ottenere il peso effettivo. 500 misurazioni richiedono circa 4-5 secondi e forniscono risultati abbastanza accurati.
  • THROWAWAY_SAMPLES specifica il numero di campioni che vengono gettati via quando si sale per la prima volta sulla scacchiera. Ciò impedisce ai passaggi iniziali e al cambio di annullare la misurazione finale. Dovrebbe essere sempre molto inferiore a WEIGHT_SAMPLES.
  • WEIGHT_HISTORY imposta il numero di misurazioni effettuate prima che venga inviato un aggiornamento aggiuntivo. Solo le misurazioni effettuate a distanza di due ore o più contano per la cronologia.

Dopo aver specificato ogni parametro in questa sezione e salvato le modifiche, sei pronto per eseguire lo script finale. Prima di eseguire lo script, esaminiamo cosa farà.

  • All'inizio dello script, ti verrà chiesto di associare la Wii Balance Board al tuo Raspberry Pi. Usa la leva che hai hackerato insieme nella sezione Parte 2: Hardware Tweaks per premere il pulsante di sincronizzazione quando richiesto.
  • Una volta che lo script è in esecuzione, sali sulla Wii Board per iniziare a misurare il tuo peso. Dopo 4-5 secondi, il tuo peso verrà automaticamente inviato al tuo account Stato iniziale.
  • Dopo aver impostato le notifiche SMS (in un paio di passaggi), riceverai un messaggio di testo subito dopo la misurazione.

Esegui lo script per avviare la magia.

$ sudo python smartscale.py

Passaggio 8: dashboard

Pannello di controllo
Pannello di controllo

Vai al tuo account Stato iniziale e fai clic sul nuovo bucket di dati con il nome corrispondente al parametro BUCKET_NAME (ovvero My Weight History). Fare clic su Riquadri per visualizzare la dashboard della cronologia del peso. Dovresti vedere tre riquadri la prima volta che visualizzi i tuoi dati in riquadri: aggiornamento, data peso e peso (lb). Puoi personalizzare la tua dashboard ridimensionando e spostando i riquadri, modificando i tipi di visualizzazione e persino aggiungendo riquadri. Questa dashboard ti dà la possibilità di vedere a colpo d'occhio la cronologia del tuo peso. È ottimizzato per i dispositivi mobili e puoi persino condividerlo con altre persone.

Puoi aggiungere un'immagine di sfondo alla tua dashboard per dare ai tuoi dati più personalità e contesto.

Passaggio 9: SMS

sms
sms

Creiamo un SMS di avviso ogni volta che la bilancia effettua una misurazione del peso. Assicurati che il tuo bucket di dati della cronologia del peso sia caricato.

  1. Fai clic sulle impostazioni del bucket (sotto il suo nome) nella finestra del bucket di dati.
  2. Fare clic sulla scheda Trigger.
  3. Seleziona il flusso di dati su cui eseguire l'attivazione. È possibile utilizzare l'elenco a discesa per selezionare dagli stream esistenti una volta caricato un bucket di dati oppure digitare manualmente il nome/la chiave dello stream. Nella schermata di esempio sopra, è selezionato "Aggiorna".
  4. Seleziona l'operatore condizionale, in questo caso 'match'.
  5. Selezionare il valore di attivazione che attiverà un'azione (digitare manualmente il valore desiderato). Digitare lb se non si utilizzano unità metriche o digitare kg se si utilizzano unità metriche. Ogni volta che lo stream "Aggiorna" contiene "lb" (o "kg"), riceverai una notifica tramite SMS.
  6. Fare clic sul pulsante "+" per aggiungere la condizione di trigger.
  7. Inserisci il tuo indirizzo email o il tuo numero di telefono nel campo "Contatti da notificare".
  8. Fare clic sul pulsante "+" per aggiungere le informazioni di contatto.
  9. Inserisci un codice di verifica se aggiungi un nuovo numero di telefono per completare la configurazione.
  10. Fai clic sul pulsante Fine in basso per tornare alla schermata principale. Il trigger è ora attivo e si attiverà quando la condizione è soddisfatta.

Una volta completata la configurazione, riceverai un SMS ogni volta che ti pesi che contiene il tuo peso, quanto è cambiato il tuo peso dall'ultima misurazione e uno scherzo / insulto / complimento casuale.

Passaggio 10: conclusione

Ci sono opzioni illimitate per costruire su ciò che hai creato ora. Ecco alcune idee per questo progetto:

  • Puoi trasmettere dati da altre fonti nella stessa dashboard della cronologia del peso (informazioni) per creare la tua dashboard personale sulla salute.
  • È possibile modificare le battute nelle funzioni messageWeighFirst, messageWeighLess, messageWeighMore e messageWeighSame in base al proprio senso dell'umorismo.
  • Puoi trasformare le battute in messaggi pratici o rimuoverle e utilizzare il codice della bilancia per tenere traccia del peso di qualcosa di più importante oltre al tuo peso corporeo.
  • Puoi creare il tuo frigorifero intelligente per birra/vino utilizzando lo stesso approccio. C'è già un fantastico tutorial realizzato per questo qui.

Hack away e fammi sapere se questo tutorial ti ispira a creare qualcosa di straordinario.

Consigliato: