Elektroda.pl
Elektroda.pl
X
Metal Work Pneumatic
Proszę, dodaj wyjątek 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 13546 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
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • Metal Work Pneumatic
  • #2 17 Cze 2009 23:18
    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?

  • Metal Work Pneumatic
  • #3 17 Cze 2009 23:34
    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 17 Cze 2009 23:50
    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 18 Cze 2009 00:05
    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 18 Cze 2009 00:10
    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 18 Cze 2009 00:16
    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 18 Cze 2009 00:16
    esh0
    Poziom 19  

    I co jeszcze do tej powolności - czas pomiędzy kolejnymi komendami - 2s.

  • #9 18 Cze 2009 00:17
    mirekk36
    Poziom 42  

    aha a prędkość transmisji zwykle we wszystkich od razu ustawiałem na 115200, 8N1

  • #10 18 Cze 2009 07:42
    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 18 Cze 2009 08:07
    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 18 Cze 2009 12:01
    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 18 Cze 2009 13:06
    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 18 Cze 2009 13:16
    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 18 Cze 2009 14:04
    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 18 Cze 2009 14:15
    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 19 Cze 2009 16:39
    mirekk36
    Poziom 42  

    esh --> a mam jeszcze pytanko - dlaczego połączyłeś ze sobą sygnały RTS i CTS przy BTM-112 ???

  • #18 20 Cze 2009 12:01
    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 20 Cze 2009 14:00
    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 20 Cze 2009 16:51
    crazy_phisic
    VIP Zasłużony dla elektroda

    Takie połączenie "oszukuje" moduł właśnie przy włączonym handshakingu.

  • #21 20 Cze 2009 18:49
    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 21 Cze 2009 10:05
    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ć ? ;)