Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

WS2812 via DMX (512 LED) & USB to DMX Converter na AVRmega. Gry Tenis, Galag

R-MIK 09 Sie 2017 09:12 3057 4
  • WS2812 via DMX (512 LED) & USB to DMX Converter na AVRmega. Gry Tenis, Galag
    Głównym zadaniem urządzenia jest sterowanie diodami WS2812 z DMX. W ten sposób można sterować 170 diodami paletą 24-bit lub 512 paletą 8-bit (216 ?bezpiecznych? barw). Dodatkowo urządzenie może pełnić funkcję konwertera USB-DMX. Sterownik diod potrafi obsługiwać kilka wirtualnych ekranów (warstw) niezależnych od siebie. Ekrany posiadają priorytety, tak jak duszki (sprite's) w C-64 czy Atari. Warstwa o najniższym numerze ma najwyższy priorytet i zasłania wszystko co się pod nią znajduje. Aby zademonstrować możliwości sterownika, diody ułożono w prostokąt 16x8 led. Na ekranie tym zaprezentowano dwie gry: Tenis i Galaga. Na nich widać warstwę tła, obiektów, licznik punktów, itd. Dzięki temu, że są od siebie niezależne napisanie gier było dość łatwe. Przy wykorzystaniu transmisji DMX warstwy można wykorzystać do połączenia dwu strumieni DMX (tu może problemem być wydajność mikrokontrolera) lub ?naniesienia? na obraz diod z DMX innych, niezależnie animowanych obiektów.
























    Daję linki do YouTube bo filmy przesłane na serwer Elektrody zrobiły się jakieś krótkie:
    AVT5607 Galaga WS2812 via DMX
    AVT 5607 Tenis WS2812 via DMX
    AVT5607 Napiss WS2812 via DMX

    Dodatkową funkcją urządzenia jest konwersja USB-DMX. Niestety FT221 nie potrafi wykryć sygnału BREAK synchronizującego początek ramki DMX. Z tego powodu realizowane jest to programowo. W konsekwencji, praca w tym trybie nie jest gwarantowana z każdym programem. Prototyp bez większych problemów działał z "DMX512 Light Control" ale współpraca z "USB2DMX512DEMO" napisanego w Delphi była niemożliwa.

    Ze względu na to, ze opis urządzenie będzie publikowany w EP na tą chwilę nie mogę umieścić tu szczegółowej dokumentacji (schematów, kodów źródłowych). Dołączam schematy kluczowych elementów urządzenia. Odbieraniem i nadawaniem DMX zajmuje się UART SC16IS760 z 64bajtowym FIFO pracujący po SPI. SC16IS7xx to ciekawe układy. Można z nimi komunikować się po SIC i IIC. Poza dużym FIFO posiadają tryb automatycznego sterowania/reakcji na linie RTS/CTS. Mogą automatycznie zmieniać kierunek przy pracy z RS485. Posiadają dodatkowe GPIO. W jednej obudowie znajduje się jeden lub dwa USART-y. Więcej o tych układach napisałem tu USART via IIC/SPI, 64 bajty FIFO, AUTO Flow control, AUTO DIR RS-485, 18 GPIO . Wcześniejsze próby użycia do tego UART-a mikrokontrolera, jakkolwiek wypadły pomyślnie, to jednak dla bezpieczeństwa w projekcie dałem zewnętrzny UART. To był dobry pomysł, bo okazało się, że "równoczesna" praca na przerwaniach UART-a obsługującego WS2812 i UART-a odbierającego DMX powoduje czasem gubienie danych DMX.
    USB obsługuje FT221. Więcej o układach FT22x (SPI), FT20x(IIC) można przeczytać w kursie publikowanym w EP. Pierwszy odcinek pojawił się w EP 7/2017.
    Joy-e analogowe podłączone są bezpośrednio do mikrokontrolera. Co prawda na prototypowej PCB znajdują się klucze 4053 ale są cały czas włączone. Pierwotnie przewidywałem przyłączanie kluczy na czas pomiaru wartości napięcia ustawionego potencjometrami joysticków a odłączanie podczas komunikacji w trybie równoległym z FT221. Ostatecznie zrezygnowałem z tego i z FT221 komunikuję się po SPI zrealizowanym programowo a wejścia ADC są odczytywane w przerwaniach.

    Diody wymagają pracy UART-a z prędkością ok 2,4Mb/s. Jaką maksymalna prędkość można ustawić w AVR Mega/Tiny?


    Fajne!
  • #2 14 Sie 2017 19:20
    Jacekser
    Poziom 16  

    R-MIK napisał:
    ...Jaką maksymalna prędkość można ustawić w AVR Mega/Tiny?

    Dla Atmega XXX chyba można ustawić fosc/8 przy wewnętrznym zegarze ,bodajże fosc/4 przy zewnętrznym(ale dla trybu synchronicznego) i fmax=20MHz.Lepsze są Xmegi(odpowiednio fosc/2 synchro-fosc/8 asynchro) i przy zegarze wew 32MHz.Tyle że 3,6 Vss max dla Xmega czemu ubolewam bo wolałbym 5V.Może kolega TMF by zabrał głos bo wie na pewno lepiej.

  • #3 14 Sie 2017 19:33
    R-MIK
    Poziom 35  

    W Xmega to zero problemów. Tam jest DMA i ono może zajmować się transmisja danych z RAM USARTA. Obciążenie CPU jest wtedy bardzo małe.

  • #4 18 Sie 2017 11:03
    karol75
    Poziom 16  

    ^^^
    Ale wtedy można wysyłać tylko 8 linii (8 uartów).
    Przy wykorzystaniu 4 portów można wysłać 8*8*1024(65536) diod przy wysyłaniu 2*8*512 nie widać migania, a wręcz jest za szybki i trzeba wstawiać opóźnienia.
    Kiedyś pokazywałem projekt ale był "komercyjny" i został usunięty.

  • #5 18 Sie 2017 22:22
    R-MIK
    Poziom 35  

    Pirometr + 7szt DS18B20 + WS2812 + Zapis na PenDrive + USB do komputera. Pierwsza wersja:







    Pilot RC5 ale pisze obsługę popularniejszego RC6. Wywalę też demo LED przy przełączaniu kanałów. Pilotem można regulować jasność LED:







    Na filmie kiepsko to widać. Automatyka komórki nie radzi sobie a wyłączyć jej nie można. Jak będzie produkt finalny to załażę osobny temat i umieszczę nagranie aparatem.

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME