Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[ATmega][C]Pomysł na projekt ( mp3 + lcd dotyk )

megaman123 30 Jun 2009 07:19 3994 17
Computer Controls
  • #1
    megaman123
    Level 13  
    Witam kolegów.

    Kieruję się w sumie , z prośbą o pomoc . Dziecko wyjechało na wakacje , więc mam trochę czasu i postanowiłem coś "podłubać".

    Otóż zrodził mi się pomysł , stworzenia grajka i padło na mp3 . Czy duży stopień trudności jest stworzenia takiego ? Kieruje też pytanie odnośnie wyświetlacza z panelem dotykowym . Otóż cena gra rolę i może macie do polecenia jakiś w miarę tani wyświetlacz , do którego można dokupić panel , bądź w miarę za rozsądną cenę kupić zintegrowany lcd z panelem . Głównie chcę się poradzić od osób które miały z tym styk , i z własnego doświadczenia mogą coś polecić :) ( preferowałbym jednak kolorowy ) .

    ( http://www.youtube.com/watch?v=Bj3wP1JuJd0 - tutaj , gość użył fajnego wyświetlacza . To ten z serii ze sterownikiem HD ? ) .

    Czyli bez problemowo , mógłbym użyć procesora ATmega32 do tego celu , prawda ?

    Dzięki za każdą podpowiedź odnośnie tematu, pozdrawiam
  • Computer Controls
  • #2
    ORMO_PL
    Level 19  
    Żadna atmega nie posiada w swej strukturze kodeka mp3.

    http://yampp.com/
    To strona internetowa najbardziej rozbudowanego projektu. Sam mam ochotę złożyć coś podobnego. Yampp jest bardzo zaawansowany, więc nie ma co rzucać się z motyką na słońce. Choć, jeśli złożysz coś prostrzego, a równie funkcjonalnego :)
    Możesz się wzorować na yamppie
  • #3
    megaman123
    Level 13  
    Dzięki za odpowiedź.

    Oczywiście wiem , że ATmega nie posiadają sprzętowych dekodowań mp3 ( programowaniem tych procesorów zajmuje się około 2 lata - hobbystycznie więc już mniej więcej wiem jak co w nich siedzi :) ).

    Właśnie przeglądam , i szukam układów które w prosty sposób zdekodowałyby format. Widzę , ze w yampp-7 użyli czegoś podobnego .

    Czekam na dalsze spostrzeżenia :)
  • #4
    megaman123
    Level 13  
    Sorry , za double posta.

    Zainteresował mnie wyświetlacz ze sterownikiem KS0108 .
    Otóż mam pytanie odnośnie dostępności tego wyświetlacza ( bo po samej nazwie nie mogę znależć w sklepie ) , aczkolwiek podobne są na stronie maritexu ( http://www.maritex.com.pl...oducts/ggid/174 ) czy ktoś jest w stanie odpowiedzieć który z nich posiada ów sterownik ? Jak takiego wyświetlacza szukać na Allegro ? Właśnie po nazwie "KS0108" A może polecacie inny wyświetlacz o tego typu rozdzielczości jako alternatywa .

    Z odtwarzacza mp3 raczej zrezygnuje ze względu na cenę dekodera . Zainteresowałem się projektem niedawno publikowanym na forum elektrody - odtwarzacz plików wav.
  • Computer Controls
  • #5
    Logi
    Level 19  
    Witam

    Kiedyś miałem zamiar się zająć podobnym tematem ale niestety zabrakło czasu. Może taki układ Atmela były ciekawy:

    Single-Chip Microcontroller with MP3 Decoder and Man-Machine Interface AT89C51SND1C

    Można ściągnąć ze strony Atmela PDF z dokładnym opisem tego elementu.

    Pozdrawiam
  • #6
    maly_elektronik
    Level 23  
    Jeżeli faktycznie zależy Ci na cenie to kup oryginalny w sklepie :)
    Z tym co chcesz zrobić jest naprawdę sporo zabawy :)
    1. Dodatkowy dekoder strumienia MP3
    2. Wymagany jest DAC i wzmacniacz (chyba że stosujesz któryś z układów z serii VS10**)
    3. Potrzeba obsługę jakiegoś nośnika danych (karta SD, jakaś inna pamięć flash, dysk twardy itp...)
    4. Ważną role gra dobrze zaprojektowana płytka PCB (niweluje liczne szumy)
    5. Naprawdę sporo wiedzy byłoby potrzebne żeby to zrobić całkowicie samodzielnie... Ale czemu nie praca czyni mistrza :)

    PS. Sam kończę prace nad podobnym układem (jeżeli jesteś zainteresowany to w niedługim czasie udostępnię szczegółowe informacje na mojej stronie )

    Pozdrawiam maly_elektronik
  • #7
    Zaquadnik
    Level 27  
    Jest układzik Atmela AT89SND2C. Jest to mikrokontroler 8051 z wbudowanym kodekiem mp3, DAC, wzmacniaczem i equalizerem. Niestety, trudno dostępny i w obudowie BGA100, więc płytka pod to co najmniej 4-ro warstwowa. Oprogramowywałem to, przyjemna kostka.
  • #8
    maly_elektronik
    Level 23  
    Ale za to jest ukląd AT89C51SND1C-RO i jest łatwo dostępny w TME kosztuje niecałe 50zł ma sprzętowe USB i z tego co pamiętam obsługę kart SD/MMC i oczywiście dekoder mp3 :) I co najważniejsze jest w obudowie TQFP80 :idea:
  • #9
    megaman123
    Level 13  
    Dzięki za odpowiedzi !

    AT89C51SND1C-RO - ten układ to ładny "kombajn" :) , szkoda jednak ,że jego DS jest tak strasznie ubogi ( zaledwie 42 strony ) . Jak tutaj wygląda dekodowanie mp3 ? ( Mając na karcie mp3 , co robić z bajtami reprezentującymi utwór ) masz może dostęp do jakiegoś opisanego projektu używającego ten procesor ? Dzięki za stronę i napewno będe odwiedzać . Czy udało Ci się już za jego pomocą wygrać jakieś utwory ?
  • #10
    maly_elektronik
    Level 23  
    Mój mp3 działa w oparciu o dekoder STA015 + PCM1771 (DAC z wbudowanym wzmacniaczem słuchawkowym).
    Widzę że kolega jest daleko daleko od dekodowania :)
    Wszystko zależy w jaki sposób utwór będzie zapisany na karcie :) (czy jakiś system plików czy surowe bajty utworu), jeżeli będzie to fat bo wszystko można wyczytać z Root Directry :)

    PS. Wracając do dekodowania zostaje transformata Fouriera :) Gdybym miał trochę większe doświadczenie w zakresie programowania i znał się na lepiej na wyższej matematyce to pewnie nie męczyłbym się z dodatkowymi dekoderami strumienia mp3 :)

    Pozdrawiam maly_elektronik :)
  • #11
    megaman123
    Level 13  
    Dzięki za podpowiedzi :)

    Oczywiście mp3 zapisane na karcie będa interpretowany systemem plików FAT32 . Mógłbyś przybliżyć teraz nieco koncepcję co dalej robić z zapisanymi mp3 na karcie ? Bo nie wydaje mi się ,żeby wystarczało z częstotliwością próbkowania wysyłać kolejne bajty na dekoder .

    Co do FFT , to robiłem kiedyś analizator widma , włącznie ze spektrogramem ale w C++ , na PC.
  • #12
    maly_elektronik
    Level 23  
    Zabawa z fatem jest nie tyle trudna co dość złożona :) Każdy nośnik ma tzw Boot Sector w nim są różne najpotrzebniejsze informacje tj ilość Bajtów na sektor ilość sektorów na klaster itp itd :) Później w kolejce stoi Root Directry z niej w małych paczkach po 32B (można odczytywać cały sektor w "powietrze" prócz tych 32 bajtów) i w tej "paczce" znajdujesz najważniejsze informacje dotyczące pliku czyli rozmiar, atrybutu, 1 klaster danych, nazwę (jeżeli jest to nazwa dłuższa od 11B wraz z rozszerzeniem to jest ona skracana), i chyba coś jeszcze znajduje się w tej paczce ale musisz doczytać :) Po tym wszystkim teoretycznie masz 1 klaster danych (czyli np kolejne 8 sektorów co daje 8*512= 4096B) :arrow: żeby odczytać kolejny klaster danych trzeba go odszukać, szukanie to polega na znalezieniu offsetu w tablicy alokacji FAT, znajdujesz tam offset który ma nr taki sam jak pierwszy klaster i w tym offsecie znajdujesz adres kolejnego. Wysyłasz go i w taki sam sposób szukasz następnego aż do końca pliku :)
    To tyle o odczycie (oczywiście to taki ogólny wstęp)
    Co do tego mp3 to raczej wysyła plik z jakąś stałą częstotliwością do dekodera a on już sobie robi kontrole jego bitrate'a :)
    STA015/13 robi to w taki sposób że wysyła się do niego bajty do momentu aż ustawi on pin (chyba DATA_REQ) w stan niski/wysoki (ustawiany programowo) i dopiero gdy stan się zmieni wysyła się kolejne bajty i tak w kółko aż do końca pliku :)
    Przypuszczam że w tym "kombajnie" też wygląda to podobnie :)

    Pozdrawiam maly_elektronik
  • #13
    atom1477
    Level 43  
    maly_elektronik wrote:
    PS. Wracając do dekodowania zostaje transformata Fouriera :) Gdybym miał trochę większe doświadczenie w zakresie programowania i znał się na lepiej na wyższej matematyce to pewnie nie męczyłbym się z dodatkowymi dekoderami strumienia mp3 :)


    1. FFT nie ma nic wspólnego z dekodowaniem mp3.
    2. Nawet jak by zastosować normalne programowe dekodowanie mp3 (nie na FFT ;p ) to niewiele mikrokontrolerów to pociągnie.
    Najmniejszy to chyba ARM7 na zegarze 70MHz i oczywiście dużo pamięci programu i danych, a więc nie żaden LPC2101.
    Był nawet jakiś taki projekt programowego dekodera mp3. Nazywał się HELIOS czy jakoś tak (może HELIX).
  • #14
    maly_elektronik
    Level 23  
    Z tego co interesowałem się tematem dekompresji mp3 do FFT w rozszerzeniu o wzory Eulera (czy jakoś tak) i coś tam jeszcze daje taki efekt :) Nawet znalazłem kiedyś w sieci gotowy algorytm :) A prawdę\ę mówiąc to nawet avr'ek (np Xmega256 bo chyba tak on się nazywa) to pociągnie tylko nie w czasie rzeczywistym i nie będzie się dało tego słuchać ale da rade obliczeniom:)
  • #15
    atom1477
    Level 43  
    Nie no. Nie o takie ciągnięcie mi chodziło. To i silniczkiem z vibry można pociąg cały ruszyć.
    Ale ja miałem na myśli działanie w czasie rzeczywistym.
    I zwykły AVR to ruszy bo sam zaczynałem robić, ale nie wyrobi się. No może przy plikach 24kbps.
    A mi sie wydaje że dekodowanie mp3 to dekompresja Huffmana i transformata iMDCT.

    Nie bardzo rozumiem jak coś innego może „dać taki efekt”. To nie jest proste zjawisko, jak świecenie, że żarówka i dioda mogą dać podobny czy identyczny efekt.
    Struktura pliku mp3 jest bardzo konkretna i jest tylko jeden sposób na dekodowanie. Oczyswiście można poupraszczać albo zmodyfikować wzory, ale nie sądzę żeby FFT mogło zastąpić iMDCT. Zresztą, IMDCT było by prostrze.
  • #16
    maly_elektronik
    Level 23  
    Kompresja mp3 jest podobna do do kompresji plików JPEG (przynajmniej tak mi się kojarzy) :) A więc FFT by dał rade :)
  • #17
    atom1477
    Level 43  
    No właśnie jest podobna i dlatego FFT się nie nadaje.

    Dodano po 2 [minuty]:

    Ogólnie to tak, można by zrobić kodowanie i dekodowanie na FFT.
    Ale kodowanie zrobili na MDCT więc iMDCT trzeba zastosować do dekodowania. Taki standard i tyle.

    Dodano po 8 [minuty]:

    http://embdev.net/articles/ARM_MP3/AAC_Player
  • #18
    PO.
    Level 20  
    A ja się podepnę pod temat - MP3 jest na kilogramy. Nie znalazłem jeszcze za to odtwarzacza który potrafiłby odtwarzać obrazy CDDA iso albo ccd. Czy ktoś ma jakieś informacje na temat takiego projektu? Czy mam być pionierem?
    Wiem oczywiście, że obrazy są "nieekonomiczne" pamięciowo ale dziś wielkość pliku przestaje mieć znaczenie :) , a dla mnie liczy się jakość.