Spisu treści:
- Krok 1: Zaokrąglij wymagane komponenty
- Krok 2: Pobierz Pi i działaj
- Krok 3: Utwórz obwód wykrywania lasera
- Krok 4: Zmodyfikuj laser do zasilania zewnętrznego
- Krok 5: Włącz laser i przetestuj obwód wykrywania
- Krok 6: Podłącz kamerę internetową i przetestuj jej funkcjonalność
- Krok 7: Przerwa
- Krok 8: Monitoruj laser za pomocą oprogramowania
- Krok 9: Utwórz stronę internetową, aby wyświetlić swój strumień
- Krok 10: Skonfiguruj alerty e-mail
- Krok 11: Uruchom skrypt e-mail po wyzwoleniu lasera
- Krok 12: Utwórz skrypt główny, aby zainicjować system
- Krok 13: Wniosek
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
Dzięki za sprawdzenie mojego instruktażu. Pod koniec tej instrukcji zbudujesz laserowy system tripwire raspberry pi z funkcją powiadamiania e-mailem, która jest pokazana na filmie.
Aby ukończyć tę instrukcję, musisz znać ogólne obwody i lutowanie, wiedzieć, jak korzystać z płytki stykowej i czuć się komfortowo podczas korzystania z terminala na pi. Pomocne będzie również posiadanie doświadczenia w pytonie.
Ten projekt składa się z trzech głównych systemów. Raspberry Pi, laserowy obwód tripwire i komputer obserwacyjny. Naszym celem jest wykorzystanie raspberry pi do wykrycia zmiany napięcia w obwodzie lasera tripwire, a następnie zaalarmowanie komputera obserwacyjnego w formie wiadomości e-mail i strumienia wideo.
Zaczynajmy.
Krok 1: Zaokrąglij wymagane komponenty
Do wykonania tego projektu potrzebne będą następujące elementy.
- Przynajmniej jeden działający Raspberry Pi. W tej wersji użyłem modelu Pi w stylu B z raspbian wheezy. Jestem pewien, że ten samouczek będzie działał dobrze, jeśli używasz raspbian jessie.
- Zewnętrzne źródło zasilania Raspberry Pi. Po podłączeniu tego wszystkiego będziemy pobierać znaczną ilość prądu. Spędziłem dużo czasu na diagnozowaniu kiepskiego zasilacza jako źródła moich problemów podczas mojej pierwszej budowy. Upewnij się, że masz mocną moc zdolną do źródła co najmniej 2 amperów.
- Tani wskaźnik laserowy. Mój znalazłem obok kasy na stacji benzynowej. Jeśli potrzebujesz dokładnego lasera, możesz go znaleźć tutaj. Na etykiecie podano długość fali 630-680 nm. Niezależnie od tego, który laser otrzymasz, określi niektóre inne komponenty w kompilacji. Upewnij się więc, że etykieta identyfikuje długość fali.
- Kamera internetowa w stylu USB. Ta kamera internetowa ma regulowaną nóżkę, która pozwala ładnie ustawić kamerę. Okazało się, że kabel USB dostarczony z kamerą internetową był za krótki dla mojej aplikacji, więc znalazłem rozszerzenie w cenie mono.
-
Jakiś zestaw do wyłamywania dla raspberry pi, dzięki czemu możesz mieć łatwy dostęp do pinów procesora.
- Deska do krojenia chleba.
- Lutownica.
- Przewody połączeniowe do płytki stykowej.
-
Komponenty obwodu. Pomnóż przez liczbę przewodów, które chcesz.
- Jedna działająca dioda led
- Jeden rezystor 100 omów
- Jeden rezystor 1k
- Jeden rezystor 10k
- Jeden rezystor 200k Naprawdę wystarczy każdy duży rezystor. Przetestowałem go z rezystorem 1M i działał dobrze. FYI 10 tys. było za małe.
- Jeden tranzystor PNP PN:2N4403-APCT-ND
- Jedna fotodioda (dopasuj ją do długości fali lasera) PN:PDB-C142-ND
Dołączę pliki kicad do płytki drukowanej, ale nie omówię produkcji płytki w tej instrukcji.
W trakcie tego projektu znalazłem przydatne następujące opcjonalne narzędzia:
- Instalacja synergii na Raspberry Pi. Jeśli nie jesteś zaznajomiony, to oprogramowanie pozwoli ci kontrolować mysz i klawiaturę raspberry pi za pomocą innego komputera. To miłe, jeśli jesteś podobny do mnie i wygodniej jest na innym komputerze. Jest to również oprogramowanie, które każdy powinien mieć.
- Koncentrator USB. Dla każdej kamery internetowej, której chcesz użyć, potrzebujesz jednego portu.
- Miernik napięcia lub oscyloskop, jeśli go masz.
- Używanie MobaXterm do kontrolowania raspberry pi i manipulowania plikami przez ssh. To musi mieć dla każdego, kto wychowuje się na oknach. Zapoznaj się z tym samouczkiem, aby przygotować się do korzystania z niego.
Krok 2: Pobierz Pi i działaj
Pi z dołączonymi minimalnymi komponentami
Zanim będziemy mogli strzelać jakimikolwiek laserami, musimy stworzyć kilka warstw oprogramowania. Aby mieć największe szanse na sukces, dobrą praktyką jest rozpoczęcie z czystym kontem. Aby to zrobić, odłącz wszystkie niepotrzebne elementy od Pi. Zmniejszy to szanse na zakłócenia z podłączonego urządzenia.
Następnie upewnij się, że Twoje Raspberry Pi działa z najnowszym oprogramowaniem, wpisując w terminalu następujące informacje
aktualizacja sudo apt-get
Z malinowym pi na bieżąco nadszedł czas na kolejny krok
Krok 3: Utwórz obwód wykrywania lasera
Umieść elementy na płytce stykowej, jak pokazano. Zasil płytkę stykową za pomocą wyjścia 5 V pi lub zasilacza stołowego. Na rysunku 1 zasilanie 5 V jest podłączone do dodatniej szyny płytki stykowej w lewym dolnym rogu obrazu, a uziemienie w lewym górnym rogu. Ten obwód wykorzystuje fotodiodę jako przełącznik wyzwalający tranzystor. Tranzystor przetwarza niewielką zmianę napięcia w fotodiodzie na nieco cyfrowy sygnał, który może odczytać pi. We wszystkich kolejnych krokach punkt między 100 omami a diodą sygnalizacyjną będzie w miejscu, w którym próbkujemy obwód za pomocą pi.
-
Ryc. 1: Górny układ płytki drukowanej obwodu
-
Ryc. 2: Widok alternatywny układu płytki stykowej obwodu
Jeśli chcesz uzyskać bardziej przejrzysty wygląd, załączyłem pliki kicad dla tablicy, która jest pokazana poniżej.
-
Ryc. 3: Widok z góry płyty czujnika
-
Rys 4: Płytka czujnika ISO
-
Pomarańczowy przewód zastępuje chwilowy przycisk
-
Pokazywanie pozytywnych i negatywnych leadów
-
Przegub kulowy
-
Złącze kielichowe
-
Zmontowana kula i gniazdo
-
Działający laser ze zdrową wiązką
-
Wiązka nie jest zepsuta, a dioda jest wyłączona
-
Intruz przerywa wiązkę powodując zaświecenie się diody
-
Przykładowe wyjście mjpg-streamer
-
Układ płytki prototypowej z PiCobler
-
Prawidłowe wyjście konsoli (pokazane przy użyciu MobaXterm)
-
Zrzut ekranu załączonych plików w działaniu
- twój_ip = "192.168.0.177"
- twój_ip_opcjonalny_port = ":8080"
- port_do_kamery = ":8081"
- send_email_username = "Twoja nazwa użytkownika poczty e-mail"
- send_email_password = "twoje hasło"
-
Zrzut ekranu załączonych plików w działaniu
Krok 4: Zmodyfikuj laser do zasilania zewnętrznego
W kolejnych krokach zbudujesz zespół wskaźnika laserowego.
- Zdemontuj wskaźnik laserowy. Zwróć przy tym uwagę na orientację zacisków baterii względem emitera lasera. - Następnie odlutuj sprężynę przyłącza baterii i przycisk chwilowy od lasera. - Przylutuj kawałek drutu między zaciskami, w których znajdował się przycisk. Teraz, gdy zasilanie zostanie dostarczone do lasera, włączy się automatycznie. - Teraz przylutuj dodatnie i ujemne przewody do lasera. Jeśli używasz tego samego lasera z listy części, możesz użyć poniższego obrazu, aby zobaczyć punkty lutowania. Jeśli nie, może być konieczne samodzielne znalezienie punktów lutowania. Możesz użyć orientacji baterii jako wskazówki dla dodatniego lub ujemnego przewodu. Aby znaleźć ostatni punkt lutowniczy, możesz użyć zasilacza 5 V i zbadać obwód za pomocą dwóch przewodów pomiarowych. Po stworzeniu prawidłowego obwodu znalazłeś punkt lutowania, a laser się zaświeci.
- Ostatnim krokiem jest wykonanie kierunkowego słupka montażowego dla lasera, aby można go było łatwo dostosować do celowania w gniazdo lasera. Odkryłem, że większość zestawów Lego Bionicle jest doskonałym źródłem tanich przegubów kulowych. Przyklej jeden kawałek przegubu kulowego do wskaźnika laserowego za pomocą super kleju. Teraz możesz zamontować gniazdo na dowolnej powierzchni i zatrzasnąć laser.
Krok 5: Włącz laser i przetestuj obwód wykrywania
Podłącz laser do płytki stykowej. Dodatni będzie musiał być podłączony do 5V i uziemić przewód ujemny. Jeśli laser włącza się świetnie, jeśli nie, sprawdź multimetrem, czy masz prawidłowe napięcie. Jeśli to nadal nie działa, spróbuj zamienić przewody na wypadek, gdyby podłączyłeś je od tyłu. Jeśli nadal nie działa, być może nie przylutowałeś do odpowiednich padów, wróć do ostatniego kroku.
Po uzyskaniu wiązki laserowej nadszedł czas, aby przetestować obwód wykrywania. Skieruj laser na fotodiodę. Dioda powinna zgasnąć sygnalizując, że wiązka jest aktywna. Pomachaj ręką przez wiązkę, a dioda LED powinna zaświecić się, sygnalizując podróż.
Krok 6: Podłącz kamerę internetową i przetestuj jej funkcjonalność
Podłącz kamerę internetową do portu USB. Aby przesyłać strumieniowo wideo, musimy pobrać narzędzie mjpg-streamer. Oto świetny samouczek, jak to zrobić. Po prawidłowym zainstalowaniu mjpg-streamer. Rozpocznij przesyłanie strumieniowe wideo, wpisując w terminalu następujące polecenie.
cd /gdzie zainstalowałeś mjpg-streamer/mjpg-streamer
./mjpg_streamer -i "./input_uvc.so -y /dev/video0" -o "./output_http.so -w./www -p 8081"
To polecenie skonfiguruje strumień na porcie 8081 przy użyciu źródła video0. Jeśli chcesz użyć wielu kamer internetowych, wprowadź ponownie powyższe polecenie, ale zmień video0 na video1 i 8081 na 8082. W ten sposób przesyłałem strumieniowo do 3 kamer internetowych i pi nie było przeciążone.
Sprawdź, czy połączenie działa, otwierając przeglądarkę na innym komputerze i wpisując adres ip-of-pi:8081 lub na pi możesz po prostu wpisać localhost:8081. Jeśli nie znasz swojego adresu IP pi, wprowadź następujące informacje w terminalu
ifconfig
Jeśli wszystko działa, powinieneś zobaczyć stronę główną mpg-streamer. Kliknij kartę strumienia, aby zobaczyć strumień z kamery internetowej. Poniżej zrzut ekranu interfejsu.
Robiąc ten samouczek po raz drugi, udało mi się uzyskać dostęp do strony głównej mjpg-streamer, ale nie widziałem strumienia. Aby to naprawić, przeczytałem ten post (link jest teraz uszkodzony), a konkretnie część o formacie pikseli YUYV, jeśli napotkasz pusty strumień, powinieneś go również sprawdzić.
Krok 7: Przerwa
Ok, więc w tym momencie powinniśmy mieć uruchomione i uruchomione malinowe pi. Nasz laser został zmodyfikowany do zasilania zewnętrznego. Nasz obwód wykrywania został skonstruowany i potwierdziłeś, że kiedy wiązka lasera uderza w fotodiodę, dioda LED gaśnie, a po przerwaniu wiązki dioda powinna się włączyć. Na koniec powinieneś mieć podłączoną kamerę internetową i funkcjonować strumieniowo.
Teraz nadszedł czas, aby to wszystko złożyć. Zacznijmy od prostych prób wykrycia wyzwalania wiązki laserowej za pomocą oprogramowania.
Podłącz obwód wykrywania do płytki stykowej, jak pokazano. Upewnij się, że podłączyłeś przewód sygnałowy czujnika do styku 25 w ramach przygotowań do następnego kroku. Rezystor obniżający nie jest opcjonalny. Miałem 10k leżące dookoła, ale każdy rezystor powinien wystarczyć.
Krok 8: Monitoruj laser za pomocą oprogramowania
Napiszmy krótki program do nasłuchiwania sygnału laserowego i wyślij go do terminala. Kod możesz pobrać jako załącznik.
Prawdopodobnie będziesz musiał zainstalować zależności dla tego skryptu. Python i moduł gpio. Aby je zainstalować, wejdź
sudo apt-get zainstaluj python-rpi.gpio python3-rpi.gpio
Po pomyślnej instalacji Pythona pobierz załączony skrypt Pythona o nazwie read_pin.py i uruchom
cd /katalog, w którym umieściłeś plik/chmod 777 read_pin.py
Polecenie chmod nada skryptowi uprawnienia do uruchomienia. Następnie sprawdź, czy wszystko jest w porządku i elegancko, biegając
sudo python3 read_pin.py
Jeśli wszystko pójdzie dobrze, powinieneś zobaczyć wyjście konsoli, jak pokazano poniżej. Aby wyjść ze skryptu Pythona, wejdź
Ctrl+C
Pomachaj ręką przed wiązką lasera, a na konsoli powinien pojawić się komunikat informujący o przerwaniu wiązki. Nie krępuj się pobawić skryptem, aby Twój system działał na różne sposoby.
Krok 9: Utwórz stronę internetową, aby wyświetlić swój strumień
Teraz musimy skonfigurować interfejs podglądu kamery internetowej. W tym kroku musisz zainstalować serwer WWW Apache. Istnieje wiele samouczków na temat konfigurowania jednego. Ale oto krótka lista z minimalną konfiguracją.
sudo apt-get zainstaluj apache2
po zainstalowaniu powinieneś być w stanie pisać w przeglądarce na raspberry pi
Lokalny Gospodarz
Powinieneś zobaczyć stronę powitalną z Apache. Jeśli konfigurujesz serwer WWW po raz pierwszy, prawdopodobnie będziesz chciał skonfigurować swoje pi tak, aby miało statyczny adres IP, aby router zawsze przypisywał właściwy adres IP, jeśli wykonasz cykl zasilania. Jeśli chcesz zobaczyć swój system bezpieczeństwa z innej lokalizacji, musisz skonfigurować przekierowanie portów na routerze. Minęło trochę czasu, ale myślę też, że będziesz musiał przekierować wszystkie porty, które mają również kamerę internetową. Istnieje wiele samouczków, które obejmują te procedury. Pamiętaj, że każdy może zobaczyć Twoją kamerę internetową, jeśli zdecydujesz się skonfigurować przekierowanie portów na routerze.
Załączone pliki to przykładowe strony internetowe, których możesz użyć do skonfigurowania swojej witryny. Będziesz musiał zmienić rozszerzenie pliku w pliku html, ponieważ nie pozwoliliby mi go przesłać. Następnie umieść pliki w folderze www wywołanym w pliku konfiguracyjnym Apache. Domyślna lokalizacja to
cd /var/www
Jeśli chcesz zmienić lokalizację, w której serwer WWW szuka twoich plików html, możesz edytować plik z włączonymi witrynami, wpisując
sudo nano /etc/apache2/sites-enabled/000-default
Zmień dowolne wystąpienie /var/www/ na żądaną lokalizację. Umieściłem swój w /home/pi/Desktop/www/
Gdy masz już pliki html w folderze sieciowym, wpisz localhost w przeglądarce lub adres ip pi z innego komputera. Powinieneś zobaczyć coś takiego.
SŁODKO!
Krok 10: Skonfiguruj alerty e-mail
Dzieją się dobre rzeczy! Wykorzystajmy szczęście, próbując wysłać alert e-mailowy z pi na wcześniej zdefiniowany adres e-mail. Załączony skrypt Pythona utworzy wiadomość e-mail, którą chcesz wysłać, połączy się z dostawcą poczty e-mail, takim jak gmail, i wyśle wiadomość e-mail za pomocą dostawcy poczty e-mail. Osiąga się to za pomocą pakietu smtp Pythona. Sugeruję, abyś zrobił fałszywy adres e-mail tylko dla twojego systemu bezpieczeństwa, ponieważ będziemy musieli zmniejszyć bezpieczeństwo twojego konta gmail, aby pakiet smtp działał.
Będziesz musiał zmodyfikować skrypt w kilku miejscach, aby uzyskać pomyślną transmisję. Jest mocno komentowany i dla Twojej wygody wygeneruje wiele danych wyjściowych na terminalu.
Rzeczy, które będziesz musiał zmienić, będą
twój_ip_opcjonalny_port najprawdopodobniej będzie pusty, chyba że twój serwer Apache działa na porcie innym niż domyślny 80. Miałem już serwer działający na 80, więc ustawiłem moje pi na 8080. Port_to_camera będzie portem, który określisz dla swojej kamery uruchomić za pomocą streamera mjpeg.
Po zmianie tych zmiennych na początku skryptu uruchom program, wpisując w terminalu następujące elementy.
cd /folder, w którym umieściłeś skrypt/
sudo python3 send_mail.py
Jeśli gwiazdki są prawidłowo wyrównane i wszystkie zmienne są poprawne, powinieneś otrzymać wiadomość e-mail podobną do poniższej.
Jest wiele miejsc, w których ten skrypt może zawieść. Nie denerwuj się, jeśli to nie zadziała za pierwszym razem. Użyj punktów debugowania w skrypcie, aby zawęzić obszary problemowe, a następnie skup się na jednym problemie na raz.
Krok 11: Uruchom skrypt e-mail po wyzwoleniu lasera
Teraz, gdy pi jest w stanie wysyłać e-maile, zautomatyzujmy to, aby za każdym razem, gdy laser zostanie wyzwolony, otrzymamy wiadomość e-mail. Pobierz załączony plik, który jest zmodyfikowaną wersją read_pin.py, która zawiera nową funkcję uruchamiania skryptu pocztowego. Główna dodatkowa linia jest następująca
sm_pid = os.spawnlp(os. P_NOWAIT, "/usr/bin/python3", "python3", "/home/pi/Desktop/security/send_mail.py")
Ta linia uruchomi skrypt wysyłania poczty równolegle ze skryptem wykrywania laserowego. Jest to pożądane, ponieważ wykonanie skryptu wysyłania poczty zajmuje kilka sekund i blokuje działanie skryptu wykrywania laserowego do momentu wysłania wiadomości e-mail. Nie stanowi to problemu dla systemu z jednym aparatem, ale jeśli masz wiele kamer, chciałbyś wykryć laserową podróż w aparacie 1, nawet jeśli aparat 2 wyzwolił zdarzenie e-mail. Zmienna sm_pid będzie zawierać pid procesu uruchomionego przez to polecenie. Sprawdzamy ten identyfikator, jeśli wyzwalacz wiadomości e-mail zostanie wywołany ponownie, jeśli istnieje, wiadomość e-mail nadal jest wysyłana, więc ignorujemy zdarzenie. Jeśli nie istnieje, prawdopodobnie jest to nowe wydarzenie i wysyłana jest wiadomość e-mail.
Przetestuj wszystko działa, uruchamiając
cd /katalog, w którym umieściłeś plik/
chmod 777 read_pin_with_mail.py
sudo python3 read_pin_with_mail.py
Kiedy przerwiesz wiązkę lasera, powinieneś otrzymać e-mail z migawką zrobioną z kamery internetowej.
Krok 12: Utwórz skrypt główny, aby zainicjować system
W tym momencie projekt jest w większości gotowy. Ostatnim krokiem jest uproszczenie uruchamiania systemu za pomocą ostatniego skryptu. Uruchomi wszystkie podprogramy i skonfiguruje kamerę za pomocą jednego skryptu. Załączony plik można uruchomić podczas uruchamiania, edytując plik /etc/rc.local. Musisz zmienić rozszerzenie pliku i być może trzeba będzie edytować skrypt, aby zawierał odpowiednie ścieżki, jeśli umieścisz skrypty w innej lokalizacji.
Krok 13: Wniosek
Cóż, to jest to. Mam nadzieję, że podobała Ci się ta instrukcja! Daj znać w komentarzach, jeśli masz jakieś pytania lub potrzebujesz bardziej szczegółowych informacji w dowolnym obszarze. Nie przestawaj majstrować!