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

Obsługa transceiver'a RFM12B - Atmega8

ryba87_ 22 Mar 2011 21:59 8649 21
  • #1 9310666
    ryba87_
    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....
  • #2 9310728
    szotko
    Poziom 11  
    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.
  • #3 9338825
    Jacek Rutkowski
    Poziom 28  
    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ę.
  • #4 9345897
    szotko
    Poziom 11  
    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.
  • #6 9365236
    szotko
    Poziom 11  
    Przepraszam, długo nie odpisywałem.

    Oto kod którym się bawię:

    Nadajnik:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Odbiornik:
    Kod: C / 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.
  • #7 9373085
    Jacek Rutkowski
    Poziom 28  
    W/g mnie brakuje w procedurze przy nadawaniu:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    natomiast przy odbiorze:
    Kod: C / 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.
  • #8 9519122
    MES Mariusz
    Poziom 36  
    Widzę, że ponad miesiąc czasu upłynął, więc jeśli ktoś ruszył to pod BASCOMem, to niech się pochwali :-)
  • #9 9519149
    Mat_91
    Poziom 25  
    LINK Tu na pewno coś znajdziesz.
  • #10 9519185
    Lord_W
    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.
  • #11 9530016
    Andylo
    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.
  • #12 9531266
    Jacek Rutkowski
    Poziom 28  
    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
  • #13 9531826
    ShEvU_elektro
    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.
  • #14 9532506
    Andylo
    Poziom 12  
    Witam, Uprzejmie proszę o sugestie, co jest nie tak, jak byc powinno. Dziękuję za zainteresowanie. Pozdrawiam.

    [code]
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #15 9533389
    lukasz_elektronika
    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.
  • #16 9533579
    Andylo
    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.
  • #17 9533872
    Jacek Rutkowski
    Poziom 28  
    Andylo napisał:


    Kod: text
    Zaloguj się, aby zobaczyć kod


    Witam,
    sprawdź komendę: Data_out = &H8298
    W/g mnie powinno być:
    Data_out = &H82c9
  • #18 9536844
    Andylo
    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.
  • #19 9537570
    Jacek Rutkowski
    Poziom 28  
    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.
  • #20 9537790
    Andylo
    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?
  • #21 9538232
    Jacek Rutkowski
    Poziom 28  
    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:
  • #22 9653068
    Jacek Rutkowski
    Poziom 28  
    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.
REKLAMA