Noiseplug – wtyczka rca która odtwarza chiptune

Znane Ci są pierwsze 8 bitowe komputery i konsole, z lat 80-90tych? Pamiętasz jak piękną muzykę potrafiły z siebie wydobyć? To niecodzienne urządzenie jest połączeniem współczesnej technologii oraz czaru lat 90tych. Zwykła z pozoru wtyczka RCA, skrywająca w środku maleńki mikrokontroler Attiny10 i dwie bateryjki – po podłączeniu do wejścia wzmacniacza odtwarza 2 minutowy utwór Chiptune.

Wstęp

Doskonale widać jak bardzo technologia posunęła się do przodu, jeszcze 25 lat temu, aby odtworzyć taką melodię trzeba było zbudować urządzenie wielkości współczesnych mini komputerów. Teraz, wystarcza kostka o wymiarach 1,5 x 3 mm. Prezentowane urządzenie jest klonem oryginału – Noispluga – autorstwa dop3joe. Tutaj można zobaczyć wideo, na chwilę obecną nie istnieje żadna strona projektu. 1kB pamięci flash oraz 32 bajty ramu – to wszystko co było potrzebne Autorowi aby pomieścić „odtwarzacz” generujący na wyjściu PWM (pin1) dźwięk, oraz zapisać melodię. Pierwotnie kod powstawał w C, jednak wraz z upływem czasu autor przepisywał go do ASM, aż w końcu nie pozostała ani jedna linia kodu języka C.

Schemat?

Całość jest tak prosta, że nie istnieje żaden schemat. Bardzo prosta płytka „drukowana” o wymiarach 5 x 8 mm została wykonana metodą wydrapywania miedzi, idealnie do tego celu nadaje się suwmiarka z ostrymi szczękami. Nie ma sensu babrać się w drukowanie i wytrawianie, wydrapanie zajmie dosłownie 5 minut – a efekt widać na zdjęciach. Układ zaczyna odtwarzać melodię zaraz po podłączeniu zasilania, służy do tego PWM oraz jego wyjście na pinie nr.1. Pin ten można bezpośrednio podłączyć pod wejście wzmacniacza lub karty dźwiękowej komputera, takie urządzenia posiadają już na wejściu kondensator odcinający składową stałą którą taki układ będzie dodawał. Pin 2 to GND, pin 5 to VCC – to wszystko.

Wtyczka:
Całość umieszczona w metalowej wtyczce RCA (jak kto woli chinch), wszystko widać na zdjęciach. Dwie bateryjki guzikowe (łącznie 3V) umieszczone są w tylnej części wtyczki. Po dokręceniu obudowy wtyczki, elektroda dodatnia dotyka do pola VCC na płytce. Zasilanie od 1.8V do 5V, realnie 2,5-3V wypada najlepiej. W moim laptopie sygnał na poziomie 3V był już na granicy przesterowania, jednak wzmacniacz poradzi sobie o niebo lepiej.

Zaprogramowanie:

Układy z serii Attiny4, 5, 9, 10 programujemy poprzez interfejs TPI (tiny protocol interface). Nie będzie z tym problemu, ponieważ USBASP od wersji 2011-05-28 oficjalnie wspiera ten protokół, również USBTiny-MkII SLIM (klon atmelowskiego MKII) świetnie sobie z nim poradzi. Wystarczy załadować plik hex z załącznika. Kod został stworzony dla układu Attiny9, który od Attiny10 różni się tylko tym że ten pierwszy nie ma przetwornika ADC – można stosować zamiennie. Jeśli jest potrzeba przekompilowania kodu, należy użyć Atmel Studio 6, korzystając z załączonego makefile.

Galeria:

Oryginalne wideo:

Prezentacja wtyczki:


(przepraszam za przesterowanie i drżące łapki, nagrywane na szybko)

Pliki:
POBIERZ – Wsad HEX, pliki źródłowe ASM, plik licencji





5.00 avg. rating (96% score) - 1 vote

15 komentarzy

  1. WOW. Ale cudeńko :) Koniecznie takie chce. Skąd brałeś attiny10 i taką wtyczkę? Możesz dać jakieś linki?

    • Wtyczka w lokalnym sklepie, każda jedna powinna dać radę, tylko dobierzesz sobie na długość swoją pcb, lub podłożysz coś grubszego zamiast podkładki. Attiny10 brałem w seguro, jeszcze nie zyskały takiej popularności wśród amatorów aby znalazły się na allegro.

    • Mam jeszcze pytania jeśli pozwolisz.

      Te dwie bateryjki jak długo potrafią grać? Np gdybym chciał zrobić komuś kawał i na stałe podłączyć pod wzmacniacz?

      Czy dobrze rozumiem że należy je włożyć tak aby mniejszy biegun ujemny dotykał tej podkładki z tyłu? Nie zwiera się z dużym biegunem dodatnim? A jeśli u siebie dam biegun dodatni na masę wtyczki i wzmacniacza, będzie to normalnie grało, no bo jak piszesz wzmacniacz ma na wejściu kondensator i napięcie i tak sobie wyrówna, obojętnie czy dodatnie czy ujemne?

      W co włożyłeś baterie? Tzn chodzi mi o ten izolator.

      Jak rozumiem, płytka została przylutowana jedynym końcem do środkowego bolca i tak się trzyma, czy jest przyklejona jeszcze jakoś?

      Attiny już zamówiona, jutro idę po wtyczkę :)

    • Ad.1 – nie wiem, ale jutro zmierzę pobór prądu.

      Ad.2 – tak, na obudowie ma się znaleźć minus. Eksperymentowałem z plusem na obudowie, bo jak piszesz dla wzmacniacza nie powinno to robić różnicy. Jednak wraz z dźwiękiem słychać było jednostajny pisk o f kilku kHz. Podobny do tego który jest generowany na pinie PORTB2. Podejrzewam że ma coś z tym wspólnego, a sygnał na PORTB2 prawdopodobnie został dodany przez autora w celach diagnostycznych, tzn żeby jak szybko wykonuje się kod programu. W kodzie można znaleźć dwie instrukcje cbi PORTB, 2 oraz sbi PORTB, 2 które nieustannie zmieniają jego stan. Można spróbować skompilować kod bez tych instrukcji i sprawdzić czy będzie poprawa. Ale nie widzę potrzeby takiego kombinowania.

      Ad.3 – rurka termokurczliwa.

      Ad.4 – tak, tą stroną która wyprowadza PORTB0. Trzyma się dobrze. Za pierwszym razem próbowałem zrobić tak jak autor, czyli polutować w pająku, a potem kombinować z jakimś wspornikiem dla tego VCC. Urwałem nóżkę tiniemu i na tym się skończyło. Są BARDZO delikatne.

  2. Działa :D Chciałbym jednak pozbyć się tego sygnału z portb.2 dla uproszczenia płytki – tzn reszte i/o dać do vcc lub gnd aby tyle nie drapać. Niestety nie jestem zbyt dobry w takich mechanicznych obróbkach, suwmiarki nie mam, i ciężko mi tą płytkę wyskrobać. Niestety po skompilowaniu program nie działa, nawet jeśli nic nie zmieniałem. Na załączonym hexie wszystko jest ok. Jakieś pomysły?

    • W czym kompilowałeś? Mi w AVR Studio 4 kompilowało ale właśnie kod nie działał, wydawał z siebie tylko krótki pisk. Atmel Studio 6 daje rade. Zajmuje to coś koło 700MB albo i lepiej. Pochwalisz się jakimś zdjęciem?

  3. Nie można powiększyć zdjęć. Da radę innego chiptuna wgrać?

    • Hmm u mnie zdjęcia się poprawnie powiększają – trzeba chwile odczekać.

      Autor na swojej stronie udostępnił jeszcze jakieś narzędzie do zmiany melodii, ale w ogóle się nim nie bawiłem i nie wiem jak działa.

  4. Ja się słabo orientuje w te tematy… Mini programator z avt do avr kompatybilny z stk500 v2 nie zaprogramuje tego ATtiny?

    • Zobacz w instrukcji. Musi mieć interfejs TPI. Jeśli nie ma, to nie da rady.

  5. A mam takie pytanie, czy na tego atmelka można wgrać program, żeby zrobić taki mini generatorek testowy o cz-ci 1kHz?
    Można gdzieś zaleźć taki kod żeby tam w nim umieścić?

    • Jak najbardziej, choć nie spotkałem się z gotowym programem, to napisanie takowego nie powinno przysporzyć problemów.

  6. czy może mi ktpś pomuc niewiem jak podłączyć usbasp do mikro procesora
    do pinu
    1-? niewiem czy MISO/SCK/RST/MOSI
    2-GND
    3-? niewiem czy MISO/SCK/RST/MOSI
    4-? niewiem czy MISO/SCK/RST/MOSI
    5-Vcc
    6-? niewiem czy MISO/SCK/RST/MOSI

    Bardzo bym prosił bo attiny zamuwiony a ja niewiem jak podłączyć :(

  7. A czemu schemat nie podany???

    • Obawiam się kolego że to Cię już przerosło. Przeczytaj opis, a dowiesz się że nie ma schematu. VCC GND i pin nr.1 jako wyjście dźwięku – potrzebny schemat? Przeczytaj opis, a dowiesz się że te układy programuje się poprzez TPI a nie ISP. Opis wyprowadzeń dla TPI znajdziesz w nocie katalogowej swojego attiny.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Proszę pozostawić te dwa pola tak jak są: