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

AVR i zdalne czujniki temperatury (ZigBee czy Bluetooth)

adimen7 29 Cze 2012 12:01 9359 37
  • #1 11054127
    adimen7
    Poziom 10  
    Witam wszystkich forumowiczów i proszę was o poradę.
    Już od dłuższego czasu zastanawiam się nad tematem pracy Inżynierskiej. Wstępne ustalenia dotyczą zdalnego pomiaru temperatury i może podłączenie do komputera.
    Widzę to tak: główny węzeł sczytujący temperatury z czujników i przekazujący je po jakimś interfejsie do komputera. Głównym celem jest skalowalność czyli wiele czujników. Moją uwagę przykuły moduły ZigBee wyposażone w stosy komunikacyjne które chyba załatwiają całą pracę z komunikacją. Nie wiem czy Bluetooth się do tego nadaje? Stąd moje pytania:
    - jakie moduły do najłatwiejszej implementacji?
    - czy moduł USB z kitu Atmel Raven mogę wykorzystać z modułami innych dostawców?
    - jakieś źródła , porady, książki - jak z tym wszystkim ruszyć - bo nie ukrywam jestem w tej kwestii początkujący.
  • #2 11054266
    mirekk36
    Poziom 42  
    Tylko do zwykłych czujników temperatury - pakować tak drogie moduły jak BT czy ZigBee ? Czy to nie będzie przesada ? .....

    Spójrz sobie panie kolego na takie transcieverki radiowe jak RFM12/22 czy RFM70 zależy o jakie odległości chodzi....

    ich cena powali cię na nogi a możliwości komunikacji i jakość komunikacji (dwustronna!) dopełni dzieła ;) zachwytu oczywiście
  • #3 11054482
    adimen7
    Poziom 10  
    Dziękuje za zainteresowanie i szybką odpowiedź.
    Użyłem słowa AVR - właśnie chodziło mi o język C i o mikrokontrolery AVR Atmegi.
    Moduły ZigBee widziałem w cenie do 100 zł - to trochę drogo - ale myślałem że są łatwiejsze w zastosowaniachniż zwykłe transcivery, no i promotor chciał coś bardziej nowoczesnego.
    A co do układów RFM: to czytałem że trzeba je wyposażać we własne stosy komunikacyjne żeby możliwa była komunikacja - nie orientuje się czy to jest ciężki temat?
    A odległości - domowe - pare pokoi na jednym piętrze - tak zakładam.
    Zastanowię się jeszcze nad: RFM12 albo RFM70
  • Pomocny post
    #4 11054619
    tmf
    VIP Zasłużony dla elektroda
    Układy RFM to "gołe" transceivery i wymagają oprogramowania protokołu. Czy zaraz całego stosu to trudno powiedzieć nie wiedząc co chcesz zrobić. Prosta wymiana danych pomiędzy modułami to kilka linii kodu, niemniej jeśli modułów ma być sporo, działają peer-to-peer, i zaczyna to przypominać sieć to istotnie napisanie na to stosu robi się skomplikowane.
    Tyle, że ZigBee też wymaga stosu - część modułów ma go zaimplementowany, część producentów daje gotowe kody. BT jest dobry przy dwóch układach komunikujących się ze sobą, jeśli takich układów jest więcej to robi się problem. No i BT na odległość paru pokoi niekoniecznie zadziała.
  • Pomocny post
    #5 11054654
    mirekk36
    Poziom 42  
    adimen7 napisał:

    Zastanowię się jeszcze nad: RFM12 albo RFM70


    Każdy z nich pozwala na ustawienie kanału na którym ma pracować w danym zakresie częstotliwości, a jest tych kanałów sporo ;) , zatem dla każdego czujnika można sobie ustawić inny kanał a master będzie się po prostu cyklicznie przełączał i odpytywał... i odpytywał - i tak w kółko. Więc bez żadnych protokołów sieciowych, stosów itp zrealizujesz takie odczyty temperatury na byle jakich prockach ;)
  • #6 11055046
    adimen7
    Poziom 10  
    Projekt zakłada kilka czujników z których należy sczytywać cyklicznie temperatury
    Podsumowując wasze zalecenia można to zrobić tak?
    Transcivery RF(RFM12 lub RFM70) moduły na różnych kanałach wyposażone w czujniki temperatury i
    jeden główny moduł cyklicznie odpytujący pozostałe po przez przełączanie kanałów. Wymagania to: oprogramowanie protokołu komunikacji.
    Rozważam jeszcze ZigBee - jak z zaprojektowaniem i oprogramowaniem tego - dużo pracy? Wiem że to dla zwykłych czujników trochę przesada - ale celem tutaj jest głównie edukacja i zaliczenie pracy Inżynierskiej.
  • #7 11055728
    tmf
    VIP Zasłużony dla elektroda
    Nie, żadnych różnych kanałów. Masz jednego mastera i slaves, z których zczytujesz temperatury. Wszystkie nasłuchują na tym samym kanale. Slave nasłuchują ramki ze swoim adresem, które wysyła master. Po jej otrzymaniu odpowiadają ramką z temperaturą. To wszystko.
  • #8 11056075
    adimen7
    Poziom 10  
    Ok... a jeszcze znalazłem taki fragment dotyczący modułów radiowych RFM w książce Język C. Pasja programowania mikrokontrolerów 8-bitowych:
    "Moduły tego typu charakteryzują się tym, że trzeba je prawidłowo zainicjalizować przed przystąpieniem do pracy. " - Czy naprawdę sprawia to tyle problemów.
    Jeszcze w tej samej książce było napisane że noty katalogowe firmy Hoperef są kiepskie. Jeśli tak to jakie polecacie transcivery?

    Czy na 802.15.4 było by to dużo trudniej zrealizować?
  • #9 11056619
    tmf
    VIP Zasłużony dla elektroda
    Noty katalogowe HopeRF są całkiem fajne i jest w nich wszystko co potrzebujesz (nie ma w nich pewnych niuansów). Dodatkowo firma daje arkusz excela służące do generowania wartości inicjalizacyjnych. Ale najpewniej nie musisz się tak zagłębiać, jeśli nie cudujesz z jakąś magiczną transmisją, to inicjację weźmiesz z przykładów dostarczonych przez firmę. Godne polecenia są RFM22 lub RFM73 (RFM70 wyszedł z produkcji i nie ma sensu sobie nim głowy zawracać).
  • #10 11056649
    tplewa
    Poziom 39  
    @adimen7

    Wiesz wszystko bardziej zalezy od kasy :) Poziom trudnosci jest podobny... Jak uczelnia daje ci pieniadze to mozesz robic sobie nawet sam tory radiowe :cunning: ... Jednak jak radza koledzy chyba najbardziej optymalne jest uzycie modulow HopeRF (stosunek jakosc/cena).
  • #11 11056660
    mirekk36
    Poziom 42  
    A najlepiej to po prostu wziąć kupić taki czy inny moduł HopeRF - przecież to kilka zł i się na stykówce nawet pobawić, sprawdzić z czym to się je - a później zadawać dalsze pytania - bo tak to będziesz jeszcze długo wymyślał różne teoretyczne rozwiązania. Bierzesz byle jakiego HopeRF'a bo każdy nada się do tego "kilka" linii kodu i już masz cykliczne odpytywanie czujników.
  • #12 11056882
    adimen7
    Poziom 10  
    Tak też zrobię - skupię się na modułach HopeRF. Tematu jeszcze nie zamykam bo muszę wszystko uzgodnić z promotorem. Na razie bardzo dziękuje za cenne wskazówki. Pozdrawiam!
  • #13 11057070
    drzasiek
    Specjalista CNC
    W pracy inżynierskiej chyba jednak nie chodzi o to, żeby było łatwo..
    Zależy jakie masz możliwości czasowe, finansowe, ile chęci i ambicji..
    ZigBee to jest ciekawy problem do rozważenia i na pewno ambitny..

    PS Mi jeden profesor mówił, że promotor to jest dopiero na studiach 3-go stopnia, niżej jest tylko opiekun :)
  • #14 11078840
    adimen7
    Poziom 10  
    Kolejne dni poszukiwań i sondowania forum przekonały mnie do zastosowania modułów ZigBit Atmel'a, jeśli uda mi się załatwić darmowe próbki to raczej pójdę w tą stronę. Oczywiście niezbędne jest do nich oprogramowania - tak owe udostępnia producent - dowiedziałem się że konfiguracja ich nie jest aż taka straszna. Nie wnikałem jeszcze w oferowany software przez Atmela - wiecie może czy z modułów da się sczytać dane dotyczące analizy sieci typu:najkrótsze ścieżki; odległość między węzłami.
    Odnośnie jeszcze RFM bo to nie jest zamknięty temat. Mowa wcześniej była o zaprogramowaniu protokołu. Jak to jest z tymi ramkami - sam muszę wymyślić strukturę? Co z synchronizacją? - w osobnej ramce?
  • #16 11079013
    adimen7
    Poziom 10  
    Komunikacja Bluetooth nie nadają się do budowy sieci czujników:
    - dosyć spory pobór prądu, co od razu eliminuje długi szereg rozwiązań bateryjnych
    - czas negocjacji i pierwszego nawiązania połączenia ze sobą dwóch modułów
    - ograniczony zasięg zależńy od klasy modułu

    Ponawiam wcześniejsze pytanie
  • #17 11079754
    Pawel2420
    Poziom 31  
    Myślę, że tak naprawdę usiłujesz rozwiązać problemy jakie sam sobie stworzyłeś. Przyjąłeś określone założenia zapewne nie poświęcając im wile uwagi. Spróbuj spojrzeć na zagadnienie z innej strony. Czy np. możliwość odpytania czujników w dowolnej chwili jest absolutnie konieczna. Jeśli np. to czujniki będą same okresowo wysyłały dane to pobór prądu będzie można łatwo zredukować.
  • #18 11079834
    mirekk36
    Poziom 42  
    Pawel2420 napisał:
    Spróbuj spojrzeć na zagadnienie z innej strony. Czy np. możliwość odpytania czujników w dowolnej chwili jest absolutnie konieczna. Jeśli np. to czujniki będą same okresowo wysyłały dane to pobór prądu będzie można łatwo zredukować.


    Dokładnie, ja też już o tym pisałem, że starasz się tak troszkę napompować ten temat i przez to wszystko ci się rozmydla. To znaczy owszem sieć na ZigBee jest fajnym tematem do opracowania - no ale na potrzeby kilku zwykłych czujników temperatury co to mają co jakiś czas przesłać po kilka bajtów w ASCII "-13,7" albo 24,3"

    Tak jak pisze kolega wyżej, każdy z nich może nawet nadawać nawet w losowym czasie co kilka min temperaturę i ciężko będzie żeby doszło do kolizji ;)

    Dodano po 5 [minuty]:

    adimen7 napisał:

    Odnośnie jeszcze RFM bo to nie jest zamknięty temat. Mowa wcześniej była o zaprogramowaniu protokołu. Jak to jest z tymi ramkami - sam muszę wymyślić strukturę? Co z synchronizacją? - w osobnej ramce?


    Ja się cały czas zastanawiam o jakim ty tu protokole w ogóle mówisz? O jakiej strukturze ramek? o jakiej synchronizacji ? .....

    Przecież ty tu zaraz jakbyś miał pomysł na zrobienie co najmniej bezprzewodowej wersji magistrali CAN lub podobnej - z możliwością pracy Multimaster i do przesyłania setek kilobajtów danych...

    Panie kolego - bierzesz sobie byle RFM'a i wysyłasz do Mastera KILKA bajtów jak psiałem wcześniej, i to można sobie pozwolić na ASCII i bez żadnych synchronizacji i nie wiadomo czego. Podstawowe zabezpieczenia transmisji zapewnią ci same transcievery. Wystarczy tylko w sposób określony przez producenta wysłać i odebrać takie dane.

    Teraz spojrzałem na cenę RFM70 - kurczę toż to już chyba po 7-8zł jest .... na prawdę szkoda słów, i czasu - lepiej kupić dwie sztuki i zobaczyć jak to się robi. A w 5 sekund rozwieją się twoje wątpliwości.
  • #19 11080160
    adimen7
    Poziom 10  
    Przepraszam że tak błądze w temacie po omacku. Ale naprawdę staram się to ogarnąć.
    Wcześniej ktoś pisał że układy RFM są gołe i trzeba oprogramować protokół komunikacji.
    Ale jednak po klejnych wypowiedziach i przeczytaniu datasheet'u wnioskuję że nie do końca są gołe ponieważ w datasheet'cie znalazłem podany format pakietu oraz użytkownik mirekk36 napisał "Podstawowe zabezpieczenia transmisji zapewnią ci same transcievery" - czy dobrze wnioskuję?
    Robiłem kiedyś projekt na 1-Wire i tam ustawiałem, zerowałem porty- Czy z tymi transciverami zasada pracy jest taka sama? Poprostu manipuluje rejestrami ?
    A no jeszcze trzeba identyfikować czujniki. Każdy ma już zakodowany adres czy należy samemu to zrobić?

    PS: podobno kto pyta nie błądzi:)
  • Pomocny post
    #20 11080238
    mirekk36
    Poziom 42  
    Oczywiście, że takim RFM70 trzeba najpierw jakoś zasterować, czyli zainicjalizować i ustawić go np w tryb nadawania albo odbioru - poprzez wpisanie odpowiednich wartości do rejestrów.

    Ale później wysłanie też sprowadza się do wysłania do niego po SPI paczuszki bajtów które chcesz wysłać. A że tych bajtów będziesz miał niedużo to one zmieszczą się w jego pojedynczej ramce. Czyli pakujesz je do jego ramki i wio - wysyłaj ;) ... albo jeśli chodzi o odbiór, jeśli stwierdzisz że coś odebrał - to odczytujesz taką paczuszkę po SPI.

    Więc dobrze wnioskujesz. W razie czego bardzo podstawowe procedury do wysłania i odebrania czy inicjalizacji masz na stronie HopeRF

    A teraz o adresach czujników, posłuchaj, załóżmy że chcesz ustawić każdemu czujnikowi adres - czy musi w tym uczestniczyć transciever ? Nie, on np będzie tylko medium. A adres możesz sobie zaszyć w eepromie procka, który będzie obsługiwał czujnik temperatury i transciever. Niech więc każdy twój układ czujnikia (procek+RFM) ma adresy typu: 1,2,3,4,5...

    więc ustalasz sobie, że jeśli odbierze taki czujnik ramkę a w niej będzie liczba odpowiadająca jego adresowi to wyśle aktualną temperaturę. A jeśli ta liczba się nie zgadza z jego adresem w eeprom to siedzi cicho

    to przykład który wcześniej podałem np z rodzieleniem kanałów, też może być. Ustalasz sobie że czujnik nr1. ustawi sobie transciever na kanał 1, czunjnik drugi na kanał 3 żeby odstęp np jednego kanału był pomiędzy nimi .... itd. Wtedy tylko Master ustawia RFM na kanał = 1 i odpytuje czujnik pierwszy, potem na kanał 3 i odpytuje czujnik drugi itd

    no możliwości jest dużo wszystko zależy od pomysłu i koncepcji - ale trzeba to w końcu popróbować..

    toż do przesłania masz jak mówię - w jedną stronę kilka bajtów i w drugą kilka - i to cyklicznie do każdego czujnika z jednego mastera.
  • #21 11080325
    adimen7
    Poziom 10  
    Wszystkim bardzo dziękuje za udzielone wskazówki, bez was moja praca Inżynierska stała by pod wielkim znakiem zapytania - a teraz już pod mniejszym:)
    To ruszam do pracy nad układami RFM. Oczywiście podziele się moimi postępami - jednak troszkę to potrwa.
  • #22 11467565
    adimen7
    Poziom 10  
    Cześć wszystkim po nie krótkiej przerwie. Pracuje nad tematem około tygodnia i dręczy mnie zastosowanie rozwiązania bateryjnego w wyżej wymienianych modułach RFM 73. Moduł bezprzewodowy ma zawierać na pokładzie (RFM73, DS18B20, niskoprądowy mikrokontroler). Przestudiowałem notę RFM z czego wynikają takie wiadomości:
    Standby-I current 50 uA
    Standby-II current 330 uA
    TX Current 23 mA
    RX Current 22 mA
    Power Down current 3 uA

    Wiadomo że dojdzie pobór prądu mikrokontrolera sterującego.

    Moje pytania:
    Jakie rozwiązania proponujecie aby zminimalizować pobór prądu - chodzi mi głównie o sposób komunikowania się modułów tak aby można było ciągnąć to na jakiejś baterii.
    Tak jak wcześniej pisaliście że Master odpytuje moduły wymaga aby żeby układy z czujnikami były ciągle w nasłuch(RX) ale to jest duży pobór prądu co eliminuje bateryjki pastylki.

    Inny sposób to moduły są uśpione(3uA) i co jakiś czas budzi je mikrokontroler sterujący i rozkazuje wysyłać dane do Mastera a ten jest w ciągłym nasłuchu.

    Czy może jest możliwość obudzenia transceivera bezprzewodowo jakąś kombinacją impulsów?

    Jakie rozwiązania bateryjne proponujecie - główne kryterium to cena.
    Master raczej będzie zasilany z kabla.
  • #23 11468252
    Halkilor
    Poziom 15  
    Jeśli faktycznie robisz sieć czujników temperatury, to raczej nie potrzebujesz komunikacji dwukierunkowej. Master oczekuje, a czujniki co jakiś czas się budzą i wysyłają wynik pomiaru. Do długowiecznych czujników wyniesionych są ciekawe ogniwa typu LTC, jednak tanie to raczej one nie są.
  • #24 11471108
    adimen7
    Poziom 10  
    Próbowałem oszacować średni czas pracy na przykładowej baterii CR2477(3V) 950mA. Szacowania zrobiłem dla układu RFM73 i znalazłem jeszcze mikrokontroler low power MSP430 - raczej będzie dobry(ative mode 220uA).
    Przyjąłem dla RFM czas przejścia od stanu uśpienia po przez transmisje do kolejnego uśpienia rzędu 400us (nie wiem czy dobrze). Zakładając taką transmisję raz na 1 minutę przy prądzie 23mA wyszło 0,5mA na h. To jest jakieś 70 dni pracy na baterii. Do tego dojdzie MSP430 , jednak w ciągłym trybie aktywnym weźmie jakieś 13mA na h co bardzo obniża czas pracy. Ma on wiele trybów oszczędzania - ale nie wiem czy jest możliwość w takim trybie aby działał timer i np. budził mikrokontroler co 20s.? Z noty katalogowej wnioskuję że chyba tak:
    Low-power mode 0 (LPM0):
    CPU is disabled
    ACLK and SMCLK remain active. MCLK is disabled
    Auxiliary clock (ACLK), sourced either from a 32768-Hz watch crystal or the internal LF oscillator.
    Main clock (MCLK), the system clock used by the CPU.
    Sub-Main clock (SMCLK), the sub-system clock used by the peripheral modules.

    Co sądzicie o moich szacowaniach?
  • #25 11475200
    Gostek
    Poziom 17  
    Ale traflem :)
    Wlasnie wczoraj zlozylem sobie trzy male nadajniki:
    -czujnik temperatury / wilgotnosci DTH22
    -transceiver RTH70
    -ATtiny2313

    Jako odbiornik RTH70 + xmega256 ( czesc istniejacego systemu ).

    W moim przypadku nadajniki sa zasilane z sieci, ale mysle, zeby dopisac w nich oszczedzanie energii i zasilac z bat.
    Czujniki mierza co 30 sekund, nadajniki nadaja co 3 minuty, a w wypadku gdy temperatura zmienila sie wiecej niz 1 'C na 30s, nadaja bezzwlocznie.
  • #26 11475690
    tmf
    VIP Zasłużony dla elektroda
    adimen7 napisał:
    Próbowałem oszacować średni czas pracy na przykładowej baterii CR2477(3V) 950mA. Szacowania zrobiłem dla układu RFM73 i znalazłem jeszcze mikrokontroler low power MSP430 - raczej będzie dobry(ative mode 220uA).
    Przyjąłem dla RFM czas przejścia od stanu uśpienia po przez transmisje do kolejnego uśpienia rzędu 400us (nie wiem czy dobrze). Zakładając taką transmisję raz na 1 minutę przy prądzie 23mA wyszło 0,5mA na h. To jest jakieś 70 dni pracy na baterii. Do tego dojdzie MSP430 , jednak w ciągłym trybie aktywnym weźmie jakieś 13mA na h co bardzo obniża czas pracy. Ma on wiele trybów oszczędzania - ale nie wiem czy jest możliwość w takim trybie aby działał timer i np. budził mikrokontroler co 20s.? Z noty katalogowej wnioskuję że chyba tak:
    Low-power mode 0 (LPM0):
    CPU is disabled
    ACLK and SMCLK remain active. MCLK is disabled
    Auxiliary clock (ACLK), sourced either from a 32768-Hz watch crystal or the internal LF oscillator.
    Main clock (MCLK), the system clock used by the CPU.
    Sub-Main clock (SMCLK), the sub-system clock used by the peripheral modules.

    Co sądzicie o moich szacowaniach?


    Oszacowania sa poprawne. W jaki sposób to zmienić? Moduł nie musi nadawać z pełną mocą, być może nie musi nadawać co minutę. To w sumie zależy co mierzysz, ale jeśli temp. się tak szybko nie zmienia (np. pokojowa) to i co 10 min. jest ok, a wydłuży to kilkakrotnie czas pracy. Można też nadawać temperaturę dopiero w chwili kiedy w istotny sposób się zmieni od ostatniego pomiaru. W takiej sytuacji budzisz tylko MCU, mierzysz temp. i porównujesz. Jeśli istotnie różna to budzisz moduł radiowy i nadajesz, jeśli nie to zasypiasz. Przy wolnozmiennych temperaturach takie działanie może wydłużyć czas kilkaset razy.
  • #27 11477013
    adimen7
    Poziom 10  
    Tak właśnie zamierzam zrobić aby zredukować pobór prądu. A co myślicie o MSP430. Jak to się programuje? Bo do tej pory do czynienia miałem tylko z prockami AVR. Czy jest może coś energooszczędnego ze stajni Atmela?
  • #28 11477281
    tmf
    VIP Zasłużony dla elektroda
    Masz różne wersje procesorów picoPower AVR. Generalnie tu spokojnie zejdziesz do jakiś mikroamperów i <1 uA w uśpieniu.
  • #29 11484123
    adimen7
    Poziom 10  
    Dzięki właśnie znalazłem interesujący mnie model: ATmega 48PA
    http://www.atmel.com/devices/atmega48pa.aspx?tab=parameters

    Powinieni być chyba dobry.
    Proszę jeszcze o podpowiedź jak z tym wszystkim ruszyć programowo. Najlepiej w C. Obsługa trybów oszczędzania. Jakieś przykłady kodów?
REKLAMA