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

Obsługa transceiver'a RFM12B - Atmega8

22 Mar 2011 21:59 8232 21
  • Poziom 1  
    Witam,
    od kilku tygodni "bawię" się transceiverami rfm12b. Docelowo układ ma służyć do bezprzewodowego pomiaru temperatury (czujnik 18b20). Ale oczywiście od samego początku są z tym problemy. Stoję pod ścianą i nie wiem jak ruszyć. Znalazłem kilka projektów (kodów w C), ale niestety nic z tego nie chce ruszyć. Co ciekawe znalazłem sporo na ten temat na forum tylko problem z tym że jeśli ktoś uruchomił taki układ to już nie pochwalił się jak to zrobił. Nie chodzi mi o jakąś wielką naukę. Układ ma działać i nie chce się męczyć nad czymś co już zostało zrobione. Wiem że to niezbyt poprawne podejście ale nie mam na ten projekt zbyt wiele czasu - chociaż na początku myślałem że nie będzie z tym wielkich problemów.

    Znalazłem też kilka stron np. niemieckich na których także o tym piszą ale chodzi mi o to aby układ był sprawdzony a program działał na 100%.

    Serdecznie proszę aby ktoś wrzucił gotowy projekt i rozwiał wszelkie wątpliwości. Będę szalenie wdzięczny a jak wspomniałem sprawa dosyć pilna i nie ma czasu na zabawę.

    PS. Założyłem nowy post na temat RFM12B ponieważ ostatni post jaki widziałem o tym był z roku 2008.

    Jeszcze raz proszę o pomoc....
  • Poziom 10  
    Także mam problem z układem RFM12B. Oczywiście mógłbym umieścić swój program jednakże jest to raczej powielanie tego co można znaleźć na forum, a jednak to nie działa. Nie chodzi tu o jakieś bezmyślne przepisywanie kodu ale z samym uruchomieniem modułów, czyli "zmuszeniem" układów do komunikacji jest nie mały problem, a bez tego nie da się ruszyć dalej.
  • Poziom 26  
    Witam,
    w jakim języku chcesz to oprogramować?
    Na podstawie pliku w C oprogramowałem te moduły w Bascomie AVR.

    Jeśli chcesz pomogę, podaj nie działający przykład a ja Ci pomogę.
  • Poziom 10  
    Oczywiście. Każda pomoc się przyda... Bawię się językiem C. Szczerze mówiąc to moja pierwsza poważna przygoda z samodzielnym programowaniem Atmega8. Od razu biorę się za język C ponieważ jako student politechniki miałem sporo programowania w C++ oraz C# dlatego ominąłem Bascom'a bo potem trudno się przesiąść.

    Co do kodu to postaram się go ogarnąć pod względem estetycznym i programistycznym (chodzi o jakieś opisy) i za kilka dni wrzucę jakieś konkrety.
  • Poziom 35  
    rfm12b jest słaby. Nowe rfm22b są znacznie lepsze, udało się na nich postawić zaawansowaną multimasterową sieć.
    Mam materiały bardzo przydatne do ich uruchamiania - zainteresowani: pisać pm
  • Poziom 10  
    Przepraszam, długo nie odpisywałem.

    Oto kod którym się bawię:

    Nadajnik:
    Kod: c
    Zaloguj się, aby zobaczyć kod


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


    Od razu podkreślam że nie ma w tym kodzie nic odkrywczego. Większość czy może nawet całość to zlepek tego co udało mi się odszukać w innych postach dlatego nie potrafię teraz się odwołać do konkretnego tematu czy postu.


    Acha... Zapomniałem dodać że układ rfm12 połączyłem z atmega8 według pdf'a producenta dodatkowo podłączyłem diodę pod PC.3.
  • Poziom 26  
    W/g mnie brakuje w procedurze przy nadawaniu:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    natomiast przy odbiorze:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Komendy te służą do przełączania modułu między odbiorem a nadawaniem, jeśli dobrze zrozumiałem pdf-a. W kodzie w Bascomie jaki stosuję układ działa idealnie. Możliwe że procedury obsługi portu szeregowego też należy poprawić ale tego nie jestem pewien, sprawdź czy zadziała teraz.
  • Poziom 36  
    Widzę, że ponad miesiąc czasu upłynął, więc jeśli ktoś ruszył to pod BASCOMem, to niech się pochwali :-)
  • Poziom 12  
    Mat_91 napisał:
    LINK Tu na pewno coś znajdziesz.


    Na stronie trzeciej powyższego postu kolega avatar zamieścił swój kod. Wrzuciłem go u siebie na atmegę 8 zmieniając bodaj tylko dwie linie w inicjalizacji modułu (ja mam 433MHz) i zadziałało od strzała. Atmega na wewnętrznym oscylatorze 8MHz.
  • Poziom 12  
    Witam, Walczę z RFM12B 868MHz w Bascomie (v.1.11.9.8) już długi czas niestety bez pozytywnego rezultatu. Rfmki podpięte pod ATmega8 (TX), drugi pod ATmega48 (RX). Wewnętrzny oscylator 8MHz. Napięcie 5V jest podobno dopuszczalne. Ostatnia wersja Kolegi ATOMa też nie chce ruszyć.
    Uprzejmie proszę o działające procedury dla nadajnika i odbiornika.
    Pozdrawiam.
  • Poziom 26  
    Andylo napisał:
    Witam, Walczę z RFM12B 868MHz w Bascomie (v.1.11.9.8) już długi czas niestety bez pozytywnego rezultatu. Rfmki podpięte pod ATmega8 (TX), drugi pod ATmega48 (RX). Wewnętrzny oscylator 8MHz. Napięcie 5V jest podobno dopuszczalne. Ostatnia wersja Kolegi ATOMa też nie chce ruszyć.
    Uprzejmie proszę o działające procedury dla nadajnika i odbiornika.

    Witam,
    pokaż swój układ połączeń oraz swoje listingi, zobaczymy co masz źle i postaram się pomóc.
    Jacek
  • Poziom 25  
    Ja mam kompletne kody pod Bascom-a, pod RFM12 433Mhz.
    Na antenkach 16,5cm (oryginalnych dodawanych do modułu) osiągnąłem około 400m w terenie otwartym. Niestety nie pamiętam prędkości, ale wiem że była wolna :) Jeden z układów wysyła co około sekundę krótką ramkę danych:)
    Jeśli potrzeba to chętnie pomogę z uruchomieniem :) W brew pozorom to nawet fajne są te układy :)

    Pamiętajcie koledzy że RFM12B nie jest przystosowany do 5V aczkolwiek "czasem" się nie upalają :) RFM12 działają jak trzeba :)

    Jeśli chodzi o konfigurację to RFM12Calc pomaga idealnie w ustawieniach.
  • Poziom 12  
    Witam, Uprzejmie proszę o sugestie, co jest nie tak, jak byc powinno. Dziękuję za zainteresowanie. Pozdrawiam.

    [code]
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod
  • Poziom 13  
    Sam też swego czasu bawiłem sie z tymi układami i miałem problemy(szczegóły opisane są w tym poście https://www.elektroda.pl/rtvforum/topic1890395.html. Z mojego doświadczenia wiem, że lepiej zastosować konwertery stanów logicznych 5V<->3.3V. nie stosując ich upaliłem kilka modułów.
  • Poziom 12  
    Interesuje mnie kod w Bascomie, mimo jego wad. Wydaje mi się, że już wszystkie rozwiązania przetestowałem, ale niestety bez pomyśnych rezultatów. Czy w Bascomie to poszło? Pozdrawiam.
  • Poziom 26  
    Andylo napisał:


    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Witam,
    sprawdź komendę: Data_out = &H8298
    W/g mnie powinno być:
    Data_out = &H82c9
  • Poziom 12  
    Witam, Niestety brak reakcji. Nie mam pewności, że RFMka się skonfigurowała podczas inicjalizacji. Jeśli dobrze rozumiem, to po komendzie H82C9 powinien wyłączyć się CLK na pinie RFMki (bit dc=1). CLK jest zawsze niezależnie od stanu dc (0 lub 1).
    Tracę optymizm.
  • Poziom 26  
    Zgadza się, chociaż może być H82C8. Wyjście CLK nie ma wpływu na pozostałe parametry układu.

    Czy Ty masz dwa moduły każdy podłączony do innego procka?

    Podejrzewam że zasilając układ z 5V go zabiłeś.

    Przeglądałeś pdf-a do RFM12B?
    Electrical Parameter
    Maximum (not at working mode)
    Positive power supply -0.5 - 6.0V

    Recommended working range
    Vdd Positive power supply 2.2 - 3.8V

    Ponadto możesz sprawdzić pobór prądu przez sam moduł.
    Jeśli moduł przechodzi od stanu SLEEP do IDLE to zmienia się pobierany prąd.
    Jeśli nie zmienia się pobór prądu szukaj błędu w podłączeniu pinów lub ich konfiguracji.
  • Poziom 12  
    Są dwie RFMki, jedna do Atmega8, druga do Atmega48. CLK się nie wyłącza dla np H82C8. Nie wiem czy to normalne, czy RFMka w moim przypadku ignoruje komendy konfiguracyjne. Dalej nie znam odpowiedzi na pytanie, czy RFMka "zapamiętuje" ostatnie konfiguracje w swojej pamięci nieulotnej, czy też istnieje konieczność wpisywania konfigu każdorazowo po włączeniu zasilania. Moduły są sprawne, wlutowane na próbę do działającej płytki.
    A może jakiś 100% działający kod w Basicu (dla mnie) na dobry początek?
  • Poziom 26  
    OK postaram się do niedzieli przygotować prosty przykład sprawdzony przeze mnie ponieważ obecny kod jaki posiadam jest dość rozbudowany i zbyt zagmatwany.

    W załącznikach załączam sprawdzony i działający kod dla RFM12B 868MHz zasilanego z 3V wraz z prockiem M8.

    Dokonałem testu zasięgu w/w modułów z antenkami oryginalnie dołączonymi do nich tzn. 86mm przewodu przy bezpośredniej widoczności oraz dobrej pogodzie na prędkości 4800bps z wysyłaniem 8 bajtów danych co 1 sekundę. Odebranie odpowiedniego pakietu powodowało zgaszenie lub zapalenie diody led dołączonej do pinu procesora.
    Wyniki bardzo mnie zaskoczyły. Od 1m do ok 800m(punkt odbiornik 1) przełączanie odbywało się równomiernie świadcząc o poprawnym odbiorze.
    Natomiast od ok 800m do 960m odbiór stawał się mało pewny, przełączanie diody nie było już równomierne i w okolicy punktu odbiornik 2 całkowicie zanikało.

    W/g mnie doskonałe wyniki testu spowodowane są brakiem jakichkolwiek urządzeń przemysłowych w okolicy, braku urządzeń WiFi itp w obrębie kilkuset metrów.

    Obsługa transceiver'a RFM12B - Atmega8 Obsługa transceiver'a RFM12B - Atmega8
    Załączniki:
  • Poziom 26  
    Witam,
    po dłuższych testach załączam plik konfiguracyjny dla RFM12B na 57600bps.
    Przy takiej konfiguracji udało się uzyskać stabilny zasięg na zestawie j/w ok 150m, powyżej często pojawiały się przekłamania w przesyłanych ramkach.