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.

System pomiaru temperatury z transmisją danych po Bluetooth

esh0 17 Cze 2009 21:09 13786 22
  • System pomiaru temperatury z transmisją danych po Bluetooth

    Chciałem zaprezentować tutaj swoją pracę magisterską, jaką jest rozproszony system pomiaru temperatury z wykorzystaniem do transmisji danych technologii Bluetooth.

    System składa się z:
    - jednostki bazowej (na pierwszym foto)
    - jednostek zdalnych
    - komputera z odpowiednim oprogramowaniem

    Sercem jednostki bazowej jest ATMEGA16 (sprzętowo starczyło by coś dużo mniejszego, ale ze względu na kod programu prawie 16kB zastosowałem właśnie 16stkę). Program napisany w C. Na pokładzie zainstalowano:
    - moduł bluetooth BTM-112
    - zegar DS1337
    - pamięć eeprom AT24C64
    - baterię zegara
    - brzęczyk, klawiatura, diody

    DS1337 użyty tylko dlatego, że nie było w sklepie DS1307...

    Pamięć służy do rejestrowania pomiarów. Zastosowana wystarcza na ponad 1000 punktów pomiarowych.

    Co układ potrafi?
    1. Pomiar pojedynczy:
    .a. wybór termometru,
    .b. zatwierdzenie lub rezygnacja.
    ..1) nawiązanie połączenia z odpowiednim modułem Bluetooth,
    ..2) wysłanie żądania pomiaru temperatury,
    ..3) odebranie wyniku,
    ..4) wyświetlenie wyniku,
    ..5) oczekiwanie na reakcję użytkownika.
    2. Pomiar ciągły:
    .a. wybór termometrów (maksymalnie 3, ponieważ tyle można wyświetlić na dostępnym wyświetlaczu LCD),
    .b. wybór czasu opóźnienia pomiędzy pomiarami (minimalnie czas opóźnienia między pomiarami wynosi: ~15s * [ilość wybranych termometrów] + [wybrany czas opóźnienia, max 300s]),
    .c. wybór ilości pomiarów,
    .d. wybór rejestracji do pamięci lub jej braku,
    .e. zatwierdzenie lub rezygnacja.
    ..1) w przypadku aktywnej rejestracji: określenie maksymalnej ilości pomiarów (aby nie przekroczono dostępnej pamięci), zapisanie do pamięci informacji odnośnie ilości pomiarów, zapisanie nazw użytych termometrów i ich ilość,
    ..2) nawiązanie połączenie z odpowiednim modułem Bluetooth,
    ..3) wysłanie żądania pomiaru temperatury,
    ..4) zerwanie połączenia,
    ..5) odebranie wyniku i jego ewentualny zapis do pamięci,
    ..6) wyświetlenie wyniku,
    ..7) nawiązanie połączenia z następnym z wybranych termometrem oraz powtórzenie 4 ww. kroków,
    ..8) sprawdzenie czy osiągnięto maksymalną ilość pomiarów – jeśli tak, zakończenie pomiarów,
    ..9) odczekanie określonego odstępu pomiędzy pomiarami,
    ..10) powtórzenie 8 ww. kroków.
    3. Reset modułu Bluetooth,
    4. Wyszukanie urządzeń Bluetooth:
    .a. w tablicy urządzeń Bluetooth zostają zapisane tylko elementy systemu oraz adres komputera.
    5. Diagnostyka:
    .a. wybór urządzenia Bluetooth,
    .b. zatwierdzenie lub rezygnacja.
    ..1) wybór testu diagnostycznego (RSSI lub PING),
    ..2) połączenie z wybranym modułem Bluetooth,
    ..3) wykonanie testu i zwrócenie wyniku,
    ..4) zerwanie połączenia.
    6. Przesył danych z pamięci do komputera:
    .a. nawiązanie połączenia z komputerem,
    .b. oczekiwanie na gotowość komputera do przesyłu danych,
    .c. przesłanie danych z pamięci jednostki bazowej,
    .d. zerwanie połączenia.
    7. Ustawienie aktualnej daty i czasu,
    8. Informacje:
    .a. wyświetlenie informacji o systemie.

    Kilka obrazków środka i z działania jednostki:
    System pomiaru temperatury z transmisją danych po Bluetooth
    Pomiar pojedynczy:
    System pomiaru temperatury z transmisją danych po Bluetooth
    Pomiar ciągły:
    System pomiaru temperatury z transmisją danych po Bluetooth
    (3 linie dla termometrów, ich temperatury i znaczka pomiaru, ostatnia linia ilość pomiarów, czy zapisywane, czas pozostały do kolejnego pomiaru)
    RSSI:
    System pomiaru temperatury z transmisją danych po Bluetooth
    Schemat:
    System pomiaru temperatury z transmisją danych po Bluetooth
    PCB:
    System pomiaru temperatury z transmisją danych po Bluetooth

    Jednostkę bazową obsługuje ATMEGA8 z bardzo prostym programem, który po prostu czeka na połączenie i wykonuję określoną komendę. Na pokładzie jest również moduł BT, czujnik DS18B20, stabilizator 3,3V i parę biernych elementów.

    Foto, schemat i pcb:
    System pomiaru temperatury z transmisją danych po BluetoothSystem pomiaru temperatury z transmisją danych po BluetoothSystem pomiaru temperatury z transmisją danych po Bluetooth

    Program dla komputerka został napisany w C#. Jego zadaniem jest odebranie danych z pamięci jednoski bazowej i ich konwersja do formatu zjadliwego np. dla Excela. Niżej wygląd programu i przykładowy listing po konwersji:
    System pomiaru temperatury z transmisją danych po Bluetooth

    Code:

    Data utworzenia: 2009-06-01 18:50:07
    Liczba termometrów: 1
    Liczba pomiarów: 10

    Data;Czas;RT02e5e9
    9-6-1;18:40:21;31,5
    9-6-1;18:40:35;30,25
    9-6-1;18:40:49;29,5
    9-6-1;18:41:3;35,75
    9-6-1;18:41:17;38,25
    9-6-1;18:41:31;37,75
    9-6-1;18:41:45;34,75
    9-6-1;18:41:59;32,75
    9-6-1;18:42:13;31,75
    9-6-1;18:42:27;30,75


    Ciężko mi to wszystko opisać w dużym skrócie :)

    Co do problemów to:
    - moduły BTM-112... wg. mnie porażka, beznadziejna prędkość transmisji znaków (chodzi o komendy), ciężko zrobić obsługę błędów i czasami jednak cały system potrafi się zawiesić
    - zasięg... mimo zastosowanych anten osiągnąłem oszałamiające 10m :lol: Wynika to z tego, że nei doczytałem o dopasowaniu anten do modułów i odpowiednim layoucie na pcb...

    Jakby się komuś chciało czytać to załączam "instrukcę obsługi" systemu.

    Co do kodów i dokładnego opisu to raczej nie udostępniam, ale jeśli ktoś miałby konkretne pytania to fragmenty oczywiście tutaj wrzucę.

    Fajne! Ranking DIY
    Darmowe szkolenie: Ethernet w przemyśle dziś i jutro. Zarejestruj się za darmo.
    O autorze
    esh0
    Poziom 19  
    Offline 
    Specjalizuje się w: audio, kom
    esh0 napisał 408 postów o ocenie 21, pomógł 2 razy. Mieszka w mieście Malbork. Jest z nami od 2002 roku.
  • #2
    zbyrek
    Poziom 23  
    Bardzo profesjonalny projekt, w końcu to praca magisterska. Mógłbyś przedstawić przybliżony kosztorys jednostki centralnej i pojedynczego czujnika?
    Jaki jest pobór prądu przez jeden czujnik?
  • #3
    esh0
    Poziom 19  
    Koszta... Gdybym miał zliczyć wszystko co musiałem kupić łącznie z niepotrzebnymi rzeczami to zakładam że całość wyniosła niewiele poniżej 1000zł.

    Jednak wyceniając już dokładnie na gotowo:
    - jednostka bazowa ~130zł
    - termometr ~80zł

    Najdroższe są moduły bt - ~60zł

    Pobór prądu przez czujnik wynosi średnio 50mA, toteż stosowanie zasilania bateryjnego jest mało efektywne. W wersji pierwotnej chciałem mieć zasilanie solarne, ale nie starczyło czasu na to już. Myślałem też nad okresowym włączaniem i wyłączaniem modułów BT (to one tyle ciągną), ale sprawiły mi one już tyle kłopotów, że zrezygnowałem z tego.
  • #4
    ryborz
    Poziom 23  
    Bluetooth jest strasznie prądożerny. Lepszym rozwiązaniem o większym zasięgu i dłuższej pracy byłaby komunikacja przemysłowa ZigBee.
    Trochę bez sensu że promotor zgodził się (lub wymyślił) na takie rozwiązanie. Można też było zastosować RFID (są już czipy z pomiarem temperatury) lub inne moduły radiowe.
  • #5
    mirekk36
    Poziom 42  
    tak z ciekawości zapytam - o jakiej ty "beznadziejnej prędkości transmisji znaków (chodzi o komendy)" - piszesz ???? ( a już któryś raz "słyszę" tu na elektrodzie narzekania na jakąś transmisję znaków komend - dziwne)

    ja mam kilka tych BTM-112 i transfery, jakość transmisji i w ogóle wszystko jest bomba! nawet nie muszę się właśnie bawić w jakieś korekcje błędów.

    oczywiście podstawa to przynajmniej jako taka antenka - no i nie ma co liczyć przy tej klasie urządzenia na jakieś oszołamiające odległości sporo większe niż 10m - tego trzeba być świadomym jak się to bierze w rękę.

    ja antenki - wiesz jakie zwykle stosuję ???? o dziwo kawałek drucika - żadne tam kupowane na PCB itp. I na tych drucikach w ramach 10m zapiernicza wszystko jak motorek ;) Raz próbowałem dać antenki ze złączem SMA od kart WIFI 2,4GHz - i też było nieźle - ale jak mówię - nie robiłem tych swoich urządzonek żeby testować jakieś maksymalne odległości - miało to śmigać w pewnych pomieszczeniach no i śmigało ładnie.
  • #6
    esh0
    Poziom 19  
    ryborz napisał:

    Trochę bez sensu że promotor zgodził się (lub wymyślił) na takie rozwiązanie. Można też było zastosować RFID (są już czipy z pomiarem temperatury) lub inne moduły radiowe.

    Taki został wymyślony temat pracy właśnie przez promotora.

    mirekk36 napisał:
    tak z ciekawości zapytam - o jakiej ty "beznadziejnej prędkości transmisji znaków (chodzi o komendy)" - piszesz ???? ( a już któryś raz "słyszę" tu na elektrodzie narzekania na jakąś transmisję znaków komend - dziwne)

    O opóźnieniu w wysyłaniu kolejnych znaków w komendach (u mnie poprawnie dopiero od chyba 60ms co znak). Korzystasz ze standardowych parametrów transmisji UART? 19200, 8N1 ?
  • #7
    mirekk36
    Poziom 42  
    esh0 -> jutro jeszcze raz specjalnie to dokładnie posprawdzam i dam znać jak to u mnie jest. Chociaż ja zwykle raz ustawiam je - jako wirtualny kabel RS232 i później nie walczę z komendami AT ze strony procka. Ale popatrzę jeszcze raz z bliska na to zagadnienie i wtedy się odezwę.
  • #8
    esh0
    Poziom 19  
    I co jeszcze do tej powolności - czas pomiędzy kolejnymi komendami - 2s.
  • #9
    mirekk36
    Poziom 42  
    aha a prędkość transmisji zwykle we wszystkich od razu ustawiałem na 115200, 8N1
  • #10
    Duch__
    Poziom 31  
    Żeby poprawić zasięg wystarczyło zastosować jako antenę kawałek pręta o długości 5,9cm. Wtedy antena była by zestrojona do pożądanej częstotliwości. Wartość tą wyliczyłem dla 2440MHz (środek pracy Bluetooth), dla 1/2λ. I tyle by wystarczyło, a niebawienie się z antenkami na laminacie.
    Kalkulator

    Lepszy zasięg by był jakby się zastosowało antenki kierunkowe, ale to już byłby przerost formy nad treścią.

    Ogólnie projekt bardzo ciekawy, ale koszty jednego modułu Bleutooth odstraszają.

    Pozdrawiam Duch__
  • #11
    Sw.Mikolaj
    Poziom 15  
    Tylko, że tutaj to chyba policzyłeś długość anteny dla konkretnej częstotliwości. Dopasowanie tej anteny do wyjścia układu to już zupełnie inna bajka. Co z tego, że dostaniesz antene która jest " zestrojona " na daną częstotliwość, jeśli uzyskujesz na niej duży współczynnik odbicia
  • #12
    byrrt
    Poziom 21  
    Pytanie do mirekk36 - piszesz, że używasz modułów jako wirtualnego RS232 - kiedyś się nad tym zastanawiałem jak to zrealizować ale jakoś z braku czasu temat zaniechałem. Chciałbym wykorzystać taki modulik podłączony do jakiegoś uC tak aby był on wykrywany przez BT w komputerze jako Port RS232 (zdaje się jest to możliwe) - jak to ugryźć - wystarczy jakoś moduł ustawić tak, że linie RS'a od strony procesora to zwykły RS czy trzeba jakoś programowo obsługiwać transmisję?

    A odnośnie samego projektu - nieźle, chociaż wg. mnie estetyką nie grzeszy - być może jestem zbyt pedantyczny.. Przydałaby się możliwość rozbudowy systemu o czujniki innych parametrów - zarówno atmosferycznych jak i innych mogących być częścią np. inteligentnego domu. ZigBee ma większy zasięg i fajnie zorganizowaną warstwę programową - coś w rodzaju siedzi wifi, łącznie z routingiem pakietów z jednego modułu na drugi w celu powiększenia zasięgu..

    Pozdrawiam
  • #13
    mirekk36
    Poziom 42  
    byrrt -> dokładnie jak piszesz - ja korzystałem w ten sposób, że w kompie miałem przejściówkę USB/Bluetooth akurat firmy D-Link DBT122, i nawet bez żadnych ustawień BTM-112 - tylko na domyślnych - wykryłem w kompie BTM-112 - sparowałem się domyślnym pinem 1234 - wybrałem jedyną dostępną usługę - serial port i wio! - już masz wirtualny RS232
  • #14
    esh0
    Poziom 19  
    byrrt napisał:
    wg. mnie estetyką nie grzeszy - być może jestem zbyt pedantyczny.. Przydałaby się możliwość rozbudowy systemu o czujniki innych parametrów - zarówno atmosferycznych jak i innych mogących być częścią np. inteligentnego domu.

    Też bym chciał ładną obudowę, wyświetlacz graficzny, najlepiej kolorowy :) Zapis na kartę SD a nie do EEPROM itd. Jednak to byłoby już zbyt rozbudowane jak na postawione wymagania, zbyt kosztowne jak na moje możliwości i zbyt czasochłonne jak na dostępny czas.

    Mimo to bardzo możliwe że, mają już pewną podstawę do tego, zbuduję właśnie taki zaawansowany system. Uniwersalne moduły zdolna zdolne mierzyć wiele wielkości fizycznych, stacja bazowa z masą innych funkcji i bardziej rozbudowana.

    Jest tylko jeden problem - kto mi to zasponsoruje? ;-) Bo tutaj już koszta pójdą w kilka tysięcy, wiadomo, że prototypy są zawsze najdroższe. I czy to by ktoś potem w ogóle wykorzystał?
  • #15
    byrrt
    Poziom 21  
    mirekk36 napisał:
    byrrt -> dokładnie jak piszesz - ja korzystałem w ten sposób, że w kompie miałem przejściówkę USB/Bluetooth akurat firmy D-Link DBT122, i nawet bez żadnych ustawień BTM-112 - tylko na domyślnych - wykryłem w kompie BTM-112 - sparowałem się domyślnym pinem 1234 - wybrałem jedyną dostępną usługę - serial port i wio! - już masz wirtualny RS232


    Czyli domyślnie po włączeniu zasilania moduł zgłasza się na Bluetooth jako port RS232? Tak poprostu? :) Co z ustawieniami - np chociażby pinu itp? Jak to ustawić skoro port rs232 jest używany do transmisji? Jak wyłączyć włączyć radio itp..
  • #16
    esh0
    Poziom 19  
    byrrt, komplikujesz :) Jeśli w komputerze masz BT Dongle, a po drugiej stronie BTM+procek, to łącząc się za pomocą komputera z BTMeme otrzymujesz wirtualny port szeregowy i nic więcej nie potrzebujesz. Po nawiązaniu połączenia moduł BTM staje się przezroczysty i to co wpiszesz np. w terminalu na komputerze pojawia się od razu na porcie UART BTMa.

    Jednak jeśli potrzebujesz skonfigurować BTMa, to możesz to zrobić TYLKO po stronie fizycznego portu UART tego modułu. Nie możesz zmienić konfiguracji "zdalnie", tj. z komputera. Aby zmienić konfigurację musisz np. podpiąć moduł BTM do komputera, otworzyć połączenie szeregowe na porcie do którego się podpiąłeś i wtedy wydać odpowiednie komendy konfiguracyjne.

    To samo można oczywiście zrobić odpowiednio programując uC, aby na starcie wysłał na UART (do którego podłączony jest fizycznie BTM) komendy konfiguracyjne.

    Żadnych opcji typu radio (a właściwie to co masz na myśli) czy pcm, usb - nie musisz wyłączać.
  • #17
    mirekk36
    Poziom 42  
    esh --> a mam jeszcze pytanko - dlaczego połączyłeś ze sobą sygnały RTS i CTS przy BTM-112 ???
  • #18
    esh0
    Poziom 19  
    Na większości stron, wypowiedzi odnośnie BTM było napisane, aby połączyć i sterowanie przepływem zrobić na wyłączone.
  • #19
    mirekk36
    Poziom 42  
    no tak, ale już to posprawdzałem do bólu bo potrzebne mi były te sygnały do czegoś innego - jak się jednak okazało - na tych pinach NIC a NIC się nie dzieje - one są tak jak większość innych w ogóle nie aktywne - więc można sobie w ogóle darować ich łączenie także - to i tak nic nie daje
  • #20
    crazy_phisic
    VIP Zasłużony dla elektroda
    Takie połączenie "oszukuje" moduł właśnie przy włączonym handshakingu.
  • #21
    mirekk36
    Poziom 42  
    crazy_phisic napisał:
    Takie połączenie "oszukuje" moduł właśnie przy włączonym handshakingu.


    a mi się zdaje, że ani nie oszukuje ani NIC nie robi - bo te piny CTS i RTS są w ogóle nieaktywne. Jeśli jesteś pewien, że jest inaczej niż ja mówię albo może wiesz czy jest jakiś sposób aby je uaktywnić to podaj go proszę - bardzo by mi się przydał sygnał RTS - do wykorzystania.

    a jak pisałem wcześnie badałem stan RTS'a na wyjściu modułu BTM-112 oscyloskopem - i niestety - cały czas jest w stanie niskim.
  • #23
    mirekk36
    Poziom 42  
    crazy_phisic -> ja akurat od kilku dni znowu męczę BTM-112. Rzuciłem się łakomie na twojego NEWS'a ;) .... ale niestety - pomimo ustawiania ATC1 czy ATC0 - nie daje to przynajmniej w przypadku BTM-112 żadnego rezultatu. Wyjście RTS jest głuche jak pień - cały czas stan niski i ani drgnie.

    jak się wejdzie na tę stronkę w linku który podałeś to w tej pozycji C - widać też czerwony napis ToDo. Hmmm a może to notatka producenta ? firmy Rayson? - żeby jeszcze tę opcję dorobić ? ;)