Ta strona używa ciasteczek (plików cookies), dzięki którym może działać lepiej. Dowiedz się więcejRozumiem i akceptuję
Promocja wydawnictwa HELIONKsiążkowe Oscary 2017! Najpopularniejsze tytuły taniej nawet o 50% »

Czy do Arduino można podłączyć kamerę? Test ArduCAM!

Recenzje 09.10.2016 Damian (Treker)

arducam_kamery_arduino2Dużo osób wykorzystujących w swoich projektach Arduino chciałoby podłączyć do niego kamerę. Temat wydaje się trudny, ponieważ platforma ta zdecydowanie nie jest do tego przystosowana.

Na szczęście producenci akcesoriów stanęli na wysokości zadania, w sprzedaży znajdziemy kilka kamer, które można podłączyć do Arduino.

W tym artykule przyjrzę się produktom z serii ArduCAM. Przypominam wszystkim, że recenzja została zrealizowana dzięki wsparciu czytelników Forbota na Patronite. To właśnie Patroni wskazali produkty, które opisuję i sfinalizowali ich zakup.

Produkt nie został przekazany do testów przez żadną firmę.

Czym jest ArduCAM?

Większość osób, która kojarzy tę nazwę, ma przed oczami moduł kamery, który podłącza się do Arduino. Jednak prawdziwa siła tkwi w shieldzie, który pośredniczy między Arduino, a kamerą.

ArduCAM jest więc uniwersalnym adapterem obsługującym różne kamery. Jego zadaniem jest odizolowanie skomplikowanej części elektronicznej i programistycznej związanej z obsługą modułu kamery, tak, aby użytkownik końcowy miał dostęp do przyjaznego i znacznie prostszego interfejsu.

Wspomniany shield współpracuje z modułami kamer 0,3 – 5MPx. Po wstępnym przetworzeniu zdjęcia, otrzymujemy plik w formacie RAW, RGB, YUV lub JPEG.

W sprzedaży dostępne jest kilka wersji i konfiguracji ArduCAM. Pisząc recenzję musiałem skupić się tylko na wycinku tej oferty. Osoby zainteresowane szczegółami odsyłam na stronę producenta.

Testowany sprzęt: shield ArduCAM

Podczas tej recenzji wykorzystywałem najnowszą wersję modułu, która jest aktualnie dostępna, czyli ArduCAM Rev.C+.  Płytka widoczna jest na poniższym zdjęciu.

ArduCAM Rev.C+

ArduCAM Rev.C+

W sprzedaży dostępne są również wersje, które na tylnej stronie mają zamontowany kolorowy wyświetlacz graficzny. Nie zdecydowałem się na zakup takiej wersji, ponieważ taki podgląd nie był mi potrzebny. Jeśli jednak ktoś uważa to za konieczny dodatek, to może zaopatrzyć się w tę drugą, odpowiednio droższą wersję.

W moim egzemplarzu zamiast LCD znalazłem „gołe” pola lutownicze:

Shield ArduCAM - strona "z wyświetlaczem LCD".

Shield ArduCAM – strona „z wyświetlaczem LCD”.

Płytka przystosowana jest do współpracy z Arduino – w związku z tym znajdziemy na niej złącza o standardowym rozmieszczeniu pinów. Cała komunikacja przebiega jednak wyłącznie z użyciem interfejsu SPI (możliwe również użycie I2C).

Nie ma więc przeciwwskazań, aby połączyć Arduino z shieldem
jedynie za pomocą kilku przewodów.

Shield ArduCAM - widok od góry.

Shield ArduCAM – widok od góry.

Z najważniejszych rzeczy należy wyróżnić:

  • złącze do modułu kamery (na samej górze),
  • przycisk pozwalający na wykonywanie zdjęć w trybie ręcznym (lewy górny róg),
  • dodatkowe wyprowadzenie wszystkich sygnałów Arduino (lewa krawędź),
  • gniazdo karty microSD (prawa krawędź).

Dodatkowo na płytce znajdziemy 2 diody. Pierwsza została umieszczona na warstwie elementów. Sygnalizuje ona obecności napięcia 3,3V. Kolejna dioda umieszczona po drugiej stronie (pod kartą pamięci) informuje nas o trwającym zapisie na microSD.

Wszystkie porty I/O modułu ArduCAM mogą pracować
z poziomami logicznymi napięć 5V oraz 3,3V.

Na plus na pewno należy zaliczyć sporą liczbę dodatkowych punktów na PCB, w które można się wpiąć, aby dostać sygnały Arduino oraz zasilanie.

Testowany sprzęt: moduły kamer – 2MPx oraz 5MPx

Do powyższego shielda dokupiłem dwa moduły kamer. Jak widać, różnią się one znacznie swoimi gabarytami. Jak pewnie większość z Was przeczuwa jakość zdjęć będzie również inna.

Porównanie gabarytów dwóch kamer.

Porównanie gabarytów dwóch kamer.

Kamera ArduCam OV2640 2MPx

Pierwszy z nich, to moduł ArduCam OV2640 2MPx. Za jego pomocą możliwe jest wykonywanie zdjęć o maksymalnej rozdzielczości 1600×1200 px (do 15 FPS). Producent chwali się również, że możliwe jest osiągnięcie 60fps, ale… przy rozdzielczości CIF (352x288px).

Całość jest bardzo mała i wygląda na delikatną:

Moduł kamery jest przyklejony do płytki, a taśma przylutowana jest bezpośrednio do PCB. Niestety producent nie zastosował złącza. Soczewka „wygląda” jakby pozwalała na regulację ostrości, jednak jest zablokowana w jednej pozycji – prawdopodobnie klejem.

Kamera OV5642 5MPx

Druga kamera, to moduł OV5642 5MPx z odkręcanym obiektywem HQ CS mount. Już na pierwszy rzut oka egzemplarz ten daje wrażenie znacznie solidniejszego od poprzedniego. Możliwości tego modułu są również znacznie większe. Deklarowana wydajność przetwornika:

  • 2592 x 1944 – 15 fps,
  • 1920 x 1080 – 30 fps,
  • 1280 x 720 – 60 fps,
  • 640 x 480 – 60 fps,
  • 320 x 240 – 120 fps.
Moduł kamery OV5642 5MPx.

Moduł kamery OV5642 5MPx.

Spostrzegawczy czytelnicy zauważą w tym momencie zapewne, że rozdzielczość nadrukowana na obiektywnie, to 3 MP. Jednak spokojnie, przetwornik ma 5MPx. Po prostu wykorzystano tutaj standardowy obiektyw od kamer CCTV 3MPx.


Skoro mowa o obiektywie, to warto zwrócić uwagę na dwie śrubki. Pierwsza (srebrna) blokuje możliwość ręcznej zmiany ostrości. Po jej poluzowaniu możemy delikatnie kręcić obiektywem:

Po poluzowaniu drugiej śrubki (czarnej) możliwe jest wykręcenie obiektywu z podstawy. Pozwala to na dostanie się bezpośrednio do przetwornika kamery:

Odkręcony obiekty OV5642 5MPx.

Odkręcony obiekty OV5642 5MPx.

Zdjęć takich elementów nigdy za wiele, dlatego jeszcze jedno, ostatnie zbliżenie!

Przetwornik kamery OV5642 5MPx.

Przetwornik kamery OV5642 5MPx.

Oczywiście „po drugiej stronie” kamery znajdziemy niezbędną elektronikę oraz złącze z pinami ułożonymi dokładnie tak samo, jak przy wcześniejszym module:

Elektronika oraz złącze modułu OV5642 5MPx.

Elektronika oraz złącze modułu OV5642 5MPx.

Dostępność innych modułów kamer

Oczywiście z opisywanym shieldem ArduCAM połączyć można znacznie więcej kamer. Wybierając moduł do swojego zastosowania warto sprawdzić dokumentację każdego z nich, aby dobrać taki, który najlepiej sprawdzi się w danym projekcie – różnice mogą być bardzo duże. 

W chwili obecnej do shielda można podłączyć następujące kamery:

  • OV7670
  • MT9D111
  • OV7675
  • OV2640
  • OV3640
  • OV5642
  • OV7660
  • OV7725
  • MT9M112
  • MT9V111
  • OV5640
  • MT9M001
  • MT9T112
  • MT9D112

„Słowo” przed programowaniem ArduCAM

Poniżej opisałem moje przejścia z powyższym sprzętem. Zaznaczam jednak, że nie jestem znawcą tematów związanych z kamerami, transmisją obrazu, czy jego kompresją. W związku z tym zawierzyłem producentom, którzy pracują nad tym produktem od kilku lat.

Uznałem, że jeśli dostarczają oni kod zajmujący się przykładowo zapisem obrazu/filmu na kartę, to jest on na tyle dobry, że nie powinienem się zagłębiać w jego edycję i optymalizację.

Do produktu podszedłem jak typowy użytkownik Arduino,
który kupuje shield i oczekuje, że wszystko będzie działać poprawnie.

Biblioteka ArduCAM

Jak to (na szczęście) bywa w przypadku akcesoriów do Arduino producent udostępnia bibliotekę, która sprawia, że korzystanie z modułów jest przyjemniejsze. Aktualne biblioteki udostępniane są na GitHubie producenta. Pobrane archiwum rozpakowujemy, a zawartość umieszczamy w katalogu z bibliotekami. U mnie był to folder:

C:\Users\Damian\Documents\Arduino\libraries

Po poprawnym przekopiowaniu biblioteki, w powyższym folderze powinniśmy mieć nowy katalog, nazwany ArduCam, którego wnętrze będzie zgodne z poniższym zrzutem ekranu.

Instalacja biblioteki od ArduCAM.

Instalacja biblioteki od ArduCAM.

Po restarcie Arduino IDE w menu z przykładami znajdziemy ogrom nowych programów. Jest ich naprawdę dużo, co na początku może być mylące.

Po chwili staje się jednak jasne, że w sumie jest to kilka powielanych programów, które są przystosowane do pracy z różnymi modułami kamer.

Niektóre z dostępnych przykładów.

Niektóre z dostępnych przykładów.

Pierwsze uruchomienie – kamera „UART”

Gdy zaczynałem testy tej platformy wgrałem najpierw prosty kod, który zapisywał zdjęcia na karcie. Nie było to zbyt ciekawe i widowiskowe – zwykły aparat cyfrowy. Dlatego Wam proponuję zacząć od ciekawego dema, które łatwo przegapić.

Z użyciem ArduCAM możemy przesyłać
zdjęcia do komputera przez UART „na żywo”.

Zanim do tego przejdziemy warto jednak skompletować sprzęt. W tym celu w shield wpinamy moduł kamery. Na koniec dodajemy Arduino.

Trzeba przyznać, że takie ułożenie Arduino jest dość niecodzienne, ale w tym rozwiązaniu akurat się sprawdza. Wszystko zostało dość dobrze wymierzone. Zarówno gniazdo zasilania, jak i USB dosłownie na milimetry omija elementy na shieldzie.

W przypadku różnego rodzaju klonów Arduino nawet minimalne przesunięcie
tych złącz może doprowadzić do zwarcia!

Mając gotową część sprzętową możemy zabrać się za testy. W tym celu uruchamiamy demo, które w nazwie ma symbol naszej kamery oraz „Video Streaming”. Czyli w tym przypadku będzie to:

ArduCAM_Mini_OV2640_Video_Streaming

Dla osób, które nie instalują biblioteki wklejam poniżej kod przykładu, aby mogli go przejrzeć:

Po wgraniu programu pozornie nic się nie dzieje. Jednak wystarczy teraz uruchomić aplikację na komputerze, która znajduje się w następującym katalogu:

[…]Documents\Arduino\libraries\ArduCAM\examples\host_app\ArduCAM_Host_V2.0_Windows

Po jej uruchomieniu ujrzymy zestaw poleceń pozwalających na sterowanie kamerą z poziomu PC.

Sterowanie kamerą z poziomu PC.

Sterowanie kamerą z poziomu PC.

