Агуулгын хүснэгт:

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 хямд чийгшил ба температур мэдрэгч), хурдан ашиглах

Та https://www.mischianti.org/2019/01/01/dht12-library-en/ сайтаас шинэчлэлт болон бусад мэдээллийг олж болно.

Би 2 утастай (i2c протокол) ашиглах боломжтой мэдрэгч дуртай боловч хямд өртөгтэйд дуртай.

Энэ бол i2c эсвэл нэг утсан холболттой ажилладаг DHT12 цуврал маш хямд өртөг/чийгшил мэдрэгчтэй (1 доллараас бага) Arduino болон esp8266 номын сан юм.

Хэрэв та esp01 ашиглахыг хүсч байвал (хэрэв та цуваа ашигладаг бол танд ердөө 2 зүү байдаг) чийгшил, температурыг уншиж i2c LCD дэлгэц дээр харуулна.

Хиймэл оюун ухаан нь заримдаа шалгалт тохируулга хийх шаардлагатай мэт санагддаг, гэхдээ надад ийм мод байдаг бөгөөд DHT22 -тэй төстэй утгыг олж авдаг. Хэрэв танд энэ асуудал тохируулагдсан бол github дээр асуудлыг нээгээд би хэрэгжилтийг нэмж оруулаарай.

Алхам 1: I2c хэрхэн ажилладаг

I2c хэрхэн ажилладаг
I2c хэрхэн ажилладаг

I2C нь SDA (өгөгдлийн шугам) ба SCL (цагийн шугам) гэсэн хоёр утастай ажилладаг.

Эдгээр шугамууд хоёулаа нээлттэй ус зайлуулах хоолойтой боловч резистороор татагдсан байдаг.

Ихэвчлэн нэг мастер, нэг буюу хэд хэдэн боол байдаг боловч хэд хэдэн эзэн байж болно, гэхдээ бид энэ тухай дараа ярих болно.

Мастер ба боол хоёулаа өгөгдөл дамжуулах эсвэл хүлээн авах боломжтой тул төхөөрөмж нь эдгээр дөрвөн төлөвийн аль нэгэнд байж болно: мастер дамжуулах, эзэн хүлээн авах, боол дамжуулах, боол хүлээн авах.

Алхам 2: Номын сан

Та миний номын санг эндээс олж болно.

Татаж авах

Баруун дээд буланд байгаа DOWNLOADS товчлуур дээр дарж шахагдаагүй хавтасны нэрийг 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 (); // Температурыг Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true) гэж уншина уу; // Мэдрэгчийн уншилт нь 2 секундын настай байж болно (энэ нь маш удаан мэдрэгчтэй) float h12 = dht12.readHumidity (); // Fahrenheit дахь дулааны индексийг тооцоолох (анхдагч) float hif12 = dht12.computeHeatIndex (f12, h12); // Цельсийн дулааны индексийг тооцоолох (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Фаренгейт дэх шүүдэр цэгийг тооцоолох (анхдагч) хөвөгч dpf12 = dht12.dewPoint (f12, h12); // Цельсийн шүүдэр цэгийг тооцоолох (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Алхам 7: Энгийн унших

Унших статус авахын тулд энгийн унших.

// Хэрэв та хүчний параметрийг дамжуулаагүй бол мэдрэгчийн уншилт нь 2 секундын хугацаатай байна

bool chk = dht12.read (); // үнэн унших нь зүгээр, буруу унших асуудал

// Температурыг Цельсийн байдлаар уншина уу (анхдагчаар)

float t12 = dht12.readTemperature (); // Температурыг Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true) гэж уншина уу; // Мэдрэгчийн уншилт нь 2 секундын настай байж болно (энэ нь маш удаан мэдрэгчтэй) float h12 = dht12.readHumidity (); // Fahrenheit дахь дулааны индексийг тооцоолох (анхдагч) float hif12 = dht12.computeHeatIndex (f12, h12); // Цельсийн дулааны индексийг тооцоолох (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Фаренгейт дэх шүүдэр цэгийг тооцоолох (анхдагч) хөвөгч dpf12 = dht12.dewPoint (f12, h12); // Цельсийн шүүдэр цэгийг тооцоолох (isFahreheit = false) 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 ("Хяналтын дүнгийн алдаа")); завсарлага; тохиолдол 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 ("Үл мэдэгдэх алдаа DETECTED")); завсарлага; тохиолдол DHT12:: NONE: Serial.println (F ("Үр дүн байхгүй")); завсарлага; анхдагч: Serial.println (F ("Үл мэдэгдэх алдаа")); завсарлага; }

// Температурыг Цельсийн байдлаар уншина уу (анхдагчаар)

float t12 = dht12.readTemperature (); // Температурыг Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true) гэж уншина уу; // Мэдрэгчийн уншилт нь 2 секундын настай байж болно (энэ нь маш удаан мэдрэгчтэй) float h12 = dht12.readHumidity (); // Fahrenheit дахь дулааны индексийг тооцоолох (анхдагч) float hif12 = dht12.computeHeatIndex (f12, h12); // Цельсийн дулааны индексийг тооцоолох (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Фаренгейт дэх шүүдэр цэгийг тооцоолох (анхдагч) хөвөгч dpf12 = dht12.dewPoint (f12, h12); // Цельсийн шүүдэр цэгийг тооцоолох (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Алхам 9: Холболтын диаграм

Жишээлбэл, холболтын диаграмм байгаа бөгөөд татах татах эсэргүүцлийг зөв ашиглах нь чухал юм.

Github дахь кодыг хуваалцах Bobadas, dplasa болон adafruit -ийн ачаар (би зарим код, санааг авдаг).

Алхам 10: Arduino: OneWire

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

Алхам 11: Arduino: I2c

Arduino: I2c
Arduino: 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 төслийн цуврал (Цуглуулга):

  • Температурын чийгшил мэдрэгч
  • Аналог өргөтгөгч
  • Дижитал өргөтгөгч
  • LCD дэлгэц

Зөвлөмж болгож буй: