Skocz do zawartości

MIDI przez Bluetooh BLE i SPI dla ESP32-WROOM-S3


kmk68

Pomocna odpowiedź

Cześć, 

robię klawiaturę MIDI, nietypową dość kształtem (~220 klawiszy z podświetlaniem RGB 🙂 ).

Mam obudowę, klawisze, etc., czyli zacząłem od tego na czym zwykle "wyginały" moje projekty.

Zacząłem robić na Wemos D1, ESP8266 - ale przydało by się mi zamiast kablowego  MIDI (to mam jakoś opanowane)

MIDI widoczne po BLE - do iPhonea/iPada jako odtwarzacza... Kupiłem ESP32 w obudowie podobnej do Wemosa,

ale mam na razie dwa problemy:

1. Biblioteka <Wire.h> na której oparłem komunikację po SPI - nie dział mi na ESP32 - co w zamian?

2. Szukam sensownej biblioteki MIDI po BT BLE - koniecznie w obie strony - IN/OUT i z 16 kanałami minimum.

Ktoś mi coś podpowie w tym temacie?

Pozdrawiam,

Kajetan

 

Link do komentarza
Share on other sites

Podpowiem jedno: biblioteka Wire służy do i2c a nie spi, więc nie dziwię się że nie działa. Co do spi: na pewno właściwy port? Pamiętaj, że możesz sobie zmapować dowolne uczciwe gpio na spi. A porty są dwa.

A z ciekawości: 220 klawiszy? Organy kościelne z peduałem czy konkurencja dla Jarre'a?

Link do komentarza
Share on other sites

(edytowany)

Po kolei...

Wire jak najbardziej mi działa po SPI, bo na Leonardo mi to chodzi. No chyba że to jakieś inne "Wire", muszę sprawdzić bo strasznie mieszałem w bibliotekach. W każdym razie dopiero jak do działającego podpiąłem ESP32 to stwierdziło że nie pójdzie już na etapie kompilacji. 😕 Musi być SPI bo na każde 6 klawiszy mam jeden port mcp23S18. "S" bo SPI jednak szybsze, mcp bo mam dobrze "obczajone" z czasów kiedy na Microchipach robiłem elektronikę. W sumie 35 płytek. 🙂 220 klawiszy, 440 styków, 220 led-ów RGB. 🙂 Obudowa jest, klawisze się drukują, pierwsze dwie płytki polutowane.

Teraz muszę zrobić host-a który zbierze mi dane z tych przycisków i wyśle po MIDI, a jak coś dostanie z MIDI to wyświetli na guzikach. Tak, chyba coś z Jarre'a. Ale nie wiem czy obsadzę wszystkie, nie wiem jeszcze jak mi się układ sprawdzi pod palcami, jak ktoś miał kiedyś coś wspólnego to widać że to... duży akordeon guzikowy.  😉  Robię to już z półtora roku, ale wczoraj polutowałem pierwsze dwie płytki klawiszy i taki pojedyńczy moduł z 6-cioma klawiszami działa. Reaguje na klawisze, świeci itd. 

image.thumb.png.0ac49ae8dea5fe7265d9c766c16bdd07.pngIMG-0126.thumb.jpg.56d8ab7fe21e795e973d7e009b2ee563.jpg

IMG-0124.thumb.jpg.e10f3b16a6bc1765afe759d8af1f7dea.jpgIMG-0115.thumb.jpg.c71b1644838468919db434aaaaaec01e.jpgIMG-0145.thumb.jpg.fb3378af64a203c6d84b8ff858572718.jpg

Programowanie to mój zawód, ale z Arduino poza wyświetlaczem po SPI i jakimiś czujnikami po 1-wire lub I2C niewiele robiłem. Z bluetooth nic, więc chętnie skorzystałbym z podpowiedzi tych co coś robili. Jak w każdym opensource bibliotek do przejrzenia jest tyle że kolejny rok spędzę testując je...

 

 

Edytowano przez kmk68
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

@deshipu to może być trudne, bo klawiatura instrumentu musi wykrywać wszystkie klawisze oddzielnie. Wiem, że się teoretycznie da, ale koszt takiego rozwiązania może być wyższy niż zastosowanie ekspanderów.

@kmk68 uwierz mi, spi i i2c to są dwa różne światy. Tak samo Arduino (nieważne czy Leonardo czy Martyniuk) i ESP32.

Guzikówka... fajna rzecz. Nawet kiedyś potrafiłem na tym grać, tylko po co więcej niż 5 rzędów? Przecież jeśli używasz normalnego układu palców to grasz na trzech rzędach, a dalej to transpozycja... Z ciekawości pytam.

A jeśli programowanie to Twój zawód, to zapoznaj się z dokumentacją ESP32. Długa, nudniejsza niż man bash, ale bez tego to zrobisz akordeon z dwoma klawiszami. Mówię jako zawodowy programista.

PS. kiedyś zrobiłem klawiaturę guzikówki na Amidze, nawet dało się na tym grać 🙂

Link do komentarza
Share on other sites

3 minuty temu, ethanak napisał:

@deshipu to może być trudne, bo klawiatura instrumentu musi wykrywać wszystkie klawisze oddzielnie. Wiem, że się teoretycznie da, ale koszt takiego rozwiązania może być wyższy niż zastosowanie ekspanderów.

Nie rozumiem. Wszystkie moje klawiatury wykrywają wszystkie klawisze oddzielnie. Koszt sprowadza się do jednej diody sygnałowej per klawisz. Nie co wiem ty tu próbujesz zasugerować.

Właśnie zamówiłem 200 sztuk takich diod za $1.62, to chyba wychodzi taniej niż ekspandery.

Edytowano przez deshipu
Link do komentarza
Share on other sites

2 minuty temu, ethanak napisał:

220 diod versus kilka ekspanderów.

Nie kilka, tylko 36, skoro potrzeba jednego na każde 6 klawiszy. Nawet przy najtańszych podrobionych czipach z Chin wychodzi powyżej $8. A jeszcze trzeba to wszystko pomieścić na płytce, polutować, zasilać. Dodatkowe ekspandery na CS-y, bo już się nie mieści... Szkoda życia.

Link do komentarza
Share on other sites

Tak po policzeniu: jeśli to jest klawiatura guzikówki, to nawet przy 5 oktawach i tak potrzebujesz trzech rzędów, klawisze pozostałych są po prostu mechanicznie (jak w akordeonie) albo elektrycznie połączone z pierwszymi rzędami. Czyli wychodzi 61 klawiszy, cztery ekspandery.

Link do komentarza
Share on other sites

[Sarkazm]

Jak już nas tak nosi, to zawsze można też pobawić się w DAC na rezystorach i odczyt wartości analogowej... Ale to już sztuka dla sztuki, chociaż przy dobrym ADC w mikrokontrolerze można zrobić te "256" (dla łatwiejszego rachunku) klawiszy bez większych problemów 😉 

Rezystory są po 0.001$, nawet 1000 sztuk wychodzi taniej niż jakieś diody etc. 😉 Rozmiar też mały, bo 0402 (spokojnie da się przylutować, ostatnio nawet 0201 mi zaczęły sensownie wychodzić)... Normalnie rozwiązanie "idealne". 

Oczywiście kodowanie sygnałów analogowych metodą flagową. (0 = brak, 256 = A, 512 = B, 768 = AB...)

[/Sarkazm]

A tak na serio to aż mnie kusi spróbować zbudować coś takiego "dla sztuki" 😄 

P.S. sarkazm ze względu na tolerancje rezystorów

Edytowano przez H1M4W4R1
Link do komentarza
Share on other sites

A może zróbcie sobie obaj osobny mikrokontroler do każdego klawisza, żeby było jeszcze lepiej. Albo dwa, bo jeden to arduino, a drugi esp8266 żeby sieć robić, żeby nie trzeba było kabelków między guzikami, bo to też tyle roboty.

Niezależnie od liczby ekspanderów, diody zawsze będą tańsze, prostsze i bardziej niezawodne, a połączenie w kratkę łatwiejsze niż prowadzenie ścieżki albo kabelka do każdego przycisku osobno.

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

🙂 sorry, chwilę mnie nie było, i już awantura... 😉 a odpowiedź "dlaczego" jest w dwóch punktach:

- po pierwsze 12 styków na 6 klawiszy (klawiatura dynamiczna) stąd jeden ekspander na 6 klawiszy, a skanować trzeba by 440 styków... dużo... 😕 na ekspanderach i przerwaniach będzie szybciej

- po drugie (i to jest też odpowiedź na pytanie dlaczego taka a nie inna konfiguracja klawiatury) - to jest eksperymentalny instrument - nie wiem jeszczcze jaki będzie ostateczny rozkład klawiszy, zarówno mechaniczny, jak  i logiczny, być może będzie zmieniany dynamicznie w trakcie gry(?). Stąd odpadają wszelkie zrównoleglenia etc., stąd podświetlenie rgb. żeby wyróżnić obszary, W zamierzeniu prawa ręka plus basy po lewej plus "efekty specjalne" na górze po prawej... 🙂 Stąd też odpada wszelkie zestawianie matrycy, bo nie wiem jaka będzie. Najdroższą i najbardziej upierdliwą częścią projektu jest pcb, z 'pająków' już wyrosłem, a co jeśli nie wiesz jaki ma być ostateczny kształt klawiatury? Heksagonalny kształt zespołu po 6 klawiszy pozwala ułożyć je w 3, 4, 5, 6 rzędach... resztę robi program. Jak wyjdzie mi że chcę zrobić i wypróbować inny układ - zamówię wycięcie innej obudowy - z innym układem gniazd na te płytki. Jak mi się nie spodoba, to zrobię 3 klawiatury po 72 klawisze w klasycznym układzie pięciorzędowym. Płytki zostaną te same, inaczej je ułożę. A zebranie przerwań z 35 ekspanderów... to tylko kolejne 5 ekspanderów. 2 i 1/2 na CS i 2 1/2 na wejście przerwań.  🙂 🙂 🙂 Jedna lub dwie magistrale SPI (mostki z płytki na płytkę) plus osobny CS do każdej płytki, plus zasilanie (też mostkowane - ale 200 LED-ów trochę szarpie więc np po 5 zmostkkowane i do zasilacza)

Kiedyż miałem Rolanda FR-1 guzikowego, mam za sobą kilka mniej eleganckich prototypów tego co teraz robię... największym problemem było wykonanie mechaniczne, rażące siermiężnością, stąd tym razem poszedłem od drugiej strony, obudowa, klawisze (specjalnie wszedłem w drukowanie z żywic pod to), teraz czas na coś co pozbiera dane i wyśle je w taki czy inny sposób do midi. Chciałem po kablu, ale w międzyczasie wpadło mi w oko WIDI... stąd poszukiwanie czegoś z BT BLE. MOże się skończy na dwóch płytkach - pierwsza zbierająca dane - druga tylko transmisja po BT.

I - nie twierdzę że to jest optymalne rozwiązanie - tylko podpowiadam swoje założenia i uzasadnienie. 🙂

Pozdrawiam,

K.

  • Lubię! 2
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.