Reklama

Dowiedz się, jak zrobić zdalnie widoczną kamerę bezpieczeństwa z funkcją obrotu i pochylenia za pomocą Raspberry Pi. Ten projekt można ukończyć rano tylko z najprostszych części. Oto wynik końcowy:

Czego potrzebujesz

  • Raspberry Pi 2 lub 3 z kartą Micro SD
  • Arduino UNO lub podobny
  • 2 x serwo micro lub mini hobby
  • Kamera internetowa USB
  • Druty przyłączeniowe męskie do męskich
  • Druty przyłączeniowe męskie do żeńskich
  • Różne paski na zamek błyskawiczny

Budowanie kamery bezpieczeństwa

Przymocuj klakson (małe plastikowe „kształty”) do każdego serwa za pomocą dostarczonej śruby. Konkretny kształt nie ma tak naprawdę znaczenia, chociaż im większy, tym lepszy. Nie dokręcaj śruby zbyt mocno.

Teraz użyj opasek na suwak, aby przymocować jedno serwo do drugiego pod kątem prostym. Jedna z nich będzie obracać (od lewej do prawej), podczas gdy druga będzie przechylać (w górę i w dół). Nie ma znaczenia, kto co robi, można to zmienić w kodzie.

Serwo-sprzęt

Na koniec podłącz kamerę internetową do jednego z serwomechanizmów. Możesz do tego użyć opasek na suwak, chociaż moja kamera internetowa jest wyposażona w klips przykręcony do dołu - usunąłem to i użyłem śruby do przytrzymania klaksonu. Dla stabilności możesz zamontować cały zestaw na skrzynce lub pudełku. Proste kartonowe pudełko całkiem nieźle sobie radzi. Możesz wyciąć schludny kwadratowy otwór i zamontować jeden serwo równo z powierzchnią, jednak krawat zip będzie wystarczający.

Pi-Pan-Tilt-Camera

Słowo o kamerach internetowych

Nie wszystkie kamery USB są tworzone jednakowo. Podłącz kamerę internetową do portu USB komputera Pi i uruchom następujące polecenie:

lsusb

To polecenie wyświetla informacje o wszystkich urządzeniach USB podłączonych do Pi. Jeśli kamery internetowej nie ma na liście, możesz wypróbować zasilany koncentrator USB i powtórzyć polecenie. Jeśli kamera internetowa nadal nie jest rozpoznawana, być może trzeba będzie ją kupić kompatybilna kamera internetowa.

Konfiguracja serwomechanizmu

Chociaż serwomechanizmy mogą wydawać się przerażające i złożone, można je naprawdę bardzo łatwo połączyć. Serwa działają na modulacji szerokości impulsu (PWM), która jest sposobem dla systemów cyfrowych na naśladowanie sygnałów analogowych. Sygnały PWM są zasadniczo szybkim sygnałem WŁ. - WYŁ. Sygnał, który jest WŁĄCZONY lub WYSOKI, jest opisany za pomocą cyklu pracy. Cykl pracy jest wyrażony w procentach i opisuje, jak długo sygnał jest włączony. Sygnał PWM 25% cyklu pracy będzie WŁĄCZONY przez 25% czasu, a WYŁĄCZONY dla pozostałych 75%. Sygnał nie jest WŁĄCZONY na początku, a następnie WYŁĄCZONY na zawsze, pulsuje regularnie przez bardzo krótki czas.

Serwa nasłuchują tych impulsów i działają odpowiednio. Zastosowanie cyklu roboczego 100% byłoby takie samo jak „zwykłe” 5 V, a 0% byłoby takie samo jak uziemienie. Nie martw się, jeśli nie w pełni rozumiesz, jak działa PWM, nadal możesz kontrolować serwomechanizmy (Extreme Electronics to dobre miejsce, aby dowiedzieć się więcej).

Istnieją dwa główne sposoby korzystania z PWM - sprzęt lub oprogramowanie. Sprzętowy PWM często zapewnia mniejsze opóźnienie (jak długo pomiędzy serwomechanizmem odbierającym polecenie a ruchem) niż programowy PWM, jednak Pi ma tylko jeden pin zgodny ze sprzętowym PWM. Obwody zewnętrzne są dostępne, aby zapewnić wiele kanałów sprzętowego PWM, jednak proste Arduino może również obsłużyć to zadanie, ponieważ mają wiele sprzętowych styków PWM.

