Spisu treści:

Tracker cukierków z dyni Pi: 5 kroków
Tracker cukierków z dyni Pi: 5 kroków

Wideo: Tracker cukierków z dyni Pi: 5 kroków

Wideo: Tracker cukierków z dyni Pi: 5 kroków
Wideo: Jelonki - Kaczka Dziwaczka - Piosenki dla dzieci 2024, Listopad
Anonim
Tracker „cukierek albo psikus z dyni”
Tracker „cukierek albo psikus z dyni”

Autor: elizabethnaFollow Więcej autora:

Jak zbudować monitor temperatury Raspberry Pi?
Jak zbudować monitor temperatury Raspberry Pi?
Jak zbudować monitor temperatury Raspberry Pi?
Jak zbudować monitor temperatury Raspberry Pi?
Przesyłaj dane z Arkuszy Google do pulpitu nawigacyjnego
Przesyłaj dane z Arkuszy Google do pulpitu nawigacyjnego
Przesyłaj dane z Arkuszy Google do pulpitu nawigacyjnego
Przesyłaj dane z Arkuszy Google do pulpitu nawigacyjnego
Sieć czujników temperatury
Sieć czujników temperatury
Sieć czujników temperatury
Sieć czujników temperatury

Szukasz szybkiego projektu na Halloween, który jest przydatny na więcej niż jeden sposób? Chcesz dobrze wykorzystać Pi Zero WH? Chcesz wykorzystać dane, aby określić, ile cukierków będziesz potrzebować w przyszłym roku?

Przygotuj się do zbudowania trackera cukierków Pumpkin Pi! Podwajając funkcję dekoracji i śledzenia ludzi, ta Pi-in-a-Dumpkin zmienia kolor i strumienie po wykryciu ruchu. Zaczynając od absolutnego zera, ten projekt nie powinien zająć Ci więcej niż jedno popołudnie – w sam raz na Halloween!

Kieszonkowe dzieci

  • Pi Zero WH z kartą SD
  • Czujnik ruchu PIR
  • LED RGB
  • Rezystory 220 omów
  • (3) Linie wiązania (K/K, M/K, M/M)
  • Przenośna bateria
  • Fałszywa dynia

Krok 1: Montaż sprzętu

Montaż sprzętu
Montaż sprzętu
Montaż sprzętu
Montaż sprzętu
Montaż sprzętu
Montaż sprzętu

Po uruchomieniu Pi, musimy podłączyć czujnik ruchu i diody LED. Upewnij się, że Pi nie jest w tym momencie podłączone do zasilania.

Nasz czujnik ruchu wymaga podłączenia go do zasilania 3,3 V, masy i pinu danych. Podłączyłem styk czujnika 3,3 V do styku 1 Pi, styk czujnika uziemienia do styku 6 Pi, a styk czujnika danych do styku 16 Pi. Pierwsze zdjęcie pokazuje pełne połączenie dla Pi i czujnika ruchu.

Diody LED są nieco trudniejsze niż czujnik ruchu, ponieważ wymagają rezystora, aby działać poprawnie bez uszkodzenia ich lub Pi. Użyłem trzech rezystorów 220 omów, ale rezystory 220 i 330 omów są zwykle używane z diodami LED.

Aby wszystko połączyć, możesz:

  • Przylutuj nóżki LED do rezystorów, a następnie poprowadź przewody do Pi
  • Użyj płytki stykowej i krawatów, aby wszystko połączyć
  • Użyj krawatów i taśmy elektrycznej, aby wszystko połączyć (tak jak ja).

Będziemy podłączać naszą diodę LED do pinów 11, 13 i 15. Jest to jednak trochę trudniejsze niż czujnik ruchu, ponieważ nóżki diody LED odpowiadają określonemu kolorowi! Długa noga to GND; a przynajmniej na mojej diodzie nogi były czerwone, GND, niebieskie, zielone. Podłączyłem niebieski do styku Pi 11, zielony do styku Pi 13, a czerwony do styku Pi 15. Drugie zdjęcie pokazuje końcowe połączenia obwodów.

Krok 2: Stan początkowy

Stan początkowy
Stan początkowy
Stan początkowy
Stan początkowy

Jasne, że możemy zobaczyć, kiedy ruch zostanie wykryty za pomocą diody LED, ale jak mamy śledzić, ile cukierków lub psikusów spadło, aby ukraść nasze cukierki?

Będziemy przesyłać strumieniowo do pulpitu za każdym razem, gdy ruch zostanie wykryty i przestanie być wykrywany. Ponieważ ta deska rozdzielcza jest dostępna z dowolnego miejsca z połączeniem internetowym, możemy zdalnie monitorować, czy ktoś zbliża się do drzwi wejściowych / miski na cukierki.

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 ISStreamer

Zainstaluj moduł Pythona stanu początkowego na swoim Raspberry Pi. W wierszu polecenia (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 Automagię

Po kroku 2 zobaczysz na ekranie coś podobnego do następującego:

pi@raspberrypi ~ $ \curl -sSL https://get.initialstate.com/python -o - | sudo bash

Hasło: Rozpoczęcie łatwej instalacji ISStreamer Python! 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 podrzędna: 5 Znaleziono ISStreamer, aktualizuję… Wymaganie już aktualne: ISStreamer w /Library/Python/2.7/site-packages Porządkowanie… Czy chcesz automagicznie uzyskać przykładowy skrypt? [t/N] Gdzie chcesz zapisać przykład? [domyślnie:./is_example.py] Wybierz, której aplikacji stanu początkowego używasz: 1. app.initialstate.com 2. [NOWOŚĆ!] iot.app.initialstate.com Wybierz 1 lub 2: Wpisz iot.app Nazwa użytkownika.initialstate.com: Wprowadź hasło iot.app.initialstate.com:

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. Następny monit zapyta, gdzie chcesz zapisać przykładowy plik. Możesz wpisać niestandardową ścieżkę lokalną lub nacisnąć Enter, aby zaakceptować domyślną lokalizację. Na koniec zostaniesz zapytany, której aplikacji stanu początkowego używasz. Jeśli niedawno utworzyłeś konto, wybierz opcję 2, wprowadź swoją nazwę użytkownika i hasło. Po tym 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 „Python Stream Example” i jest powiązany z Twoim kontem. To powiązanie ma miejsce z powodu access_key = „…” parametr 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). Kliknij ten zasobnik, a następnie kliknij ikonę Fale, aby wyświetlić dane testowe.

Krok 3: Skrypt Pythona

Utwórz skrypt i otwórz edytor tekstu za pomocą następującego polecenia:

nano vistors.py

Skopiuj i wklej kod stąd do swojego edytora tekstu.

Zanim spróbujemy cokolwiek uruchomić, musimy dokonać kilku zmian i przejrzeć, co dzieje się w naszym skrypcie.

importuj RPi. GPIO jako GPIO

from time import sleep from ISStreamer. Streamer import Streamer # Powiedz Pi, że będziemy używać jego systemu numeracji GPIO.setmode(GPIO. BCM) # Piny, do których są podłączone D1 i LED PIN = 23 NIEBIESKI = 17 ZIELONY = 27 CZERWONY = 22 # Określ nasz pin czujnika ruchu jako wejście GPIO.setup(PIN, GPIO. IN) # Określ nasze piny LED jako wyjście GPIO.setup(RED, GPIO. OUT) GPIO.output(RED, 0) GPIO.setup(GREEN), GPIO. OUT) GPIO.output(ZIELONY, 0) GPIO.setup(NIEBIESKI, GPIO. OUT) GPIO.output(NIEBIESKI, 0)

Linie 1-21 służą do inicjalizacji. Najpierw importujemy interfejs GPIO Pi i sposób na uśpienie naszego skryptu. Następnie importujemy streamer stanu początkowego, który zainstalowaliśmy na poprzedniej stronie.

GPIO.setmode określa, jakiego systemu numeracji używamy dla pinów. Zamiast fizycznej lokalizacji używamy systemu numeracji Pi. Tak jak na naszym wcześniejszym schemacie, wybrane przez nas piny to 23, 17, 27 i 22. Następnie ustawiamy pin ruchu jako wejście, a piny LED jako wyjście.

# Nazwa zasobnika stanu początkowego (wyświetlana)

BUCKET_NAME = ":jack_o_lantern: Trick or Treat Tracker" # Klucz do wiadra stanu początkowego (ukryty) BUCKET_KEY = "trickortreat" # Klucz dostępu do stanu początkowego ACCESS_KEY = "Your_Access_Key" # Zmienne, które zapewniają, że nie będziemy przesyłać strumieniowo, że było lub nie było motion dwa razy z rzędu # Oszczędza to na wysłanych zdarzeniach i mocy przetwarzania jużRecordedMotion = False AlreadyRecordedNoMotion = False counter = 0 # Zainicjuj stan początkowy Streamer streamer = Streamer(bucket_name=BUCKET_NAME, bucket_key=BUCKET_KEY, access_key=ACCESS_KEY) # Włącz i ustaw dioda LED na żółtą GPIO.output (CZERWONY, 1) GPIO.output (ZIELONY, 1)

Linie 23-41 są ważne, ponieważ inicjujemy streamer stanu początkowego i ustawiamy diodę LED na żółtą. Wpisz swój klucz dostępu do stanu początkowego w linii 28.

# Pętla w nieskończoność

while True: # Jeśli czujnik ruchu ciągnie wysoko (wykrywa ruch): if GPIO.input(PIN) == 1: print "Wykryto ruch" # Jeśli jeszcze nie transmitowaliśmy: jeśli nie jużRecordedMotion: licznik = licznik + 1 # Ustaw diodę LED na czerwony GPIO.output(RED, 1) GPIO.output(ZIELONY, 0) # Strumień do stanu początkowego streamer.log(":ghost: lub:chocolate_bar:?", ":chocolate_bar: Czas na smakołyki!") streamer.log(":candy: Hungry Humans?:candy:", counter) streamer.flush() AlreadyRecordedMotion = True AlreadyRecordedNoMotion = False else: # Wstrzymaj skrypt na 1 sekundę sleep(1) else: print "Nie wykryto ruchu" # Jeśli jeszcze nie streamowaliśmy: jeśli nie jużRecordedNoMotion: # Ustaw diodę LED na żółtą GPIO.output(RED, 1) GPIO.output(GREEN, 1) # Strumień do stanu początkowego streamer.log(":ghost: lub:chocolate_bar:?", ":no_pedestrians: No One Around") streamer.flush() AlreadyRecordedNoMotion = True AlreadyRecordedMotion = False else: # Wstrzymaj skrypt na 1 sekundę sleep(1)

Wiersze 43-77 są mięsem kodu. W przypadku wykrycia ruchu skrypt sprawdzi, czy „Czas na smakołyki!” był już transmitowany. Jeśli tak się nie stanie, jest wysyłany do stanu początkowego, a dioda LED jest ustawiona na czerwony; jeśli tak, skrypt czeka 1 sekundę, a następnie ponownie odczytuje z czujnika ruchu. To samo dotyczy sytuacji, gdy nie zostanie wykryty ruch.

Czas przetestować kod! Upewnij się, że zapisałeś edytowany plik z kluczem dostępu dodanym w linii 28, a następnie wprowadź do terminala:

Python goście.py

Powinieneś zobaczyć zaświecenie się diody LED i rozpoczęcie drukowania w wierszu poleceń „Nie wykryto ruchu”. Spróbuj pomachać ręką nad czujnikiem ruchu - powinieneś teraz zobaczyć czerwone światło i rozpocząć drukowanie komunikatu „Wykryto ruch”!

Teraz, aby sprawdzić, czy nasze odczyty są przesyłane strumieniowo do stanu początkowego.

Krok 4: Pulpit „cukierek albo psikus”

Pulpit „cukierek albo psikus”
Pulpit „cukierek albo psikus”

Przejdź do stanu początkowego i sprawdź swój pulpit nawigacyjny! Powinieneś zobaczyć wiadro o nazwie „?Trick or Treat Tracker”. Machnij ręką w pobliżu czujnika ruchu i zobacz, jak się aktualizuje!

Mój pulpit nawigacyjny składa się z 2 kafelków podsumowujących wyświetlających ostatnią wartość i histogramu liczby zdarzeń, dzięki czemu mogę zobaczyć, kiedy czujnik został wyzwolony.

Oto kilka rzeczy do rozważenia:

  • Prawdopodobnie chcesz podzielić liczbę „Głodnych Ludzi” przez 2, aby uwzględnić fakt, że ta sama osoba przejdzie przed czujnikiem ruchu dwukrotnie – w drodze do Twoich drzwi i w drodze powrotnej. Możesz to zrobić za pomocą wyrażeń w czasie rzeczywistym, używając równania „=math.round(([Hungry Humans?]/2), 0)”.
  • Możesz sprawdzić, jak czuły jest czujnik ruchu i odpowiednio umieścić go na chodniku. Proponuję trzymać go na tyle daleko od drzwi, aby nie uruchamiał się, gdy ktoś stoi przy drzwiach.
  • Możesz także ustawić alerty tekstowe informujące, że ktoś się zbliża.
  • Wybierz obraz tła, aby nadać swojemu pulpitowi nawigacyjnemu trochę upiornej osobowości!

Zalecana: