Skocz do zawartości

Specjalizowany odtwarzacz MP3


Pomocna odpowiedź

No i pierwszy przypał - okazało się, że moja przejścióweczka OTG ma zwyczaj robić zwarcie przy próbie wkładania pendraka... Albo znajdę gdzieś w rupieciach wtyczkę mikro, albo zostawię dostęp do gniazdka malinki. Znając siebie raczej to drugie.

  • Lubię! 1
Link do komentarza
Share on other sites

No i pierwszy (wizualny na razie efekt) - górna część obudowy. Kompletna, z wyświetlaczem, głośnikiem i tak dalej:

usbplayer1.thumb.jpg.4bd22e5ed75b5448babb9b38b24069d9.jpg

Dolna się drukuje (przewidywany czas ukończenia jutro w okolicy śniadania), czyli po południu będzie można to złożyć do kupy i zabrać się za najciekawszą część - czyli pisanie programu 🙂

Na razie testy wychodzą ładnie, ale to takie niezwiązane ze sobą kawałki. Po drodze powstało parę ciekawych rozwiązań dotyczących grafiki (np. wyświetlanie animowanych obrazków i konwerter z GIF/PNG na RLE, ale wrzucę tu kod jak doprowadzę do stanu używalności).

 

  • Lubię! 2
Link do komentarza
Share on other sites

Tak jak obiecałem - programiki do ikonek (animowanych i nie) w RLE. Programy w Pythonie3 wymagają tylko PIL, czyli powinny pójść na wszystkim.

gif2rlea.py - gif na animowaną ikonkę. Sposób użycia:

python gif2rlea.py [opcje] plik.gif [nazwa_tablicy [plik.h]]

Jeśli nie podano plik.h, będzie utworzony w bieżącym katalogu na podstawie nazwy pliku png.

Jeśli nie podano nazwy tablicy, zostanie utworzona też na podstawie nazwy pliku png

Opcje:

  • -r - tworzenie obrazka RGB a nie indeksowanej palety (jeśli plik GIF zawiera różne palety dla każdej klatki)
  • -n - negatyw
  • -b #RRGGBB - kolor tła dla przezroczystych gifów (lepiej użyć gimpa do wywalenia przezroczystości).

mkrle.py - statyczna ikonka, parametry to nazwa pliku png i nazwa tablicy, wynik na stdout

Pliki C++ nie wymagają chyba komentarza - jeśli ktoś bardzo chce mogę opisać dokładniej 🙂 Powinny działać z bibliotekami Adafruit z dowolnym wyświetlaczem SPI.

Załączniczek: animicon.zip

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

No i okazało się, że pisanie w Pythonie co poniektórych programów to zły pomysł.

Demon odtwarzacza MP3 napisany w Pythonie zajmował ponad 60% czasu procesora. Ponieważ pulseaudio żre jakieś 25%, na jednordzeniowym Zero trochę mu brakowało czasu (jako że oprócz odtwarzacza parę rzeczy jeszcze powinno działać).

Po napisaniu odtwarzacza w C okazało się, że w czasie odtwarzania zajętość procka dochodzi do 16% (nie wspomnę o różnicy w zeżarciu RAM-u).

Dla chętnych kod playera. Słucha toto na porcie 2020 UDP, odpowiada na 127.0.0.1:2021, Do skompilowania potrzebne:

  • libpulse-dev
  • libao-dev
  • libmpg123-dev
  • wiringPi (w wersji obsługującej naszą malinkę, w moim przypadku 2.61-1 z githuba)

Można się obejść bez wiringPi po wywaleniu fragmentu na temat kolorowych LED 🙂

Kompletny kod odtwarzacza: player123.tgz

  • Lubię! 1
Link do komentarza
Share on other sites

Hm... pierwsza wersja działa! Zaimplementowane wszystkie funkcje oprócz manipulacji WiFi. Teraz trzeba pomyśleć nad jakimś zasilaniem... chyba mam jeszcze jednego 18650 🙂

  • Lubię! 1
Link do komentarza
Share on other sites

Ech... ja to mam pecha do przejściówek...

Numer jeden: https://botland.com.pl/przewody-microusb-20/8781-adapter-otg-microusb-usb-5904422312190.html

Działa ślicznie, ale z uwagiba konstrukcję lubi zrobić zwarcie.

Numer 2: https://botland.com.pl/przewody/12490-przewod-otg-host-usb-microusb-bialy-12cm-5904422319397.html

Podziałała dwa dni i przestała.

Chyba wezmę tę pierwszą i dodrukuję jakąś obudowę 😞

Link do komentarza
Share on other sites

O, nawet nieźle wyszło. Obudowa zabezpiecza przez odwrotnym włożeniem pendrive'a (co równa się w tym przypadku zwarciu).

MoKod dla OpenSCAD-a:

module gusb()
{
    win = 12.4;
    gin = 5;
    hin=9.6;
    win2=7.4;
    gin2=2.6;
    dd=0.4;
    gs=1.2;
    gsu=gs-0.4;
    hk=4.5;
    difference() {
        translate([-win/2-gs, -gs,-hk]) cube([win+2*gs, gin+2*gs,hin+hk]);

        hull() {
            translate([-win/2,0,hin-1]) cube([win,gin,1]);
            translate([-win/2-gsu,-gsu,hin+0.01]) cube([win+2*gsu,gin+2*gsu,1]);
        }
        translate([-win/2,0,0]) cube([win,gin,hin+1]);
        translate([-win/2,0,-hk-1]) cube([win,gin,hk]);
        translate([-win2/2,dd,-2]) cube([win2,gin2,10]);
        
    }
}

gusb();

Można sobie zmodyfikować i dostosować do własnej obudowy.

A dla leniwych: gusb.zip

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.