Oto obwód:

Połączenie Pi-Servo

Sprawdź dwukrotnie pinout dla twojego Piróżnią się nieznacznie w zależności od modelu. Musisz dowiedzieć się, jak okablowane są serwomechanizmy. Serwa wymagają trzech przewodów do ich sterowania, jednak kolory różnią się nieznacznie:

  • Kolor czerwony jest dodatni, podłącz to do Pi + 5v
  • Brązowy lub czarny jest ujemny, podłącz to do GND na Pi
  • Sygnał pomarańczowy lub biały, podłącz go do styków 9 i 10 Arduino

Konfiguracja Arduino

Nowy w Arduino? Zacznij tutaj Pierwsze kroki z Arduino: przewodnik dla początkującychArduino to platforma prototypowania elektroniki typu open source oparta na elastycznym, łatwym w użyciu sprzęcie i oprogramowaniu. Jest przeznaczony dla artystów, projektantów, hobbystów i wszystkich zainteresowanych tworzeniem interaktywnych obiektów lub środowisk. Czytaj więcej .

Po połączeniu serwomechanizmów otwórz Arduino IDE na komputerze i prześlij ten kod testowy. Nie zapomnij wybrać właściwej płyty i portu z Narzędzia> Płyta i Narzędzia> Port menu

#zawierać // Zaimportuj bibliotekę Servo servoPan, servoTilt; // Twórz obiekty serwo. int servoMin = 20, servoMax = 160; // Zdefiniuj granice serwomechanizmów void setup () {// Ustaw serwomechanizmy na pinach obsługujących PWM servoPan.attach (9); servoTilt.attach (10); } void loop () {for (int i = servoMin; i  servoMin; --i) {// Przenieś serwomechanizmy z maksimum na minimum servoPan.write (i); servoTilt.write (i); opóźnienie (100); // Poczekaj 100ms} }

Wszystko dobrze, powinieneś zobaczyć oba serwomechanizmy powoli poruszające się do przodu i do tyłu. Zauważ, jak „servoMin” i servoMax są zdefiniowane jako 20 i 160 stopni (zamiast 0 i 180). Wynika to częściowo z tego, że te tanie serwomechanizmy nie są w stanie dokładnie przesunąć pełnych 180 stopni, a także ze względu na fizyczny rozmiar kamery internetowej uniemożliwia wykorzystanie pełnego zakresu. Może być konieczne dostosowanie ich do konfiguracji.

Jeśli w ogóle nie działają, sprawdź dwukrotnie, czy obwód jest prawidłowo podłączony. Płyty chlebowe mogą czasami różnić się również jakością, dlatego warto rozważyć inwestycję w multimetr, aby to sprawdzić.

Serwa są prawie zbyt potężne, aby Arduino mogło je zasilić, więc będą zasilane przez Pi. Szyna 5V na Pi jest ograniczony do 750 mA dostarczony do całego Pi, a Pi pobiera około 500 mA, pozostawiając 250 mA dla serwa. Te mikrosilniki pobierają około 80 mA, co oznacza, że ​​Pi powinien być w stanie obsłużyć dwa z nich. Jeśli chcesz użyć większej liczby serwomechanizmów lub większych modeli o większej mocy, może być konieczne użycie zewnętrznego zasilacza.

Teraz prześlij następujący kod do Arduino. To nasłuchuje przychodzących danych szeregowych (szeregowych jak w Universal Seryjny Bus lub USB). Pi wyśle ​​te dane przez USB do Arduino, mówiąc mu, gdzie przenieść serwomechanizmy.

#zawierać // Zaimportuj bibliotekę Servo servoPan, servoTilt; // Utwórz obiekt serwo. Dane ciągu = ""; // Przechowuj przychodzące polecenia (bufor) void setup () {// Skonfiguruj serwa na pinach obsługujących PWM servoPan.attach (9); servoTilt.attach (10); Serial.begin (9600); // Uruchom seryjny przy 9600 bps (prędkość) } void loop () {while (Serial.available ()> 0) {// Jeśli istnieją dane char singleChar = Serial.read (); // Przeczytaj każdy znak if (singleChar == 'P') {// Przenieś pan servoPan.write (data.toInt ()); data = ""; // Wyczyść bufor} else if (singleChar == 'T') {// Przenieś serwo przechyłu servoTilt.write (data.toInt ()); data = ""; // Wyczyść bufor} else {data + = singleChar; // Dołącz nowe dane}} }

Możesz przetestować ten kod, otwierając monitor szeregowy (w prawym górnym rogu> Monitor szeregowy) i wysyłanie niektórych danych testowych:

  • 90 P.
  • 0 P.
  • 20T
  • 100T

Zwróć uwagę na format poleceń - wartość, a następnie litera. Wartość jest pozycją serwomechanizmu, a litera (dużymi literami) określa serwo obrotu lub pochylenia. Ponieważ dane te są przesyłane szeregowo z Pi, każda postać przychodzi pojedynczo. Arduino musi je „przechowywać”, dopóki całe polecenie nie zostanie przesłane. Ostatnia litera nie tylko określa serwo, ale także informuje Arduino, że w tym poleceniu nie ma już danych.

Na koniec odłącz Arduino od komputera i podłącz go do Raspberry Pi przez zwykłe złącze USB.

Konfiguracja pi

Czas ustawić Pi. Pierwszy, zainstaluj system operacyjny Jak zainstalować system operacyjny na Raspberry PiOto jak zainstalować system operacyjny na Raspberry Pi i jak sklonować idealną konfigurację do szybkiego odzyskiwania po awarii. Czytaj więcej . Podłącz kamerę internetową i Arduino do Pi USB.

Zaktualizuj Pi:

sudo apt-get update. sudo apt-get upgrade

Zainstaluj ruch:

sudo apt-get install motion

Motion to program stworzony do obsługi przesyłania strumieniowego z kamery internetowej. Obsługuje wszystkie ciężkie podnoszenie, a nawet może nagrywać i wykrywać ruch (spróbuj budowanie systemu bezpieczeństwa przechwytywania ruchu Zbuduj system przechwytywania ruchu za pomocą Raspberry PiSpośród wielu projektów, które można budować za pomocą Raspberry Pi, jednym z najbardziej interesujących i stale użytecznych jest system bezpieczeństwa przechwytywania ruchu. Czytaj więcej ). Otwórz plik konfiguracyjny Motion:

sudo nano /etc/motion/motion.conf

Ten plik zawiera wiele opcji konfiguracji Motion. Skonfiguruj w następujący sposób:

  • daemon on - Uruchom program
  • framerate: 100 - Ile klatek lub zdjęć na sekundę przesyłać strumieniowo
  • stream_localhost off - Zezwól na dostęp przez sieć
  • szerokość 640 - Szerokość wideo, dostosuj do kamery internetowej
  • wysokość 320 - Wysokość wideo, dostosuj do kamery internetowej
  • stream_port 8081 - Port do wyjścia wideo
  • output_picture wyłączony - nie zapisuj żadnych zdjęć

Jest to dość duży plik, więc możesz chcieć użyć CTRL + W szukać linii. Po zakończeniu naciśnij CTRL + X a następnie potwierdź, aby zapisać i wyjść.

Teraz edytuj jeszcze jeden plik:

sudo nano / etc / default / motion

Ustaw „start_motion_daemon = yes”. Jest to konieczne, aby zapewnić działanie Motion.

Teraz znajdź swój adres IP:

ifconfig

To polecenie pokaże szczegóły połączenia sieciowego dla Pi. Spójrz na drugą linię adres inet. Możesz ustawić statyczny adres IP (co to jest statyczny adres IP? Co to jest statyczny adres IP? Oto dlaczego nie potrzebujeszStatyczny adres IP to taki, który nigdy się nie zmienia. Dynamiczne adresy IP się zmieniają. Wyjaśniamy, dlaczego nie potrzebujesz statycznego adresu IP. Czytaj więcej ), ale na razie zanotuj ten numer.

Teraz uruchom Motion:

uruchomienie ruchu usługi sudo

Możesz zatrzymać lub ponownie uruchomić Motion, zmieniając „start” na „stop” lub „restart”.

Przełącz się na komputer i przejdź do Pi z przeglądarki internetowej:

http://xxx.xxx.x.xx: 8081

Gdzie xxx.xxx.x.xx to adres IP Pi. Dwukropek, po którym następuje liczba, to port skonfigurowany wcześniej. Wszystko dobrze, powinieneś zobaczyć strumień z kamery internetowej! Spróbuj się poruszać i zobacz, jak wszystko wygląda. Może być konieczne dostosowanie ustawień jasności i kontrastu w pliku konfiguracyjnym. Może być konieczne ustawienie ostrości kamery internetowej - niektóre modele mają mały pierścień ostrości wokół obiektywu. Obracaj to, aż obraz będzie najostrzejszy.

Wróć do Pi, utwórz folder i przejdź do niego:

mkdir security-cam. cd security-cam /

Teraz zainstaluj Twisted:

sudo apt-get install python-twisted

Twisted to serwer WWW napisany w języku Python, który będzie nasłuchiwał poleceń, a następnie będzie działał odpowiednio.

Po zainstalowaniu utwórz skrypt w języku Python, aby wykonywać polecenia (przenosić serwomechanizmy).

sudo nano servos.rpy

Zauważ, że rozszerzenie pliku to „.rpy” zamiast „py”. Oto kod:

# Zaimportuj niezbędne pliki. importuj numer seryjny. z importu twisted.web.resource Resource # Setup Arduino z prawidłową prędkością. try: arduino = serial. Szeregowy („/ dev / ttyUSB0”, 9600) oprócz: arduino = serial. Klasa szeregowa ('/ dev / ttyUSB1', 9600) MoveServo (zasób): isLeaf = True def render_GET (self, request): try: # Prześlij wartość serial do Arduino arduino.write (request.args ['wartość'] [0]) zwróć 'Sukces' z wyjątkiem: zwróć zasoby 'Błąd' = MoveServo ()

Teraz uruchom serwer WWW:

sudo twistd -n web -p 80 --path / home / pi / security-cam /

Rozbijmy to - „-p 80” określa port (80). Jest to domyślny port dla stron internetowych. „–Path / home / pi / security-cam /” mówi Twisted, aby uruchomił serwer w określonym katalogu. Jeśli wprowadzisz jakiekolwiek zmiany w skryptach w folderze „security-cam”, musisz ponownie uruchomić serwer (CTRL + X zamknij, a następnie ponownie uruchom komendę).

Teraz utwórz stronę:

sudo nano index.html

Oto kod strony:

Skorzystaj z DIY Security Camera


Zmień „PI_IP_ADDRESS” (użyte dwa razy) na prawdziwy adres IP swojego Pi (raspberrypi.local powinien również działać, jeśli używasz najnowszej wersji Raspian). Uruchom ponownie serwer WWW, a następnie przejdź do Pi z komputera, bez potrzeby określania portu. Powinieneś być w stanie przesuwać w lewo i w prawo i zobaczyć strumień wideo:

Pi-Pan-Tilt-Camera-View-Web

Masz to. Twoja własna kamera sieciowa typu Pan and Tilt. Jeśli chcesz udostępnić swoją kamerę internetową w Internecie, pamiętaj o tym rozważ niebezpieczeństwa 5 Zagrożeń, które należy wziąć pod uwagę podczas wskazywania domowych kamer bezpieczeństwaWażne jest, aby dokładnie zastanowić się, gdzie ustawiasz kamery i na które części domu kierujesz je. Zapewnienie bezpieczeństwa jest ważne, ale także prywatność. Czytaj więcej - następnie spójrz na przekierowanie portów Co to jest przekierowanie portów i jak może mi pomóc? [MakeUseOf wyjaśnia]Czy płaczesz trochę w środku, gdy ktoś mówi ci, że masz problem z przekierowaniem portów i dlatego Twoja nowa, błyszcząca aplikacja nie działa? Twoja Xbox nie pozwala ci grać w gry, twoje pobieranie torrentów odmawia ... Czytaj więcej , aby router wiedział, gdzie wysyłać przychodzące żądania. Możesz dodać zewnętrzny zasilacz 3 zestawy akumulatorów Raspberry Pi do przenośnych projektówBateria Raspberry Pi może zmienić zwykłe Pi w komputer przenośny. Aby rozpocząć, będziesz potrzebować jednego z tych rozwiązań akumulatorowych. Czytaj więcej i adapter Wi-Fi do naprawdę przenośnego zestawu.

Czy zrobiłeś coś fajnego za pomocą kamery internetowej i pi? Daj mi znać w komentarzach, chciałbym zobaczyć!

Joe jest absolwentem informatyki na University of Lincoln w Wielkiej Brytanii. Jest profesjonalnym programistą, a kiedy nie lata latającymi dronami ani nie pisze muzyki, często można go znaleźć przy robieniu zdjęć lub tworzeniu filmów.