Elektroda.pl
Elektroda.pl
X
Elektroda.pl
OptexOptex
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Nad/Odb 433MHz - kod Manchester - porównania/ranking

mirekk36 04 Lut 2010 15:44 35477 48
  • Nad/Odb 433MHz - kod Manchester - porównania/ranking
    Witam,

    Wziąłem się w końcu za transmisję radiową na poważnie ;) .... Chodziło mi o przygotowanie, że tak powiem uniwersalnego softu, który będzie działał z dowolną parą prostych nadajniczków/odbiorniczków typu 433MHz czy 833MHz. Do budowy użyłem - wypróbowałem 3 pary różnorakich par nad/odb. Dobrałem je w pary tak aby uzyskiwać dla nich jak najlepsze parametry. Wiem , że są jeszcze tysiące innych ale mi zależało także żeby ceny były możliwie jak najniższe tzn żeby był dobry stosunek jak najniższej ceny do jakości ;)

    Dlatego zrobiłem taki mój ranking jakościowy bo często słychać o takich 3 podstawowych rodzajach kompletów przy czym z wieloma z nich ludzie często mają problemy. Ja sam przyznam, że jakiś czas temu ponad rok gdy zakupiłem jako pierwszy komplet nad/odb firmy AUREL to okazało się, że np do transmisji RS232 to się wogóle nie nadaje. A że ciężko zawsze było jakoś programowo zrobić coś swojego to i poszedł ten komplet w najgłębsze dno szuflady. Kolejną parą po aurel'u był komplet firmy TELECONTROLLI. No tu już sytuacja była dużo dużo lepsza bo z pełną odpowiedzialnością mogę powiedzieć, że transmisję RS232 może nie najszybszą bo tylko 4800bps można na tym spokojnie uzyskać, choć też trzeba sobie mocno filtrować ramki a i zasięg w takim przypadku nie jest jednak zadowalający. Potem próbowałem jeszcze komplet Vellman'a.

    Postanowiłem jednak odgrzebać te swoje wykopaliska i na nowo zabrać się ale dając sobie spokój z transmisją RS232, która do prostych zastosowań w prościutkich pilocikach nawet wielokanałowych jest wręcz przerostem formy nad treścią. A próbujemy jej zwykle używać bo to najłatwiej przychodzi - ot podłączyć do nóg TxD oraz RxD procka i po zawodach - tyle że są jednak przez to ograniczenie co do zasięgu albo brak możliwości wykorzystania takich AUREL'i

    Postanowiłem napisać procedurki do nadawania i odbioru ale z użyciem kodowania Manchester. Podobne rozwiązanie jak np jest jako gotowiec w produktach kompilatorów firmy

    http://www.mikroe.com/en/compilers/mikroc/avr/

    tylko, że tam jest to transmisja typu "Blocking" czyli odbiór nie działa na przerwaniach i jednym poleceniem wysyłamy tylko jeden bajt. To blokowanie w rezultacie strasznie utrudnia pracę na procku we własnych programach tym bardziej, że na czas odbierania danych muszą być wyłączone inne przerwania - co czyni to dosyć mało uzytecznym wg mnie. Ja postanowiłem, że muszą być spełnione takie założenia:

    1. Nadawanie bez użycia przerwań2. Odbiór danych ładnie na przerwaniach (np jak RC5 w podczerwieni)
    2. Możliwość przesyłania w jednej ramce dancyh więcej niż 1go bajta. W tym konkretnym przypadku w 1nej ramce leci sobie 8bitów (cały bajt danych) a do tego 5 bitów - na dodatkowe potrzeby plus 1bit pełniący rolę ToggleBit'u jak w RC5 - dzięki czemu pięknie można implementować obsługę tegoż wszystkiego w zasadzie dokładnie tak jak zwykłego odbioru RC5.
    3. Sprzętowa (w sensie że w procedurze obsługi przerwania odbiornika) eliminacja błędnych ramek !!!
    4. Większa szybkość przesyłanych danych w porównaniu np do standardu RC5. I tak w standardzie RC5 długość transmitowanego pojedynczego bitu = aż 1.778us natomiast tutaj mam możliwość płynnej regulacji i np na ciut lepszych kompletach Telecontrolli długość bitu może wynosić jedynie 200us !!! natomiast w kompletach AUREL może wynosić jedynie 500us ! - też dobry wynik, Niestety w kompletach Vellman ta długość musi wynosić też ok 1800us i pomimo to i tak bywa sporo przekłamanych ramek (najgorsze jakościowo komplety). Jednak mowa tu o dużej ilości przesyłanych non stop ramek - a tak dla obsługi pojedynczych naciśnięć jakiegoś klawisza pilocika to i Vellman daje sobie radę.

    w efekcie końcowym okazało się że nie dość że wszystko przepięknie ruszyło to jeszcze ZASIĘG ZWIĘKSZYŁ SIĘ DRASTYCZNIE w porównaniu do prób z transmisją RS232 a druga dobra wiadomość - okazało się że spokojnie i to bardzo dobrze działają kopleciki firmy AUREL !!! co więcej także z SUPER DOBRYM ZASIĘGIEM.

    Wnioski po testach urządzeń:

    1. Komplet Telecontrolli - I miejsce (zasięg w otwartej przestrzeni do 300m rzeczywiście - fizycznie sprawdzone ! , w pomieszczeniach zamkniętych np w typowym mieszkaniu w bloku z płyt betonowych - pokrycie na całej powierzchni 100m mieszkania - ściany żelbetonowe nie są żadną barierą co przy transmisji RS232 już stanowiło problem. W mieszkaniu z bloku z cegły zasięg nie tylko w mieszkaniu ale jeszcze do 50m poza mieszkaniem na wolnej powierzchni. DŁUGOŚĆ BITU 200us)

    2. Komplet Aurel - II miejsce (zasięg w przesterzeni otwartej zbliżony do tego powyżej, w pomieszczeniach zamkniętych różnego typu także podobne zachowanie do powyżej opisanego. Długość bitu 500us)

    3. Komplet Vellman - III miejsce (zasięg w przestrzeni otwartej nie dalej niż 50m i to już z dużymi błędami. W pomieszczeniach zamkniętych tzn pomiędzy pokojami już bardzo źle. Długość bitu 1800us)

    poniżej fotki z testowanego akurat kompletu na Telecontrolli:

    nadajnik:
    Nad/Odb 433MHz - kod Manchester - porównania/ranking

    odbiornik:
    Nad/Odb 433MHz - kod Manchester - porównania/ranking

    aha dodam, że jako anten użyłem drutu o długości 1/4 fali zgodnie z obliczeniami dla częstotliwości 433MHz
    Nad/Odb 433MHz - kod Manchester - porównania/ranking

    wszystkie komplety testowane w takich samych warunkach z użyciem procesora ATmega8. Kod pisany w C, zajętość kodu - kilkaset bajtów, więc można spokojnie użyć np ATtiny13 (kodu nie udostępniam ale to w zasadzie prawie to samo co kod do obsługi RC5 - tyle że z dużo lepszymi parametrami szybkości i pojemności danych.

    Nad/Odb 433MHz - kod Manchester - porównania/ranking

    Nad/Odb 433MHz - kod Manchester - porównania/ranking

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    mirekk36
    Poziom 42  
    Offline 
    Ciekawy kurs VIDEO - EAGLE - zajrzyj na mój blog
    mirekk36.blogspot.com - VOLATILE ? to łatwe

    Specjalizuje się w: programowanie: avr c, delphi pc, android
    mirekk36 napisał 9195 postów o ocenie 2236, pomógł 964 razy. Mieszka w mieście Szczecin. Jest z nami od 2006 roku.
  • OptexOptex
  • #2
    machacz102
    Poziom 14  
    Rozumiem że opracowany kod nie jest przeznaczony do publikacji?? :> Szkoda...
  • OptexOptex
  • #3
    11111olo
    Poziom 42  
    A czy jakby dodać zewnętrzny sygnał prostokątny na bramkę razem z sygnałem RS232 i ten podać na IN nadajnika to czy tak by bezproblemowo działała transmisja?
  • #4
    mirekk36
    Poziom 42  
    machacz102 napisał:
    Rozumiem że opracowany kod nie jest przeznaczony do publikacji??


    Ale za to pomogę chętnie we wszystkich informacjach żeby sobie go napisać bo to nie trudne, tym bardziej, że już podpowiedziałem, że wystarczy tak na prawdę wziąć prawie na "żywca" kod nadajnika i odbiornika podczerwieni w standardzie RC5 (bo to też kodowanie manchester). Jedyne co trzeba zmienić na sam początek to wywalić nośną 36kHz i bez niej działać - co przecież jeszcze bardziej upraszcza sprawę prawda?


    11111olo napisał:
    A czy jakby dodać zewnętrzny sygnał prostokątny na bramkę razem z sygnałem RS232 i ten podać na IN nadajnika to czy tak by bezproblemowo działała transmisja?


    No tego to zabardzo nie rozumiem - ale chyba raczej taki sygnał nie zostałby odebrany poprawnie przecież po drugiej stronie więc jaki to miałoby sens? Na prawdę wystarczy raz się wczytać i zrozumieć standard podczerwieni RC5 - i wszystko stanie się jaśniejsze. Potem tylko poszerzyć pojemność bitów danych i już
  • #5
    shadow0013
    Poziom 34  
    machacz102 - nie martw się za jakiś czas będziesz mógł kupić bibliotekę na atnelu, może mirekk36 na elektrodzie zamieści wersję demo?- jak reklama to na całego.
  • #6
    11111olo
    Poziom 42  
    Wszystkie te nadajniki muszą być kluczowane sygnałem prostokątnym i myślę że wystarczy wolno zmienny RS232 (np. 300bps) kluczować sygnałem 30kHz aby odbiornik odebrał go poprawnie. A może się mylę?
    Chodzi o to że dokładając np. NE555 mam NORMALNY RS232.
  • #7
    __Grzegorz__
    Poziom 28  
    Autor zastosował elementarne kodowanie kanałowe.
    Wielkie mi halo....

    Naturalnym efektem jego zastosowania jest poprawa jakości łącza.
    Zapewniam, że po zastosowaniu bardziej "cwanego" kodowania zasięg i szybkość transmisji jeszcze by wzrosły.

    W łączności radiowej przesyłanie "czystych" danych - to totalna lameriada.
    Dane MUSZĄ być odpowiednio zakodowane.

    Podsumowując:
    autor wyważył szeroko otwarte drzwi...


    ...
  • #8
    mirekk36
    Poziom 42  
    11111olo napisał:
    Wszystkie te nadajniki muszą być kluczowane sygnałem prostokątnym i myślę że wystarczy wolno zmienny RS232 (np. 300bps) kluczować sygnałem 30kHz aby odbiornik odebrał go poprawnie. A może się mylę?
    Chodzi o to że dokładając np. NE555 mam NORMALNY RS232.


    Ale po co kluczowanie 30kHz ? skoro przepustowość sygnału którym można modulować to średnio ok kilku (5) kHz

    Tak jak pisałem np komplet Telecontrolli można spokojnie użyć do transmisji RS232 i to z prędkością aż 4800bps i robi się to bez żadnego kluczowania. I da radę go oderbrać po drugiej stronie. Gorzej z Aurelem i RS232 - nawet żeby 300bps przeszło. Ponieważ w trakcie gdy żaden nadajnik nie nadaje to na wyjściu odbiornika jest cały czas szum. I potrzeba ramek że tak powiem rozbiegowych/synchronizacyjnych, żeby następne mogły zacząć przechodzić stabilnie. Jednak pomimo to RS232 na aurelach się rozjeżdża. Za to dowolne dane transmitowane za pomocą kodowania Manchester ślicznie śmigają i wychodzi z tego nawet fajna przepustowość jak na potrzeby prostego nawet wielokanałowego sterowania.
  • #9
    11111olo
    Poziom 42  
    Ale ja chcę użyć RS232 bo jest SPRZĘTOWE na AVR. Jak to zrobić?
  • #10
    mirekk36
    Poziom 42  
    __Grzegorz__ napisał:
    Naturalnym efektem jego zastosowania jest poprawa jakości łącza.
    Zapewniam, że po zastosowaniu bardziej "cwanego" kodowania zasięg i szybkość transmisji jeszcze by wzrosły.
    taaak? a do jakich odległości ??? z 300m do 310m ? czy może z 300m do 1-2km??? A moc nadajnika to co?

    __Grzegorz__ napisał:

    W łączności radiowej przesyłanie "czystych" danych - to totalna lameriada.
    Dane MUSZĄ być odpowiednio zakodowane.
    ...


    zakodowane? tzn masz na myśli zaszyfrowane czy co? czy może nie wiesz co to kodowanie bifazowe?

    aha z ciekawości zapytam, bo może czegoś nie wiem - czym się różnią dla ciebie "czyste" dane od właśnie - od czego? od "brudnych" danych ??? wyjaśnij mi proszę.

    Dodano po 3 [minuty]:

    11111olo napisał:
    Ale ja chcę użyć RS232 bo jest SPRZĘTOWE na AVR. Jak to zrobić?


    Tak jak pisałem wyżej - trzeba zdecydować się , wybrać czasem metodą żmudnych prób i wydanej kasy - wybrać odpowiedni komplet nadajnika i odbiornika jakiejś firmy.

    Dlatego miałem nadzieję, że te informacje będą przydatne, bo przecież pisałem m.inn, że właśnie ta konkretna para (patrz symbole) TELECONTROLLI umożliwi ci spokojne przesyłanie sygnału wprost ze sprzętowego RS232. Nie musisz więc tracić czasu na testy. Na elektrodzie jest kilka fajnych projektów w których właśnie ten temat tych konkretnych kompletów telecontrolli był poruszany. I ja sam to już dawniej testowałem dlatego wiem co polecam.
  • #11
    __Grzegorz__
    Poziom 28  
    mirekk36 napisał:
    __Grzegorz__ napisał:
    Naturalnym efektem jego zastosowania jest poprawa jakości łącza.
    Zapewniam, że po zastosowaniu bardziej "cwanego" kodowania zasięg i szybkość transmisji jeszcze by wzrosły.
    taaak? a do jakich odległości ??? z 300m do 310m ? czy może z 300m do 1-2km??? A moc nadajnika to co?


    Daruj sobie te taaaak...
    Moc nadajnika masz narzucona przez producenta modułu.
    JEDYNY sposób zwiększenia zasięgu i zmniejszenia/redukcji błędów (czyli zwiększenia przepustowości de facto) to stosowanie coraz bardziej wymyślnego kodowania danych.

    mirekk36 napisał:

    __Grzegorz__ napisał:

    W łączności radiowej przesyłanie "czystych" danych - to totalna lameriada.
    Dane MUSZĄ być odpowiednio zakodowane.
    ...

    zakodowane? tzn masz na myśli zaszyfrowane czy co? czy może nie wiesz co to kodowanie bifazowe?

    - nie zaszyfrowane, ale inaczej zakodowane. Temat rzeka i wiele możliwych podejść.
    Można to zrobić tak jak ty (Manchester), można dorobić HDLC, można podejść statystycznie i potraktować dane Huffmanem przykładowo... Wiele możliwości.
    - nie sugeruj mi nawet, że nie wiem co to kodowanie bifazowe.

    Cytat:

    aha z ciekawości zapytam, bo może czegoś nie wiem - czym się różnią dla ciebie "czyste" dane od właśnie - od czego? od "brudnych" danych ??? wyjaśnij mi proszę.

    Ująłem to może nie precyzyjnie używając skrótu myślowego.
    Czyste - 0 i 1 (RS232)
    Brudne - dane zakodowane wg określonego algorytmu, czyli "przebrane" 0 i 1 z RS.
  • #12
    mirekk36
    Poziom 42  
    __Grzegorz__ --> no to na drugi raz wyrażaj się jaśniej ale mam też propozycję czytaj uważniej. Tym projektem nie miałem zamiaru udowadniać światu, że wymyśliłem najlepsze czy jeszcze lepsze niż obecnie znane standardy kodowania. Też wiem, że jest ich sporo i różnych. Celem było zwrócenie uwagi niektórym osobom, które także kiedyś kupiły sobie np AUREL'ki i gdy nie działała im na nich transmisja RS232 to kupowali kolejne te uważając, że są do wyrzucenia. Tak więc pokazałem jeden z najprostszych sposobów dzięki którym można efektywnie wykorzystywać nawet takie proste nadajniczki.

    Jako przykład podałem, że wystarczy lekko przerobić RC5 żeby już można było z nich korztstać oraz ogólne sposoby majstrowania przy tym w celu zwiększania ich przepustowości. HDLC brzmi dla początkującego jak wieli jeż - a kodowanie RC5 to już prawie każdy zna - więc trzeba jeszcze umieć zainteresować kogoś i umiejętnie wytłumaczyć a nie rzucać się zbóg wie czym - czego początkujący nie zrozumie a zaawansowany nawet nie przeczyta bo sam sobie zrobi i to lepiej.

    Więc ty też daruj sobie te nie mające związku z tematem uwagi, które wynikają raczej z nie przeczytania całości co najmniej i może z chęci pokazania czego to ty nie potrafisz i że znasz HDLC i podobne. Co z tego? zrób, pokaż, opisz włóż choć troszkę pracy i wysiłku a wtedy dyskutuj bo tak - zamiast sugerować mi , że ja nie znam innych metod kodowania. Co z tego , że znam? - to nie jest post, wątek dla zaawansowanych - bo każdy zaawansowany sobie coś takiego i lepszego zrobi w miarę potrzeb. To jest porada i podpowiedzi dla tych, którzy się nie znają na tym jeszcze tak dobrze jak jaśnie ośiwecony szanowny pan kolega Grzegorz, który lubi się co nieco poprzechwalać czy może poszpanować? nie wiem

    Chyba, że ja ciebie też źle zrozumiałem.
  • #13
    regrom
    Poziom 16  
    Ciekawe rozwiązania, i za to +, niedawno zacząłem zabawę z avr, i trochę poznałem ATmegę 8, lecz transmisja danych jeszcze przede mną.

    Po głowie chodzi mi bezprzewodowy programator AVR(zamiast kabla lpt, usb), czy z użyciem takich modułów lub podobnych, było by to możliwe?
  • #14
    andrzej31-91
    Poziom 11  
    Witam wszystkich. Mam pytanie czy jeżeli do nadajnika na wejście podał bym sygnał z wyjścia kodera DTMF to na odbiorniku mógłbym przetworzyć ten sygnał dekoderem na binarny?? Dokładniej mi chodzi czy to musi być transmisja cyfrowa czyli zer i jedynek, czy można przesłać taki sygnał jak bezpośrednio z kodera??
  • #15
    mirekk36
    Poziom 42  
    regrom napisał:

    Po głowie chodzi mi bezprzewodowy programator AVR(zamiast kabla lpt, usb), czy z użyciem takich modułów lub podobnych, było by to możliwe?


    Obawiam się, że jednak do zrobienia akurat bezprzewodowego programatora to mogłyby się one niezbyt nadawać. Za to na Bluetooth można sobie zrobić hmmm radiowe programowanie zale za pomocą mechanizmu np Bootloadera, np tak:

    https://www.elektroda.pl/rtvforum/topic1343484.html

    Dodano po 1 [minuty]:

    andrzej31-91 --> hmm ja się akurat nigdy DTMF'em jeszcze nie zajmowałem więc nie wiem nawet do końca jak ta transmisja wygląda i dlatego też nie będę w stanie ci pomóc, ale może ktoś tu zajrzy - kto bawił się dokładnie DTMF'em i też praktykował z 433MHz itp
  • #16
    Użytkownik usunął konto
    Użytkownik usunął konto  
  • #17
    andrzej31-91
    Poziom 11  
    mirekk36 czy mógłbyś spróbować na weście nadajnika podać sygnał sinusoidalny a na odbiorniku na wyjściu zobaczyć oscyloskopem jak on bedzie wyglądał??
  • #18
    mirekk36
    Poziom 42  
    tridio napisał:

    Możecie mi wytłumaczyć dlaczego przy stosowaniu czystej transmisji zasięg jest mniejszy niż przy transmisji "odzianej" jakimś algorytmem? Rozumiem część z przepustowością, ale nie potrafię sobie wyobrazić jak to może wpływać na zasięg.


    Tak na prawdę chodzi może nie tyle o zasięg fizyczny bo on zależy od mocy nadajnika i czułości odbiornika ale o zasięg nie zakłóconych danych. Wyobraź sobie, że chcesz przesłać 10 bitów , niech każdy ma wartość ZERO logiczne i chesz je wysłać najprostszym sposobem tak, że np jeden bit zajmuje 1ms, czyli ZERO to stan niski przez 1ms a JEDEN to stan wysoki przez 1ms. No i teraz wysyłasz te 10 bitów o wartości ZERO - czyli tak na prawdę przez 10ms utrzymujesz stan niski na wejściu nadajnika i liczysz na to, że po stronie odbiornika także dokładnie przez 10ms będziesz miał stan niski. Badasz po stronie odbiornika sobie co 0,5ms stan bitu i teoretycznie gotowe - prawda? A jednak nie do końca prawda - ponieważ w wyniku zakłóceń w takich transmisjach - może się okazać że przyleci ci stan niski przez czas 9,5ms - a wtedy twoje badanie co 0,5ms stanu poszczególnych bitów okaże się błędne . Tak więc przydałby się jakiś sposób, żeby tak zakodować dane aby można było jeszcze na podstawie odebranego sygnału przeprowadzać synchronizację, dzięki czemu nawet jeśli przyleci troszkę zniekształcony czasowo to i tak odzyskamy dane. W tym celu wymyślono m.inn kodowanie bifazowe (kod Manchester).... poczytaj o nim tutaj i zobacz mniej więcej na czym polega - to wbrew pozorom bardzo proste.

    http://pl.wikipedia.org/wiki/Kod_Manchester

    ma on swoje zalety ale także wady, dlatego wymyślano jeszcze lepsze sposoby kodowania sygnału w celu eliminacji zakłóceń a co za tym idzie zwiększania zasięgu jeśli chodzi o zwiększanie procentu poprawnych danych odbieranych na jak największej odległości.

    Dodano po 2 [minuty]:

    andrzej31-91 napisał:
    mirekk36 czy mógłbyś spróbować na weście nadajnika podać sygnał sinusoidalny a na odbiorniku na wyjściu zobaczyć oscyloskopem jak on bedzie wyglądał??


    hmmm nie mam za bardzo skąd wziąć takiego sygnału ale na pewno da radę tyle że niewielkie częstotliwości a to bardzo ogranicza użytkowanie sygnałów analogowych zdaje się. Po drugie chyba telecontrolli mają także we/wy dla danych analogowych oprócz cyfrowych wię na pewno w jakimś zakresie można - ale trzeba dokładniej w tym celu poczytać PDF'a żeby dowiedzieć się o możliwościach i ograniczeniach dla takich sygnałów.
  • #19
    master_pablo
    Poziom 16  
    11111olo napisał:
    Ale ja chcę użyć RS232 bo jest SPRZĘTOWE na AVR. Jak to zrobić?

    Nie powinno byc problemu. Trzeba ustawic UART w tryb 8n1 (8 bitow danych, brak bitu parzystosci, 1 bit stopu) i wysylac kazdy bajt na trzy razy. Bit startu ma wartosc 0, a wiec bit wysylany po nim musi miec wartosc 1, a bit stopu ma wartosc 1, wiec bit wysylany przed nim musi miec wartosc 0. Na bitach 6-1 bajtow do wyslania zapisujemy kolejno bity 7-5, 4-2 i 1-0 danej, zakodowane Manchesterem. A wiec chcac wyslac 5Ah=0101 1010b wysylamy kolejno:
    CCh=1100 1100b (wysylamy 0101 1010)
    ACh=1010 1100b (wysylamy 0101 1010)
    B2h=1011 0010b lub B4h=1011 0100b (wysylamy 0101 1010).
    Mozna tez oczywiscie przesylac dane 9- zamiast 8-bitowych.

    PS. Te moduly korzystaja z modulacji FSK (kluczowanie czestotliwosci), a wiec sygnalow analogowych wg mnie nie mog przenosic.
  • #20
    mirekk36
    Poziom 42  
    master_pablo --> bardzo fajna informacja, ty to zawsze masz ciekawe pomysły ;)

    Z drugiej strony tu też trzeba się wysilić i troszkę kodu napisać i pokombinować ale istotną zaletą jest to, że w zamian mamy sprzętową obsługę i z przerwaniami w jedną i drugą stronę.

    Ale znowu dochodzi jeszcze jedna rzecz o które może zapomniałem wspomnieć, to to, że np szczególnie przy AUREL'kach trzeba jeszcze stosować jakąś rameczkę synchronizacyjną poprzedzającą właściwą ramkę szczególnie po dłuższym okresie przerwy w nadawaniu. Ale co za problem wysyłać w powyższy sposób jeden tzw DUMMY BYTE przed właściwym bajtem. Chyba jutro z ciekawości się tą metodą też pobawię jak starczy czasu.

    A swoją drogą ileż ten popularny i stareńki RS232 ma zastosowań - m inn w podobny sposób można z niego korzystać do komunikacji 1wire a nawet do dekodowania danych z pilotów podczerwieni ;)

    Dodano po 3 [minuty]:

    master_pablo napisał:

    PS. Te moduly korzystaja z modulacji FSK (kluczowanie czestotliwosci), a wiec sygnalow analogowych wg mnie nie mog przenosic.


    no tak pomyliło mi się z tym telecontrolli i sygnałem analogowym, ale rzuciłem okiem teraz do noty i okazało się, że zmylił mnie sygnał tzn wyjście o nazwie Linear OUT które jest w odbiorniku Vellman'a .... chociaż w nadajniku nie ma wejścia Linear IN ;) .... a ja skojarzyłem to z we/wy analogowymi.
  • #21
    pepson
    Poziom 17  
    Szacunek dla autora
    Podoba mi się taki ranking
    szkoda, że nie obejmuje większej ilości modułów
    i podstawowych parametrów

    Również robiłem testy z różnymi modułami
    efekty raczej były mizerne
    zwłaszcza z tymi najtańszymi odbiornikami superreakcyjnymi

    Aż trafiłem na moduły RFM12 (ewentualnie RFM12B na 3,3V)
    tu stosunek jakości i możliwości transmisji do ceny jest nie do pobicia
    w cenie 40-paru złotych (za 2 dwa moduły z Seguro) mam transmisję dwukierunkową
    o zasięgu i parametrach które mnie naprawdę zadowoliły

    Szczerze polecam
  • #22
    mirekk36
    Poziom 42  
    pepson ---> w sumie to właśnie dlatego się zmusiłem do podjęcia ostatecznej próby z tymi komplecikami, które zalegały w szufladzie, żeby jednak je także wykorzystać do czegoś sensownego - jeśli w końcu uda się zrobić sterowanie. A że się udało i to bardzo dobrze - to w końcu opuszczą szuflady.

    Natomiast też już nie raz przymierzałem się do zakupu i wypróbowania tych RFM12B - tyle że zawsze mnie jakoś troszkę powiem szczerze odstraszała komunikacja SPI, konieczność zdaje się ich ustawiania i samego uruchamiania.

    ale widzę, że kolejnym krokiem na pewno będą te właśnie RFM'y ;) bo jednak cena powala z nóg. Ale skoro już coś z nimi robiłeś to może napiszesz chociaż ze 2-3 zdania tak ogólnie oczywiście - czy ciężko się rzeczywiście do nich zabrać (co wynikałoby z niektórych postów na elektrodzie) czy łatwo i ew na co zwrócić uwagę oraz jakie masz efekty końcowe czyli jaka prędkość transmisji jake zasięgi itp? byłbym wdzięczny
  • #23
    pepson
    Poziom 17  
    Dość długo czekały na swoją kolej
    Bo materiały wtedy znalezione w sieci
    nie umożliwiały mi przetestowania podanych przykładów
    (większość była w C i to na AVR a ja utknąłem w asemblerze 8051)

    Używam wersji na 868MHz bo takie akurat dostałem
    Nie testowałem jkichś wyżyłowanych parametrów prędkości
    Ale zrobiłem test na 2,4kbps (jeden moduł w pokoju na stole)
    z drugim odchodziłem od domu.
    Po ponad 100m zaczęły się pojawiać przerwy w transmisji
    Nie był to test obu modułów w otwartej przestzeni,
    ale taki układ pracy i tak nie jest mi potrzebny.

    Początek faktycznie nie był łatwy
    Studiowałem obszerną dyskusję na elkektrodzie
    i trochę to robiło zamieszania
    Ktoś pisał, ze są wymagające co do długości połączeń
    jakoś tego nie potwierdzam. Spokojnie na płytce stykowej
    z przewodami po kilkanaście centymetrów to chodzi.

    Fakt, trzeba przesłać kilka bajtów konfiguracyjnych
    ale to nie jest taki kłopot
    najdłużej borykałem się z transmisją SPI
    bo w procku 89C51 nie ma sprzętowego interfejsu
    a zrobiłem małą pomyłkę programową
    Nie ma sensu się tu rozpisywać
    jest inny wątek w tym temacie
    Ja mogę tylko coś poradzić piszącym w asemblerze 8051
    ale ten gatunek już chyba jest na wyginięciu :)

    Dodano po 21 [minuty]:

    Przyponiał mi się taki dość śmieszny przypadek
    Testowałem wprowadzenie RFMa w tryb uśpienia
    i nie mogłem osiągnąć katalogowego poziomu poboru prądu
    (4 czy 6uA nie pamiętam) a było kilkakrotnie więcej
    Po długich zmaganiach okazało się, że powodem był
    oscyloskop podłaczony do jednego z wyjść
    i to był prąd płynący przez jego oporność wejściową.

    Dodano po 45 [minuty]:

    Właśnie testuję bezprzewodowy czujnik temperatury
    Prowizoryczny odbiornik zrealizowany na RFM12
    i module z graficznym wyświetlaczem LCD i ADuC841
    Nad/Odb 433MHz - kod Manchester - porównania/ranking

    Trochę miałem kłopot ze znalezieniem złącza z rozstawem pinów 2mm
    typowe 2,54mm nie pasują do tych wersji RFM12x
  • #24
    mirekk36
    Poziom 42  
    pepson --> dzięki za info ;) ... a znasz może albo masz gdzieś w ulubionych - stronkę którą mógłbyś szczerze polecić gdzie są właśnie jakieś wskazówki dobre odnośnie samego wysyłania i ustawiania tych kilku niewinnych bajtów konfiguracyjnych???
  • #25
    pepson
    Poziom 17  
    Niestety nie mam nic w tym temacie w ulubionych

    obszerna dyskusja na temat RFM12 jest tu:
    Link

    tu są przyzwoicie opisane wszystkie bity z rejestrów konfiguracyjnych RFM12B
    dokumentacja znacznie lepsza niż ta ze strony producenta modułów RFM
    Link


    to ustawienia konfiguracji które przetestowałem
    Code:

    ;================================================================
    ;inicjalizacja modułu RFM12 lub RFM12B
    ;================================================================
    INIT_RFM12B:
       MOV   DPTR,#80E7H   ; 868band,12.0pF uaktywnienie rejestrów TX i FIFO
       LCALL   WRITE_CMD
       MOV   DPTR,#0A640H   ; //frequency select
       LCALL   WRITE_CMD
    ;   MOV   DPTR,#0C623H   ; prędkość transmisji 1.2 kbps
       MOV   DPTR,#0C691H   ; prędkość transmisji 2.4 kbps   
       LCALL   WRITE_CMD
       MOV   DPTR,#096A0H   ; //VDI,SLOW,134kHz,0dBm,-103dBm
       LCALL   WRITE_CMD
       MOV   DPTR,#0C2ACH   ; //AL,!ml,DIG,DQD4
       LCALL   WRITE_CMD
       MOV   DPTR,#0CA81H   ; //FIFO8,SYNC,!ff,DR
       LCALL   WRITE_CMD
       MOV   DPTR,#0CED4H   ; //SYNC=2DD4 , AG
       LCALL   WRITE_CMD
       MOV   DPTR,#0C483H   ; //@PWR,NO RSTRIC,!st,!fi,OE,EN   C483
       LCALL   WRITE_CMD
       MOV   DPTR,#9850H    ;TX set //!mp,90kHz,MAX OUT
        LCALL   WRITE_CMD
       MOV   DPTR,#0CC17H   ; //OB1 , ACOB0, LPX,Iddy,CDDIT,CBW0   17
       LCALL   WRITE_CMD
       MOV   DPTR,#0E000H   ; //NOT USED
       LCALL   WRITE_CMD
       MOV   DPTR,#0C800H   ; //NOT USED
       LCALL   WRITE_CMD
       MOV   DPTR,#0C040H   ; //1.66MHz,2.2V
       LCALL   WRITE_CMD
       RET

    ;w programie głównym
    ;ta komenda przełącza na  nadawanie
    ;   MOV   DPTR,#8238H   ; //!er,!ebb,ET,ES,EX,!eb,!ew,DC [ tryb NADAJNIK  ]
    ;ta komenda przełącza na odbiór
       MOV   DPTR,#82D8H   ; //!er,!ebb,ET,ES,EX,!eb,!ew,DC [ tryb ODBIORNIK ]
       LCALL   WRITE_CMD
  • #26
    mirekk36
    Poziom 42  
    pepson --> wielkie dzięki , myślę że to super uzupełnienie tego tematu. Jeśli będę kiedyś próbował coś na tych modulikach a będą jednak jakieś problemy to pozwolę się jeszcze z tobą skonsultować. Ale mam nadzieję, że po tak drobiazgowych prawie opisach i ciekawych linkach - na pewno się uda.
  • #27
    pixel7
    Poziom 22  
    Ja ustawiam je tak:

    Code:

    rfm12_init_data:
       
    .dc.w 0xc0e0               ; 15 na clk 10MHz
    .dc.w 0x80d7                    ; 2 enable TX register, enable RX FIFO buffer
    .dc.w 0xc2ab                    ; 7 enable clock recovery auto-lock, digital filter
    .dc.w 0xca81                    ; 8 sync-word, disable hi sensitivity reset mode
    .dc.w 0xe000                    ; 13 wake up timer, nic ciekawego
    .dc.w 0xc800                    ; 14 disable lpwdudy cycle mode
    .dc.w 0xc4f7                    ; 10  enable AFC hi accuracy mode, AFC output register, AFC funcition
    .dc.w 0xa620
    .dc.w 0x949c                    ; 948c  -6dBm     
    .dc.w 0xc610                                   
    .dc.w 0x9860
  • #28
    mirekk36
    Poziom 42  
    pixel7 --> rozumiem, że w ten sam sposób inicjalizujesz nadajnik / odbiornik a później tylko tak jak pisał wyżej pepson w programie głównym przełączasz na nadawanie lub odbiór. A napisz może też jakie prędkości udało ci się bezproblemowo uzyskać czy też zasięgi - tak z czystej ciekawości dopytam?

    (poza tym też dzięki za info)
  • #29
    pixel7
    Poziom 22  
    Tak, przełączanie w kodzie. Zasięg, testowany to kilkadziesiąt metrów w hali (stalowej), nie potrzebuje prędkości więc nigdy nie testowałem maksymalnych. W każdym razie układy są naprawdę stabilne. Moje są na 433, stosuje ćwierćfalowe anteny 173 mm.
  • #30
    piotr411
    Poziom 22  
    mirekk36

    Zastanawiam się czy oby na pewno podłączyłeś właściwie TX433N.
    Zasięg jaki podałeś sugeruje na uszkodzenie bądź niewłaściwe zasilanie.
    Z testów jakie prowadziłem z TX433N jest najmocniejszym pod względem mocy nadajnikiem z trzech wymienionych.
    Uzyskanie 5km przy pomocy tej pary nie stanowi problemu, warunkiem jest
    zastosowanie odpowiednich anten Yagi.
    Na antenach typu GP w otwartej przestrzeni uzyskuje sie 500m przy 9V zasilania.
    Gotowy taki zestaw oferuje AVT1468 i 500m nie stanowi problemu.
    Testy jakie prowadziłeś najwyraźniej są czysto teoretyczne i mają sie nijak do
    prawdziwych zasięgów wymienionych par.
    Dodam,że para TX/RX433N powszechnie stosowna jest w urządzeniach sterowania przemysłowego, pilotach i tam producenci podają 200m-500m i zastanów się dlaczego nadajnik TX433N zasilany jest baterią A23

    Napisałeś, że TX433N ma najgorsze parametry. Podaj jakie otrzymałeś wyniki harmonicznych, moc, i szerokość pasma dla kanału. Ciekaw jestem czy pokryją się z moimi ;)

    Ja odwróce ranking

    1 TX433N + Aurel RX-4MM5
    2 Telecontroli/Aurel