Spisu treści:

Inteligentna waga Raspberry Pi: 10 kroków (ze zdjęciami)
Inteligentna waga Raspberry Pi: 10 kroków (ze zdjęciami)

Wideo: Inteligentna waga Raspberry Pi: 10 kroków (ze zdjęciami)

Wideo: Inteligentna waga Raspberry Pi: 10 kroków (ze zdjęciami)
Wideo: [HA] Home Assistant - START - wprowadzenie, instalacja i konfiguracja na wirtualizatorze PROXMOX 2024, Listopad
Anonim
Image
Image

Czy masz dość wpatrywania się każdego ranka w tę nudną, starą, złą wagę łazienkową? Ten, o którym często mówisz „nienawidzę cię” za każdym razem, gdy na nim nadepniesz. Dlaczego nikt nie stworzył skali, która jest zabawna lub motywująca do użycia? Nadszedł czas, aby stworzyć wagę, która jest nie tylko inteligentna, ale ma nieco więcej osobowości, aby rozjaśnić Twój dzień. Zamierzamy zbudować naszą własną, możliwą do zhakowania wagę łazienkową, śledzącą wagę i wysyłającą wiadomości tekstowe, która ma wbudowane poczucie humoru.

Jest to zabawny, łatwy projekt, który łączy w sobie platformę Wii, Raspberry Pi i platformę analizy danych online, aby stworzyć połączoną z Internetem wagę sterowaną za pomocą skryptu Pythona, który możesz zhakować.

Poziom projektu: Początkujący Przybliżony czas na ukończenie: 20 minut Czynnik zabawy: Niemierzalny

W tym samouczku krok po kroku:

  • podłącz wagę Wii do Raspberry Pi przez Bluetooth, uruchom skrypt Pythona, który mierzy twoją wagę, gdy wejdziesz na wagę
  • użyj Raspberry Pi, aby przesyłać strumieniowo swoją wagę do usługi w chmurze (stan początkowy)
  • ustaw powiadomienie SMS za każdym razem, gdy się ważysz
  • zbuduj pulpit śledzenia wagi, do którego masz dostęp w przeglądarce internetowej

Krok 1: Sprzęt

Wii Balance Board Skala
Wii Balance Board Skala

Oto lista całego sprzętu, którego będziemy używać w tym samouczku, z linkami do miejsc, w których można kupić każdy przedmiot.

  • Raspberry Pi 3 z kartą SD i zasilaczem (https://init.st/psuufmj)
  • Wii Balance Board (https://init.st/qg4ynjl)
  • Akumulator Wii Fit (https://init.st/iyypz2i)
  • Podkładki filcowe 3/8" (https://init.st/8gywmjj)
  • Ołówek (nie podam ci linku do tego, gdzie kupić ołówek… powinieneś mieć jeden z nich)

Uwaga: jeśli masz Raspberry Pi 1 lub 2, potrzebujesz adaptera bluetooth (https://init.st/7y3bcoe)

Krok 2: Skala Wii Balance Board

Dlaczego platforma Wii Balance Board? Okazuje się, że jest to naprawdę ładna, wytrzymała waga, która posiada łączność bluetooth. To pozwoli nam podłączyć go do komputera jednopłytkowego (Raspberry Pi), aby odczytać Twoją wagę w skrypcie Pythona i wysłać te pomiary do internetowego serwisu danych, aby robić fajne rzeczy. Ponadto istnieje duża szansa, że Ty lub ktoś, kogo znasz, ma już taki, który po prostu zbiera kurz.

Będziemy musieli dokonać kilku prostych modyfikacji na naszej Wii Balance Board, aby naprawdę uczynić ten projekt praktycznym i wygodnym.

Krok 3: Konfiguracja Bluetooth

Raspberry Pi 3 ma wbudowany Bluetooth, wszystko, czego potrzebujemy do komunikacji z płytką Wii Balance Board. Jeśli masz Raspberry Pi 1 lub 2, będziemy musieli użyć jednego z naszych portów USB, aby podłączyć adapter.

Włącz swoje Pi (zakładam, że masz już zainstalowany Raspbian i uruchamia się) i przejdź do okna terminala Raspberry Pi. Możesz zobaczyć adres swojego klucza bluetooth za pomocą polecenia „hcitool dev”:

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

Zainstaluj moduły bluetooth, których będziemy używać w naszych skryptach Pythona:

$ sudo apt-get install python-bluetooth

Po zakończeniu instalacji jesteśmy gotowi do połączenia i komunikacji z Wii Balance Board. Nie będziemy na stałe sparować naszej tablicy z naszym Pi, tak jak robimy to z większością naszych urządzeń Bluetooth. Wii Balance Board nigdy nie był przeznaczony do parowania z niczym innym niż Wii, a trwałe parowanie okazało się dość mylącym wyzwaniem. Parowanie nastąpi za każdym razem, gdy uruchomimy nasz skrypt Pythona.

Krok 4: Odczytywanie skali

Nadszedł czas, aby podłączyć naszą Wii Balance Board do naszego Raspberry Pi. Zrobimy to, modyfikując wersję skryptu Gr8W8Upd8M8.py Stavrosa Korokithakisa (https://github.com/skorokithakis/gr8w8upd8m8). Skrypt Pythona, którego będziemy używać w tym kroku, znajduje się tutaj. Możesz skopiować zawartość tego pliku do pliku, który utworzysz na swoim Raspberry Pi lub możesz sklonować wszystkie pliki Pythona, których będziemy używać w tym całym projekcie. Zróbmy to drugie. Wpisz następujące polecenia do terminala na swoim Raspberry Pi:

$ cd ~$ git clone $ git clone https:github.com/initialstate/smart-scale.git klonowanie do 'smart-scale'… remote: Liczenie obiektów: 14, gotowe. remote: Kompresowanie obiektów: 100% (12/12), gotowe. zdalna: Razem 14 (delta 1), ponownie wykorzystana 8 (delta 0), ponownie wykorzystana w opakowaniu 0 Rozpakowanie obiektów: 100% (14/14), gotowe. Sprawdzam łączność… gotowe.

klonowanie do „inteligentnej skali”… zdalne: Liczenie obiektów: 14, gotowe. remote: Kompresowanie obiektów: 100% (12/12), gotowe. zdalna: Razem 14 (delta 1), ponownie wykorzystana 8 (delta 0), ponownie wykorzystana w opakowaniu 0 Rozpakowanie obiektów: 100% (14/14), gotowe. Sprawdzam łączność… gotowe.

Powinieneś zobaczyć dwa pliki Pythona w nowym katalogu smart-scale - smartscale.py i wiiboard_test.py.

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

Uruchom skrypt wiiboard_test.py, aby przetestować komunikację i pobrać odczyty wagi z Wii Balance Board:

$ sudo python wiiboard_test.py

Zobaczysz następującą odpowiedź:

Odkrywanie tablicy… Naciśnij teraz czerwony przycisk synchronizacji na tablicy

Zdejmij pokrywę baterii pod płytą, aby znaleźć czerwony przycisk synchronizacji. Upewnij się, że naciśniesz przycisk w ciągu kilku sekund od uruchomienia skryptu, w przeciwnym razie nastąpi przekroczenie limitu czasu. Gdy się powiedzie, zobaczysz coś podobnego do następującego:

Znaleziono Wiiboard pod adresem 00:23:CC:2E:E1:44Próbuję połączyć…Podłączono do Wiiboard pod adresem 00:23:CC:2E:E1:44Wiiboard podłączono ACK do zapisu danych odebrano84.9185297 lbs84.8826412 lbs84.9275927 lbs

Skrypt wiiboard_test.py pobiera liczbę pomiarów wagi określoną w wierszu 10 i wyświetla średnią:

# --------- Ustawienia użytkownika ---------WEIGHT_SAMPLES = 500# ----------------------------- --------

Możesz bawić się tą liczbą, zmieniając wartość i ponownie uruchamiając skrypt, aby zobaczyć różnice w zmierzonej wadze i czasie wymaganym do każdego pomiaru. Zważ się, zważ psa, zważ cokolwiek i zobacz, czy pomiary mają sens. Aby zatrzymać skrypt, naciśnij klawisze CTRL+C.

Udało Ci się przekonwertować płytkę Wii Balance Board w wagę podłączoną do Raspberry Pi. Teraz zróbmy fajną skalę.

Krok 5: Ulepszenia sprzętu

Ulepszenia sprzętowe
Ulepszenia sprzętowe

Nintendo założyło, że zawsze będziesz zasilać Wii Balance Board czterema bateriami AA i nie zawiera zasilacza sieciowego. Posiadanie tylko baterii byłoby niewygodne, ponieważ nie możemy na stałe sparować naszej tablicy Wii z naszym Pi przez bluetooth. Musimy go zsynchronizować, a następnie pozwolić mu pozostać zsynchronizowanym bez rozładowywania baterii, abyśmy mogli po prostu wejść na wagę i zważyć. Na szczęście istnieje kilka adapterów innych firm wykonanych dla Wii Balance Board, których możemy użyć do zapewnienia stałego zasilania z gniazdka ściennego. Wymień baterie na akumulator i podłącz zasilacz do gniazdka ściennego.

Konieczność parowania Wii Balance Board i Raspberry Pi za każdym razem, gdy uruchamiamy nasz skrypt Pythona, stanowi kolejną niedogodność ze względu na lokalizację przycisku synchronizacji. Przycisk synchronizacji znajduje się na dole tablicy Wii, co oznacza, że musielibyśmy go odwracać za każdym razem, gdy potrzebujemy synchronizacji. Możemy to naprawić, wykonując małą dźwignię za pomocą ołówka i trzech podkładek filcowych 3/8", jak pokazano powyżej. Akumulator odsłania przycisk synchronizacji na spodnią powierzchnię tablicy. Przyklej ołówek (lub coś podobnego), który obejmuje od przycisku synchronizacji do zewnętrznej części deski. Ułóż trzy filcowe podkładki 3/8" (lub coś podobnego) na środku ołówka, aby utworzyć nieruchomą oś. Uważaj, aby nie odsłonić zbyt dużej ilości ołówka z tablicy, ponieważ nie chcesz, aby ktoś przypadkowo go wyrzucił. Odwróć tablicę i możesz nacisnąć przycisk synchronizacji, po prostu naciskając dźwignię. Trochę hack, ale skuteczny.

W zależności od tego, jak przechowujesz tablicę Wii, możesz chcieć usunąć gumowe podkładki ze stóp tablicy (podkładki to po prostu naklejki, które można podważyć). Filcowe podkładki 3/8 można umieścić na stopach deski, aby ułatwić przesuwanie.

Krok 6: Stan początkowy

Stan początkowy
Stan początkowy

Chcemy przesyłać strumieniowo naszą wagę/dane do usługi w chmurze i sprawić, by ta usługa zmieniła nasze dane w ładny pulpit nawigacyjny, do którego możemy uzyskać dostęp z naszego laptopa lub urządzenia mobilnego. Nasze dane potrzebują miejsca docelowego. Jako miejsce docelowe użyjemy stanu początkowego.

Krok 1: Zarejestruj się, aby uzyskać konto stanu początkowego Przejdź do https://iot.app.initialstate.com i utwórz nowe konto.

Krok 2: Zainstaluj ISStreamerZainstaluj moduł Initial State Python na swoim Pi: W wierszu poleceń (nie zapomnij najpierw SSH do swojego Pi), uruchom następujące polecenie:

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

Krok 3: Zrób Automagic. Po kroku 2 zobaczysz na ekranie coś podobnego do następującego:

pi@raspberrypi ~ $ \curl -sSL https://get.initialstate.com/python -o - | sudo bashPassword: Początek ISStreamer Python Łatwa instalacja! Instalacja może potrwać kilka minut, napij się kawy:) Ale nie zapomnij wrócić, będę miał pytania później!

Znaleziono easy_install: setuptools 1.1.6

Znaleziono pip: pip 1.5.6 z /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg (python 2.7) pip wersja główna: 1 pip wersja pomocnicza: znaleziono 5 ISStreamer, aktualizacja… Wymaganie już aktualny: ISStreamer w /Library/Python/2.7/site-packages Porządkowanie… Czy chcesz automagicznie uzyskać przykładowy skrypt? [t/N]

(wyniki mogą być inne i zająć więcej czasu, jeśli nigdy wcześniej nie instalowałeś modułu przesyłania strumieniowego Initial State Python)

Gdy zostaniesz poproszony o automatyczne pobranie przykładowego skryptu, wpisz y. Spowoduje to utworzenie skryptu testowego, który możemy uruchomić, aby upewnić się, że możemy przesyłać strumieniowo dane do stanu początkowego z naszego Pi. Zostaniesz poproszony:

Gdzie chcesz zapisać przykład? [domyślnie:./is_example.py]:

Możesz wpisać niestandardową ścieżkę lokalną lub nacisnąć Enter, aby zaakceptować domyślną. Zostaniesz poproszony o podanie nazwy użytkownika i hasła, które właśnie utworzyłeś podczas rejestracji konta w stanie początkowym. Wprowadź oba, a instalacja zostanie zakończona.

Krok 4: Klucze dostępu

Rzućmy okiem na przykładowy skrypt, który został stworzony.

$ nano is_example.py

W wierszu 15 zobaczysz wiersz zaczynający się od streamer = Streamer(bucket_ …. Ten wiersz tworzy nowy zasobnik danych o nazwie „Przykład strumienia Pythona” i jest powiązany z Twoim kontem. To powiązanie dzieje się z powodu access_key = „…” w tym samym wierszu. Ta długa seria liter i cyfr to klucz dostępu do konta stanu początkowego. Jeśli przejdziesz do konta stanu początkowego w przeglądarce internetowej, kliknij swoją nazwę użytkownika w prawym górnym rogu, a następnie przejdź do „Moich ustawień”, ten sam klucz dostępu znajdziesz na dole strony w sekcji „Klucze dostępu do transmisji strumieniowej”.

Za każdym razem, gdy tworzysz strumień danych, ten klucz dostępu przekieruje strumień danych na Twoje konto (więc nie udostępniaj nikomu swojego klucza).

Krok 5: Uruchom przykład

Uruchom skrypt testowy, aby upewnić się, że możemy utworzyć strumień danych na Twoje konto stanu początkowego. Uruchom następujące:

$ python is_example.py

Krok 6: Zysk

Wróć do swojego konta stanu początkowego w przeglądarce internetowej. Po lewej stronie na półce dziennika powinien pojawić się nowy zasobnik danych o nazwie „Przykład strumienia Pythona” (może być konieczne odświeżenie strony). Możesz wyświetlić dane w Kafelkach, aby zobaczyć te same dane w formularzu pulpitu nawigacyjnego.

Krok 7: Skrypt końcowy

Zakładając, że uruchomiłeś polecenie „git clone https://github.com/InitialState/smart-scale.git” w części 2, ostateczny skrypt, który łączy wszystko w całość, nazywa się smartscale.py w twoim katalogu ~/smart-scale. (https://github.com/InitialState/smart-scale/blob/master/smartscale.py)

Kilka ustawień należy ustawić w skrypcie, zanim będzie można go uruchomić. Otwórz smartscale.py w swoim ulubionym edytorze tekstu, takim jak nano.

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

W górnej części tego pliku znajduje się sekcja Ustawienia użytkownika.

# --------- Ustawienia użytkownika ---------BUCKET_NAME = ":apple: Moja historia wagi"BUCKET_KEY = "weight11"ACCESS_KEY = "TUTAJ UMIEŚĆ SWÓJ KLUCZ DOSTĘPU STANU POCZĄTKOWEGO"METRIC_UNITS = FalseWEIGHT_SAMPLES = 500THROWAWAY_SAMPLES = 100WEIGHT_HISTORY = 7# ---------------------------------

  • BUCKET_NAME ustawia nazwę zasobnika danych stanu początkowego, do którego będą przesyłane strumieniowo Twoja waga/dane. Można to ustawić tutaj i zmienić później w interfejsie użytkownika.
  • BUCKET_KEY to unikalny identyfikator zasobnika, który określa, dokąd będą przesyłane Twoje dane. Jeśli chcesz utworzyć inny zasobnik/panel, użyj tutaj innego identyfikatora (*uwaga, jeśli archiwizujesz zasobnik, nie możesz ponownie użyć jego klucza w nowym zasobniku).
  • ACCESS_KEY to klucz konta stanu początkowego. Jeśli nie wpiszesz klucza ACCESS_KEY w tym polu, Twoje dane nie pojawią się na Twoim koncie.
  • METRIC_UNITS pozwala określić swoją wagę w kg, jeśli jest ustawiona na True lub lb, jeśli jest ustawiona na False.
  • WEIGHT_SAMPLES określa, ile pomiarów jest wykonywanych i uśrednianych razem, aby uzyskać rzeczywistą wagę. 500 pomiarów zajmuje około 4-5 sekund i zapewnia dość dokładne wyniki.
  • THROWOWAWAY_SAMPLES określa liczbę próbek, które są wyrzucane po pierwszym wejściu na planszę. Zapobiega to początkowym krokom i przesunięciom przed odrzuceniem końcowego pomiaru. Powinno to być zawsze znacznie mniej niż WEIGHT_SAMPLES.
  • WEIGHT_HISTORY określa liczbę pomiarów wykonanych przed wysłaniem dodatkowej aktualizacji. Tylko pomiary wykonane w odstępie co najmniej dwóch godzin liczą się do historii.

Po określeniu każdego parametru w tej sekcji i zapisaniu zmian możesz uruchomić ostateczny skrypt. Zanim uruchomimy skrypt, przeanalizujmy, co on zrobi.

  • Na początku skryptu zostaniesz poproszony o sparowanie Wii Balance Board z Raspberry Pi. Użyj dźwigni, którą zhakowałeś razem w sekcji Część 2: Poprawki sprzętowe, aby nacisnąć przycisk synchronizacji, gdy zostaniesz o to poproszony.
  • Po uruchomieniu skryptu wejdź na tablicę Wii, aby rozpocząć pomiar swojej wagi. Po 4-5 sekundach Twoja waga zostanie automatycznie wysłana na Twoje konto stanu początkowego.
  • Po skonfigurowaniu powiadomień SMS (w kilku krokach) otrzymasz wiadomość tekstową wkrótce po dokonaniu pomiaru.

Uruchom skrypt, aby rozpocząć magię.

$ sudo python smartscale.py

Krok 8: Pulpit

Deska rozdzielcza
Deska rozdzielcza

Przejdź do swojego konta Stanu początkowego i kliknij nowy zasobnik danych o nazwie odpowiadającej parametrowi BUCKET_NAME (np. Moja Historia Wagi). Kliknij Kafelki, aby wyświetlić panel historii wagi. Po pierwszym wyświetleniu danych w Kafelkach powinny pojawić się trzy kafelki - aktualizacja, data wagi i waga (w funtach). Możesz dostosować swój pulpit nawigacyjny, zmieniając rozmiar i przesuwając kafelki, a także zmieniając typy widoków, a nawet dodając kafelki. Ten pulpit nawigacyjny umożliwia szybkie sprawdzenie historii wagi. Jest przyjazny dla urządzeń mobilnych i można go nawet udostępniać innym osobom.

Możesz dodać obraz tła do pulpitu nawigacyjnego, aby nadać swoim danym bardziej osobowość i kontekst.

Krok 9: SMS

SMS
SMS

Stwórzmy alert SMS, gdy waga dokona pomiaru masy. Upewnij się, że zasobnik danych historii wagi jest załadowany.

  1. Kliknij ustawienia zasobnika (pod jego nazwą) w oknie zasobnika danych.
  2. Kliknij kartę Wyzwalacze.
  3. Wybierz strumień danych do uruchomienia. Możesz użyć listy rozwijanej, aby wybrać spośród istniejących strumieni po załadowaniu zasobnika danych lub ręcznie wpisać nazwę/klucz strumienia. Na powyższym przykładowym zrzucie ekranu wybrano opcję „Aktualizuj”.
  4. Wybierz operator warunkowy, w tym przypadku „dopasuj”.
  5. Wybierz wartość wyzwalacza, która wyzwoli akcję (wpisz ręcznie żądaną wartość). Wpisz funty, jeśli nie używasz jednostek metrycznych, lub kg, jeśli używasz jednostek metrycznych. Za każdym razem, gdy strumień „Aktualizacja” zawiera „lb” (lub „kg”), otrzymasz powiadomienie SMS-em.
  6. Kliknij przycisk „+”, aby dodać warunek wyzwalacza.
  7. Wpisz swój adres e-mail lub numer telefonu w polu „Kontakty do powiadomienia”.
  8. Kliknij przycisk „+”, aby dodać informacje kontaktowe.
  9. Wprowadź dowolny kod weryfikacyjny, jeśli dodajesz nowy numer telefonu, aby zakończyć konfigurację.
  10. Kliknij przycisk Gotowe na dole, aby powrócić do ekranu głównego. Twój wyzwalacz jest teraz aktywny i zostanie uruchomiony, gdy warunek zostanie spełniony.

Po zakończeniu konfiguracji otrzymasz wiadomość SMS za każdym razem, gdy się zważysz, zawierającą Twoją wagę, zmianę wagi od ostatniego pomiaru oraz losowy żart / zniewagę / komplement.

Krok 10: Wniosek

Masz nieograniczone możliwości budowania na tym, co właśnie stworzyłeś. Oto kilka pomysłów na ten projekt:

  • Możesz przesyłać strumieniowo dane z innych źródeł do tego samego pulpitu nawigacyjnego historii wagi (informacje), aby utworzyć własny osobisty pulpit nawigacyjny zdrowia.
  • Możesz zmienić dowcipy w funkcjach messageWeighFirst, messageWeighLess, messageWeighMore i messageWeighSame do własnego poczucia humoru.
  • Możesz zamienić dowcipy na praktyczne wiadomości lub usunąć je i użyć kodu wagi, aby śledzić wagę czegoś ważniejszego niż twoja masa ciała.
  • W ten sam sposób możesz stworzyć własną inteligentną lodówkę do piwa/wina. Jest już świetny samouczek do tego stworzony tutaj.

Oderwij się i daj mi znać, czy ten samouczek zainspiruje Cię do stworzenia czegoś niesamowitego.

Zalecana: