Czujnik DHT21 (AM2301) i Arduino

Czujnik DHT21 (AM2301) i Arduino

Witam!

Dzisiaj pragnę zaprezentować mój projekt z użyciem czujnika DHT21, którego zadaniem będzie wyświetlenie aktualnej temperatury i wilgotności na ekranie LCD 2×16 (HD44780) i stworzenie archiwum temperatur w pliku txt na komputerze. Projekt ten piszę ze względu na bardzo małą ilość polskich tutoriali związanych z tym czujnikiem. Zaczynamy!

Potrzebne części to:

-Arduino (korzystam z Leonardo R3, jednak każde powinno zadziałać)

-Czujnik temperatury i wilgotności DHT21 (AM2301) do kupienia np. tu

-Płytka stykowa dowolnej wielkości

-Garść kabelków i drobnicy elektronicznej (rezystor 1k)

-Komputer

-Trochę chęci :)

Do korzystania z czujnika wybrałem bibliotekę od Adafruit, która pomimo, że napisana dla czujników DHT21 i DHT22, doskonale współgra również z naszym.

Może też paść pytanie, dlaczego akurat DHT21? Otóż ma najlepszy stosunek dokładności i zakresu pomiaru do ceny :D

 

Na sam początek musimy pobrać bibliotekę dostępną tutaj (klikamy przycisk “download ZIP”) i następnie folder skompresowany rozpakować do katalogu /libraries który bez problemu znajdziemy w folderze instalacji Arduino IDE. Ot co, zwykła instalacja biblioteki :D.

 

Następnym krokiem jest podłączenie naszego niebieskiego przyjaciela do komputera, uruchomienie Arduino IDE i wgranie do pamięci mikrokontrolera następującego kodu:

Napomknę tylko, że ten kod nie jest mój, jest zaczerpnięty i lekko zmodyfikowany, a dostępny w oryginale tu.

Musimy też oczywiście podłączyć do Arduino nasz czujnik, korzystając z schematu poniżej (dostępny na stronie produktu na botland.com.pl), wkradł im się błąd, z czujnika DHT21 wychodzą tylko 3 piny, nie ma tam 4-tego.

1884-6293

Pin VDD podłączmy pod zasilanie w Arduino (zadziała zarówno w 3.3V jak i w logice 5V), pin GND podłączamy pod masę w arduino, a pin data mostkujemy z pinem VDD korzystając z rezystora 1k lub podobnego i następnie podłączamy pod pin cyfrowy 2 w naszym niebieskim przyjacielu.

Jeśli wszystko wykonaliśmy prawidłowo, otwarcie Serial Monitora, powinno dać nam informację o temperaturze i wilgotności :).

 

Tak jak napisałem na początku naszym celem jest wyświetlenie aktualnej temperatury i wilgotności na ekraniku LCD i stworzenie ich archiwum na dysku komputera. Tak więc weźmy się za to!

Na początek do naszego układu dołączyć musimy wyświetlacz LCD, schemat posiadam stąd (polecam tam zajrzeć!)

LCD_Base_bb_Fritz

Dodam, że wartość rezystora na schemacie to 220 ohm.

Następnie przepinamy kabelek od DHT21 na złącze o numerze 7, gdyż nasze złącze nr.2 zostało zajęte przez wyświetlacz.

Kolejnym krokiem jest wgranie na Arduino następującego kodu:

Dzięki któremu, jeśli prawidłowo podłączyliśmy wyświetlacz, zobaczymy na nim aktualną temperaturę i wilgotność, odświeżaną średnio co 2 sekundy (taka informacja widnieje w karcie informacyjnej DHT21). Możemy oczywiście sztucznie spowolnić odświeżanie, lecz po co, skoro ekran właściwie prawie nie mruga :).

W celu odbioru informacji na komputerze posłużyliśmy się już wcześniej Serial Monitorem wbudowanym w Arduino IDE, jednakże możemy posłużyć się równie dobrze napisanym przeze mnie programem Comtrol #autoreklama. Do pobrania tutaj, serdecznie polecam :D.

Jednak nawet mój programik nie posiada funkcji zapisu otrzymanych informacji na dysku komputera :(. Aby tego dokonać pobieramy z tej strony program CoolTerm (był na jego temat wpis na majsterkowie który moim zwyczajem oczywiście podlinkuję tu). W celu odbioru danych rozpakowujemy archiwum w dowolne miejsce dysku naszego komputera i uruchamiamy plik .exe. Wchodzimy w Options, tam ustawiamy port szeregowy, na którym znajduje się nasze Arduino (do sprawdzenia np. w Arduino IDE) i następnie wybieramy prędkość transmisjii 9600 bodów, gdyż takową zdefiniowaliśmy w kodzie naszego programu. Następnie klikamy przycisk Connect. Powinny pokazać się nasze odczyty.

Aby zapisać nasze dane w pliku tekstowym, wchodzimy w “Connection -> Capture to Textfile” i wybieramy “Start”. Pokaże się okienko proszące o podanie lokalizacji i nazwy pliku, a po wypełnieniu tych czynności i zapisaniu ich korzystając z guziczka “OK” nasze dane będą dynamicznie zapisywane w pliku który zdefiniowaliśmy, aż do czasu zamknięcia programu.

 

To w sumie wszystko, dziękuje za uwagę i wesołego roku pańskiego 2016!

 

Jeszcze fotka gotowego układu:

DSC_0040

 

Ocena: 3.88/5 (głosów: 72)

Podobne posty

10 komentarzy do “Czujnik DHT21 (AM2301) i Arduino

  • Polskich tutoriali jest mało może z tego względu że obsługa jest identyczna jak DHT11/22(w sensie programowym)
    dodatkowo DHT21 jest gotowym modułem który ma juz w sobie zaimplementowany rezystor podciągający dlatego nie ma potrzeby stosowania kolejnego jak Ty to robisz wystarczy pin 2 podłączyć bezpośrednio do arduino. Takie rozwiązanie jest potrzebne jak stosujesz sam czujnik a nie pełny moduł(choć w wypadku 21 jest to nie możliwe gdyż są to dwa niezależne czujniki połączone w jeden moduł)

    Odpowiedz
    • Z tym, że ani razu na polskich internetach nie spotkałem się ze zdaniem “obsługa jest taka sama jak DHT22″…

      A z drugiej strony skoro jest to gotowy moduł, to czemużby w datasheecie widnieje schemat na którym jest rezystor podciągający? Chociaż może? Sprawdzę, czy bez rezystora czujnik też zadziała :)

      #edit
      Masz rację, bez rezystora też działa, aczkolwiek zastanawiam się, poco wtedy podają taką informację w datasheecie… Może po to, by móc przesyłać sygnał na większe odległości?

      Odpowiedz
  • Ja się również nie mogę zgodzić ze stwierdzeniem, że DHT21 jest dobrym wyborem ze względu na stosunek możliwości do ceny. W cenie DHT21 można kupić DHT11, który spełnia dokładnie taką samą rolę i posiada dokładność do 0,5*C.

    Odpowiedz
  • Tak, tylko zakres pomiaru masz inny, DHT21 mierzy temp. ujemne od -40 st. C a DHT11 tylko dodatnie, czytaj “pokojowe” :)
    A projekt jak projekt, ta biblioteka jest prosta jak drut, raptem odczyt wilgotności i dwa odczyty temp. (w C i F) i prezentacja na LCD, banalne bym powiedział :)

    Odpowiedz
  • Wszystkim którzy w swych wypowiedziach sugerują jakoby gość niepotrzebnie robił to co robi powiem tylko jedno- jesteście buraczanymi cieniaskami-hejtuśkami. Sami zróbcie jakiś projekt i tak ładnie go opiszcie a nie gównarzerie odstawiacie baranie cipki.

    Odpowiedz
  • Witam,
    Dziękuję za artykuł MSSC. Gratulacje precyzyjnie i bezbłędnie.
    To moja pierwsza zabawa z Arduino i wszystko działa : )
    Chciałbym dołączyć jeszcze kilka takich czujników i zbudować jako niezależny układ z zapisem na karcie SD.
    …tylko jeszcze nie wiem jak to zrobić :)
    Proszę o podpowiedź jeśli można …
    pozdrawiam
    GK

    Odpowiedz
  • Skopiowałem cały sketch wkleiłem do arduino Leonardo i wyskakuje “Bład kompilacji dla płytki arduino Leonardo”. Ktoś może mi pomóc? Co zrobić ?

    Odpowiedz

Odpowiedz

anuluj

Masz uwagi?