Arduino за начинаещи

Arduino за начинаещи. Урок 9. Свързване на сензора за температура и влажност DHT11 и DHT22

начинаещи

Продължаваме поредицата от уроци "Ардуино за начинаещи". Днес ще анализирамесвързването на сензори за температура и влажност DHT11 и DHT22 към Arduino.

Сензорите DHT11 и DHT22 не са много бързи или точни, но са прости, евтини и чудесни за обучение. Изградени са от две части - капацитивен датчик за влажност и термистор. Чипът вътре извършва A/D преобразуването и извежда цифров сигнал, който може да бъде прочетен от всеки микроконтролер.

Списък на частите за монтаж на модела

За да създадете проекта, описан в този урок, ще ви трябват следните части:

  • Arduino платка (прочетете повече за това как да изберете Arduino тук);
  • Сензор DHT11 или DHT22 (можете да закупите например тук или тук);
  • Бредборд;
  • резистор 10 kΩ;
  • Програмата Arduino IDE, която може да бъде изтеглена от уебсайта на Arduino.

начинаещи

Сензори DHT11 и DHT22

Каква е разликата между сензорите DHT11 и DHT22?

Двете версии на DHT сензорите са подобни и имат еднакъв развод. Разликите им са в характеристиките. Спецификации:

  • определяне на влажност в диапазона 20-80%
  • откриване на температура от 0°C до +50°C
  • скорост на запитване 1 път в секунда

  • определяне на влажността в диапазона 0-100%
  • детекция на температура от -40°C до +125°C
  • честота на запитване 1 път на 2 секунди

По този начин производителността на сензора DHT22 е по-добра в сравнение с DHT11 и следователно е малко по-скъп. Няма да работи да правите показания по-често от веднъж на всеки 1-2 секунди, но,вашият проект може да не се нуждае от по-бързо изпълнение.

Свързване на DHT сензори към Arduino

DHT сензорите имат стандартни проводници и са лесни за монтиране на макетната платка.

DHT сензорите имат 4 пина:

  1. хранене.
  2. извеждане на данни
  3. не се използва.
  4. GND (маса).

Поставете резистор от 10 kΩ между щифтовете за захранване и изход за данни.

DHT сензорът често се продава като пълен модул. В този случай той има три изхода и е свързан без резистор, т.к. Резисторът вече е на платката.

Схема на свързване на сензор с резистор:

print

Схема на свързване на DHT сензор към Arduino

Скица на Arduino

Нека използваме библиотеката DHT.h, създадена специално за DHT сензори. Може да бъде изтеглен от тук. За да използвате, трябва да поставите изтеглената папка в папката /libraries.

Arduino

Отчитане на температурата и влажността (портов монитор)

Трябва да видите температурата и влажността. Промените могат да се видят например при издишване на сензора (както при замъгляване на прозорец). Дишането увеличава влагата.

Публикации на уроци:

Всички публикации на сайта “Entertaining Robotics” с етикет Arduino.

Автор Александър Гагарин. Тази статия е базирана на learn.adafruit.com.

Прочетете също

Компилиран с: Arduino: 1.6.5 (Windows 7), платка "Arduino Uno"

Променена опция за изграждане, изградете всичко наново

sketch_jul16a.ino: Във функцията 'void loop()': sketch_jul16a:45: грешка: невалидни операнди от типове 'const char [21]' и 'float' към двоичен 'operator+' невалидни операнди от типове 'const char [21]' и 'float' към двоичен 'operator+' +h+"%\t"+"Температура: "+t+"*C"); Този ред неправилно ли е изписан по някакъв начин? Благодаря на всички, които ми казаха

В Arduino низът обикновено не се формира. Всичко, което трябва да бъде изведено, трябва да бъде написано в отделен Serial.print

Serial.println("Влажност: "+Низ(h, 1)+"%\t Температура: "+Низ(t, 1)+" *C");

За DHT11 с вграден резистор на платката работната програма ще бъде такава. Изход c - (вдясно) от сензора е свързан към Arduino GND, средният изход (това е +) е свързан към 5V конектор, левият изход (това е сигналът) е свързан към цифровия щифт с номер 2.

#define DHTPIN 2 // номер на щифта, към който е свързан сензорът

//DHT dht(DHTPIN, DHT22);

DHT dht (DHTPIN, DHT11);

// Закъснение от 2 секунди между измерванията

float h = dht.readHumidity();

float t = dht.readTemperature();

// Проверете дали четенето е успешно.

if (isnan(h) isnan(t))

Serial.println("Неуспешно четене");

Serial.print("Хъм: "); Serial.print(h); Serial.print(" Temp: "); Serial.print(t); Serial.println("C");

Serial.print((String)"Влажност:"+h+"%\t"+"Температура:"+t+"*C");

Serial. println((String)" Влажност: " + h + (String)" %\t" + (String)" Температура: " + t + (String)" *C ");

Имам сензор DHT11 под формата на готов модул с три пина. ВНИМАНИЕ: левият щифт е за данни, средният щифт е захранващ, десният щифт е заземен. В изтеглената DHT библиотека има скица с пример за използване на сензора - работи без промени. В сравнение с друго устройство, температурата на DHT11 показва +/- един градус, а влажността се надценява с 6%.

Андрей, може ли скица за такъв датчик? Разрових се в интернет, не го намерих, всеки няма вградени резистори.

Тук е повече от наличноcodius.ru/articles/187, също е описано какво се случва в библиотеката. И един пример между другото на модул с резистор.

Много благодаря!

Когато е отметнато, дава следното съобщение: E:\Arduino\Dht11\Dht11\examples\TempHumidity\TempHumidity.ino:3:17: фатална грешка: DHT.h: Няма такъв файл или директория

състояние на изход 1 Компилацията е неуспешна. Какво да направя?

E:\Arduino\Dht11\Dht11\examples\TempHumidity\TempHumidity.ino:3:17: фатална грешка: DHT.h: Няма такъв файл или директория

състояние на изход 1 Компилацията е неуспешна. Какво да направя?

тази грешка, когато не свързах библиотеката или тя се изтегли неумело, всичко работи за мен на китайския arduino uno

всичко е написано много ясно. ще има ли продължение

Скицата не е вярна! Работи от примера на библиотеката. В дадения пример не.

#include "DHT.h" //#include "iostream" #define DHTPIN 10 int ledtest = 6; DHT dht (DHTPIN, DHT11);

pinMode(led, OUTPUT); pinMode(ledtest, OUTPUT); Serial.begin(9600); dht.begin();

забавяне (1000); //setlocale(LC_ALL,"RUS"); float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(h) isnan(t)) Serial.println("няма информация"); digitalWrite(ledtest, LOW); връщане; > друго digitalWrite(ledtest, HIGH); //****** НЕГЕНЕРИРАН ИЗХОДЕН РЕД Трябваше да го напиша отделно. Serial.print("Влажност: "); Сериен печат (h); Serial.print("% "); Serial.print("Темп: "); Сериен печат (t); Serial.println("*C"); > >

ето една напълно работеща версия. Там също имам диод като индикатор, частта с ледсета може да се изреже.

имате грешки в текста на програмата. pinMode(led, OUTPUT) не е деклариран като променлива, вероятно сте имали предвид ledtest вместо led

намери и замени всички " с " . ledtest вместо led

Как се прави, когато контакт 4 включи вентилатора над 25 градуса. Помогнете ми моля.

Кирил, нещо такова:

t е температурата, разбира се. ledPin = изход за контролен сигнал (примерно ми свети диодът) Е, за контрол, като поставите допълнителни етикети в порта, те могат да бъдат премахнати.

if (t > 25) analogWrite(ledPin, 255); Serial.println("Предупреждение. "); > друго analogWrite(ledPin, 0); Serial.println("НЯМА предупреждение. "); >

Моля, кажете ми как да показвам данни от сензора на екрана на LCD клавиатурата

Само на екрана, разбира се..

Този отчет ще има повече информация с "Показване на подробен изход по време на компилация" разрешен във File > предпочитания. Arduino: 1.0.6 (Windows XP), Платка: "Arduino Uno" sketch_sep23a.ino: Във функцията 'void loop()': sketch_sep23a:46: грешка: невалидни операнди от типове 'const char [21]' и 'float' към двоичен 'operator+'

Копирано. Проверката не минава.

Потърсете специален форум, където манекени отговарят на въпроси незабавно, няма да ръждясва за малко дарение.

Лека нощ на всички, не мога да стартирам dht11 по никакъв начин, не мога да чета показанията през цялото време. Опитах се да сменя 5V щифтовете и информационния изход, както беше препоръчано по-горе - не помогна. Сензорът за температура работи добре. Хванаха мъртъв dht 11?

така изглежда. Какво обикновено се показва при променлива влажност?

Свързах сензора през таблото, дадох нулеви стойности в монитора на порта, свързах кабелите директно (от arduino директно към сензора), всичко работи.

Разбрах таблото, аз съм начинаещ, така че не знаех, че пистите плюс и минус на него работят само наполовина, а след това празнината, сензорът е настроен навтората половина и свържете първата половина към + и GND.

Какво не е наред с библиотеката? Изскача при проверка. На Arduino IDE

Във файл, включен от G:\Arduino\Arduino\Sketch\libraries\DHT-sensor-library-master\DHT_U.cpp:22:0:

G:\Arduino\Arduino\Sketch\libraries\DHT-sensor-library-master\DHT_U.h:25:29: фатална грешка: Adafruit_Sensor.h: Няма такъв файл или директория

Използваме библиотеката DHT-sensor-library-master версия 1.3.0 от папката: G:\Arduino\Arduino\Sketch\libraries\DHT-sensor-library-master статус на изход 1 Грешка при компилиране за платката Arduino Nano.

Който има грешка при компилация като Сергей, инсталирайте библиотеката версия 1.2.3. И изходен низ: Serial.println("Влажност: "+String(h, 1)+"%\t Температура: "+String(t, 1)+" *C"); както koa73 написа

Който има грешка като Сергей, инсталирайте версията на библиотеката 1.2.3.

Serial.print(" Бръмчене: "); Serial.print(h); Serial.print("%\t"); Serial.print(" Temp: "); Serial.print(t); Serial.println("*C"); //Serial.println("Влажност: "+Низ(h, 1)+"%\t Температура: "+Низ(t, 1)+" *C"); //Serial.println("Влажност: "+h+" %\t"+"Температура: "+t+" *C ");

на мен ми се случи, макар и с българската крякозябра. спечелен.

Adafruit_Sensor.h: Няма такъв файл или директория #include библиотека за изтегляне

Добър ден, свързах сензора и дисплея, всичко е наред, моля, кажете ми как да направя възможно, ако температурата е равна на стойността x, тогава зумерът ще бипка 1 път за 1 минута?

Нормални ли са 640,00 *C температура и 921,6% влажност? О_О

ако си в ада, тогава да.

Спешно! Как да закупите електроника от Китай в Томск или България с безплатна куриерска доставка? Моля, помогнете, не мога да намеря интернетмагазин ... Не знам как да избера магазин, за да не ме изхвърлят, помогнете ми!

Не съм съвсем съгласен

Здравейте, кажете ми какво означава // Иницииране на сензора DHT dht(DHTPIN, DHT22); //DHT dht(DHTPIN, DHT11); И за какво е.

Ние казваме на arduino с кой сензор да работи.

Дяволът не работи, тъй като не изтеглих библиотеката според инструкциите безрезултатно - все още не съм намерил нито един нормален пример с този сензор