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:
Pomiar pojedynczy:
Pomiar ciągły:
(3 linie dla termometrów, ich temperatury i znaczka pomiaru, ostatnia linia ilość pomiarów, czy zapisywane, czas pozostały do kolejnego pomiaru)
RSSI:
Schemat:
PCB:
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:

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:
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
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