Spisu treści:

Termometr Bluetooth: 8 kroków
Termometr Bluetooth: 8 kroków

Wideo: Termometr Bluetooth: 8 kroków

Wideo: Termometr Bluetooth: 8 kroków
Wideo: Домашний термометр Xiaomi Mijia Новинка 2021 - bluetooth Thermometer Hygrometer XMWSDJ04MMC 2024, Lipiec
Anonim
Termometr Bluetooth
Termometr Bluetooth
Termometr Bluetooth
Termometr Bluetooth
Termometr Bluetooth
Termometr Bluetooth

Ta instrukcja opisuje wykonanie prostego 2-kanałowego termometru z użyciem sond termistorowych 100K, modułu Bluetooth i smartfona. Moduł Bluetooth to LightBlue Bean, który został zaprojektowany w celu uproszczenia tworzenia aplikacji Bluetooth Low Energy przy użyciu znanego środowiska Arduino do programowania modułu.

Po chwili błądzenia po okolicy, próbując dowiedzieć się, jak uzyskać dane o temperaturze z modułu Bluetooth do mojego iPhone'a, znalazłem aplikację o nazwie EvoThings, która znacznie uprościła stronę projektowania aplikacji. Nie mam Maca (szokujące, wiem!), co ogranicza moją możliwość tworzenia aplikacji na iPhone'a, i nie mam czasu na rozszyfrowanie nowych narzędzi Microsoftu, które ewidentnie wspierają rozwój międzyplatformowy dla iOS i Androida. Zrobiłem kilka aplikacji w stylu HTML5, ale jedynym sposobem na uzyskanie danych Bluetooth jest użycie wtyczek dla Cordova, które wyglądały na większe wyzwanie, niż miałem na to czas. EvoThings zapewnia bardzo łatwy w użyciu zestaw narzędzi, które zamieniły wyzwanie Bluetooth-iPhone w bułkę z masłem. A ja lubię ciasto!

Ogólnie uważam, że połączenie Lightblue Bean i EvoThings jest bardzo praktycznym rozwiązaniem przy niewielkiej inwestycji czasowej.

Krok 1: Rzeczy, których będziesz potrzebować

Rzeczy, których będziesz potrzebować
Rzeczy, których będziesz potrzebować
Rzeczy, których będziesz potrzebować
Rzeczy, których będziesz potrzebować
Rzeczy, których będziesz potrzebować
Rzeczy, których będziesz potrzebować

Użyłem dostępnej w handlu sondy termistorowej dla jednego kanału, ponieważ chciałem, aby termistor był uszczelniony do zanurzenia w cieczach. Dla drugiego kanału zrobiłem podstawową sondę z termistora, przewód o grubości 26 i wtyczkę do słuchawek 3,5 mm. Możesz używać dowolnych termistorów i możesz tworzyć własne sondy na przykład z przewodzących ciepło żywic epoksydowych i plastikowych słomek/mieszadełek do kawy. Poniżej znajduje się to, czego użyłem - nie jest to lista nakazowa!

Sprzęt komputerowy

  • 1 x sondy termistorowe 100K. Model Extech TP890. Są one powszechnie dostępne w serwisie eBay i Amazon.
  • 2 x stereofoniczne gniazda 2,5 mm, które pasują do wtyczki 2,5 mm sond Extech. Wygrzebałem ze starego komputera gniazda 3,5 mm, więc odciąłem wtyczkę od sondy Extech i zastąpiłem ją wtykami 3,5 mm. Należy tego unikać, wystarczy użyć gniazd 2,5 mm lub użyć gotowej wtyczki adaptera stereo 2,5 mm na 3,5 mm.
  • Koralika termistora 100K plus przewód o przekroju 26 i wtyczka stereo 3,5 mm, jeśli chcesz stworzyć własną sondę. Jeśli nie, kup drugą sondę Extech!
  • 1 x Lightblue Bean firmy Punch Through Designs. Jest to moduł Bluetooth programowalny jako płytka rozwojowa Arduino. Moduł jest dość drogi, ale usuwa wiele złożoności. Prowadzą kampanię na Kickstarterze dotyczącą urządzenia nowej generacji, co może być warte rozważenia.
  • Rezystory 2 x 1/4W 100K, które służą do dzielenia napięcia odniesienia dla termistorów. Użyłem rezystorów 5%, ale rezystory o wyższej tolerancji są generalnie mniej wrażliwe na temperaturę i zapewniają lepszą wydajność. 1% to dobra wartość tolerancji.
  • Lutownica i lut
  • Przecinaki do drutu i kilka małych odcinków drutu przyłączeniowego o rozmiarze 26 lub 28.

Oprogramowanie i oprogramowanie układowe

  • Do programowania Bean potrzebna jest aplikacja Bean Loader. Użyłem systemu Windows, więc wszystkie linki będą specyficzne dla systemu Windows. Wszystko, czego potrzebujesz, aby rozpocząć pracę z Bean, w tym specyfika Arduino, jest dostępne na stronie LightBlueBean
  • Workbench EvoThings dla aplikacji na smartfony jest dostępny tutaj. Dostępna jest tam również cała dokumentacja „wstępna”. Jest bardzo dobrze udokumentowany.

Krok 2: Obwód i konstrukcja elektryczna

Budowa obwodów i instalacji elektrycznych
Budowa obwodów i instalacji elektrycznych
Budowa obwodów i instalacji elektrycznych
Budowa obwodów i instalacji elektrycznych
Budowa obwodów i instalacji elektrycznych
Budowa obwodów i instalacji elektrycznych

Termistor jest rezystorem zależnym od temperatury. Sonda Extech posiada ujemny współczynnik temperaturowy, co oznacza, że wraz ze wzrostem temperatury opór maleje. Wartość rezystancji jest mierzona za pomocą prostego obwodu, który tworzy dzielnik napięcia z termistorem w jednej nodze i stałym rezystorem 100K w drugiej. Podzielone napięcie jest podawane do kanału wejścia analogowego w Bean i próbkowane w oprogramowaniu.

Aby zbudować obwód, uprzątnąłem gniazda audio 3,5 mm ze starego, zepsutego komputera. Za pomocą multimetru wyznaczono dwa punkty na płytce drukowanej, które odpowiadały końcówce i pierwszemu paskowi sondy. Przewody zostały przylutowane do gniazd audio i do Bean, jak pokazano na zdjęciach. Gniazda audio zostały przyklejone do prototypowego obszaru Fasoli za pomocą dwustronnej taśmy. Użyta przeze mnie taśma to taśma do naklejek samochodowych, która tworzy bardzo silne połączenie między częściami holowniczymi.

Krok 3: Współczynniki sondy

Współczynniki sondy
Współczynniki sondy

Tak często jak sonda Extech, współczynniki Steinharta-Harta nie są publikowane nigdzie, co udało mi się znaleźć. Na szczęście istnieje kalkulator online, który określi współczynniki z 3 podanych przez Ciebie pomiarów temperatury.https://www.thinksrs.com/downloads/programs/Therm%2…

To, co następuje, to podstawowa procedura, której użyłem do uzyskania współczynników. Nie zdobędzie żadnych punktów za styl, ale wystarczająco dobry, abyś powiedział +/- 1 stopień dokładności (całkowity ssanie kciuka z mojej strony)…. oczywiście w zależności od dokładności termometru wzorcowego i multimetru! Mój multimetr jest tanim, bezimiennym urządzeniem, które kupiłem wiele lat temu, kiedy pieniądze były napięte. Pieniądze wciąż są napięte i nadal działają!

Do kalibracji potrzebujemy trzech odczytów rezystancji z 3 temperatur.

  • Blisko zamrożenia, dodając lód do szklanki wody i mieszając, aż temperatura się ustabilizuje. Po ustabilizowaniu użyj multimetru, aby zarejestrować rezystancję sondy i termometru referencyjnego, aby zarejestrować temperaturę.
  • Teraz umieść sondę w szklance wody o temperaturze pokojowej, pozwól jej wyrównać się z temperaturą wody i zapisz temperaturę na termometrze referencyjnym oraz odczyt rezystancji na multimetrze.
  • Umieść sondę w szklance gorącej wody i zanotuj opór.

    Temperatura Opór
    5.6 218K
    21.0 97,1 tys
    38.6 43.2

Cały ten proces przypomina trochę sytuację z kurczakiem i jajkiem, ponieważ potrzebujesz skalibrowanego termometru do rejestrowania temperatury i skalibrowanego multimetru do rejestrowania oporu. Błędy tutaj spowodują niedokładność pomiarów temperatury, ale dla moich celów +/- 1 stopień to więcej niż potrzebuję.

Podłączenie tych zarejestrowanych wartości do kalkulatora internetowego daje następujące wyniki:

Obraz
Obraz

Współczynniki (A, B i C) są wprowadzane do równania Stenharta-Harta w celu określenia temperatury na podstawie próbkowanej wartości rezystancji. Równanie jest zdefiniowane jako (źródło: wikipedia.com)

Obraz
Obraz

Gdzie T = temperatura w kelwinach

A, B i C to współczynniki równania Steinharta-Harta, które próbujemy określić R to opór w temperaturze T

Oprogramowanie układowe wykona to obliczenie.

Krok 4: Oprogramowanie układowe

Oprogramowanie układowe
Oprogramowanie układowe
Oprogramowanie układowe
Oprogramowanie układowe

Napięcia termistora są próbkowane, konwertowane na temperaturę i wysyłane przez Bluetooth do aplikacji EvoThings działającej na smartfonie.

Aby przekonwertować napięcie na wartość rezystancji w fasoli, stosuje się proste równanie liniowe. Wyprowadzenie równania jest dostarczane jako obraz. Zamiast konwertować próbkowaną wartość na napięcie, ponieważ zarówno ADC, jak i napięcie wejściowe są odniesione do tego samego napięcia akumulatora, możemy użyć wartości ADC zamiast napięcia. W przypadku 10-bitowego przetwornika ADC Bean, pełne napięcie akumulatora da w wyniku wartość ADC 1023, więc używamy tej wartości jako Vbat. Ważną kwestią jest rzeczywista wartość rezystora dzielnika. Zmierz rzeczywistą wartość rezystora dzielnika 100K i użyj zmierzonej wartości w równaniu, aby uniknąć niepotrzebnego źródła błędu spowodowanego tolerancją rezystora.

Po obliczeniu wartości rezystancji, wartość rezystancji przelicza się na temperaturę za pomocą równania Steinharta-Harta. To równanie jest szczegółowo opisane na Wikipedii.

Ponieważ mamy 2 sondy, sensowne jest enkapsulacja funkcjonalności sondy w klasie C++.

Klasa zawiera współczynniki równania Steinharta-Harta, nominalną wartość rezystancji dzielnika i port analogowy, do którego podłączony jest termistor. Pojedyncza metoda, temperature(), konwertuje wartość ADC na wartość rezystancji, a następnie używa równania Steinharta-Harta do określenia temperatury w stopniach Kelvina. Wartość zwracana odejmuje zero bezwzględne (273,15 K) od obliczonej temperatury, aby podać wartość w stopniach Celsjusza.

Moc Lightblue Bean jest widoczna w fakcie, że cała funkcjonalność Bluetooth jest zasadniczo zaimplementowana w 1 wierszu kodu, który zapisuje próbkowane wartości temperatury w obszarze danych zarysowania w pamięci Bluetooth.

Bean.setScratchData(TEMPERATURE_SCRATCH_IDX, (uint8_t*)&temperatura[0], 12);

Każda próbkowana wartość temperatury jest reprezentowana przez pływak, który zajmuje 4 bajty. Obszar danych źródłowych może pomieścić 20 bajtów. Używamy tylko 12 z nich. Istnieje 5 obszarów danych zarysowania, dzięki czemu można przesłać do 100 bajtów danych przy użyciu danych zarysowania.

Podstawowy przebieg wydarzeń to:

  • Sprawdź, czy mamy połączenie Bluetooth
  • Jeśli tak, spróbuj temperatury próbki i zapisz je w obszarze danych zarysowania
  • Śpij 200 ms i powtórz cykl.

Jeśli nie jest podłączony, oprogramowanie układa układ ATMEGA328P w stan uśpienia na długi czas. Cykl snu jest ważny dla oszczędzania energii. Układ ATMEGA328P przechodzi w tryb niskiego poboru mocy i pozostaje tam, dopóki nie zostanie przerwany przez moduł Bluetooth LBM313. LBM313 wygeneruje przerwanie, aby obudzić ATMEGA328P na koniec żądanego okresu uśpienia lub za każdym razem, gdy nawiązywane jest połączenie Bluetooth z Bean. Funkcja WakeOnConnect jest włączana przez jawne wywołanie Bean.enableWakeOnConnect(true) podczas setup().

Należy pamiętać, że oprogramowanie układowe będzie działać z każdą aplikacją kliencką BLE. Wszystko, co klient musi zrobić, to usunąć bajty temperatury z podstawowego banku danych i złożyć je w liczby zmiennoprzecinkowe w celu wyświetlenia lub przetworzenia. Najłatwiejszą aplikacją kliencką dla mnie było korzystanie z EvoThings.

Krok 5: Aplikacja na smartfona

Aplikacja na smartfony
Aplikacja na smartfony

Przykładowa aplikacja Evo Things jest bardzo zbliżona do tego, czego potrzebowałem, przy niewielkim wysiłku wymaganym do dodania dodatkowych elementów wyświetlacza w celu uzupełnienia 3-kanałowego urządzenia do pomiaru temperatury.

Instalacja i podstawowa obsługa platformy EvoThings jest bardzo dobrze udokumentowana na stronie internetowej Evo Things, więc nie ma sensu powtarzać tego tutaj. Wszystko, co omówię tutaj, to konkretne zmiany, które wprowadziłem w ich przykładowym kodzie, aby wyświetlić 3 kanały informacji o temperaturze, wyodrębnione z obszaru danych zarysowania Bluetooth.

Po zainstalowaniu EvoThings Workbench, znajdziesz tutaj przykład Lightblue Bean (na komputerach z 64-bitowym systemem Windows):

Ten komputer\Dokumenty\EvothingsStudio_Win64_1. XX\Przykłady\Lightblue-bean-basic\app

Możesz zastąpić pliki index.html i app.js plikami dołączonymi do tego kroku. Zmiany wprowadzone w pliku jacascript wyodrębniają 3 zmiennoprzecinkowe wartości temperatury z obszaru danych źródłowych i wewnętrznego kodu HTML nowych elementów utworzonych w pliku HTML.

funkcja onDataReadSuccess(dane) {

var temperatureData = new Float32Array(dane);

var bytes = new Uint8Array(dane);

var temperatura = temperatureData[0];

console.log('Odczyt temperatury: ' + temperatura + ' C');

document.getElementById('temperatureAmbient').innerHTML = temperatureData[0].toFixed(2) + " C°";

document.getElementById('temperature1').innerHTML = temperatureData[1].toFixed(2) + " C°";

document.getElementById('temperature2').innerHTML = temperatureData[2].toFixed(2) + " C°";

}

Krok 6: Obudowa

Załącznik
Załącznik
Załącznik
Załącznik
Załącznik
Załącznik
Załącznik
Załącznik

Obudowa to proste pudełko wydrukowane w 3D. Do stworzenia projektu użyłem Cubify Design, ale wystarczy dowolny program do modelowania 3D. Plik STL jest dołączony, abyś mógł wydrukować własny. Gdybym miał to zrobić od nowa, zrobiłbym ściany trochę grubszymi niż są teraz i zmieniłby projekt klipsa, który utrzymuje deskę na miejscu. Klipsy bardzo łatwo pękają, ponieważ naprężenie znajduje się w płaszczyźnie smarowania, jak warstwy drukowane w 3D, co jest najsłabszą orientacją dla części drukowanych w 3D. Ścianki są bardzo cienkie, więc mechanizm zatrzaskowy jest trochę słabszy. Użyłem przezroczystej taśmy, aby zamknąć pudełko, ponieważ ściany były zbyt cienkie - nie eleganckie, ale działa!

Krok 7: Ustawienia komputera i konfiguracja Bluetooth

Ustawienia komputera i konfiguracja Bluetooth
Ustawienia komputera i konfiguracja Bluetooth

Cykl kompilacji i przesyłania oprogramowania układowego dla Bean odbywa się przez Bluetooth. W danej chwili może być tylko jedno aktywne połączenie Bluetooth. Bean Loader jest dostępny w Windows App Store

Podstawowy cykl, którego używam do parowania i łączenia (oraz naprawy i ponownego łączenia, gdy coś pójdzie nie tak) jest następujący: Z Panelu sterowania;/Ustawienia Bluetooth, powinieneś zobaczyć następujący ekran:

Obraz
Obraz

W końcu system Windows wyświetli komunikat „Gotowy do parowania”. W tym momencie możesz kliknąć ikonę Fasola, a po kilku sekundach system Windows poprosi o wprowadzenie hasła. Domyślne hasło do ziarna to 00000

Obraz
Obraz

Jeśli hasło zostanie wprowadzone poprawnie, system Windows pokaże, że urządzenie jest prawidłowo podłączone. Musisz być w tym stanie, aby móc zaprogramować Fasolę.

Obraz
Obraz

Po sparowaniu i połączeniu użyj programu Bean Loader, aby załadować oprogramowanie układowe do ziarna. Zauważyłem, że to się nie udaje częściej niż nie i wydaje się, że jest to związane z bliskością mojego komputera. Poruszaj Fasolą, aż znajdziesz lokalizację, która Ci odpowiada. Są chwile, kiedy nic nie będzie działać, a Bean Loader zasugeruje ponowne sparowanie urządzenia. Zazwyczaj ponowne przeprowadzenie procesu parowania spowoduje przywrócenie połączenia. Musisz „Usunąć urządzenie” przed ponownym sparowaniem.

Obraz
Obraz

Operacja Bean Loader jest prosta i dobrze udokumentowana na ich terenie. Przy otwartym programie Bean Loader wybierz pozycję menu "Program", aby otworzyć okno dialogowe, aby przejść do pliku szesnastkowego dostarczonego w kroku oprogramowania układowego tej instrukcji.

Obraz
Obraz

Po załadowaniu oprogramowania układowego ZAMKNIJ moduł ładujący ziarna, aby przerwać połączenie między modułem ładującym ziarna i sprzętem ziarna. Jednocześnie możesz mieć tylko jedno połączenie. Teraz otwórz środowisko pracy EvoThings i uruchom klienta EvoThings na smartfonie lub tablecie.

Obraz
Obraz

Po kliknięciu przycisku „Uruchom” klient EvoThings automatycznie załaduje stronę html termometru. Kliknij przycisk Połącz, aby połączyć się z Bean i powinieneś zobaczyć wyświetlane temperatury. Powodzenie!

Krok 8: Wniosek

Wniosek
Wniosek

Jeśli wszystko jest zbudowane i skonfigurowane poprawnie, powinieneś mieć działający system, który pozwoli Ci monitorować temperatury za pomocą 2 sond, a także monitorować temperaturę czujnika BMA250 na płytce rozwojowej Bean. Z EvoThings można zrobić więcej - właśnie zarysowałem powierzchnię, więc zostawiam to eksperymentowanie dla Ciebie! Dziękuje za przeczytanie! Jeśli coś pójdzie nie tak, po prostu zostaw komentarz, a pomogę tam, gdzie mogę.

Zalecana: