Skocz do zawartości

Poszukiwany pasjonat z doświadczeniem do stworzenia prototypu bezprzewodowego kontrolera do modułu eurorack.


Pomocna odpowiedź

A tak właśnie sobie pomyślałem - dlaczego nie wykorzystać jakiegoś modułu typu midi over wifi? Sprawdzone rozwiązania, a z punktu widzenia programisty midi to zwykły serial...

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

1 godzinę temu, ethanak napisał:

Ty chcesz mieć działajace ustrojstwo? To poczekaj aż tu uzgodnimy jak to ma działać. Zauważ: teraz my gadamy o tym jak to zrobić, a jak już dojdziemy do tego że wiemy jak to któryś tam się pewnie weźmie za robotę

Ok, już zrozumiałem, jak funkcjonujecie.

Czekam na privie na śmiałka 🙂

Udanej dyskusji!

Link do komentarza
Share on other sites

@ethanak 

Na bazie modułu FS1000A

Strasznie nieregularne opóźnienia ma, przez co wysyłanie standardowego UART'a nie ogarnia...

UART 9600bps: ~150us +/- 30us
UART 4800bps: ~120us +/- 20us
UART 2400bps: ~100us +/- 25us

Więc moduł się nadaje, tylko przydałaby się jakaś sensowna modulacja 😄 

Oczywiście to latency między nadajnikiem i odbiornikiem na ~25cm. Bez dodatkowych anten ani opóźnień programowych.

Przy 8 bitach transmisji danych dochodzi jeszcze czas potrzebny na przesłanie całego pakietu = 1/baud * packet_length...

Czyli odpowiednio:

BAUD9600: 150us + 833us = 983us 
BAUD4800: 120us + 1667us = 1787us
BAUD2400: 100us + 3333us = 3433us

Czyli potrzebny jest moduł o dość szybkiej transmisji... I jakaś sensowna modulacja, co by nie było problemów z przekłamaniami danych... Więc dochodzi trochę dodatkowych opóźnień...

---

Dane mierzone oscyloskopem Siglent SDS1202X-E z sondami 200MHz, kalibracja na 10MHz.

---

Po przekopaniu ZPA to wygląda sensownie, chociaż lepsze byłoby coś bardziej analogowego...

---
EDIT: FS1000A całkiem nieźle sobie radzi z zasięgiem... Te 433MHz przechodzi przez ściany jak przez masło. Biblioteka RadioHead niestety tworzy bardzo duże pakiety, których transmisja jest zdecydowanie za wolna na to zastosowanie.

Pozostaje kwestia kluczowania danych... Zakładając, że osoba tupiąc musi podnieść nogę, co zajmuje zdecydowanie sporo czasu można ten czas poświęcić na transmisję czystego tła (same 0). I użyć określonej ilości zer by przełączyć odbiornik na tryb "gotowy do odczytu".

Wtedy transmisja 8 bitów zajmuje ok. 1ms + 150us w trybie 9600baud, co daje zadowalające latency, nawet jeżeli reszta układu wygeneruje latency na poziomie 1ms, to i tak będzie to ok. 2ms względem 7ms rozwiązania, z którego korzystał OP. Dodatkowo te moduły są tanie 😉 

Kluczowanie danych wymaga równoważenia zer i jedynek, więc zostaje dość mało opcji... Zakładając, że pierwszy bit musi być jedynką:

  • 10011001
  • 10101010
  • 10100101
  • 11000011

Chyba tylko 4 opcje... Może jakąś przegapiłem. W sam raz dla 4 rodzajów sygnałów... Gorzej, że system byłby podatny na "włamania" przez inne urządzenia pracujące na ASK 433MHz... Więc to może być problem, ale zakładam, że na sali koncertowej takie urządzenia raczej nie występują.

---

No i jednak nie daje rady... Arduino może by i dało radę to zdekodować, ale rozrzut opóźnień dalej jest zbyt brutalny...

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

Zgodnie z tym: https://blog.zakkemble.net/nrf905-avrarduino-librarydriver/

Moduły NRF905 powinny być w stanie osiągnąć oczekiwane opóźnienie. Zakładając transmisję PREAMBLE + po 8 bitów na adres, dane i CRC, daje to razem jakieś ...

0.00065 + 0.0002 + ((8 + 1 + 8)/50000) [s] = 1.2 [ms]

1.2ms opóźnienia... Nie licząc opóźnień programowych.

Wygląda sensownie i moduły z anteną są za <30 PLN na ZPA.

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

Wygląda ciekawie. ZTCW można zrezygnować z CRC, osiem bitów mniej do przesłania...

Na Aledrogo po 22 z czymś, akurat tyle żeby przy dwóch się w smarcie zmieścić... ciekawe jak w praniu.

A na 433MHz o ile pamiętam (mogę się mylić) pracują mikrofony i takie tam różne, czyli pasmo może być lekko zapchane, trzeba by sprawdzić.

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

3 godziny temu, ethanak napisał:

A na 433MHz o ile pamiętam (mogę się mylić) pracują mikrofony i takie tam różne, czyli pasmo może być lekko zapchane, trzeba by sprawdzić.

Zawsze można na 915, tylko to chyba mniej legalna opcja…

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

(edytowany)
16 godzin temu, H1M4W4R1 napisał:

1.2ms opóźnienia... Nie licząc opóźnień programowych.

Dorzucę jedną historię - gdyby udało się z takim opóźnieniem (+ programowo) aktywować loopa w ipadzie/ kompie to byłoby fenomenalne.

