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ć)

Opublikuj swój projekt i odbierz 50% rabatu do wykorzystania w sklepie Nettigo.pl

-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)
Nettigo - patron działu Elektronika

Podobne posty

Disc VUmetr by hetm4n

Disc VUmetr by hetm4n

Witam! Chciałbym przedstawić wykonany prze zemnie VU metr. przeglądając różne konstrukcje na YT postanowiłem złożyć…

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

Czujnik DHT21 (AM2301) i Arduino

Nie przegap nowych projektów!

Zapisując się na nasz Newsletter będziesz miał pewność, że nie przegapisz żadnego nowego projektu opublikowanego w Majsterkowie!

Od teraz nie przegapisz żadnego projektu!

Masz uwagi?