Мазмуну:

DHT12 (i2c арзан нымдуулук жана температура сенсору), Fast Easy Use: 14 Steps
DHT12 (i2c арзан нымдуулук жана температура сенсору), Fast Easy Use: 14 Steps

Video: DHT12 (i2c арзан нымдуулук жана температура сенсору), Fast Easy Use: 14 Steps

Video: DHT12 (i2c арзан нымдуулук жана температура сенсору), Fast Easy Use: 14 Steps
Video: Lesson 1: What is Arduino? Types of Arduino Boards and SunFounder Kit | SunFounder Robojax 2024, Ноябрь
Anonim
DHT12 (i2c арзан нымдуулук жана температура сенсору), Fast Easy Use
DHT12 (i2c арзан нымдуулук жана температура сенсору), Fast Easy Use

Жаңыртууну жана башкаларды менин сайтымдан таба аласыз

Мага 2 зым менен колдонула турган сенсор жагат (i2c протоколу), бирок мен арзанын жакшы көрөм.

Бул i2c же бир зым туташуусу менен иштеген DHT12 сериясындагы өтө арзан баалуу температура/нымдуулук сенсорлорунун (1 $ дан аз) Arduino жана esp8266 китепканасы.

Эгерде сиз esp01 колдонууну кааласаңыз (эгер сиз сериалды колдонсоңуз, анда болгону 2 пин бар), нымдуулукту жана температураны окуп, аны i2c ЖКда көрсөтүү үчүн.

AI окуйт, кээде калибрлөө керек окшойт, бирок менде бул дарак бар жана DHT22ге абдан окшош мааниге ээ болом. Эгерде сизде бул көйгөйдү калибрлөө болсо, github боюнча маселени ачыңыз жана мен ишке ашырууну кошом.

1 -кадам: I2c кантип иштейт

I2c кантип иштейт
I2c кантип иштейт

I2C эки зым менен иштейт, SDA (маалымат линиясы) жана SCL (саат линиясы).

Бул эки линия тең ачык дренаждуу, бирок резисторлор менен тартылган.

Адатта линияда бир кожоюн жана бир же бир нече кул бар, бирок бир нече кожоюн болушу мүмкүн, бирок бул тууралуу кийинчерээк сүйлөшөбүз.

Кожоюндар да, кулдар да маалыматтарды жөнөтө же ала алышат, андыктан аппарат бул төрт абалдын биринде болушу мүмкүн: кожоюн берүү, кожоюн алуу, кул берүү, кул алуу.

2 -кадам: Китепкана

Бул жерден менин китепканамды таба аласыз.

Жүктөө үчүн

Жогорку оң бурчтагы ЖҮКТӨР баскычын чыкылдатыңыз, кысылбаган папканы DHT12 деп өзгөртүңүз.

DHT папкасында DHT12.cpp жана DHT12.h бар экендигин текшериңиз.

DHT китепкана папкасын сиздин / китепканалар / папканы коюңуз.

Сиз биринчи китепкана болсоңуз, китепканалар субфольдорун түзүшүңүз керек болот.

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 (чыныгы); // Сенсордун көрсөткүчтөрү дагы 2 секундага чейин болушу мүмкүн (анын өтө жай сенсору) h12 = dht12.readHumidity (); // Фаренгейт боюнча жылуулук индексин эсептөө (демейки) калкыма hif12 = dht12.computeHeatIndex (f12, h12); // Цельсий боюнча жылуулук индексин эсептеңиз (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Фаренгейттеги шүүдүрүм чекитин (демейки) калкыма dpf12 = dht12.dewPoint (f12, h12); // Цельсий боюнча шүүдүрүм чекитин эсептөө (isFahreheit = false) калкып чыгуучу dpc12 = dht12.dewPoint (t12, h12, false);

7 -кадам: Жөнөкөй окуу

Окуу статусун алуу үчүн жөнөкөй окуу.

// Сенсордун окуусунда 2 секунд өткөн убакыт бар, эгер сиз күч параметрин өткөрбөсөңүз

bool chk = dht12.read (); // чыныгы окуу жакшы, жалган окуу көйгөйү

// Окуу температурасы Цельсий (демейки)

float t12 = dht12.readTemperature (); // Окуу температурасы Фаренгейт (isFahrenheit = true) калкыма f12 = dht12.readTemperature (чыныгы); // Сенсордун көрсөткүчтөрү дагы 2 секундага чейин болушу мүмкүн (анын өтө жай сенсору) h12 = dht12.readHumidity (); // Фаренгейт боюнча жылуулук индексин эсептөө (демейки) калкыма hif12 = dht12.computeHeatIndex (f12, h12); // Цельсий боюнча жылуулук индексин эсептеңиз (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Фаренгейттеги шүүдүрүм чекитин (демейки) калкыма dpf12 = dht12.dewPoint (f12, h12); // Цельсий боюнча шүүдүрүм чекитин эсептөө (isFahreheit = false) калкып чыгуучу 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 ("Тайм -аут катасы")); тыныгуу; case DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F ("Төмөн сигналда тайм -аут ката, жогорку тартылуу каршылыгын коюуга аракет кылыңыз")); тыныгуу; case 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 (); // Окуу температурасы Фаренгейт (isFahrenheit = true) калкыма f12 = dht12.readTemperature (чыныгы); // Сенсордун көрсөткүчтөрү 2 секундага чейин болушу мүмкүн (анын өтө жай сенсору) h12 = dht12.readHumidity (); // Фаренгейт боюнча жылуулук индексин эсептөө (демейки) калкыма hif12 = dht12.computeHeatIndex (f12, h12); // Цельсий боюнча жылуулук индексин эсептеңиз (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Фаренгейттеги шүүдүрүм чекитин (демейки) калкыма dpf12 = dht12.dewPoint (f12, h12); // Цельсий боюнча шүүдүрүм чекитин эсептөө (isFahreheit = false) калкып чыгуучу 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 дисплей

Сунушталууда: