>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
C

Co robi Linus Torvalds, gdy ma dość jądra Linux

Wyobraźcie sobie twórcę Linuksa i Git postanawiającego w wolnym czasie zgłębić projektowanie analogowych układów elektronicznych i cyfrowe przetwarzanie dźwięku. Rezultatem jest projekt GuitarPedal na GitHubie. To pełnoprawny pedal gitarowy z wieloma efektami, gdzie sam Linus zaprojektował płytki drukowane w KiCad i napisał firmware w C.

Projekt wyrósł ze starego, porzuconego prototypu. Wcześniej miał analogowe potencjometry, które były koszmarem podczas konfiguracji. Teraz pedal ma ekran OLED, parę enkoderów i świeży mikrokontroler.

Modułowy sprzęt i mikroskopijne złącza

Sprzęt zbudowany jest w modułowej, demontowalnej konstrukcji. Zamiast prowadzić cały obwód na jednej dużej płytce, Linus podzielił urządzenie na cztery osobne moduły.

Pierwsza płytka zawiera mikrokontroler RP2354 z rodziny Raspberry Pi Pico 2. Druga płytka hostuje kodek audio TI TAC51, który digitalizuje sygnał z gitary. Trzeci moduł zawiera złącza zasilania 9V i gniazda audio, a czwarty obsługuje interfejs z ekranem 128x128, footswitchami i enkoderami.

Front

Moduły łączą się ze sobą przez płaską 12-pinową taśmę FFC. Transfer danych odbywa się przez I2C do sterowania i I2S do audio. Płytki używają złączy HiRose BM28 o rastrze zaledwie 0,35 mm. Torvalds otwarcie stwierdza w README, że praca z tak mikroskopijnymi komponentami podczas ręcznego montażu jest trudna. Ale umożliwia to zmieszczenie wszystkiego w kompaktowej obudowie.

Autor podkreśla: modułowość była potrzebna do eksperymentowania z układem. Jeśli zdecydujesz się odtworzyć projekt, rozsądniej byłoby umieścić kodek bezpośrednio na płytce złączy, a mikrokontroler na płytce sterowania. Eliminuje to dwustronny montaż i skomplikowane taśmy łączące.

Inside

Sterowanie i kompilacja firmware

Na górze obudowy znajduje się monochromatyczny wyświetlacz. Poniżej są dwa enkodery obrotowe z wbudowanymi przyciskami i dwa footswitche.

Górny enkoder zmienia wartość bieżącego parametru, a jego naciśnięcie przełącza do następnego parametru na liście. Dolny enkoder przewija same efekty. Lewy footswitch włącza lub wyłącza wybrany efekt jednym naciśnięciem nogi, a prawy przełącza pedal w tryb omijania sygnału.

Kompilacja firmware jest prosta, bez zbędnych komplikacji. Kod źródłowy napisany jest w czystym C z bindingami do pico-sdk i tinyusb. Na Linuksie proces wygląda tak:

git clone https://github.com/torvalds/GuitarPedal.git
cd GuitarPedal/Software
make prep
make

W katalogu build/ pojawia się gotowy plik blink.uf2. Aby wgrać oprogramowanie, musisz przytrzymać oba enkodery podczas podłączania przez USB i po prostu skopiować plik na wirtualny dysk, który się pojawi.

Co w środku DSP

Najciekawsza część repozytorium znajduje się w folderze przetwarzania software'owego. Torvalds napisał własny zestaw algorytmów DSP. Obliczenia wykonywane są w formacie zmiennoprzecinkowym 32-bitowym.

Oto co pedal potrafi już teraz:

  • Noise Gate. Próg czułości spada do -85 dBV. Kod oblicza parametry ataku i zaniku, aby ucinać brum przetworników bez szybkiego obcinania ogonów strun. Dioda LED zmienia jasność, gdy bramka się włącza.
  • Kompresor. Działa z regulowanym czasem ataku, zaniku i poziomem wzmocnienia makeup.
  • Boost z limitem sygnału. Zamiast standardowego obcinania fali, Linus użył składania sygnału. Gdy amplituda przekracza próg, fala nie jest obcinana — zawraca. Tworzy to bogate widmo harmoniczne.
  • Echo i opóźnienia. Efekt Echo King został przeniesiony z projektu Hothouse i emuluje opóźnienie taśmowe Maestro Echoplex. Podstawowy phaser i flanger również znajdują się w pobliżu.
  • Pitch shifter. Działa bez ciężkich transformacji Fouriera. Algorytm używa pierścieniowego bufora opóźniającego z dwoma fazami i wygładzania sinusoidalnego na spoinach. Dodanie sprzężenia zwrotnego tworzy efekt echa z stopniowym dryfem wysokości.
  • Dziesięciopasmowy korektor. Każde pasmo jest regulowane od -20 dB do +20 dB, a aktualna charakterystyka częstotliwościowa jest rysowana jako wykres na ekranie.

Kod zawiera również stub do wysyłania audio przez USB do komputera, choć sam Linus ostrzega o niestabilności tej części.

Dlaczego warto zobaczyć ten projekt

Repozytorium GuitarPedal jest interesujące nie tyle jako gotowy instrument muzyczny, co jako wyraźny przykład pełnego cyklu tworzenia systemów wbudowanych przez jedną osobę.

Tutaj można znaleźć:

  • Gotowe schematy i layout w KiCad z przykładami pracy nad kompaktową obudową
  • Natywny kod w C do pracy z kodekiem audio przez I2S na chipach RP2040 i RP2350
  • Jasne algorytmy matematyczne efektów gitarowych bez zewnętrznych ciężkich bibliotek
  • Prosty interfejs użytkownika dla ekranów OLED oparty na enkoderach

Jeśli chcesz zrozumieć DSP na mikrokontrolerach lub zobaczyć, jak Torvalds pisze kod poza jądrem Linuksa, zbadanie tego repozytorium zdecydowanie jest warte zachodu.

Powiązane projekty