Բովանդակություն:

DHT12 (i2c էժան խոնավության և ջերմաստիճանի ցուցիչ), արագ օգտագործման հեշտություն. 14 քայլ
DHT12 (i2c էժան խոնավության և ջերմաստիճանի ցուցիչ), արագ օգտագործման հեշտություն. 14 քայլ

Video: DHT12 (i2c էժան խոնավության և ջերմաստիճանի ցուցիչ), արագ օգտագործման հեշտություն. 14 քայլ

Video: DHT12 (i2c էժան խոնավության և ջերմաստիճանի ցուցիչ), արագ օգտագործման հեշտություն. 14 քայլ
Video: DHT12 I2C Temperature - Relative Humidity Sensor Demo 2024, Նոյեմբեր
Anonim
DHT12 (i2c էժան խոնավության և ջերմաստիճանի ցուցիչ), արագ օգտագործման հեշտություն
DHT12 (i2c էժան խոնավության և ջերմաստիճանի ցուցիչ), արագ օգտագործման հեշտություն

Դուք կարող եք գտնել թարմացումներ և այլ տեղեկություններ իմ կայքում ՝

Ինձ դուր է գալիս սենսորը, որը կարող է օգտագործվել 2 լարով (i2c արձանագրություն), բայց ես սիրում եմ էժանը:

Սա Arduino և esp8266 գրադարան է DHT12 շարքի համար, որն ունի էժան ջերմաստիճանի/խոնավության տվիչներ (1 $ -ից պակաս), որոնք աշխատում են i2c- ով կամ մեկ լարով:

Շատ օգտակար է, եթե ցանկանում եք օգտագործել esp01 (եթե օգտագործում եք սերիալ, ունեք ընդամենը 2 կապ) `խոնավությունը և ջերմաստիճանը կարդալու և i2c LCD- ով ցուցադրելու համար:

Արհեստական ինտելեկտը կարդաց, որ երբեմն թվում է, որ այն կարիք ունի ճշգրտման, բայց ես դրա ծառն ունեմ և շատ նման եմ DHT22- ի արժեքին: Եթե դուք ունեք այս խնդիրը ստուգաչափելու հնարավորություն, բացեք հարցը github- ում և ես ավելացնում եմ իրականացումը:

Քայլ 1: Ինչպես է աշխատում I2c- ը

Ինչպես է աշխատում I2c- ը
Ինչպես է աշխատում I2c- ը

I2C- ն աշխատում է իր երկու լարերով ՝ SDA (տվյալների գիծ) և SCL (ժամացույցի գիծ):

Այս երկու տողերն էլ բաց արտահոսքի են, բայց ձգված են ռեզիստորներով:

Սովորաբար գծի վրա կա մեկ վարպետ և մեկ կամ մի քանի ստրուկներ, չնայած կարող են լինել բազմաթիվ վարպետներ, բայց մենք այդ մասին կխոսենք ավելի ուշ:

Ե՛վ տերը, և՛ ստրուկները կարող են փոխանցել կամ ստանալ տվյալներ, հետևաբար, սարքը կարող է լինել այս չորս վիճակներից մեկում ՝ վարպետ փոխանցել, վարպետ ստանալ, ստրուկ փոխանցել, ստրուկ ստանալ:

Քայլ 2: Գրադարան

Իմ գրադարանը կարող եք գտնել այստեղ:

Բեռնելու

Սեղմեք DOWNLOADS կոճակը վերին աջ անկյունում, անվանափոխեք չսեղմված թղթապանակը DHT12:

Ստուգեք, որ DHT թղթապանակը պարունակում է DHT12.cpp և DHT12.h:

Տեղադրեք DHT գրադարանի թղթապանակը ձեր / գրադարաններ / պանակում:

Հնարավոր է, որ անհրաժեշտ լինի ստեղծել գրադարանների ենթապարկը, եթե դա ձեր առաջին գրադարանն է:

Վերագործարկեք IDE- ն:

Քայլ 3: Վարքագիծ

Այս գրականությունը փորձում է ընդօրինակել DHT գրադարանի ստանդարտ սենսորների վարքագիծը (և պատճենել շատ ծածկագիր), և ես ավելացնում եմ կոդը ՝ նույն կերպ i2c olso- ն կառավարելու համար:

Մեթոդը նույնն է DHT գրադարանի տվիչից, որոնցից ոմանք ավելացնում են ցողի կետի գործառույթը:

Քայլ 4: I2c օգտագործումը

I2c- ով (կանխադրված հասցե և կանխադրված SDA SCL կապ) օգտագործելու համար կոնստրուկտորը հետևյալն է.

DHT12 dht12;

և վերցրեք SDA SCL կապի կանխադրված արժեքը:

(Հնարավոր է վերաիմաստավորվել esp8266- ի համար նախատեսված կոնտրուկտորով, որն անհրաժեշտ է ESP-01- ի համար): կամ

DHT12 dht12 (uint8_t հասցե Orpin)

addressOrPin -> հասցե

հասցեն փոխելու համար:

Քայլ 5: Մեկ մետաղալար օգտագործումը

Մեկ մետաղալար օգտագործելու համար.

DHT12 dht12 (uint8_t հասցե Orpin, ճշմարիտ)

addressOrPin -> քորոց

բուլյան արժեքը oneWire կամ i2c ռեժիմի ընտրությունն է:

Քայլ 6: Անուղղակի ընթերցում

Դուք կարող եք օգտագործել այն «անուղղակի», «պարզ ընթերցում» կամ «ամբողջական ընթերցում» բառերով. Անուղղակի, միայն առաջին ընթերցումն է կատարում սենսորի իսկական ընթերցում, մյուսը `2 վայրկյանում: ընդմիջումը առաջին ընթերցման պահված արժեքն է:

// Սենսորի ընթերցումը ունի 2 վայրկյան անցած ժամանակ, եթե դուք չեք անցնում ուժի պարամետրը

// Կարդացեք ջերմաստիճանը որպես Celsius (կանխադրված) float t12 = dht12.readTemperature (); // Կարդացեք ջերմաստիճանը որպես Ֆարենհայտ (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Սենսորների ընթերցումները կարող են լինել նաև մինչև 2 վայրկյան «հին» (դա շատ դանդաղ սենսոր է) float h12 = dht12.readHumidity (); // Հաշվել ջերմության ինդեքսը Ֆարենհեյթում (կանխադրված) բոց hif12 = dht12.computeHeatIndex (f12, h12); // heatելսիուսի ջերմաստիճանի հաշվարկ (isFahreheit = կեղծ) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Հաշվել ցողի կետը Ֆարենհեյթում (կանխադրված) բոց dpf12 = dht12.dewPoint (f12, h12); // dewելսիուսի ջերմաստիճանի հաշվարկ (isFahreheit = կեղծ) float dpc12 = dht12.dewPoint (t12, h12, false);

Քայլ 7: Պարզ ընթերցում

Պարզ ընթերցում `կարդալու կարգավիճակ ստանալու համար:

// Սենսորի ընթերցումը ունի 2 վայրկյան անցած ժամանակ, եթե դուք չեք անցնում ուժի պարամետրը

bool chk = dht12.read (); // ճշմարիտ ընթերցումը լավ է, սխալ կարդալու խնդիրը

// Կարդացեք ջերմաստիճանը որպես Celsius (կանխադրված)

float t12 = dht12.readTemperature (); // Կարդացեք ջերմաստիճանը որպես Ֆարենհայտ (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Սենսորների ընթերցումները կարող են լինել նաև մինչև 2 վայրկյան «հին» (դա շատ դանդաղ սենսոր է) float h12 = dht12.readHumidity (); // Հաշվել ջերմության ինդեքսը Ֆարենհեյթում (կանխադրված) float hif12 = dht12.computeHeatIndex (f12, h12); // heatելսիուսի ջերմաստիճանի հաշվարկ (isFahreheit = կեղծ) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Հաշվել ցողի կետը Ֆարենհեյթում (կանխադրված) բոց dpf12 = dht12.dewPoint (f12, h12); // dewելսիուսի ջերմաստիճանի հաշվարկ (isFahreheit = կեղծ) float dpc12 = dht12.dewPoint (t12, h12, false);

Քայլ 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 ("Checksum error")); ընդմիջում; գործ DHT12:: ERROR_TIMEOUT: Serial.println (F ("Timeout error")); ընդմիջում; գործ DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F («signalամկետանց սխալ ցածր ազդանշանի վրա, փորձեք բարձր քաշման դիմադրություն դնել»)); ընդմիջում; գործ DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F («signalամկետանց սխալ ՝ ցածր ազդանշանի վրա, փորձեք ցածր քաշման դիմադրություն դնել»)); ընդմիջում; գործ DHT12:: ERROR_CONNECT: Serial.println (F («Միացման սխալ»)); ընդմիջում; գործ DHT12:: ERROR_ACK_L: Serial.println (F («AckL սխալ»)); ընդմիջում; գործ DHT12:: ERROR_ACK_H: Serial.println (F ("AckH error")); ընդմիջում; գործ DHT12:: ERROR_UNKNOWN: Serial.println (F ("Անհայտ սխալը հայտնաբերված է")); ընդմիջում; գործ DHT12:: ՈՉԻՆՉ: Serial.println (F («Արդյունք չկա»)); ընդմիջում; կանխադրված ՝ Serial.println (F («Անհայտ սխալ»)); ընդմիջում; }

// Կարդացեք ջերմաստիճանը որպես Celsius (կանխադրված)

float t12 = dht12.readTemperature (); // Կարդացեք ջերմաստիճանը որպես Ֆարենհայտ (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Սենսորների ընթերցումները կարող են նաև լինել մինչև 2 վայրկյան «հին» (դա շատ դանդաղ սենսոր է) float h12 = dht12.readHumidity (); // Հաշվել ջերմության ինդեքսը Ֆարենհեյթում (կանխադրված) բոց hif12 = dht12.computeHeatIndex (f12, h12); // heatելսիուսի ջերմաստիճանի հաշվարկ (isFahreheit = կեղծ) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Հաշվել ցողի կետը Ֆարենհեյթում (կանխադրված) բոց dpf12 = dht12.dewPoint (f12, h12); // dewելսիուսի ջերմաստիճանի հաշվարկ (isFahreheit = կեղծ) float dpc12 = dht12.dewPoint (t12, h12, false);

Քայլ 9: Միացման դիագրամ

Օրինակներով կան միացման դիագրամ, կարևոր է օգտագործել ճիշտ քաշման դիմադրություն:

Bobadas- ի, dplasa- ի և adafruit- ի շնորհիվ ծածկագիրը github- ում կիսելու համար (որտեղ ես վերցնում եմ որոշ ծածկագրեր և գաղափարներ):

Քայլ 10: Arduino: OneWire

Arduino: OneWire
Arduino: 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 նախագծի շարք (Հավաքածու).

  • Humidityերմաստիճանի խոնավության ցուցիչ
  • Անալոգային ընդլայնիչ
  • Թվային ընդլայնիչ
  • LCD էկրան

Խորհուրդ ենք տալիս: