RGBTemp – termometr z kolorową sygnalizacją temperatury

Prezentowany projekt jest wynikiem chęci wykorzystania kilku elementów które mi zalegały a bardzo coś chciałem z nich zrobić. Mając do dyspozycji moduł Bluetooth HC-06 oraz paczkę diod LED RGB pomyślałem o jakimś sterowanym efekcie świetlnym. Tylko na co to komu. Tak więc dołączyłem jeszcze czujnik temperatury i czujnik wilgotności i powstało całkiem użyteczne urządzenie. Które wyświetla kolor zależny od temperatury.

Elektronika

Jako główny układ sterujący wykorzystałem mikrokontroler AVR Atmega16. Ma wystarczającą ilość pamięci oraz portów, a także odpowiednie peryferia. Poniżej przedstawiam schemat układu:

Jest to zwykła aplikacja mikrokontrolera z zewnętrznym kwarcem 16MHz.

Złącza:

  • JP1 – złącze modułu Bluetooth HC-06
  • JP3 – złącze czujnika wilgotności i temperatury DHT11
  • JP4 – złącze czujnika temperatury DS18B20
  • JP5 – złącze zasilanie +5V
  • JP9 – złącze zewnętrznego przycisku reset
  • JP10 – złącze fotorezystora

Tranzystory Q2, Q3, oraz Q4 wraz z współpracującymi rezystorami sterują pracą poszczególnych kolorów w diodzie LED.

Całość układu jest zasilana z sieci poprzez zasilacz wtyczkowy +5V wykorzystany ze starej ładowarki telefonicznej.

Fotorezystor umożliwia automatyczną regulację jasności.

Dioda LED RGB

Diody LED które posiadałem nie miały żadnego radiatora, tak więc przylutowałem ją do odpowiednio wyfrezowanego kawałka miedziowanego laminatu, który pełni funkcję radiatora jak i mocowania.

Obudowa

Całość została zamknięta w drewnianej obudowie. Wykonania została poprzez sklejenie kostki z otworem na lampę i bez jednej ścianki od spodu. Następnie wszystko zostało wyszlifowane tak aby powstały równe krawędzie. Efekt końcowy pozytywnie mnie zaskoczył.

Osłona lampy pochodzi ze starego już zdemontowanego oświetlenia. Wyrzuciłem z niej gniazdo mocowania żarówek G4, a następnie wkleiłem płytkę z przylutowaną diodą LED.

Oprogramowanie

W tym projekcie wykorzystałem trzy programy, każdy napisany w innym środowisku i na inną platformę, więc było to bardzo dobre ćwiczenie.

Atmega16 – Arduino

Program sterujący pracą mikrokontrolera Atmega16 powstał w środowisku Arduino IDE. W zasadzie to nie ma w nim nic specjalnego jest to proste odbieranie i analizowanie danych. Cekawsza może się wydać funkcja wyliczająca kolory składowe dla diody LED.

void RGBColor(int color, int brightness)
{ 
  int red, green, blue;

  if(color >= 0 && color < 250)
  {
    blue = color;
    green = 0;
    red = 250;  
  }
  else if(color >= 250 && color < 500)
  {
    blue = 250;
    green = 0;
    red = 250 - (color % 250);;  
  }
  else if(color >= 500 && color < 750)
  {
    blue = 250;
    green = color % 250;
    red = 0;  
  }
  else if (color >= 750 && color < 1000)
  {
    blue = 250 - (color % 250);
    green = 250;
    red = 0;  
  }
  else if (color >= 1000 && color < 1250)
  {
    blue = 0;
    green = 250;
    red = color % 250;  
  }
  else if (color >= 1250 && color <= 1500)
  {
    blue = 0;
    green = 250 - (color % 250);
    red = 250;  
  }
  else if (color >1500)
  {
    blue = 250;
    green = 250;
    red = 250;  
  }
    
  analogWrite(11,map(red, 0, 250, 0, 255 - brightness));
  analogWrite(10,map(green, 0, 250, 0, 255 - brightness));
  analogWrite(9,map(blue, 0, 250, 0, 255 - brightness));
}

Argument color określa barwę z przedziału od 0 do 1500, a argument brightness określa jasność.

Aplikacja PC – Qt5

Aplikacja do obsługi termometru z poziomu komputera PC powstała w środowisku Qt Creator z wykorzystaniem dodatkowego modułu QT SerialPort.

Umożliwia odczytywanie temperatur oraz wilgotności. Można także określić, która temperatura ma zostać prezentowana poprzez wyświetlany kolor, lub możemy zamienić urządzenie w lampę (zwykłą lub kolorową).

Dzięki wykorzystaniu biblioteki Qt aplikacja może pracować na różnych systemach operacyjnych takich jak Linux, Windows, oraz Mac OS.

Aplikacja Android – Processing + Android SDK

Aby zwiększyć funkcjonalność termometru napisałem także aplikację dla urządzeń z systemem android. Powstała ona w bardzo prosty środowisku Processing z wykorzystaniem trybu Android. Jest to prosty do bólu interface wyświetlający dane, kiedy chcemy zmienić wyświetlaną przez termometr temperaturę, to wystarczy w nią „tapnąć”. Początkowo miała być bardziej rozbudowana i ładniejsza, ale przez kilka miesięcy jak z niej korzystam nie znalazłem potrzeby na posiadanie większej ilości funkcji, tak więc jak na razie jest prost i brzydko:

Podsumowanie

Z działania termometru jestem bardzo zadowolony, pracuje już od prawie pół roku bez przerwy. Bardzo szybko można się przyzwyczaić do odczytywania temperatury na podstawie wyświetlanych kolorów. Dzięki zastosowanej automatycznie regulowanej jasności światło jest widoczne w dzień i kompletnie nie przeszkadza w nocy.

Zastosowanie Bluetooth do komunikacji nie jest najlepszym rozwiązaniem, ponieważ dosyć często trzeba na nowo wykonywać połączenie, a jak to Bluetooth czasem oporny na wszystko. Dużo lepszy był by moduł wi-fi. Czujnik wilgotności DHT11 też nie powala swoją dokładnością i stabilnością pomiarów, potwierdzają się opinia z internetow, że lepiej zapłacić dwa razy więcej i mieć lepszy czujnik.

Przyszłe modyfikacje

Planuje całość przerobić na komunikację wi-fi najprawdopodobniej przy użyciu układu ESP6288. Dzięki temu będę mógł prezentować także dane z innych czujników, na przykład temperatura wody w kotle CO.

Chciałbym także zmodyfikować układ sterowania diodą aby wykorzystać jej pełną moc (aktualnie to około 50%), oraz żeby było to zrobione po prostu porządnie. Planuje zastosować wykorzystać układ AMC7135.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.