logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Zdalne radiowe sterowanie 28-kanałowe z łatwą dalszą rozbudową

zdzbia 19 Sty 2018 20:42 6726 22
  • Witam.
    Parę lat temu zaprojektowałem i wykonałem tablicę wyników sportowych dla sali gimnastycznej. Sterowanie tablicy było wykonane za pomocą sterownika, który był połączony przewodem z tablicą. Dlaczego przewodem...? Do sterowania tablicy potrzeba aż 107 przycisków i nie miałem pomysłu, jak takie sterowanie wykonać drogą radiową. Po kilku latach postanowiłem wrócić do tematu i opracować sterowanie tablicy drogą radiową. Problem tkwi w ilości kanałów, jakie oferują gotowe rozwiązania, najczęściej jest to tylko kilka kanałów. Przeglądałem rozwiązania oparte na mikrokontrolerach, ale stabilność pracy, zakłócenia i potrzeba kodowania, a potem dekodowania sygnału (np. Manchester) zniechęciły mnie do takiego rozwiązania. Postanowiłem połączyć analogowe układy zdalnego sterowania z mikrokontrolerami. W projekcie wykorzystałem dość popularne i tanie układy zdalnego sterowania HT12E i HT12D. Układy te posiadają tylko 4 kanały sterowania, ale w połączeniu z mikrokontrolerem, można zwiększyć ilość kanałów do 14 na jeden układ. W moim projekcie muszę odpowiednio połączyć 8 tych układów. Doświadczenia przeprowadzałem na dwóch układach, co daje razem 28 kanałów, rozbudowa o kolejne kanały jest dość prosta.

    Nadajnik
    Nadajnik oparty jest na jednym układzie HT12E i jednym układzie Atmega8 dla 28 kanałów, ale dla 107 kanałów muszę zastosować Atmega32. Atmega8 posiada tylko 6 portów ADC, Atmega32 posiada 8, które zostaną wykorzystane do klawiatury ADC.
    Piny od 1 do 8 układu HT12E odpowiadają za kodowanie wysyłanego sygnału. Na schemacie nadajnika widać, że wykorzystałem dwa piny 7 i 8. Za pomocą mikrokontrolera na te piny podaje odpowiednio stan 0 w zależności, który układ w odbiorniku ma odebrać sygnał. Klawiaturę oparłem na wbudowanym w mikrokontroler przetwornik ADC. Należy pamiętać przy pisaniu kodu mikrokontrolera dla większej ilości kanałów, że jedne wejścia ADC pracują jako 8-bitowe, a inne jako 10-bitowe. Kody mikrokontrolerów napisałem w Bascomie, które udostępniam jako materiał do analizy, wykorzystania czy rozbudowy. Nadajnik i odbiornik wg załączonych schematów zostały wykonane i przetestowane, działają prawidłowo.

    Zdalne radiowe sterowanie 28-kanałowe z łatwą dalszą rozbudową

    Odbiornik:
    W odbiorniku zastosowałem układ HT12D, tak jak wcześniej wspomniałem, układ ten obsługuje tylko 4 kanały. Wykorzystując kombinację zero jedynkową czterech kanałów mogę uzyskać 16 kombinacji. Same zera i same jedynki pomijamy i tak pozostaje nam 14 kanałów. Czyli na każde 14 kanałów potrzebujemy po jednym układzie HT12D i Atmega8. Docelowo będę musiał zbudować osiem takich układów 8 x 14 = 112. Piny odpowiedzialne za dekodowanie sygnału (od 1 do 8) układu HT12D odpowiednio połączone są na stałe z masą, by dostroić się do nadajnika.

    Zdalne radiowe sterowanie 28-kanałowe z łatwą dalszą rozbudową

    Nadajnik:
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod



    Odbiornik:
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod

    Fajne? Ranking DIY
    O autorze
    zdzbia
    Poziom 11  
    Offline 
    zdzbia napisał 19 postów o ocenie 16. Mieszka w mieście Grójec. Jest z nami od 2008 roku.
  • #2 16974084
    es2
    Poziom 16  
    Posty: 226
    Pomógł: 8
    Ocena: 26
    Strasznie przekombinowane. Wystarczy tor radiowy, uC z USART, ramki z CRC. Po co jeszcze jakieś starodawne HT12D?
  • #4 16974157
    es2
    Poziom 16  
    Posty: 226
    Pomógł: 8
    Ocena: 26
    zdzbia napisał:
    Próbowałem tak zrobić jak napisałeś, ale nie chciało mi to działać

    Robiłem tak wielokrotnie i nie ma problemu. Zrobiłeś preambułę (synchronizację)? Pewnie nie. HT.. to robi.
  • #6 16974414
    Urgon
    Poziom 38  
    Posty: 7208
    Pomógł: 197
    Ocena: 2630
    AVE...

    Dwa moduły nRF24L01 i masz komunikację dwukierunkową za niecałe dziesięć złotych. Są gotowe biblioteki do używania tych modułów, użyj jednej na wzór i tyle. Bonusowo moduły same załatwiają takie sprawy, jak synchronizacja ramek, CRC czy mechanizm ACK/NACK. W ramce wysyłasz 14 bajtów i masz obsługę 112 przycisków...
    Swoją szosą ciekawe, jak ta tablica jest zrobiona, że potrzebuje tylu klawiszy, co klawiatura komputerowa...
  • #7 16974441
    es2
    Poziom 16  
    Posty: 226
    Pomógł: 8
    Ocena: 26
    zdzbia napisał:
    Może cały problem w tym, że programuje tylko w Bascomie, bardzo mało jest konkretnych podpowiedzi w necie w tym języku.

    Język to jedno, algorytm do druga sprawa.
    Jeśli używa się zabawkowego Bascom, nie ma co liczyć na dużą bazę przykładów. Bascom ogranicza się do 8051 i AVR. Basic pomiędzy soba są praktycznie niekompatybilne. W przypadku Pascala jest lepiej, bo istnieje na wiele platform, ale też nie warto używać go w mikokontrolerach, to raczej ciekawostka. To, że w dzisiejszych czasach, jedyny sens to pisanie w C, jest oczywiste.

    Przejdźmy jednak do algorytmu. Jaki problem przenieść jakąś funkcję czy mały program z C czy ASM na Basic? Za czasów 8051 często portowałem z C na ASM. Bywało, że kod z ASM Z-80 czy PIC portowałem na 8051 a zgodność pomiędzy ASM jest praktycznie żadna.

    Co do komunikacji radiowej, to robiłem to jeszcze za czasów świetności 8051 pisząc w ASM bez wiedzy z Internetu. Wystarczył oscyloskop aby zobaczyć, że odbiornik potrzebuje czasu na ustawienie swoich warunków pracy. Ponadto, aby każdy odbiornik pracował dobrze trzeba zadbać o to aby liczba 0 i jedynek była równa. Transmisja powinna być ciągła, jeśli są to paczki danych to muszą być poprzedzone ciągiem synchronizującym. Dokładnie takie same wymagania jak np dla danych zapisywanych na dyskietkach.
  • #8 16974481
    Urgon
    Poziom 38  
    Posty: 7208
    Pomógł: 197
    Ocena: 2630
    AVE...
    es2 napisał:
    Ponadto, aby każdy odbiornik pracował dobrze trzeba zadbać o to aby liczba 0 i jedynek była równa. Transmisja powinna być ciągła, jeśli są to paczki danych to muszą być poprzedzone ciągiem synchronizującym. Dokładnie takie same wymagania jak np dla danych zapisywanych na dyskietkach.

    To jest dobre, jak stosujesz jakieś prymitywne radia analogowe na 433MHz z modulacją OOK, co w obecnych czasach jest bezsensowne ze względu na zaśmiecenie tego pasma. Moduły cyfrowe stosują modulację FSK w jednej z kilku różnych odmian i dodatkowo pracują na nieco czystszym paśmie 2.4GHz, jak wspomniany wyżej nRF24L01. O wbudowanej synchronizacji ramek, CRC, ACK/NACK wspomniałem. Dodam jeszcze automatyczną retransmisję w razie NACK, 125 kanałów do wyboru, możliwość adresowania pakietu, by odbierał go tylko jeden moduł, a przy okazji możliwość wyboru jednego z sześciu "kanałów danych" w obrębie jednego modułu...
  • #9 16974545
    es2
    Poziom 16  
    Posty: 226
    Pomógł: 8
    Ocena: 26
    Urgon napisał:
    To jest dobre, jak stosujesz jakieś prymitywne radia analogowe na 433MHz z modulacją OOK

    Dlatego napisałem każdy. Wśród amatorów popularne sa zestawy nadajnik-odbiornik za 3zł.
  • #10 16974697
    zdzbia
    Poziom 11  
    Posty: 19
    Ocena: 16
    Urgon napisał:
    AVE...

    Dwa moduły nRF24L01 i masz komunikację dwukierunkową za niecałe dziesięć złotych. Są gotowe biblioteki do używania tych modułów, użyj jednej na wzór i tyle. Bonusowo moduły same załatwiają takie sprawy, jak synchronizacja ramek, CRC czy mechanizm ACK/NACK. W ramce wysyłasz 14 bajtów i masz obsługę 112 przycisków...
    Swoją szosą ciekawe, jak ta tablica jest zrobiona, że potrzebuje tylu klawiszy, co klawiatura komputerowa...


    Co do ilości klawiszy... jak klawiatura komputerowa... W tej tablicy jest osiem wyświetlaczy alfanumerycznych na jedną stronę i do każdego po dwa klawisze co daje już 32 przyciski. Tablica posiada jeszcze zegar czasu rzeczywistego, zegar czasu gry, liczba punktów zdobytych, nr seta, liczba wygranych setów, nr zawodnika, który dostał karę indywidualną i czas odmierzający karę - jednocześnie dla 10 zawodników. Tablica jest dość mocno rozbudowana stąd taka duża ilość przycisków.
  • #11 16975107
    SylwekK
    Poziom 32  
    Posty: 2764
    Pomógł: 82
    Ocena: 2762
    To fajnym rozwiązaniem było by napisać apkę na tablet z pełną wizualizacją tablicy i aktywnymi polami przycisków. Wysłać to po wifi, a po stronie odbiorczej jakiś avr do dekodowania sygnału + kilka układów 74HC595 jako przyciski i mamy przyzwoite szybkie i łatwe sterowanie.
  • #12 16975203
    Urgon
    Poziom 38  
    Posty: 7208
    Pomógł: 197
    Ocena: 2630
    AVE...

    Albo ESP8266 + 2 rejestry przesuwne + matryca transoptorów 16x7 coby nie ingerować nadmiernie w oryginalne sterowanie...
  • #13 16976325
    Cersunited
    Poziom 16  
    Posty: 325
    Pomógł: 4
    Ocena: 146
    Zgadzam się z przedmówcami, że projekt totalnie przekombinowany. Wystarczy WiFi (CC3200) lub jak wystarczy BT i wysyłanie odpowiednich danych. Nie potrzeba ponad stu kanałów do tego typu rozwiązania:)
  • #14 16976386
    Konto nie istnieje
    Konto nie istnieje  
  • #15 16985046
    kotbury
    specjalista -automatyka bramowa
    Posty: 9489
    Pomógł: 2080
    Ocena: 3577
    Cytat:
    To każdy wyświetlacz musi mieć osobne przyciski?

    Tu jestem za autorem - aktualizacja wyników podczas meczu (siatki, ręcznej, a zwłaszcza kosza - i to im wyższy poziom meczu tym trudniej) to nie pisanie SMS - nie ma czasu na wklepywanie od nowa kilku pozycji wyświetlacza - zmienia się tylko błyskawicznie jedną cyfrę góra/dół....

    Ale faktycznie zamiast zestawu 8 dekoderów po 14 kanałów chyba prościej byłoby użyć po obu stronach 1 małej Atmegi (których i tak w sporej liczbie używasz) i długiego rejestru przesuwnego. Całe kodowanie i dekodowanie do i z radia pozostawić w "rękach " atmegi (dopisując preambułę i stop) - jak koledzy wcześniej zauważyli. Ilość scalaków zmniejszyłaby się o połowę.
    Widać u autora "kablową" przeszłość tablicy przeniesioną na radio.

    Ale grunt że działa.
  • #16 16986544
    zdzbia
    Poziom 11  
    Posty: 19
    Ocena: 16
    kotbury napisał:
    Cytat:
    To każdy wyświetlacz musi mieć osobne przyciski?

    Tu jestem za autorem - aktualizacja wyników podczas meczu (siatki, ręcznej, a zwłaszcza kosza - i to im wyższy poziom meczu tym trudniej) to nie pisanie SMS - nie ma czasu na wklepywanie od nowa kilku pozycji wyświetlacza - zmienia się tylko błyskawicznie jedną cyfrę góra/dół....
    Ale grunt że działa.


    Zanim napisałem ten artykuł przeprowadziłem sporo testów z różnymi rozwiązaniami, również z użyciem tylko uC, ale nie chciało mi to działać prawidłowo (zbyt małą pewnie jeszcze wiedzę mam), w internecie też za dużo przydatnych materiałów nie znalazłem (programowanie tylko w bascom'ie mnie tu ogranicza). Ale dziękuję za pierwszy post, który mnie tak całkiem nie skrytykował.
  • #17 16997600
    gazmajster
    Poziom 11  
    Posty: 6
    Ocena: 10
    Witam,
    Podoba mi się takie (karkołomne) podejście do sprawy ale pozostając przy Twojej koncepcji tzn na kostkach HT12e-d. Czy nie lepiej by było zamiast 8 kostek w odbiorniku zastosować jedną a w nadajniku
    co każdy półbajt zmieniać adres ,a po stronie odbiorczej za pomocą nogi VT zwiększać licznik o 1 i synchronicznie zmieniać adres kostki. W ten sposób po następną kostkę HT12D sięgnął byś dopiero po wyczerpaniu adresów sprzętowych wspomnianych układów.
    Pozdrawiam i życzę powodzenia,Gaz
  • #18 16997903
    zdzbia
    Poziom 11  
    Posty: 19
    Ocena: 16
    gazmajster napisał:
    Witam,
    Podoba mi się takie (karkołomne) podejście do sprawy ale pozostając przy Twojej koncepcji tzn na kostkach HT12e-d. Czy nie lepiej by było zamiast 8 kostek w odbiorniku zastosować jedną a w nadajniku....


    Myślałem o takiej koncepcji, ale problemem jest ograniczona ilość pinów w Atmega8, musiałbym zastosować wtedy 3 układy Atmega128 (koszt ok 45zł + koszt przesyłki). Mam trochę układów Atmega8 z demontażu, więc koszt wykonania przedstawionego rozwiązania będzie dużo niższy. Układy HT też nie są drogie.
  • #19 16998134
    Urgon
    Poziom 38  
    Posty: 7208
    Pomógł: 197
    Ocena: 2630
    AVE...

    74HC595 kosztuje po złotówce za sztukę, łączysz je w łańcuszek i używając bodaj trzech pinów mikrokontrolera możesz mieć 128 wyjść używając tylko 16 układów logicznych...

    Podaliśmy Ci kilka lepszych rozwiązań, lepsze układy RF i sposoby na uproszczenie całości. Czemu komplikujesz sobie życie?
  • #20 16998434
    zdzbia
    Poziom 11  
    Posty: 19
    Ocena: 16
    Urgon napisał:
    AVE...

    74HC595 kosztuje po złotówce za sztukę, łączysz je w łańcuszek i używając bodaj trzech pinów mikrokontrolera możesz mieć 128 wyjść używając tylko 16 układów logicznych...

    Podaliśmy Ci kilka lepszych rozwiązań, lepsze układy RF i sposoby na uproszczenie całości. Czemu komplikujesz sobie życie?


    Bo ten mój układ działa, proponowane przez użytkowników rozwiązania na pewno są o wiele doskonalsze i bardziej zaawansowane, ale w większości z nich z moim poziomem wiedzy nie jestem wstanie wykonać (chodzi o oprogramowanie).
  • #21 16998735
    Urgon
    Poziom 38  
    Posty: 7208
    Pomógł: 197
    Ocena: 2630
    AVE...

    Ja też mam bliżej do początkującego, niż do eksperta, ale powiem koledze jedno: jeśli nie będziesz próbował sięgać dalej, niż sięgasz teraz, to nigdy nie wyjdziesz poza to, co już umiesz.
    Jeśli upierasz się na te proste układy komunikacji, to jeden zestaw nadajnik+odbiornik w zupełności wystarczy, jak trochę pokombinujesz z kodem. W zasadzie dwa kanały Ci wystarczą, ale ja bym użył czterech: pierwszy koduje dane, drugi koduje zegar, trzeci koduje dane binarnie odwrócone, czwarty koduje zegar binarnie odwrócony. Piąty i szósty mogą robić za sygnał początku i końca słowa ośmiobitowego, siódmy i ósmy za ich odwrotności. W skrócie mikrokontroler po stronie nadajnika skanuje matrycę klawiszy i rezultat zapisuje w buforze, potem szeregowo wysyła go przez moduł nadawczy stosując wyżej opisane znaczenie kanałów. Po stronie odbiorczej mikrokontroler oczekuje na te dane i zapisuje je w buforze, po zakończeniu transmisji zaś wysyła je jako sekwencję do rejestrów 74HC595, które aktywują odpowiednie klawisze na tablicy. Jeśli po stronie odbiorczej masz dwa piny z funkcją "przerwanie na zmianę", to możesz to użyć jako sygnał do odbierania ramki danych z nadajnika...
  • #22 16998774
    Konto nie istnieje
    Konto nie istnieje  
  • #23 16998875
    gazmajster
    Poziom 11  
    Posty: 6
    Ocena: 10
    HC-12 SI4463 433MHz to już moja "ostatnia armata" wysyłasz po UART i tak samo odbierasz - jest w AVT

Podsumowanie tematu

✨ Dyskusja dotyczy projektowania zdalnego radiowego sterowania dla tablicy wyników sportowych, która wymaga 107 przycisków. Użytkownik początkowo korzystał z układów HT12E i HT12D, ale napotkał problemy z ograniczoną liczbą kanałów i stabilnością. Uczestnicy forum sugerują alternatywne rozwiązania, takie jak użycie modułów nRF24L01, które oferują dwukierunkową komunikację, synchronizację ramek oraz większą liczbę kanałów. Wskazują również na możliwość uproszczenia projektu poprzez zastosowanie rejestrów przesuwających 74HC595 oraz mikrokontrolerów Atmega. Wiele osób podkreśla, że programowanie w języku Bascom może być ograniczające, a lepszym wyborem byłoby użycie języka C. Użytkownik wyjaśnia, że duża liczba przycisków wynika z rozbudowanej funkcjonalności tablicy, która obsługuje wiele parametrów gry.
Wygenerowane przez model językowy.
REKLAMA