Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Montaż sprzętu
- Krok 2: Stan początkowy
- Krok 3: Skrypt Pythona
- Krok 4: Pulpit „cukierek albo psikus”
Wideo: Tracker cukierków z dyni Pi: 5 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:29
Autor: elizabethnaFollow Więcej autora:
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
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
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”
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:
Bezdotykowy dozownik cukierków na Halloween: 6 kroków
Bezdotykowy dozownik cukierków na Halloween: Znowu nadeszła ta pora roku, w której świętujemy Halloween, ale w tym roku z powodu COVID-19 wszystkie zakłady są wykluczone. Ale w duchu Halloween nie powinniśmy zapominać o zabawie w „Cukierek albo psikus”. Tak więc ten post został stworzony, aby umożliwić rodzinie
Programowalne oświetlenie dyni: 25 kroków (ze zdjęciami)
Programmable Pumpkin Light: Ta instrukcja służy do tworzenia programowalnej lampki dyni z mikrokontrolerem ATTiny. Zostało to zaprojektowane jako demonstracja edukacyjna, aby wprowadzić każdego (w wieku 8+) do elektroniki i programowania mikrokontrolerów za pomocą Arduino IDE. Pochylony obiekt
Halloweenowa przerażająca maszyna używająca PIR, drukowanej dyni 3D i kompatybilnego z Troll Arduino Audio Prankera / praktycznej tablicy żartów.: 5 kroków
Halloweenowa maszyna przerażająca używająca PIR, drukowanej w 3D dyni i kompatybilnego z Trollem Arduino Audio Prankera/praktycznej tablicy dowcipów.: Tablica trolla stworzona przez Patricka Thomasa Mitchella z EngineeringShock Electronics i została w pełni sfinansowana na Kickstarterze nie tak dawno temu. Otrzymałem nagrodę kilka tygodni wcześniej, aby pomóc napisać kilka przykładów użycia i zbudować bibliotekę Arduino w próbie
Animowane upiorne oczy dyni: 9 kroków (ze zdjęciami)
Animowane, upiorne oczy dyni: Kilka lat temu, szukając inspiracji do nowego animowanego rekwizytu na Halloween, natknęliśmy się na wideo od 68procentwater, współpracownika YouTube, zatytułowanego Arduino Servo Pumpkin. Ten film był dokładnie tym, czego szukaliśmy, jednak niektóre z
Lampka LED w kształcie dyni kontrolowana przez Arduino: 5 kroków
Oświetlenie dyni LED kontrolowane przez Arduino: Początkową wizją projektu było skonfigurowanie diody LED do samodzielnego włączania i wyłączania w oparciu o światło otoczenia oraz do migotania i zmiany intensywności w celu symulacji świecy. Wymagane części: 1 x Arduino 1 x LED (najlepiej jasny bursztynowy dla realizmu) 1 x LDR