Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Termometr na DS18B20 + SHT11 + GSM

sornell 27 Sep 2008 00:23 13929 19
  • Termometr na DS18B20 + SHT11 + GSM

    Witam

    Chciałem zaprezentować mój kolejny projekt. Jest to właściwie część projektu nad którym obecnie pracuję. Docelowo układ ma służyć do automatyki domowej. Na razie zrealizowałem tylko pomiar temperatury wraz z obsługą telefonu poprzez komendy AT.

    Zadaniem prezentowanego ukladu jest pomiar temperatury z podpiętych czujników z serii DS1820, pomiar wilgotności, obliczanie punktu rosy (SHT11), wyświetlanie pomiarów na LCD oraz wysyłanie wyników przez SMS na żądanie. Układ samodzielnie wykrywa wszystkie czujniki znajdujące się na magistrali, zapisuje ich ROM'y do pamięci eeprom, następnie w pętli wykonuję pomiar oraz wyświetla wyniki na LCD. Aby otrzymać wyniki pomiaru poprzez SMS, należy zadzwonić pod numer tel. podpiętego do systemu. Po zidentyfikowaniu dzwoniącego wysyłany jest SMS z danymi na numer nadawcy. Do testów użyłem kabla telefonicznego łącznie około 20m + skrętka około 25m. Topologia mieszana z 14 czujnikami DS18B20 oraz DS18S20. Na oscylogramie widać 1 slot przy takiej konfiguracji. Nie zamieszczam schematu, bo jest śmiesznie prosty. Program w trakcie rozwoju, trzeba uporządkować, dlatego też nie umieszczam. Elementy w większości z odzysku, więc nie wygląda zbyt pięknie.

    Od razu uprzedzam dosyć częsty upierdliwy komentarz:
    Dlaczego taki duży procesor, a nie ATMega8?
    1. Bo program zajmuje w tej chwili 12kWords i będzie dalej rozwijany.
    2. Chcę wprowadzić docelowo RTOS'a a to wymaga więcej RAM'u
    3. Bo lubie PIC



    Zapraszam do komentowania




    Termometr na DS18B20 + SHT11 + GSM
    PCB wykonane metodą termotransferu.
    Termometr na DS18B20 + SHT11 + GSM
    Elementy w większości z odzysku, więc nie wygląda zbyt pięknie.
    Termometr na DS18B20 + SHT11 + GSM

    Termometr na DS18B20 + SHT11 + GSM

    Termometr na DS18B20 + SHT11 + GSM

    Termometr na DS18B20 + SHT11 + GSM

    Zamieszczam krótki filmik z prezenstacją układu. Na końcu nie widać treści sms'a -> słaby aparat.

    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    sornell
    Translator, editor
    Offline 
    sornell wrote 103 posts with rating 8, helped 0 times. Been with us since 2003 year.
  • #2
    Faces
    VIP Meritorious for electroda.pl
    Witam.

    Podoba mi się.
    Szczególnie klawisze (pomysł wyśmienity).
    Z odczytem przez SMS temperatury to strzał w dziesiątkę.

    Napisałeś, że topologia mieszana... 14 czujników DSxxxx.
    Automatyka domowa, ale czy jest aż potrzebne 14 czujników?

    Widać, że włożyłeś w to wiele pracy.

    Mam rozumieć, że jest to filtr (zaznaczone na czerwono)?
    Termometr na DS18B20 + SHT11 + GSM

    To jest oczywiście wyjście pod telefon?
  • #3
    sornell
    Translator, editor
    Nie wszystkie czujniki będą wykorzystane do automatyki. Część będzie tylko mierzyć temp. w jakiś miejscach informacyjnie tylko

    Zaznaczony element to czujnik temp/wilgotności SHT11 na przejściówce. Na tym zdjęciu odwrócony tyłem.

    To gniazdko telefoniczne to akurat wyjście magistrali 1Wire
  • #4
    tehaceole

    Level 28  
    Jaki telefon podpinasz pod swój układ? Czy program jest zoptymalizowany tylko pod kątem tego jednego modelu, czy możliwe jest użycie dowolnego aparatu? Rozważałeś zastosowanie przemysłowego modułu GSM zamiast zwykłego telefonu?

    Projekt bardzo udany i niesamowicie rozwojowy. Gratuluję =)
  • #5
    fazolek
    Level 12  
    "Pienkne no po prostu pienkne" - że tak powiem.
    Tylko po co ?! do jakiej automatyki domowej ci to potrzebne? Rozumie pomiar temp inside outside i temperatura na piecu (jak ktoś mieszka w domku) jeśli ktoś ma i na jednym z kaloryferów. Można zrobić prostą automatyke włączania i sterowania temp dogrzania w domu czy włączenia pieca zanim się do niego (domu) przyjedzie, tylko po co? Skoro bardziej zaawansowane piece dają taką możliwość w standarcie z pięknym panelem.
    Czujnik wilgotności wepchnąłeś chyba na siłę bo do czego ci punkt rosy w domu. Chyba że to stacja meteorologiczna to są jeszcze czujniki ciśnienia (też w samplach :D )
    W aucie punkt rosy świetny pomysł. no i żeby się jeszcze dobitniej doczepić to po co w tym momencie wyświetlacz i klawisze skoro można zrobić prostą obsługę przez telefon :D

    Tak poważnie kolego z uczelnianej auli :D wszystko wygląda fajnie. Twój projekt podsunął mi pomysł. Wrzucę do auta tego STH11. Niech będzie, że zgapiam.

    Mam podobny projekt pomijając sterowanie GSM, które podane jest jak na dłoni w książce GSM coś tam coś tam wydawnictwa BTC. Jednak ograniczyłem się do 2 czujników temp inside outside, bo w aucie więcej nie potrzebuje. Do tego zegarek na PCF'ie i pomiar ilości paliwa w zbiorniku gazu, niestety bardzo zgrubny (poprzez pomiar napięcia) a nie z wtryskiwacza bo mam wtrysk mechaniczny. pozostała mi kwestia kalibracji, zrobienie płytki (ale to już do zornella się uśmiechne :D ) i wsadze tam tego SHT11, a co . Całe wyświetlanko na wyświetlaczu nokii 3310 + 4 klawisze.

    Później jak tylko wrzucę program na procka zrobię fotki samego wyświetlacza.

    PS najfajniejszy jest filmik jego jakość powala. Gdybym nie robił transmisji GSM to bym powiedział, że cuda się dzieją średnio widać cokolwiek no ale :D

    W skali 0-10 daje ci 9 bo trochę czasu musiałeś spędzić choćby nad interfejsem 1-wire i AT-komendami choć to raczej sprowadza się do obsługi UARTA ale jak się nie ma trybu tekstowego w telefonie to sprawa troche upierdliwa. SHT11 to tylko i2c z tego co widzę więc to się z zasady umie obsługiwać. Odbieram 1 pkt bo za .... nie wiem co to za automatykę robisz gdzie potrzebujesz całe 14 czujników. Cała reszta super
    Czekam na twój kolejny patent czym nas zaskoczysz :D
  • #6
    lucian
    Level 13  
    Hi.
    SORNELL
    Moze napiszesz jak identyfikujesz telefon i jak i jakimi procedurami wysyłasz sms-a? - bo to fajne :sm9:
  • #8
    Madman07
    Level 19  
    Skoro użyłeś PIC18F i widzę tam gniazdo USB to przewidujesz jakąś komunikacje z kompem? Np zapisywanie danych do kompa, robienie średnich dziennych i miesięcznych?

    P.S. Widzę, że u nas też niektórzy używają piców, nie tylko te atmele :)
  • #9
    fazolek
    Level 12  
    Jeśli ktoś chce robić komunikacje przez GSM moim zdaniem najfajniejsze telefony to SE ja akurat mam T630 ale jak się nie mylę to większość z serii T... ma tryb tekstowy a nie tylko PDU.

    Pytanie:
    Masz możliwość uczenia układu kolejnych nr telefonów? Powiedzmy ze 3 w końcu ma to być uniwersalne.

    Sama idea fajna ale na tą chwile Sornell nie pisze nic o sterowaniu tą "automatyką" przez sms'y a to byłoby ciekawsze niż tylko analiza wyników i robienie statystyki.
  • #11
    sornell
    Translator, editor
    tehaceole Telefon to Siemens C55. Teorytycznie telefon powinien być kompatybilny z innymi obsługującymi komdy AT, ale coś mi się zdaję, że jakbym podłączył jakiś inny telefon (inny niż Siemens) to potrzebne by były drobne zmiany w kodzie. Sama komuniakcja jest bardzo upierdliwa.Ciągłe grzebanie w stringach, wyszukiwanie jakiś tam nawiasów, ogólnie to się nagimnastykowałem i na Siemensa nie umiem patrzeć. Właściwie to ten projekt był robiony na uczelnię. Takie zrobiłem sobie założenia i takie coś musiałem zrobić, więc ta komórka jest takim trochę bajerem do tego. Jak teraz bym miał coś takiego robić to na pewno bym zastosował jakiś moduł do tego przeznaczony, bo widzę, że ceny są już na prawdę niewysokie czyt model podany przez Balu

    Fazolek Stary, ty to żeś se chyba jakiegoś kielona strzelił, że takie poeamty mi tu piszesz. Ale już mniejsza z tym. Pieca nie mam, ale mogę se mierzyć temperaturę na grillu, a nawet pod pachą :P ale na poważnie to docelowo system będzie sterował pompą do kolektorów słonecznych i nie tylko. Temepraturę trzeba mierzyć na wpływie/odpływie boilera, na strychu, na dachu, w piwnicy, pod domem itd. Kolektory będą sprzężone z piecem gazowym. W zależności od temp/wilgotności bedą sterowane wentylatory/pompa/zawory/mieszacze... Pomiar wilgotności potrzebny jest np. w piwnicy.
    Co do SHT11 to nie wiem czy jeszcze sample przysyłają. Mój zbierał kurz przez ponad rok w szafie i teraz dopiero się doczekał implementacji.
    Apropo telefonu. Użyłem taki, bo taki miałem. Faktycznie tryb tekstowy by sporo uprościł, ale nie będę kupować jakiś starych złomów ;P
    Na razie numer "zaufany" jest wp[isany na sztywno w eepromie. Lenistwo nie pozwoliło mi na takie szmery bajery :P
    Ufff, jak dobrze , że mi dałeś 9/10 bo jakbyś się jeszcze dowiedział, że wszystkie precedury do SHT11 są zerżnięte ze strony sensiriona z drobnymi modyfikacjami to pewnie bym wyszedł na -sqrt(2)/10

    lucian Identyfikacja za pomocą CLIP i zwykłe porównanie stringa. Procedury wysyłania smsów pisałem sam na podstawie ramek PDU, które znalazłem w książce. Jak już wyżej pisałem bardzo upierdliwa robota.


    Madman07 To nie jest gniazdo USB tylko gniazdo RJ11. Chcę do tego dorobić jakiś interfejs z PC jak mi się jeszcze będzie chciało ale to już dalsza przyszłość. Na razie na takie rzeczy jeszcze w łepie za mało. Najprawdopodobniej przez ethernet i do tego jakaś aplikacja w C# która będzie generować wykresy. Wszystkie próbki będą na karcie SD.
  • #12
    monty_p
    Level 18  
    Bardzo ciekawy projekt!!

    Na jak długich przewodach mogą być DSy ??
  • #13
    sornell
    Translator, editor
    To zależy między innymi od pojemności kabla, topologii sieci i ilości czujników na magistrali. Łączna pojemnośc kabla nie może przekraczać 5nF. Oczywiście to teoria. Znalazłem na stronach Maxima specjalny driver do 1-wire, który dopasowuje impedancję falową kabla, zabezpiecza przed przepięciami z magistrali, a także zapewnia lepszą wydajność prądową.
  • #14
    rsikon
    Level 26  
    a konkretniej sornell o jakim układdzie piszesz?
  • #16
    dir3ctor
    Level 27  
    sornell: w C18 pisales program czy asm? podziel sie rutyna do sht11 (tez mam jednego i rdzewieje w szufladzie :D ).

    A program wyglada mi na projekt u dr. Wojtuszka :) zgadlem?
  • #17
    sornell
    Translator, editor
    Program cały pisany w kompilatorze MCC18. Poniżej kawałek programu głównego. Dołączone pliki zawierają funkcje. Właściwie tak jak juz wyżej napisałem - funkcje do obsługi SHT11 są dostępne na stronie producenta i właściwie to co tutaj daję to kod po lekkich modyfikacjach na PIC18.

    Projekt jest z EB.

    Code:
            s_connectionreset();
    
          error=0;
           error+=s_measure((unsigned char*) &humi_val.i,&checksum,HUMI);  //measure humidity
           error+=s_measure((unsigned char*) &temp_val.i,&checksum,TEMP);  //measure temperature
           if(error!=0)
             s_connectionreset();                 //in case of an error: connection reset
           else
           {
             humi_val.f=(float)humi_val.i;                   //converts integer to float
                temp_val.f=(float)temp_val.i;                   //converts integer to float
                calc_sth11(&humi_val.f,&temp_val.f);            //calculate humidity, temperature
                dew_point=calc_dewpoint(humi_val.f,temp_val.f); //calculate dew point
    //            printf("temp:%5.1fC humi:%5.1f%% dew point:%5.1fC\n",temp_val.f,humi_val.f,dew_point);
           }
           //----------wait approx. 0.8s to avoid heating up SHTxx------------------------------ 
          ftoi1 = (char)humi_val.f;
           ftoi2 = (char) ((humi_val.f-ftoi1)*100);
           sprintf(humidity, "%d.%02d%", ftoi1, ftoi2);

          ftoi1 = (char)temp_val.f;
           ftoi2 = (char) ((temp_val.f-ftoi1)*100);
           sprintf(tempsht, "%d.%02dC", ftoi1, ftoi2);

          ftoi1 = (char)dew_point;
           ftoi2 = (char) ((dew_point-ftoi1)*100);
           sprintf(dp, "%d.%02dC", ftoi1, ftoi2);

          LCD_Clear();
          LCD_GoTo(1, 0);
          LCD_WriteRomText("WILG: ");
          LCD_WriteRamText(humidity);
          LCD_GoTo(1, 1);
          LCD_WriteRomText("TEMP: ");
          LCD_WriteRamText(tempsht);
          LCD_GoTo(1, 2);
          LCD_WriteRomText("DP: ");
          LCD_WriteRamText(dp);
  • #18
    patrx
    Level 16  
    Witam.

    Projekt przemyślany, ale można go jeszcze dopracować.
    Szkoda że nie pokusiłeś się o procedurę sprawdzającą poprawność transmisji (CRC) dla sht11. Na stronce producenta nie ma co prawda przykładu w C ale sam algorytm jest jasno przedstawiony.

    Fajnie jest też wykorzystać wewnętrzną grzałkę np. załaczać ją przy wilgotnościach powyżej 95% by uniknąc kondensacji. Czujnik swoje kosztuje i warto wycisnąc z niego max :)


    Pozdrawiam
  • #19
    dir3ctor
    Level 27  
    sornel: w listach przykladowych tematow na magisterki i inzynierki cos podobnego widzialem u Wojtuszka, stad ten strzal. Ja mam na PICku termometr i przetwornik A/C na USB do akwizycji sygnalow biomedycznych :)
  • #20
    JmL(TM)
    Level 24  
    monty_p wrote:
    Bardzo ciekawy projekt!!

    Na jak długich przewodach mogą być DSy ??


    Fragment przytoczony z innego postu z elektrody:

    Quote:
    Urzadzenia 1-wire maja CRC, wiec o przeklamaniu w transmisji szybko sie
    dowiesz. Poza tym bledy nie sa czeste - na 158m skretki, przez cala dobe
    transmisja 1-wire, tam i z powrotem losowe ciagi danych - ani jeden bit
    nie ulegl przeklamaniu.


    Pozdrawiam!