Spisu treści:
- Krok 1: Jak działa I2c
- Krok 2: Biblioteka
- Krok 3: Zachowanie
- Krok 4: Wykorzystanie I2c
- Krok 5: Użycie jednego przewodu
- Krok 6: Odczyt niejawny
- Krok 7: Proste czytanie
- Krok 8: Pełne przeczytanie
- Krok 9: Schemat połączeń
- Krok 10: Arduino: OneWire
- Krok 11: Arduino: I2c
- Krok 12: Esp8266 (D1Mini) OneWire
- Krok 13: Esp8266 (D1Mini) I2c
- Krok 14: Dzięki
Wideo: DHT12 (i2c tani czujnik wilgotności i temperatury), szybkie i łatwe użytkowanie: 14 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:29
Aktualizacje i inne można znaleźć na mojej stronie
Podoba mi się czujnik, który może być używany z 2 przewodami (protokół i2c), ale uwielbiam ten niedrogi.
Jest to biblioteka Arduino i esp8266 dla serii DHT12 bardzo tanich czujników temperatury/wilgotności (poniżej 1$), które współpracują z i2c lub połączeniem jednoprzewodowym.
Bardzo przydatne, jeśli chcesz użyć esp01 (jeśli używasz portu szeregowego, masz tylko 2 piny) do odczytu wilgotności i temperatury i wyświetlenia ich na i2c LCD.
AI przeczytało, że czasami wydaje się, że wymaga kalibracji, ale mam drzewo tego i uzyskuję wartość bardzo podobną do DHT22. Jeśli masz kalibrację tego problemu, otwórz problem na github i dodaję implementację.
Krok 1: Jak działa I2c
I2C współpracuje z dwoma przewodami, SDA (linia danych) i SCL (linia zegara).
Obie te linie są otwarte, ale są podciągnięte rezystorami.
Zwykle na linii jest jeden master i jeden lub więcej slaveów, chociaż może być wielu masterów, ale o tym porozmawiamy później.
Zarówno urządzenia nadrzędne, jak i podrzędne mogą przesyłać lub odbierać dane, dlatego urządzenie może znajdować się w jednym z tych czterech stanów: przesyłanie urządzenia nadrzędnego, odbiór urządzenia nadrzędnego, przesyłanie urządzenia podrzędnego, odbiór urządzenia podrzędnego.
Krok 2: Biblioteka
Moją bibliotekę znajdziesz tutaj.
Pobrać
Kliknij przycisk POBIERZ w prawym górnym rogu, zmień nazwę nieskompresowanego folderu DHT12.
Sprawdź, czy folder DHT zawiera DHT12.cpp i DHT12.h.
Umieść folder biblioteki DHT w folderze /libraries/.
Może być konieczne utworzenie podfolderu biblioteki, jeśli jest to Twoja pierwsza biblioteka.
Uruchom ponownie środowisko IDE.
Krok 3: Zachowanie
Ta biblioteka próbuje emulować zachowanie standardowych czujników biblioteki DHT (i kopiuje dużo kodu), a ja dodaję kod do zarządzania i2c olso w ten sam sposób.
Metoda jest taka sama jak w przypadku czujnika biblioteki DHT, z kilkoma dodanymi funkcjami punktu rosy.
Krok 4: Wykorzystanie I2c
Do użycia z i2c (domyślny adres i domyślny pin SDA SCL) konstruktor to:
DHT12 dht12;
i weź domyślną wartość dla pinu SDA SCL.
(Możliwe jest przedefiniowanie za pomocą określonego konstruktora dla esp8266, potrzebnego dla ESP-01). lub
DHT12 dht12(uint8_t adresOrPin)
adresOrPin -> adres
zmienić adres.
Krok 5: Użycie jednego przewodu
Aby użyć jednego przewodu:
DHT12 dht12(uint8_t adresOrPin, prawda)
adresOrPin -> pin
wartość logiczna to wybór trybu oneWire lub i2c.
Krok 6: Odczyt niejawny
Możesz użyć It z "niejawnym", "prostym odczytem" lub "pełnym odczytem": Niejawny, tylko pierwszy odczyt wykonuje prawdziwy odczyt czujnika, drugi odczyt trwa 2 sekundy. interwał to zapamiętana wartość pierwszego odczytu.
// Odczyt czujnika ma 2 sekundy czasu, który upłynął, chyba że przekażesz parametr siły
// Odczytaj temperaturę w stopniach Celsjusza (domyślnie) float t12 = dht12.readTemperature(); // Odczytaj temperaturę w stopniach Fahrenheita (isFahrenheit = true) float f12 = dht12.readTemperature(true); // Odczyty czujnika mogą być również „stare” do 2 sekund (jest to bardzo wolny czujnik) float h12 = dht12.readHumidity(); // Oblicz indeks ciepła w stopniach Fahrenheita (domyślnie) float hif12 = dht12.computeHeatIndex(f12, h12); // Oblicz indeks ciepła w stopniach Celsjusza (isFahreheit = false) float hic12 = dht12.computeHeatIndex(t12, h12, false); // Oblicz punkt rosy w stopniach Fahrenheita (domyślnie) float dpf12 = dht12.dewPoint(f12, h12); // Oblicz punkt rosy w stopniach Celsjusza (isFahreheit = false) float dpc12 = dht12.dewPoint(t12, h12, false);
Krok 7: Proste czytanie
Proste przeczytanie, aby uzyskać status przeczytania.
// Odczyt czujnika ma 2 sekundy czasu, który upłynął, chyba że przekażesz parametr siły
bool chk = dht12.read(); // prawda odczyt jest ok, fałszywy problem z odczytem
// Odczytaj temperaturę w stopniach Celsjusza (domyślnie)
float t12 = dht12.odczytajTemperatura(); // Odczytaj temperaturę w stopniach Fahrenheita (isFahrenheit = true) float f12 = dht12.readTemperature(true); // Odczyty czujnika mogą być również „stare” do 2 sekund (jest to bardzo wolny czujnik) float h12 = dht12.readHumidity(); // Oblicz indeks ciepła w stopniach Fahrenheita (domyślnie) float hif12 = dht12.computeHeatIndex(f12, h12); // Oblicz indeks ciepła w stopniach Celsjusza (isFahreheit = false) float hic12 = dht12.computeHeatIndex(t12, h12, false); // Oblicz punkt rosy w stopniach Fahrenheita (domyślnie) float dpf12 = dht12.dewPoint(f12, h12); // Oblicz punkt rosy w stopniach Celsjusza (isFahreheit = false) float dpc12 = dht12.dewPoint(t12, h12, false);
Krok 8: Pełne przeczytanie
Pełny odczyt, aby uzyskać określony status.
// Odczyt czujnika ma 2 sekundy czasu, który upłynął, chyba że przekażesz parametr siły
DHT12::ReadStatus chk = dht12.readStatus(); Serial.print(F("\nOdczytaj czujnik: ")); przełącznik (chk) { przypadek DHT12::OK: Serial.println(F("OK")); przerwa; przypadek DHT12::ERROR_CHECKSUM: Serial.println(F("Błąd sumy kontrolnej")); przerwa; przypadek DHT12::ERROR_TIMEOUT: Serial.println(F("Błąd limitu czasu")); przerwa; case DHT12::ERROR_TIMEOUT_LOW: Serial.println(F("Błąd przekroczenia limitu czasu przy niskim sygnale, spróbuj ustawić wysoką odporność na podciąganie")); przerwa; case DHT12::ERROR_TIMEOUT_HIGH: Serial.println(F("Błąd przekroczenia limitu czasu przy niskim sygnale, spróbuj ustawić niski opór pullup")); przerwa; case DHT12::ERROR_CONNECT: Serial.println(F("Błąd połączenia")); przerwa; przypadek DHT12::ERROR_ACK_L: Serial.println(F("Błąd potwierdzenia")); przerwa; przypadek DHT12::ERROR_ACK_H: Serial.println(F("Błąd AckH")); przerwa; przypadek DHT12::ERROR_UNKNOWN: Serial.println(F("Wykryto nieznany błąd")); przerwa; case DHT12::NONE: Serial.println(F("Brak wyniku")); przerwa; domyślnie: Serial.println(F("Nieznany błąd")); przerwa; }
// Odczytaj temperaturę w stopniach Celsjusza (domyślnie)
float t12 = dht12.odczytajTemperatura(); // Odczytaj temperaturę w stopniach Fahrenheita (isFahrenheit = true) float f12 = dht12.readTemperature(true); // Odczyty czujnika mogą być również „stare” do 2 sekund (jest to bardzo powolny czujnik) float h12 = dht12.readHumidity(); // Oblicz indeks ciepła w stopniach Fahrenheita (domyślnie) float hif12 = dht12.computeHeatIndex(f12, h12); // Oblicz indeks ciepła w stopniach Celsjusza (isFahreheit = false) float hic12 = dht12.computeHeatIndex(t12, h12, false); // Oblicz punkt rosy w stopniach Fahrenheita (domyślnie) float dpf12 = dht12.dewPoint(f12, h12); // Oblicz punkt rosy w stopniach Celsjusza (isFahreheit = false) float dpc12 = dht12.dewPoint(t12, h12, false);
Krok 9: Schemat połączeń
Na przykładach jest schemat połączeń, ważne jest, aby użyć odpowiedniego rezystora pullup.
Podziękowania dla Bobadas, dplasa i adafruit za udostępnienie kodu na githubie (gdzie biorę trochę kodu i pomysłów).
Krok 10: Arduino: OneWire
Krok 11: Arduino: I2c
Krok 12: Esp8266 (D1Mini) OneWire
Krok 13: Esp8266 (D1Mini) I2c
Krok 14: Dzięki
Plac zabaw Arduino (https://playground.arduino.cc/Main/DHT12SensorLibrary)
Seria projektów i2c (Kolekcja):
- Czujnik wilgotności temperatury
- Ekspander analogowy
- Ekspander cyfrowy
- Wyświetlacz LCD
Zalecana:
Jak korzystać z czujnika wilgotności i temperatury DHT12 I2C z Arduino: 7 kroków
Jak korzystać z czujnika wilgotności i temperatury DHT12 I2C z Arduino: W tym samouczku dowiemy się, jak używać czujnika wilgotności i temperatury DHT12 I2C z Arduino i wyświetlać wartości na wyświetlaczu OLED. Obejrzyj wideo
Zasilany energią słoneczną czujnik temperatury i wilgotności Arduino jako czujnik Oregon 433 mhz: 6 kroków
Czujnik temperatury i wilgotności Arduino zasilany energią słoneczną jako czujnik Oregon 433 mhz: Jest to konstrukcja czujnika temperatury i wilgotności zasilanego energią słoneczną. Czujnik emuluje czujnik Oregon 433 mhz i jest widoczny w bramce Telldus Net. Czujnik ruchu energii słonecznej" z serwisu eBay. Upewnij się, że mówi o cieście 3,7 V
Raspberry Pi - HIH6130 I2C Czujnik wilgotności i temperatury Samouczek Pythona: 4 kroki
Raspberry Pi - HIH6130 I2C Humidity & Temperature Sensor Python Tutorial: HIH6130 to czujnik wilgotności i temperatury z wyjściem cyfrowym. Czujniki te zapewniają poziom dokładności ±4% RH. Z wiodącą w branży długoterminową stabilnością, cyfrowym I2C z prawdziwą kompensacją temperatury, wiodącą w branży niezawodnością, energooszczędnością
DIY MusiLED, zsynchronizowane z muzyką diody LED z aplikacją Windows i Linux jednym kliknięciem (32-bitowe i 64-bitowe). Łatwe do odtworzenia, łatwe w użyciu, łatwe do przenoszenia: 3 kroki
DIY MusiLED, zsynchronizowane z muzyką diody LED z aplikacją Windows i Linux jednym kliknięciem (32-bitowe i 64-bitowe). Łatwy do odtworzenia, łatwy w użyciu, łatwy do przenoszenia. Ten projekt pomoże Ci podłączyć 18 diod LED (6 czerwonych + 6 niebieskich + 6 żółtych) do płyty Arduino i przeanalizować sygnały karty dźwiękowej komputera w czasie rzeczywistym i przekazać je do diody LED, aby je oświetlić zgodnie z efektami beatu (Snare, High Hat, Kick)
Szybkie, szybkie, tanie, dobrze wyglądające oświetlenie pokoju LED (dla każdego): 5 kroków (ze zdjęciami)
Szybkie, szybkie, tanie, dobrze wyglądające oświetlenie LED do pokoju (dla każdego): Witam wszystkich:-) To jest moja pierwsza instrukcja, więc komentarze są mile widziane:-) Mam nadzieję pokazać, jak zrobić szybkie oświetlenie LED, które jest na MAŁY buget.Czego potrzebujesz:KableLEDRezystory (510Ohm dla 12V)ZszywkiLutownicaNożyce i inne podstaw