Czujnik temperatury z alarmem na dużą odległość z możliwością rozwoju.

Czujnik temperatury z alarmem na dużą odległość z możliwością rozwoju.

Witam.

Chciałbym podzielić się swoim projektem DIY, który wykonałem dla kolegi.

Na początek może sama idea projektu i jego założenia. Pomysł jak już wspomniałem podrzucił kolega, który zimą korzystał z przydomowej sauny. Jednak musiał pokonywać dystans z domu do sauny  ok. 50 m. w celu sprawdzenia temperatury nagrzania sauny. Nie było by to problemem teraz w lecie, jednak zimą sprawa nie była za ciekawa, a stacje pogodowe i inne czujniki wysyłające temperaturę na odległość albo gubiły zasięg już po paru dniach albo temperatura w saunie była za wysoka (120 st.) i nadajniki odmawiały posłuszeństwa. Na spotkaniu towarzyskim kolega opowiedział mi całą sytuację i tak oto narodził się pomysł czujnika temp. na odległość.

Zapoznałem się z sytuacją, kolega przedstawił oczekiwania, ja dodałem coś od siebie i wyszły nam poniższe założenia projektu:

  •  Projekt miał być bezprzewodowy, a sygnał miał być emitowany na odległość 50 m. otwartej przestrzeni i 2 ściany w domu.
  • Oczywiście nadawanie i odbiór temperatury z sauny i wyświetlenie jej na wyświetlaczu LCD, tak więc 2 moduły: nadawczy i odbiorczy.
  • Dodałem od siebie możliwość ustawienia alarmu temperatury, po której przekroczeniu miał włączać się buzzer sygnalizujący osiągnięcie ustawionej temp. w saunie (nie trzeba co chwilę sprawdzać i specjalnie chodzić do kuchni, a także nie trzeba pamiętać o sprawdzaniu :D).
  • Nadajnik i odbiornik mają być zasilane z sieci i być w obudowach.
  • Czujnik temp. musi dokonywać pomiaru temperatury sięgającej 130 stopni C.

No to tyle z założeń, wszystko było już ustalone więc pozostało nic innego jak wykonanie projektu. Jak widzicie kolega ma saunę także koszta nie musiały być cięte a ja mogłem puścić wodze fantazji xD

No więc pewnego zimowego wieczoru zacząłem kompletować potrzebne elementy:

Oczywiście potrzeba czegoś co to ogarnie i jakoś tak padło na ATmega328p a konkretnie Arduino pro mini. Dlaczego Arduino, a nie goła atmega, lub inne cusik? Podobne koszty, stabilizator, rezonator i goldpiny na pokładzie więc wybór był prosty, choć na pewno znajdą się osoby co powiedzą po co od razu atmega i to jeszcze328p! No ale cóż chciałem żeby projekt był przyjemny, i łatwy w ewentualnych dalszych upgreydach :p

Właśnie również z tego powodu zdecydowałem się na płytki prototypowe a nie na trawienie laminatu, choć tak mogłem wyprowadzić sygnały, zasilanie i masy no ale cóż lubię lutować i plątanine kabelków.

Teraz dalsze elementy czyli najważniejszy czujnik temp. który postanowiłem umieścić również w odbiorniku. Jako, że 125 stopni to taka przyjazna temp dla większości czujników to wybór padł na popularne Dallas 18b20 – tryb pasożytniczy, dokładność, i cena przemówiły na jego korzyść (choć każdy może sb dać jaki mu się nie podoba).

Dalej myślałem o zasilaniu… Czy 12V i przetwornica step-down, czy jakieś zasilacze 5V i bezpośrednio do VCC pro mini, czy jakiś zasilacz 9V do stabilizatora pro mini? Pomysłów było sporo, lecz po próbach postanowiłem spróbować na zasilaczach USB 5V 1A i sprawdzić już z gotowym projektem. To akurat element nad którym mogłem pomyśleć później i nie musiałem podejmować ostatecznej decyzji.

Wyświetlacz to LCD 4×20, po prostu ze względów estetycznych i potrzebnego miejsca pod nim na elektronikę.

Następnie moduły komunikacyjne na daną odległość i przeszkody w formie 50 cm. ścian. Postanowiłem sprawdzić najpierw tanie moduły RF do arduino na interface TTL, a także odległość jaką proponuje producent czyli 150m. Jednak po próbach okazało się, iż nawet z antenami zasięg ledwo wystarczał na 50m i jedną 20cm. ścianę. W dodatku pomyślałem, że fajnie by było mieć komunikację w obie strony i np. włączać światło z domu w środku sauny, czy też sam piec (gdyby był elektryczny a nie na drewno jak ma kolega xD), jak i również wysłanie sygnału SOS do domu w razie potrzeby, który uruchomi buzzer, i inne bajery.

Wtedy pojawił się pomysł aby wykorzystać moduły HC-12 433Mhz, które działają na magistralę UART za pośrednictwem pinów RX i TX. Wykorzystałem je ponieważ nie było dostępnych nRF24L01 ze wzmacniaczem, które są trochę tańsze,  no… ale los tak chciał.

Zacząłem od konfiguracji modułów HC-12, w których ustawiłem za pomocą komend AT największą moc nadawania, odpowiedni kanał i inne (polecam filmik na youtube gdzie pan fajnie przedstawia działanie i konfigurowanie modułów). Po pozytywnym teście przesłania informacji z jednego Arduino do drugiego podłączyłem na płytkach stykowych zestaw nadawczy, odbiorczy i zabrałem się do pisania wsadów:

ODBIORNIK: 

Schemat elektryczny odbiornika: 

NADAJNIK: 

Schemat elektryczny nadajnika: 

Oczywiście nie obyło się bez problemów, przestojów i innych uprzykrzeń życia, np. nie działało mi mapowanie Stringa więc musiałem przerzucić na int. Nie jestem mistrzem ani zawodowcem co do pisania programów, ale ten wykonuje się tak jak założyłem więc jak dla mnie jest ok. W programach użyłem dodatkowych portów UART (biblioteka SoftwareSerial) na pinach 2 i 3, aby można było w łatwy sposób wgrać nowy program.

Po próbie generalnej na stole z dodatkowymi elementami jak potencjometry, przyszła pora na wykonanie ostatecznego prototypu. W tym celu powstał rysunek techniczny obudowy, schematy i pozostało nic innego jak wykonanie.

Na początek lutowanie nadajnika i jego głównych elementów: pro mini, LCD, HC-12, tzn. gniazd na goldpiy do płytki prototypowej:

Jak widać wszystkie elementy mogą zostać wymienione, lub odczepione w razie potrzeby. W czasie gdy lutowałem przewody połączeniowe to drukowała mi się obudowa 3D, która wygląda nie najlepiej i musiałem dodrukować milimetrową warstwę. A tak wyglądała przed naklejeniem warstwy:

A to tylna klapka. Na żywo robi jeszcze większe wrażenie:

W obudowie jest otwór na wyświetlacz 4×20, 2x potencjometry: jeden do kontrastu, drugi do ustawienia wartości temp. alarmu, a także otwór na czujnik ds18b20 i przełącznik alarmu (odcina zasilanie buzzera). Na początku chciałem włączać i wyłączać alarm systemowo, ale brakło mi miejsca na wyświetlaczu, dlatego pojawił się zwykły przełącznik odcinający zasilanie od buzzera. Alarm można również wyłączyć ustawiając najwyższą temp. a żeby sprawdzić, czy działa ustawić najniższą (22 st. można zmienić w programie).

Tak prezentuje się już gotowa całość odbiornika i nadajnika (odbiornik bez naklejonej wierzchniej warstwy!). W nadajniku czujnik posiadam przylutowany bezpośrednio pod mikrokontroler, ponieważ w przyszłości mogą pojawić się przekaźniki i inne pierdoły (może).

Tak wygląda ekran po podłączeniu zasilania (z doklejoną warstwą):

Tak po rozruchu:

A tak, gdy włączy się alarm (i oczywiście sygnał dźwiękowy):

Nadajnik prezentuje się w następujący sposób:

Składa się z obudowy, gniazda zasilania, arduino pro mini, modułu HC-12 i przewody idące do czujnika dallas.

Wszystko dobrze działało na zasilacze 5V – 1A więc przerobiłem tylko 2 przewody USB na końcówkę jack DC i wszystko pięknie śmiga, a co ważniejsze kolega jest zadowolony :)

Wykaz części:

Wszystkie części kupiłem w sklepie abc-rc.pl ponieważ tam były najtańsze.

Zachęcam do konstruktywnej krytyki, a także zwracania uwagi na błędy i dodatkowe rozwiązania (panel przedni został poprawiony!) :)

Ocena: 4.89/5 (głosów: 9)

Podobne posty

12 komentarzy do “Czujnik temperatury z alarmem na dużą odległość z możliwością rozwoju.

  • Witam.Nie będzie konstruktywnej krytyki-bez obrazy ale jak już coś publikujesz to postaraj się o jakość-obudowa jakby po niej czołg przejechał-nie wspomnę o takiej chińszczyźnie jak termoglut który aż razi w oczy-kwestia czasu jak to przestanie działać.Ostatnia sprawa-czemu wszystcy robicie projekty na arduino? Przecież taki uklad obsłuży zwykła atmega8 za 4zł>mógł być fajny projekt a wyszło naprawdę do dupy-chodzi mi o estetykę.

    Odpowiedz
    • Tak jak autor napisał, mógł to zrobić na atmegach ale wolał arduino bo nie trzeba dodatkowych elementów. A w ogóle to takie pro mini kosztuje niecałe 5zł z dostawą.
      Co do jakości wykonania to niestety sam bym autora zabił bo aż oczy bolą ;)
      Jeśli dobrze widzę to czujnik jest w obudowie nadajnika, biorąc pod uwagę, że w saunie jest wilgotność 100% a nadajnik pewno jest w środku to układ przestanie działać po pierwszym uruchomieniu sauny.

      Odpowiedz
      • Jest napisane w opisie, że wydrukowałem dodatkową 1mm warstwę tylko po prostu nie mam jej zdj. więc wygląd i estetyka jest w jak najlepszym porządku. Arduino tak jak również napisałem proszę czytać z uwagą ;) kriskri kris kleju na gorąco nie widać pod obudową także nie widzę również problemu… wyjaśnij proszę dlaczego połączenia usztywnione tym klejem miały by przestać przewodzić? Nie dostaje się wilgoć ani nic także proszę o wyjaśnienie. Grzesiu nie zabijaj bo naprawdę jest wyraźnie napisany tylko zdj brak… aż specjalnie poproszę kolegę żeby zdj wysłał ;) Dzięki za wyrozumiałość :)

        Odpowiedz
      • Grzesiu W saunie wilgotność to 15 – 20%, bo to zwykła sauna a nie parowa :) A elektronika jest w zewnętrznej skrzyni odizolowana od wszelkich niekorzystnych warunków i dlatego czujnik jest na metrowym przewodzie ;)

        Odpowiedz
  • Mi przeszkadza jedynie czysto estetycznie brak wyświetlania znaku stopnia, °C, ale to ja tak mam ;) – nie ma tego [tzn. ° ] w bibliotece wyświetlacza ? Z °C byłoby PRO ;)

    Odpowiedz
    • HC12 mają bardzo dobry zasięg, do 300 – 400 metrów na tych dołączonych sprężynkach. Z zewnętrzną anteną kierunkową to można nawet wyciągnąć 1.5 Km.

      Odpowiedz

Odpowiedz

anuluj

Masz uwagi?