Edytowano przez Lukasze
Link do komentarza
Share on other sites

1 godzinę temu, Lukasze napisał:

ipadzie

iPad opada, za dużo zabawy z tworzeniem aplikacji. Android lepiej sobie radzi z uruchamianiem nieoficjalnych aplikacji (spoza sklepu). Na komputerze z Windowsem to bez problemu 😛 

1 godzinę temu, Lukasze napisał:

gdyby udało się z takim opóźnieniem

Pamiętaj, że to opóźnienie samej transmisji. Dochodzi jeszcze opóźnienie reakcji czujnika, też pewnie z 1-2ms.

EDIT: NRF905 powinny być we wtorek (około 13-14 o ile InPost znów nie nawali i nie dowiezie o 20:30 do paczkomatu)... Wtorek/środa na test i będzie wiadomo 😄 A dodatkowy moduł radiowy w szufladzie nigdy nie zaszkodzi.

@Lukasze będą Ci przeszkadzać przewody od paska do butów (od nadajnika do czujników) ok. 1m, grubość skrętki CAT5e?

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

@ethanak @Lukasze

NRF905 przesyłanie 1B danych bez CRC z 4B adresem: 0.89ms-1.87ms, przy 1B adresie odrobinę krócej, ale za to ilość błędów rośnie lawinowo...

Co do rozrzutu to nie wiem co jest tego przyczyną... Bo jest albo z lewej strony albo z prawej strony... Sama transmisja trwa ok. 0.6ms... Może kwestia reakcji na retransmisję pakietu?

Teraz pytanie jak to się zachowa na większe odległości... I jak z reliability, bo są z tym pewne problemy... Co najwyżej zrobi się to na przerwaniach z pinów...

EDIT1:

Oraz zabawa "na szybko" z akcelerometrem:

image.thumb.png.f4d73ac90c4dcfdcf0e8b9ae85f697de.png

😉 Chyba rozwiązanie będzie całkiem OK... Chociaż muszę wymyślić coś lepszego niż akcelerometr przyklejony na taśmę izolacyjną do nogi xD 

EDIT2:Trochę więcej obliczeń i testów później: Zgodnie z równaniem na wcześniej linkowanej stronie czas transmisji powinien wynieść 0.00065 + 0.0002 + ((32 + 8 + 0) / 50000) = 1.65ms... I to by się zgadzało. Te 0.2ms to pewnie kwestia rozjazdów... Testy robiłem na RP2040 (Raspberry Pi Pico) taktowanym na 133MHz (stock).

Patrząc na wykres akcelerometru opóźnienie reakcji będzie wynosić jakieś 0.5ms... W sumie da to opóźnienie rzędu 2.15ms na odległości 20cm. Sądzę, że na sensownych odległościach (1-5m) opóźnienie nie powinno przekraczać 3-3.5ms. Największą niewiadomą jest reliability, ale by przetestować musiałbym przepiąć nadajnik na drugą płytkę stykową i podpiąć w drugim pokoj, a trochę na to późno... (jest prawie 1 w nocy...

EDIT3:

Gorzej rozróżnić tupnięcie od kroku... Zwłaszcza testując na ADXL345 (bo ktoś czyt. ja jest zbyt leniwy by zlutować MPU6050...) XD

Ogólnie reakcja jest akceptowalna, reaguje na 99% tupnięć i na 78% kroków (/100 ea.)... Akcelerometr działający w 3 osiach by to znacznie uprościł, bo można by zweryfikować ruch w osi Z - w przód nogi... Bo ze względów wygody projektanta akcelerometr jest umieszczony z tyłu buta w pozycji X - lewo/prawo, Y - dół/góra... a ADXL345 słynie z problemów w osi Z 😄 (wypuścili dość dużą serię wadliwych układów, które w trybie 2G mają spory problem ze sobą znany jako Z-constant)...

Edytowano przez H1M4W4R1
Link do komentarza
Share on other sites

10 godzin temu, H1M4W4R1 napisał:

Sądzę, że na sensownych odległościach (1-5m) opóźnienie nie powinno przekraczać 3-3.5ms

Taki wynik to rewelacja, z tym, że trzeba dodać jeszcze przetworzenie sygnalu z odbiornika do instrumentu (czy to moduł Eurorack, czy instrument cyfrowy). No ale na razie obiecująco to wygląda - już mam dużą frajdę z całego procesu, a jak się okaże, że to będzie grywalne rozwiązanie to będzie fenomenalnie :).

Link do komentarza
Share on other sites

5 godzin temu, Lukasze napisał:

No ale na razie obiecująco to wygląda - już mam dużą frajdę z całego procesu, a jak się okaże, że to będzie grywalne rozwiązanie to będzie fenomenalnie :).

Lepiej się nie napalać, bo zwykle źle to się kończy...

Po dzisiejszych testach wyszło, że akcelerometr to złe rozwiązanie... Bo reaguje zarówno na podniesienie nogi jak i na tupnięcie... Więc trzeba szukać innego pomysłu na "czujnik"... Zostaje piezo, przycisk i czujnik wibracji... Z czego każdy będzie reagował zarówno na tupnięcie jak i na krok i żadnego (poza przyciskiem) nie mam...

Czas wrócić do teorii... Przynajmniej część radiowa jest z głowy, więc jak ktoś ma pomysł na czujnik może spokojnie użyć NRF905, moduły powinny dać radę.

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.