Korzystając z tej aplikacji możemy połączyć się z modułem przez sieć (jeśli mamy taką wersję) lub przez port COM (tak jak w opisywanym rozwiązaniu). Warto zwrócić uwagę na prędkość transmisji, która wynosi aż 921600.

Jak na Arduino i UART, to bardzo dużo.

Wybieramy odpowiedni port COM oraz moduł kamery (z pola pix), następnie łączymy się z płytką. Od tej pory mamy możliwość robienia zdjęć kamerą i przesyłania ich przez UART do komputera. Aplikacja pozwala również na zmianę rozdzielczości z jaką pracuje kamera.

Im mniejszą rozdzielczość wybierzemy
tym zdjęcie będzie przesyłane szybciej.

Kilka przykładowych zdjęć wraz z podaną rozdzielczością (bez żadnej obróbki):

W tym momencie wypadałoby ocenić jakość kamery – w końcu mamy pierwsze zdjęcia. Nie ma co się oszukiwać. Zdjęcia są słabe. Można zarzucić, że pochmurny dzień, to nie są dobre warunki do testowania kamer – jednak recenzja w idealnym środowisku byłaby raczej mało rzetelna.


Oczywiście ściąganie zdjęć przez UART ma też swoje uroki. Po pierwsze trwa to długo. Jednak, to nie jest moim zdaniem ważne. Interfejs ten nie jest przystosowany do takich rozwiązań, więc to nic dziwnego. Wręcz cieszyłbym się z takiej możliwości – cud, że to działa. Przykładowe zgranie największego z powyższych zdjęć trwało tyle, co na poniższej animacji:

Zgrywanie przykładowego zdjęcia przez UART.

Zgrywanie przykładowego zdjęcia przez UART.

Po drugie UART z taką prędkością to igranie z ogniem i proszenie się o zakłócenia. W związku z czym czasami zamiast zdjęcia możemy otrzymać kawałek sztuki nowoczesnej, jak tutaj:

Wariacja na temat widoku za oknem!

Wariacja na temat widoku za oknem!

Nadawanie wideo przez UART „na żywo”

Warto zwrócić również uwagę na tryb wykonywania zdjęć ciągłych. Jeśli obniżymy znacznie rozdzielczość, to właściwie będziemy mogli transmitować obraz „na żywo” przez UART. Przykład jest widoczny poniżej – proszę nie powiększać, bo to maksymalna rozdzielczość, dla której obraz był płynny… Jak widać również tutaj wkradło się kilka zakłóceń.

ArduCAM LIVE

ArduCAM LIVE

Dla trybu ciągłego polecam odhaczyć opcje zapisu zdjęć na dysku.

Pierwsze testy zakończyły się sukcesem – shield i kamera działają. Jakość zdjęć jest jednak słaba (przynajmniej jak na te czasy) kilka lat temu byłoby to hitem! Dlatego dość szybko porzuciłem ten mały moduł i zabrałem się za drugą kamerę z obiektywem.

Eksperymenty z modułem 5MPx

Po pierwszych próbach z małą kamerą przyszła pora na cięższego zawodnika. Drugi moduł jest zdecydowanie większy. Wręcz wygląda dziwnie w połączeniu z resztą.

Podłączenie większej kamery do Arduino.

Podłączenie większej kamery do Arduino – OV5642 5MPx.

Ręczna edycja biblioteki ArduCAM

Przed przejściem do testów konieczna jest mała zmiana w bibliotece. Moim zdaniem zostało to rozwiązane źle. Biorąc pod uwagę, że producent dostarcza tak wiele rozbudowanych kodów dedykowanych konkretnym kamerom całość powinna być „mądrzejsza”.

Jeśli uruchomimy program testowy dla tej kamery, czyli np.:

ArduCAM_Mini_OV5642_Video_Streaming

To… nie damy rady go skompilować i wgrać. Konieczna jest ręczna zmiana w bibliotece. Dla osób, które nie mają styczności z Arduino przypomnę, że raczej nie spotyka się tam takich rozwiązań. Nawet sam edytor w Arduino IDE nie pozwala uruchomić plików z rozszerzeniem „.h”.

Aby program zaczął działać, koniecznie trzeba otworzyć poniższy plik w notatniku i odkomentować linię z kamerą, którą chcemy użyć.

[..] Documents\Arduino\libraries\ArduCAM\memorysaver.h

Czyli w tym przypadku będzie to:

Gdy edytujemy plik, zapiszemy go i ponownie skompilujemy program, to cały proces przebiegnie już bez problemów. Wróćmy więc do testów!


W przypadku tego modułu kamery podgląd przez opisywaną wcześniej aplikację na PC okazuje się niezbędny. Bez niego ustawienie ostrości trwałoby wieczność, a tak możemy ten proces wykonać szybko i bezboleśnie (z podglądem „na żywo”). Najpierw zdjęcia zbliżone do wcześniejszych:

Regulacja ostrości pozwala jednak również na zrobienie zdjęć, które były poza zasięgiem małego modułu. Dla przykładu zbliżenie na monetę i ołówek:

Zdjęcie wykonane modułem OV5642 5MPx - bez żadnej obróbki.

Zdjęcie wykonane modułem OV5642 5MPx – bez żadnej obróbki.

Oczywiście jakość nie jest idealna, jednak daje już większe pole do manewru. Na pewno ten moduł pozwoli osiągnąć ciekawsze efekty od poprzedniego.

Zastosowanie: zdjęcia poklatkowe (timelapse)

Gdy podstawy obsługi kamer były za mną postanowiłem sprawdzić ArduCAMa w praktyce. Dobrym zastosowaniem może być stworzenie urządzenia do robienia zdjęć z określonym interwałem. Dzięki temu stosunkowo łatwo można później stworzyć filmy poklatkowe.

Po chwili pisania programu coś mnie tknęło i zajrzałem jeszcze raz do kodów przykładowych. Jak się okazało, mój pomysł nie był oryginalny, ponieważ znalazłem tam program realizujący dokładnie takie zadanie. Mowa o przykładzie:

ArduCAM_Mini_5MP_TimeElapse2SD

Dla osób, które nie instalują biblioteki wklejam poniżej kod przykładu, aby mogli go przejrzeć:

W praktyce kod odpowiedzialny jest za zrobienie zdjęcia (co określony czas) i zapisanie go na SD. Biorąc pod uwagę, że zapis obrazu w najlepszej jakości trwał około 3 sekundy postanowiłem robić nowe zdjęcie, co 6 sekund.

Po uruchomieniu programu przez UART otrzymujemy informacje o aktualnym postępie:

Wiedząc, że program działa odłączyłem komputer, a całość podłączyłem do zasilacza. Taki zestaw pozostawiłem na około 14 godzin.

Po powrocie na karcie SD czekało na mnie 8300 zdjęć.

Problemy z zapisem na kartę microSD

W tym momencie pojawił się problem. Spora część zdjęć miała wady. Na 8300 zdjęć ponad 1800 zostało źle zapisane – tak, że nawet nie dało się ich otworzyć.

Inna część miała spore artefakty. Niestety do tej pory nie znalazłem przyczyny. Nie widać żadnej zależności dlaczego niektóre zdjęcia zapisały się błędnie. Zdarzało się, że 1000 plików z rzędu było poprawnych, a były sytuacje, gdy co drugie było uszkodzone. Oczywiście formatowanie karty lub używanie innej nie przynosiło widocznej poprawy.

Przykłady uszkodzonych zdjęć, które dało się otworzyć:

Zdjęcia do filmu poklatkowego zrobione dzięki Arduino

Z karty usunąłem ręcznie 1800 błędnych plików, te które dało się otworzyć (z artefaktami) pozostawiłem. Całość złożyłem następnie na komputerze w film poklatkowy (timelapse). Widać na nim popołudnie, noc oraz ranek kolejnego dnia. 

Zdjęcia zostały wykorzystane bez żadnej obróbki
stąd takie proporcje oraz okresowe problemy z obrazem.

Moim zdaniem w takim zastosowaniu ArduCAM sprawdził się całkiem dobrze. Przyznam, że jakość zdjęć wykonanych w nocy zaskoczyła mnie zdecydowanie na plus.

Tutaj na pewno drzemie większy potencjał – szczególnie, jeśli chcielibyśmy
robić długie odstępy czasowe między zdjęciami.

ArduCAM w roli fotopułapki

Drugim pomysłem, który miałem na wykorzystanie tych kamer to budowa fotopułapki. Teoretycznie łącząc kamerę z alarmem powinniśmy złapać intruza na zdjęciu. Podczas testu dołączyłem do systemu czujnik PIR – zgodnie z instrukcjami z kursu Arduino.

W tym zastosowaniu było kluczowe, jak kamera poradzi sobie z robieniem zdjęć obiektów, które się poruszają. Cóż, tym razem nie miałem wyjścia i musiałem stanąć przed kamerą. Kilka przykładów tego, co znalazłem na karcie SD widoczne jest poniżej (zdjęcia robione z różną rozdzielczością):

Jak widać również tutaj zdarzyły się artefakty. Pierwsze 3 zdjęcia wykonane zostały, gdy szedłem w stronę kamery. Natomiast ostatnie powstało, gdy przechodziłem na skos. Jakoś zdjęć chyba należy opisać jak „typowe zdjęcie z monitoringu, na którym ledwo coś widać„. Nie ma tragedii, ale momentami może być ciężko z rozpoznaniem intruza.

ArduCAM – własne programy

W tej recenzji nie ma zbyt wiele informacji na temat samych programów. Stało się tak dlatego, że producent dostarcza dość rozbudowaną bibliotekę przykładów. Jak łatwo zauważyć przeglądając kody programów są one długie i rozbudowane. Dlatego w każdym z opisanych przypadków korzystałem z dostarczonych programów demonstracyjnych.

Dzięki nim można stworzyć naprawdę wiele różnych projektów – wystarczy dopisać tylko kilka swoich linijek, aby zmienić kluczowe ustawienia lub wykonać zdjęcie w konkretnym momencie.

Biblioteka nie jest „aż tak” przyjazna, aby każdy
mógł wystartować od pustego programu.

Oczywiście można programy pisać samemu od zera, jednak jeśli ktoś jest w stanie to zrobić, to nie szukałby informacji w tej recenzji. Inaczej mówiąc, jest to zagadnienia dla dość zaawansowanych programistów Arduino. Początkujący bez większego stażu raczej się pogubią.

ArduCAM – wykrywanie obiektów, analiza obrazu?

Jeśli liczycie, że ArduCAM pozwoli rozbudować projekty o analizę obrazu, to niestety muszę Was rozczarować. Opisywane produkty absolutnie nic w tym zakresie nie robią.

Nie znajdziecie tutaj funkcji czytającej kody kreskowe, czy QR.

Wiem, że dla części czytelników jest to jasne, ale dla formalności wolę informację tę podkreślić. ArduCAM, czyli shield i moduły kamer, to świetne… aparaty fotograficzne, ale nic więcej. Moduły te nie przyspieszają analizy obrazu, ani jej nie wspomagają. Jedynym zadaniem ArduCAM jest po otrzymaniu stosownego sygnału wykonanie zdjęcia i przekazanie go do Arduino.

Wykrywanie obiektów na drodze.

Wykrywanie obiektów na drodze.

Tak, jak pisałem we wstępie, Arduino nie jest platformą przystosowaną do pracy z obrazem i raczej nie będzie. Sam zapis danych na kartę SD trwa już bardzo długo. Oczywiście można by było brać zdjęcia z karty i obrabiać je na Arduino, jednak wydajność tego rozwiązania byłaby nikła. Co więcej oczywiście nie mielibyśmy tutaj żadnej pomocy ze strony ArduCAMa, który jest „tylko aparatem.”

Rozwiązanie to nie różni się mocno od tego, gdybyśmy do zwykłej „cyfrówki” przykleili serwomechanizm, który dzięki Arduino wciskałby spust migawki…

Osoby zainteresowany analizą obrazu powinny zainteresować się np. PixyCAM. Nie miałem okazji testować tego produktu, ale wygląda na przyjaźniejszy w tej materii.

ArduCAM – czy tylko do Arduino?

Projekt pierwotnie dedykowany był do Arduino. Jednak oczywiście można go również podłączyć do innych platform. Wystarczy obsługa odpowiednich interfejsów. Producent ArduCAMa deklaruje, że opisywane rozwiązania będą również działały z Raspberry Pi, Beagle Bone Black, czy ESP8266.

Moim zdaniem to ratuje trochę ten produkt, ponieważ istnieje szansa, że po podłączeniu kamer do znacznie wydajniejszych platform uda się zastosować ArduCAMa w ciekawych projektach.

Trzeba pamiętać, że wysoka wydajność kamery nam nie pomoże, jeśli nie zdążymy w odpowiednim czasie pobierać obrazu z buforów i zapisywać go na karcie pamięci.

Podsumowanie i ocena

Oczywiście nie sprawdziłem wszystkich trybów pracy ArduCAMa. Jest tego na tyle dużo, że tekst byłby zdecydowanie za długi. W przypadku tej recenzji głównie chciałem pokazać, że takie rozwiązanie istnieje i można je uruchomić stosunkowo szybko. Jeśli macie pytania na temat konkretnych trybów/ustawień to czekam na pytania.

Na ten moment największą wadą modułu jest chyba zapis na kartę SD,
który (co było widać) szwankuje dość często.

Warto wrócić jeszcze do tytułowego pytania: „Czy do Arduino można podłączyć kamerę?”. Jak widać oczywiście można ją podłączyć – pytanie tylko po co? Jedyne zastosowanie, które w tej chwili przychodzi mi do głowy to łatwe wykonywanie zdjęć z dużym interwałem.

Jakie macie propozycje na użycie tych modułów – dajcie znać w komentarzach!

Na sam koniec jeszcze raz dziękuję wszystkim Patronom, którzy przyczynili się do powstania tej recenzji. Jeśli ktoś po tej publikacji zdecyduje dołożyć swoją cegiełkę do kolejnej recenzji, to zapraszam na profil Forbota na Patronite, gdzie można znaleźć szczegóły.

zostan_patronem

Autor: Damian (Treker) Szymański

Dużo osób wykorzystujących w swoich projektach Arduino chciałoby podłączyć do niego kamerę. Temat wydaje się trudny, ponieważ platforma ta zdecydowanie nie jest do tego przystosowana. Na szczęście producenci akcesoriów stanęli na wysokości zadania, w sprzedaży znajdziemy kilka kamer, które można podłączyć do Arduino. W tym artykule przyjrzę się produktom z serii ArduCAM. Przypominam wszystkim,…

ArduCAM - kamera do Arduino

Dostarczone przykłady
Biblioteka Arduino
Jakość zdjęć - moduł 3MPx
Jakość zdjęć - moduł 5MPx
Niezawodność
Łatwe uruchomienie
Cena vs. jakość i możliwości

Można

Jakość zdjęć nie jest idealna, jednak w niektórych zastosowaniach ArduCAM może się sprawdzić.

Ocena czytelników: 2.77 ( 17 - ilość głosujących)
62

Powiadomienia o nowych, darmowych artykułach!

Komentarze

deshipu

15:40, 09.10.2016

#1

W sumie, to chyba porównywalne rezultaty, tylko dużo taniej, da się uzyskać jednym z tych breloczków z kamerą z Chin, tylko trzeba rozmontować przycisk migawki i zamiast niego podłączyć pin z Arduino. No i nie będzie problemów z zapisem na kartę, bo kamera zrobi to bezpośrednio...

Elvis

15:53, 09.10.2016

#2

Można też podłączyć raspberry oraz kamerkę - w przypadku zero wyjdzie trochę taniej niż ArduCAM. No i chociaż zapis na sd będzie działał prawidłowo.

Ogólnie artykuł bardzo fajny - potwierdza ogólnie panującą opinię, że co prawda można podłączyć kamerkę do Arduino, ale raczej nie ma sensu.

Treker
Autor wpisu
Administrator

17:52, 09.10.2016

#3

deshipu, dokładnie - jedyna różnica, że tutaj masz większą swobodę w doborze kamery oraz obiektywu. Do tego możesz programowo zmieniać rozdzielczość zdjęć.

Elvis, ja właśnie bardzo chętnie poczytam pomysły innych osób, bo może zwyczajnie nie wiem jak wykorzystać te moduły... Dla mnie jest to raczej sztuka, dla sztuki. Zdecydowanie ciekawsza jest już wspomniana w artykule PixyCAM.

Elvis

19:00, 09.10.2016

#4

Wygląda na to że PixyCAM wykorzystuje procesor oparty o Cortex-M4. To nadal trochę mało jak na Computer Vision, ale jak widać lepiej niż stary dobry AVR. Inna sprawa, że CM4 jest też w STM32F4 - może w ramach ciekawostki warto byłoby podłączyć opisywane kamerki do STM32?

Chumanista

20:31, 09.10.2016

#5

Kolejny moduł kamerki, znowu 100x szybszy układ podpięty do biednej Atmegi.

deshipu

20:32, 09.10.2016

#6

W OpenMV też jest Cortex-M4 i jakoś daje radę, przynajmniej o tyle, o ile się dotychczas bawiłem. Kluczem w wizji komputerowej jest niska rozdzielczość (bo i tak rozpoznajemy zazwyczaj duże elementy) i brak kolorów jeśli nie są istotne.

Treker
Autor wpisu
Administrator

21:18, 09.10.2016

#7

Elvis napisał/a:

Inna sprawa, że CM4 jest też w STM32F4 - może w ramach ciekawostki warto byłoby podłączyć opisywane kamerki do STM32?

Teraz niestety nie znajdę czasu, aby przepisać całość na STM32, ale będę o tym pamiętał. Może uda się wrócić do tego tematu. Grunt, aby uświadomić większej liczbie osób, że w przypadku Arduino kamera ma nikły sens. Chyba, że ktoś chce zrobić timelapsa rosnącego trawnika :)

deshipu

21:28, 09.10.2016

#8

Treker napisał/a:

Elvis napisał/a:

Inna sprawa, że CM4 jest też w STM32F4 - może w ramach ciekawostki warto byłoby podłączyć opisywane kamerki do STM32?

Teraz niestety nie znajdę czasu, aby przepisać całość na STM32, ale będę o tym pamiętał. Może uda się wrócić do tego tematu. Grunt, aby uświadomić większej ilości osób, że w przypadku Arduino kamera ma nikły sens. Chyba, że ktoś chce zrobić timelapsa rosnącego trawnika :)

A mi się wydaje, że sens ma, tylko musisz mieć możliwość programowania obydwu płytek -- wszystkie obliczenia i algorytmy wizji robisz na mocnej płytce z kamerą i odpowiednio do wyników ustawiasz piny GPIO albo przesyłasz sygnał przez I²C czy innego seriala, a dalej programujesz swoje Arduino do reagowania na to tak, jak potrzebujesz. W ten sposób możesz oba systemy z łatwością debugować oddzielnie, nie masz problemów z tym, że biedne Arduino nie ma czasu na robienie czegokolwiek innego, no i nadal możesz większość logiki pisać w znanym sobie środowisku.

Takie "inteligentne czujniki" mają według mnie sporą przyszłość. Na podobne podejście na przykład zdecydował się Bosch z jednym ze swoich czujników położenia (akcelerometr+żyroskop+kompas i do tego wbudowany mikrokontroler robiący to całe całkowanie i filtry Kalmana) -- na wyjściu dostajemy po prostu pozycję.

Zobacz powyższe komentarze na forum

FORBOT Damian Szymański © 2006 - 2017 Zakaz kopiowania treści oraz grafik bez zgody autora. vPRsLH.

Podsumowanie tygodnia o robotyce – #3

Zastanawialiście się czym jest sztuczna inteligencja lub jak w kosmosie...

Zamknij