Мазмұны:

DHT12 (i2c арзан ылғалдылық пен температура сенсоры), жылдам қарапайым қолдану: 14 қадам
DHT12 (i2c арзан ылғалдылық пен температура сенсоры), жылдам қарапайым қолдану: 14 қадам

Бейне: DHT12 (i2c арзан ылғалдылық пен температура сенсоры), жылдам қарапайым қолдану: 14 қадам

Бейне: DHT12 (i2c арзан ылғалдылық пен температура сенсоры), жылдам қарапайым қолдану: 14 қадам
Бейне: DHT12 I2C Temperature - Relative Humidity Sensor Demo 2024, Қараша
Anonim
DHT12 (i2c арзан ылғалдылық пен температура сенсоры), жылдам пайдалану
DHT12 (i2c арзан ылғалдылық пен температура сенсоры), жылдам пайдалану

Сіз менің сайтымнан жаңартуларды және басқаларды таба аласыз

Маған 2 сымды қолдана алатын сенсор ұнайды (i2c протоколы), бірақ маған қымбат емес.

Бұл i2c немесе бір сымды қосылыммен жұмыс істейтін DHT12 өте төмен температура/ылғалдылық датчиктерінің (1 доллардан төмен) Arduino және esp8266 кітапханасы.

Ылғалдылық пен температураны оқу және оны i2c СКД -де көрсету үшін esp01 (егер сіз сериялық қолдансаңыз, сізде тек 2 түйреуіш) бар болса, өте пайдалы.

AI оқыды, кейде калибрлеу қажет сияқты, бірақ менде бұл ағаш бар және DHT22 -ге өте ұқсас мәнді аламын. Егер сізде бұл мәселені калибрлеу болса, github -да мәселені ашыңыз және мен енгізуді қосамын.

1 -қадам: I2c қалай жұмыс істейді

I2c қалай жұмыс істейді
I2c қалай жұмыс істейді

I2C екі сыммен жұмыс істейді, SDA (деректер желісі) және SCL (сағаттық желі).

Бұл екі желі де ашық, бірақ резисторлармен тартылған.

Әдетте желіде бір шебер мен бір немесе бірнеше құл бар, бірақ бірнеше шеберлер болуы мүмкін, бірақ біз бұл туралы кейінірек айтатын боламыз.

Мастерлер де, құлдар да деректерді жібере немесе ала алады, сондықтан құрылғы осы төрт күйдің бірінде болуы мүмкін: басты жіберу, басты қабылдау, құлдық жіберу, құлдық қабылдау.

2 -қадам: Кітапхана

Сіз менің кітапханамды осы жерден таба аласыз.

Жүктеу үшін

Жоғарғы оң жақ бұрыштағы ЖҮКТЕУ түймесін басыңыз, қысылмаған қалтаның атын DHT12 өзгертіңіз.

DHT қалтасында DHT12.cpp және DHT12.h бар екенін тексеріңіз.

DHT кітапхана қалтасын / libraries / қалтасына қойыңыз.

Егер сіздің бірінші кітапханаңыз болса, сізге кітапханалар ішкі қалтасын жасау қажет болуы мүмкін.

IDE қайта іске қосыңыз.

3 -қадам: Behaivor

Бұл кітапхана DHT кітапханасының стандартты сенсорларының мінез -құлқына еліктеуге тырысады (және көптеген кодты көшіреді), мен де i2c olso басқару үшін кодты осылай қосамын.

Бұл әдіс DHT кітапханасының сенсорымен бірдей, кейбіреулерінде шық нүктесі сияқты функция бар.

4 -қадам: I2c қолдану

I2c (әдепкі адрес және әдепкі SDA SCL түйреуіш) көмегімен пайдалану үшін конструктор:

DHT12 dht12;

және SDA SCL түйреуіші үшін әдепкі мәнді алыңыз.

(ESP-01 үшін қажет esp8266 үшін көрсетілген конструктормен қайта анықтауға болады). немесе

DHT12 dht12 (uint8_t addressOrPin)

addressOrPin -> мекенжай

мекенжайды өзгерту үшін.

5 -қадам: Бір сымды қолдану

Бір сымды пайдалану үшін:

DHT12 dht12 (uint8_t addressOrPin, ақиқат)

addressOrPin -> түйреу

логикалық мән - бұл OneWire немесе i2c режимін таңдау.

6 -қадам: Жасырын оқу

Сіз оны «жасырын», «қарапайым оқу» немесе «толық оқу» арқылы қолдана аласыз: Жасырын, сенсордың шын оқуын тек бірінші оқылым, екіншісі 2 секундта болатын оқу. интервал - бірінші оқылымның сақталған мәні.

// Егер сенсорлық күштің параметрін жібермесең сенсордың оқуы 2 секундқа созылады

// Оқу температурасы Цельсий ретінде (әдепкі) float t12 = dht12.readTemperature (); // Температураны Фаренгейт (isFahrenheit = true) өзгермелі ретінде оқыңыз f12 = dht12.readTemperature (true); // Сенсордың көрсеткіштері 2 секундқа дейін болуы мүмкін (оның сенсоры өте баяу) h12 = dht12.readHumidity (); // Фаренгейт бойынша жылу индексін есептеңіз (әдепкі) өзгермелі hif12 = dht12.computeHeatIndex (f12, h12); // Цельсий бойынша жылу индексін есептеу (isFahreheit = false) өзгермелі hic12 = dht12.computeHeatIndex (t12, h12, false); // Fahrenheit (әдепкі) өзгермелі қалқымалы нүктесін есептеу dpf12 = dht12.dewPoint (f12, h12); // Цельсий бойынша шық нүктесін есептеу (isFahreheit = false) қалқыма dpc12 = dht12.dewPoint (t12, h12, жалған);

