Skocz do zawartości

Mini kamera


Dregorio

Pomocna odpowiedź

Zastanawiam się ile jest sensu w samodzielnym zaprogramowaniu protokołu dla kamerki, w ramach rozwoju? No bo jak np. w raspberry pi kamerkę podłączymy i wszystko działa, ale ja chciałbym wiedzieć jak to działa na niższym poziomie. Problem polega na tym, że nie ma mi kto drogi wskazać 😛

Link do komentarza
Share on other sites

No cóż, w tym wypadku wypada zacząć od dokumentacji jądra Linuksa, w szczególności pisania do niego sterowników. Jest na ten temat sporo oficjalnej dokumentacji. Jak już się z tym uporasz, to przychodzi kolej na tę trudną część, czyli gadanie ze sprzętem. Tutaj Broadcom nie udostępnił praktycznie żadnej dokumentacji, zatem przyjdzie ci reverse-engineerować wszystko. Generalnie, poziom trudności Nightmare dla doświadczonych ludzi.

Link do komentarza
Share on other sites

To ja głupi myślałem, że jak podepnę kamerkę i ją zasilę to już będę mógł jakiś sygnał uzyskać, a potem go przetworzyć. Skoro jednak mówisz że to tak wygląda to jednak będę bawić się gotowymi rozwiązaniami, bo RE to nie mój poziom. Dzięki za informacje

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Ta kamera, jak widać w tytule, daje analogowy sygnał NTSC albo PAL. Dobrym początkiem byłoby poczytanie o tych formatach na przykład na Wikipedii. Potem można się zastanowić, biorąc pod uwagę liczbę klatek na sekundę i liczbę linii na klatkę, jakim urządzeniem mógłbyś ten analogowy sygnał przetworzyć no i oczywiście zastanowić się także co byś chciał tak właściwie z nim robić.

Link do komentarza
Share on other sites

Cześć,

jeśli chcesz poznać podstawy zapisu, budowy kodeków wideo itp (mówię o zapisie i obróbce sygnałów cyfrowych).

To zacząłbym od zakupu np. takiej kamerki USB:

https://www.mediaexpert.pl/kamery-internetowe/kamera-logitech-hd-webcam-c270,id-7647?gclid=EAIaIQobChMIocXB2ND-3AIVR-J3Ch29CAnQEAQYAiABEgIiBPD_BwE

ten konkretnie model ma dobry stosunek cena/jakość. Oczywiście jak masz sporo kasy możesz kupić coś lepszego.

Jako drugi krok,  ściągnij sobie i zainstaluj program "FFmpeg" (możesz to zrobić nawet pod Windowsem, ale osobiście polecam wersję "FFmpeg" pod Linuxa):

https://www.ffmpeg.org/

"FFmpeg" - jest to uniwersalny program do zapisu i obróbki sygnału wideo w praktycznie wszystkich wymyślonych przez ludzi formatach (mnóstwo różnych kodeków).

"FFmpeg" jest jak "szwajcarski scyzoryk" (teraz częściej mówi się 'multi-tool') do obróbki wideo.

Zapoznaj się najpierw z samym programem i jak się go używa do podstawowych zadań. Gdy ten etap będziesz miał za sobą ściągnij sobie do niego źródła (w języku C) i przestudiuj jak są napisane (także jakieś konkretne kodeki). To najprostszy sposób na osiągnięcie ambitnego celu jaki sobie wytyczyłeś 😉

Pozdrawiam

Edytowano przez FlyingDutch
Link do komentarza
Share on other sites

Ja mam jeszcze inną propozycję - co powiesz na zabawy z ArduCamem i reverse engineering bibliotek na Arduino? Biblioteki Arduino są na ogół dobrze opisane w komentarzach/w Internecie i nawet jeśli są ogólnie słabe i kiepskiej jakości, to sam proces działania można w dość prosty sposób zrozumieć na przykładzie. A potem zrobić to samemu lepiej 🙂

Link do komentarza
Share on other sites

Zgadzam się, tylko autorowi chodzi chyba przede wszystkim o aspekt edukacyjny. Metodę zawsze można potem przenieść na coś mocniejszego albo skorzystać z gotowych mechanizmów, kiedy już się zrozumie zasadę działania

Link do komentarza
Share on other sites

To może zapytajmy co dokładnie oznacza zwrot "zaprogramowaniu protokołu dla kamerki" albo " jak to działa na niższym poziomie".

Co rozumiesz pod pojęciem "protokołu kamerki" oraz o jakim "poziomie" myślisz?

Albo inaczej: co chcesz zrobić docelowo lub co Cię konkretnie interesuje? Oprogramowanie? Sprzęt? Struktura sygnałów video? Cyfrowych czy analogowych? Sam interfejs do kamery? Jakiej, bo przecież jest mnóstwo odmian? Sposób "łapania" sygnału po stronie odbiorczej? W czym? W procesorze zdolnym do przetwarzania ciagłego strumienia video i wyposażonym w sprzętowe wejście z kamery cyfrowej czy myślisz o zabawce Arduino, która samodzielnie nie ma szans w ogóle zauważyć sygnału video a po uzupełnieniu o dodatkowy shield może złapać jedną klatkę i coś w niej podłubać przez kilka sekund? Temat jest szeroki i pytania tak ogólne jak te o poziomie nie dadzą Ci żadnych sensownych odpowiedzi na Forum oprócz "Doczytaj - wszystko jest w sieci".

Gdy zaczniesz od kamer analogowych będziesz musiał przebrnąć przez strukturę ramki obrazu, sposób kodowania koloru (wybierz standard PAL), położenie impulsów synchronizacji itd itp. To wszystko jest ważne, bo daje wyobrażenie o ilości informacji jakie niesie ze sobą video i pokazuje jak sprytnie radzono sobie z telewizją kolorową w czasach "przedprocesorowych". Jednak od analogowego sygnału PAL do pamięci procesora droga jest bardzo długa. Dekodery analogowe to skomplikowane (wewnątrz) scalaki, które na wyjściu dają i tak sygnał, który w kamerce cyfrowej masz od razu "za darmo". Przejrzyj np. tego MAXIMa, bo jest tam też trochę o analogowym sygnale wejściowym i cyfrowym wyjściowym.

https://www.maximintegrated.com/en/products/analog/video-products/MAX9526.html

Strukturę cyfrowego video także musisz poznać jeśli chcesz zrozumieć jak działa sprzętowy interfejs kamera-procesor. No i dopiero gdy będziesz miał w małym palcu kodowania 4:2:2 czy RGB565 możesz spróbować zajrzeć do specyfikacji samego interfejsu. Tu masz przykład bloku DCMI (Digital Camera Interface) wbudowanego w niektóre co mocniejsze procesory STM32:

https://www.st.com/content/ccc/resource/technical/document/application_note/group0/c0/ef/15/38/d1/d6/49/88/DM00373474/files/DM00373474.pdf/jcr:content/translations/en.DM00373474.pdf

Napisz czy coś z tego rozumiesz albo gdzie przestałeś. Może jakoś uda się pomóc.

Są też kamerki mające w ogóle cały mikrokomputerek w środku i wypuszczające zawartość obrazu (czasem nawet skompresowanego JPEG) w postaci danych po SPI czy UART. Coś takiego możesz podłączyć wprost do dowolnego procesora bo pamięć jednej klatki obrazu jest w kamerce, ale interfejsy tego typu nie mają zbyt wielkiej przepustowości więc to raczej namiastka kamery, bardziej zbliżona do aparatu cyfrowego o marnej rozdzielczości.

Link do komentarza
Share on other sites

20 godzin temu, Nawyk napisał:

Ja mam jeszcze inną propozycję - co powiesz na zabawy z ArduCamem i reverse engineering bibliotek na Arduino? Biblioteki Arduino są na ogół dobrze opisane w komentarzach/w Internecie i nawet jeśli są ogólnie słabe i kiepskiej jakości, to sam proces działania można w dość prosty sposób zrozumieć na przykładzie. A potem zrobić to samemu lepiej 🙂

Cześć,

tylko po co uczyć się na jak sam napisałeś  "słabej jakości kodzie" jak można na kodzie dobrze napisanym - a takim w większości jest kod programu "FFmpeg" (i dodatkowych modułów np. kodeków wideo). Proponuję też poczytać trochę o dyskretnych transformatach całkowych (2D) - głównie o "Dyskretnej Transformacie Kosinusowej", które są podstawą działania większości stosowanych kodeków wideo (cyfrowych). Patrz te linki:

https://pl.wikipedia.org/wiki/Dyskretna_transformacja_kosinusowa

https://pl.wikipedia.org/wiki/Zmodyfikowana_dyskretna_transformacja_kosinusowa

http://grzegorzsokol.name/blog/dct/

Potem  przejrzyj kod programu "FFmpeg" i jakiegoś kodeka np. "H.264".

http://grzegorzsokol.name/blog/dekodowanie-wideo-z-ffmpegiem/

Pozdrawiam

Edytowano przez FlyingDutch
Link do komentarza
Share on other sites

(edytowany)

@marek1707Chodzi mi o to, że mam kamerkę  https://abc-rc.pl/mikro-kamera-fpv-1200tvl (i to jest kamerka analogowa, ale nie znalazłem takiej wielkości kamerki cyfrowej, a chce by dron był jak najmniejszy) i chce ją podpiąć pod jakiś ARM(np. taki w raspberry), albo może 32bit AVR i chcę przesłać potem to przez wi-fi na np. komputer i zobaczył obraz.

Dlaczego? Ostatnio zrobiłem drona "wyścigowego", malutki on. Większość części kupiłem i tylko złożyłem. Działa, lata i w ogóle jest fajnie. NIe wierzyłem, że to zrobię, ale się udało.

Teraz chce "from scratch" zrobić sobie moduł sterowania(bardzo trywialny, wiem że to jest masakra i teoria sterowania jest trudna) i ten mój projekt postanowiłem zacząć od napisania dla tej kamerki sterownika, by mieć swój własny system na pokładzie drona, czy to głupie, czy nie, to mój kolejny cel.

PS.

komunikację po wi-fi mam obcykaną, uczyłem się z książek ATNELA i co mi wpadło w ręce więc to nie jest tak, że nic nie umiem 😛

Edytowano przez Dregorio
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.