Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

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

zdzbia 19 Sty 2018 20:42 4500 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: vbnet
    Zaloguj się, aby zobaczyć kod



    Odbiornik:
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Fajne!
  • #2 19 Sty 2018 22:35
    es2
    Poziom 15  

    Strasznie przekombinowane. Wystarczy tor radiowy, uC z USART, ramki z CRC. Po co jeszcze jakieś starodawne HT12D?

  • #4 19 Sty 2018 23:01
    es2
    Poziom 15  

    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 20 Sty 2018 08:57
    Urgon
    Poziom 36  

    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 20 Sty 2018 09:29
    es2
    Poziom 15  

    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 20 Sty 2018 09:55
    Urgon
    Poziom 36  

    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 20 Sty 2018 10:38
    es2
    Poziom 15  

    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 20 Sty 2018 11:59
    zdzbia
    Poziom 9  

    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 20 Sty 2018 14:52
    SylwekK
    Poziom 28  

    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.

  • #13 20 Sty 2018 23:03
    Cersunited
    Poziom 16  

    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 20 Sty 2018 23:35
    AnicoZ
    Poziom 17  

    zdzbia napisał:
    Co do ilości klawiszy... (...) Tablica jest dość mocno rozbudowana stąd taka duża ilość przycisków.

    To każdy wyświetlacz musi mieć osobne przyciski? Wystarczy klawiatura 3x4 lub 4x4 do wprowadzania danych. Te w tablicy będą dekodowane i wyświetlana będzie wymagana treść. Gdyby do wszystkiego podchodzić, że każda cyferka to osobny klawisz, to klawiatura telefonu wyglądałaby jak klawiatura kasy mechanicznej z 19 wieku, 10 klawiszy 0, 10 klawiszy 1, 10 klawiszy 2, itd.

  • #15 24 Sty 2018 14:06
    kotbury
    specjalista -automatyka bramowa

    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 24 Sty 2018 22:30
    zdzbia
    Poziom 9  

    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 29 Sty 2018 17:13
    gazmajster
    Poziom 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 29 Sty 2018 19:07
    zdzbia
    Poziom 9  

    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 29 Sty 2018 20:15
    Urgon
    Poziom 36  

    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 29 Sty 2018 21:25
    zdzbia
    Poziom 9  

    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 29 Sty 2018 22:59
    Urgon
    Poziom 36  

    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 29 Sty 2018 23:13
    AnicoZ
    Poziom 17  

    zdzbia napisał:
    ale w większości z nich z moim poziomem wiedzy nie jestem wstanie wykonać (chodzi o oprogramowanie).

    Skoro sterujesz pinami układów HC to jaki problem wysłać dane do rejestru np 74HC595? Mastera I2C pisałem na 8051 i zajęło mi to kilka godzin. Nie było debugera, oscyloskop analogowy czyli bez pamięci, do dyspozycji sonda logiczna. Napisanie obsługi rejestru to max godzina dla osoby słabo znającej się na programowaniu. Znalezienie tego w necie pewnie tyle samo.

  • #23 29 Sty 2018 23:53
    gazmajster
    Poziom 10  

    HC-12 SI4463 433MHz to już moja "ostatnia armata" wysyłasz po UART i tak samo odbierasz - jest w AVT

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