7 -қадам: Қарапайым оқу

Оқу мәртебесін алу үшін қарапайым оқу.

// Егер сенсорлық күштің параметрін жібермесең сенсордың оқуына 2 секунд уақыт кетеді

bool chk = dht12.read (); // шын оқу дұрыс, жалған оқу мәселесі

// Цельсий бойынша температураны оқу (әдепкі)

float t12 = dht12.readTemperature (); // Температураны Фаренгейт (isFahrenheit = true) өзгермелі ретінде оқыңыз f12 = dht12.readTemperature (true); // Сенсордың көрсеткіштері 2 секундқа дейін болуы мүмкін (оның сенсоры өте баяу) h12 = dht12.readHumidity (); // Фаренгейт бойынша жылу индексін есептеңіз (әдепкі) өзгермелі hif12 = dht12.computeHeatIndex (f12, h12); // Цельсий бойынша жылу индексін есептеу (isFahreheit = false) өзгермелі hic12 = dht12.computeHeatIndex (t12, h12, false); // Fahrenheit (әдепкі) өзгермелі қалқымалы нүктесі dpf12 = dht12.dewPoint (f12, h12); // Цельсий бойынша шық нүктесін есептеңіз (isFahreheit = false) өзгермелі dpc12 = dht12.dewPoint (t12, h12, жалған);

8 -қадам: Толық оқу

Белгіленген күйді алу үшін толық оқу.

// Егер сенсорлық күштің параметрін жібермесең сенсордың оқуына 2 секунд уақыт кетеді

DHT12:: ReadStatus chk = dht12.readStatus (); Serial.print (F («\ nОқу сенсоры:»)); switch (chk) {case DHT12:: OK: Serial.println (F («OK»)); үзіліс; DHT12:: ERROR_CHECKSUM: Serial.println (F («Бақылау сомасының қатесі»)); үзіліс; DHT12:: ERROR_TIMEOUT: Serial.println (F («Күту уақыты қатесі»)); үзіліс; DHT12:: ERROR_TIMEOUT_LOW жағдайы: Serial.println (F («Төмен сигналда күту уақыты қатесі, жоғары тартылу қарсылығын орнатып көріңіз»)); үзіліс; DHT12:: ERROR_TIMEOUT_HIGH жағдайы: Serial.println (F («Аз сигналда күту уақыты қатесі, төмен тартылу қарсылығын орнатып көріңіз»)); үзіліс; DHT12:: ERROR_CONNECT жағдайы: Serial.println (F («Қосылу қатесі»)); үзіліс; DHT12:: ERROR_ACK_L: Serial.println (F («AckL қатесі»)); үзіліс; DHT12:: ERROR_ACK_H жағдайы: Serial.println (F («AckH қатесі»)); үзіліс; DHT12:: ERROR_UNKNOWN: Serial.println (F («Белгісіз қате анықталды»)); үзіліс; DHT12:: NONE: Serial.println (F («Нәтиже жоқ»)); үзіліс; әдепкі: Serial.println (F («Белгісіз қате»)); үзіліс; }

// Цельсий бойынша температураны оқу (әдепкі)

float t12 = dht12.readTemperature (); // Температураны Фаренгейт (isFahrenheit = true) өзгермелі ретінде оқыңыз f12 = dht12.readTemperature (true); // Сенсордың көрсеткіштері 2 секундқа дейін болуы мүмкін (сенсор өте баяу) h12 = dht12.readHumidity (); // Фаренгейт бойынша жылу индексін есептеңіз (әдепкі) өзгермелі hif12 = dht12.computeHeatIndex (f12, h12); // Цельсий бойынша жылу индексін есептеу (isFahreheit = false) өзгермелі hic12 = dht12.computeHeatIndex (t12, h12, false); // Fahrenheit (әдепкі) өзгермелі қалқымалы нүктесі dpf12 = dht12.dewPoint (f12, h12); // Цельсий бойынша шық нүктесін есептеңіз (isFahreheit = false) өзгермелі dpc12 = dht12.dewPoint (t12, h12, жалған);

9 -қадам: Қосылу диаграммасы

Мысалдарда қосылу схемасы бар, дұрыс тартқыш резисторды қолдану маңызды.

Github -да кодты бөлісу үшін Bobadas, dplasa және adafruit арқасында (мен кейбір кодтар мен идеяларды қабылдаймын).

10 -қадам: Arduino: OneWire

Ардуино: OneWire
Ардуино: OneWire

11 -қадам: Arduino: I2c

Ардуино: I2c
Ардуино: I2c

12 -қадам: Esp8266 (D1Mini) OneWire

Esp8266 (D1Mini) OneWire
Esp8266 (D1Mini) OneWire

13 -қадам: Esp8266 (D1Mini) I2c

Esp8266 (D1Mini) I2c
Esp8266 (D1Mini) I2c

14 -қадам: рахмет

Arduino ойын алаңы (https://playground.arduino.cc/Main/DHT12SensorLibrary)

i2c жобалар сериясы (Топтама):

  • Температура ылғалдылығы сенсоры
  • Аналогты кеңейтуші
  • Сандық кеңейткіш
  • СКД дисплей

Ұсынылған: