Dregorio Napisano Sierpień 19, 2018 Udostępnij Napisano Sierpień 19, 2018 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ć
deshipu Sierpień 19, 2018 Udostępnij Sierpień 19, 2018 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.
Dregorio Sierpień 19, 2018 Autor tematu Udostępnij Sierpień 19, 2018 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
deshipu Sierpień 19, 2018 Udostępnij Sierpień 19, 2018 Piszę konkretnie o Raspberry Pi. Z innym sprzętem oczywiście sytuacja może wyglądać inaczej.
Dregorio Sierpień 19, 2018 Autor tematu Udostępnij Sierpień 19, 2018 No mam na przykład takie coś https://abc-rc.pl/mikro-kamera-fpv-1200tvl i chciałbym z tym się pobawić
deshipu Sierpień 19, 2018 Udostępnij Sierpień 19, 2018 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ć.
Dregorio Sierpień 19, 2018 Autor tematu Udostępnij Sierpień 19, 2018 Czyli na początek raczej szukać analogowego czy cyfrowego? Już patrzyłem się trochę np. tutaj https://wiki.nesdev.com/w/index.php/NTSC_video#Emulating_in_C.2B.2B_code
deshipu Sierpień 19, 2018 Udostępnij Sierpień 19, 2018 Z cyfrowym sygnałem powinno być zdecydowanie łatwiej. Ten kod jest do generowania analogowego sygnału, a nie jego dekodowania — jest to nieco łatwiejsze.
FlyingDutch Sierpień 21, 2018 Udostępnij Sierpień 21, 2018 (edytowany) 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 Sierpień 22, 2018 przez FlyingDutch
Nawyk Sierpień 21, 2018 Udostępnij Sierpień 21, 2018 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
deshipu Sierpień 21, 2018 Udostępnij Sierpień 21, 2018 (edytowany) Tylko że ArduCama bym kamerą nie nazwał... To właśnie ten pokaz slajdów. Edytowano Sierpień 21, 2018 przez deshipu
Nawyk Sierpień 21, 2018 Udostępnij Sierpień 21, 2018 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
marek1707 Sierpień 21, 2018 Udostępnij Sierpień 21, 2018 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.
FlyingDutch Sierpień 22, 2018 Udostępnij Sierpień 22, 2018 (edytowany) 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 Sierpień 22, 2018 przez FlyingDutch
Dregorio Sierpień 22, 2018 Autor tematu Udostępnij Sierpień 22, 2018 (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 Sierpień 22, 2018 przez Dregorio
Pomocna odpowiedź
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ę »