Zaczynamy od aparatu na Malina! Dzięki niemu możliwe jest między innymi fotografie, przesyłanie obrazu przez sieć, a nawet wykrywanie ruchu. W przypadku początkujących wielu zastanawia się, jak to zrobić, ponieważ może się wydawać, że jest to dla nich bardziej złożony poziom. Ale w tej sekcji dowiesz się, że tak nie jest.

Do RPi można podłączyć wiele różnych kamer. Skupiamy się na użyciu dedykowanej kamery malinowej, czyli Raspberry Pi Camera HD v2, najbardziej rozpowszechnionej.

Po pierwsze, kilka słów o parametrach technicznych aparatu:

· Maksymalna rozdzielczość: 8 Mpx (3280x2464),

· Tryby wideo: 1080p30 (Full-HD), 720p60, 640x480p90 (VGA),

· Interfejs: CSI,

· Waga: 3 g,

· Wymiary: 25 x 24 x 9 mm.

Kamera HD Raspberry Pi wykorzystuje CSI (Camera Serial Interface), który jest dedykowany specjalnie dla kamer. Dzięki temu cały zestaw nie ładuje magistrali USB. Ponadto interfejs ten obsługuje akcelerator graficzny (GPU) wbudowany w Raspberry Pi.

10.1. Podłączenie kamery

Zaczynamy od podłączenia kamery, która jest ograniczona tylko do wstawienia taśmy:

· W Raspberry Pipodłącz taśmę do złącza opisanego jako CAMERA. Taśma powinna patrzeć na srebrne szpilki w kierunku złącza HDMI.

· Umieść taśmę w aparacie tak, aby srebrne styki były skierowane w stronę obiektywu.

Zwróć uwagę tylko na położenie styków srebra wskazanych powyżej, a nie na bok taśmy, w której znajduje się tekst. Podczas podłączania taśmy wykonaj następujące czynności: podnieś blokadę złącza (rodzaj płyty), włóż taśmę i naciśnij blokadę złącza. Nie musisz się martwić o pozycję kamery, obraz można obracać programowo.

10.2. Robienie zdjęć

Zaczynamy od podstawowej funkcji, która polega na robie zdjęcia. Przede wszystkim, jak zawsze, przejdziemy do menu ustawień i aktywujemy aparat.

Aby uchwycić zdjęcia, użyjemy programu raspistill. Podstawowe wykorzystanie programu do przechwytywania obrazu jest proste. Wystarczy wpisać polecenie:

raspistill - lub test.jpg

Zamiast testu.jpg może nadać dowolną nazwę pliku. Zdjęcie zostanie zrobione dokładnie 5 sekund po podaniu powyższego polecenia. Test.jpg plik zostanie zapisany w katalogu, z którego uruchamiamy program raspistill.

Jeśli mamy podłączony monitor lub użyjemy VNC do podglądu obrazu, po prostu wyszukaj zdjęcie i kliknij go dwukrotnie, aby zobaczyć zdjęcie.

Jeśli zdjęcia są rozmazane, możemy zmienić ostrość, obracając obiektyw aparatu. Operacja powinna być wykonywana bardzo płynnie ręcznie lub za pomocą małego narzędzia. Należy zachować ostrożność podczas regulacji, ponieważ łatwo jest zarysować obiektyw!

10.3. Polecenia

Oto kilka przydatnych poleceń, które warto znać:

· Wyłącz podgląd. Wyłącz niechciany podgląd, dodając opcję -n:

raspistill -n -o test.jpg

· Zmień czasomierz przechwytywania. Można go zmienić za pomocą opcji -t, po której następuje czas w milisekundach:

raspistill -n -o test.jpg -t 100

Uwaga: Aby uniknąć problemów z jakością i tak dalej, zaleca się użycie co najmniej 100ms.

· Obrót obrazu. Wystarczy użyć parametru -rot, który obraca obraz pod wybranym kątem, który będzie wielokrotnością 90 stopni:

raspistill -n -o test.jpg -t 100 -rot 180

· Odbicie pionowe lub poziome. Mamy polecenia do odbicie poziome ( -hf ) i pionowo ( -vf ):

raspistill -n -o test.jpg -t 100 -hf

raspistill -n -o test.jpg -t 100 -vf

· Zmień rozdzielczość. Nie zawsze jesteśmy zainteresowani najwyższą rozdzielczością, możemy zaoszczędzić dużo miejsca, zmniejszając rozmiar pobranego obrazu. Ustaw szerokość za pomocą opcji -w i wysokości za pomocą -h . Zdjęcie ze standardową rozdzielczością VGA będzie:

raspistill -n -o test_VGA.jpg -t 100 -w 640 -h 480

· Dodaj datę i godzinę do pliku. Program raspistill może działać automatycznie, na przykład okresowo lub po wykryciu określonego zdarzenia. W takim przypadku wygodnie byłoby zapisać wiele plików zamiast zastępować ten sam test.jpg za każdym razem. Program raspistill ma dwie opcje korzystania z bieżącego czasu w nazwie pliku.

Opcja -dt dodaje bieżącą datę i godzinę do nazwy pliku. Podczas gdy parametr -ts dodaje tak zwany sygnatura czasowa, czyli liczbę sekund od 1 stycznia 1970 r. (jest to tradycyjna metoda renderowania czasu Uniksa). Aby skorzystać z tych możliwości, w nazwie pliku musimy wstawić znacznik % d, który zostanie zastąpiony datą zrobienia zdjęcia.

W dniu 20.10.2020 r. możemy wydać następujące dwa polecenia do testowania:

raspistill -n -o test_%d.jpg -t 100 -dt #Se zapisane jako test_10202041040.jpg

raspistill -n -o test_%d.jpg -t 100 -ts #Se zapisane jako test_1603196029.jpg

· Inne ustawienia. Istnieje wiele więcej poleceń. Najważniejsze informacje można znaleźć w opisie, który pojawia się po wywołaniu polecenia raspistill bez żadnych dalszych parametrów, a następnie wszystkie informacje i polecenia pojawią się na liście. Za pomocą opisanych tam atrybutów można również zmieniać parametry, takie jak ISO, balans bieli, jasność i kontrast.

10.4. Przesyłanie strumieniowe obrazów za pomocą ruchu

Inną równie interesującą aplikacją dla Raspberry Pi kamery jest pakiet Motion, który pozwala między innymi na przesyłanie obrazu przez sieć. Ponadto może być również używany do śledzenia ruchu obiektów.

Zaczynamy od zainstalowania programu, wpisując komendę:

sudo apt zainstalować ruch

Zainstalowana wersja domyślnego pakietu Motion nie ma wbudowanej obsługi naszej kamery, więc musimy teraz zainstalować odpowiedni sterownik: Video4Linux (V4L). Aby to zrobić, wydajemy następujące polecenie, zauważając, że przedostatni znak jest małe litery "L", a nie liczba "1":

sudo modprobe bcm2835-v4l2

Teraz w katalogu /dev pojawi się nowe urządzenie, które będzie odpowiadać kamerze internetowej: /dev/video0.

Jest to standardowy interfejs używany przez kamery w Systemie Linux.

Zainstalowany pakiet Motion ma duże możliwości i wiele dostępnych opcji. Domyślny plik konfiguracyjny to /etc/motion/motion.conf . Dostęp do katalogu /etc wymaga uprawnień administratora, więc edytuj plik za pomocą polecenia:

sudo nano /etc/motion/motion.conf

Po uruchomieniu pliku musimy wprowadzić kilka ważnych zmian. Po pierwsze, szukamy linii, w której stream_localhost. Domyślnie jest włączony, zmieniamy go na wyłączony.

Skrót CTRL + W umożliwia wyszukiwanie tekstu nano.

Zapisujemy plik i zostawiamy go. Następnie uruchamiamy pakiet Motion za pomocą polecenia:

sudo ruch

Po uruchomieniu programu uruchamiamy przeglądarkę internetową na naszym komputerze. Na pasku adresu wprowadź adres IP z portem 8081 (na przykład http://192.168.0.250:8081/). Po pewnym czasie powinniśmy zobaczyć małą transmisję z naszej kamery internetowej (1 FPS).

Naciśnij klawisze CTRL+C, aby zakończyć program konsoli.

Aby zwiększyć liczbę klatek na sekundę (klatki na sekundę) możemy zmodyfikować następujące wiersze, które domyślnie są ustawione na 20:

· liczba klatek na sekundę: współczynnik liczby klatek na sekundę

· stream_maxrate: maksymalna liczba klatek na sekundę w strumieniu

Aby zwiększyć rozdzielczość:

· szerokość: szerokość (ustawiamy ją na 640),

· wysoka: wysokość (ustawiamy ją na 480).

10.5. Wykrywanie ruchu w RPi

Jak widać, zamieniamy Raspberry Pi w kamerę internetową. Warto pamiętać, że pakiet Motion znacznie przewyższa możliwości typowych kamer. Pozwala wykrywać ruch, generować zdarzenia po wykryciu intruza, automatycznie robić zdjęcia lub filmy, zgłaszać zdarzenia itp.

Więcej informacji na temat programu można znaleźć na stronie internetowej projektu: https://motion-project.github.io/

W tym teście można uruchomić na przykład opcję odpowiedzialną za śledzenie ruchu. Aby to zrobić, wystarczy włączyć opcję w pliku konfiguracyjnym, który jest nazywany locate_motion_mode (zmieniamy z off na on). Ruchome elementy będą teraz oznaczone prostokątem na przesłanym obrazie. Aby element został zarysowany czerwonym prostokątem, locate_motion_style musi być również zmieniona na redbox .