понедельник, 13 мая 2013 г.

DHT11 ARDUINO (+1602, +5110)


Измерить температуру в проектах ARDUINO можно несколькими способами. Самые распространенные:

·        Термистор (аналог)
·        LM35 (аналог)
·        DHT11 (цифра)
·        18B20 (цифра)

Рассмотрим цифровой датчик DHT11. Для подключения требуется три провода. Выдает цифровое значение температуры и влажности

·        Питание от 3 до 5.5 В. Есть возможность запитать от дата линии (подключение по двум проводам)
·        Диапазон  от –55°C до +125°C (–67°F to +257°F)
·        Точность ±0.5°C от –10°C до +85°C

Продается как отдельно так и в виде модуля. Первый вариант в разы дешевле (всего 100 руб). Во втором варианте уже есть резистор 4,7 кОм, нужный для подключения.

Подключаем по схеме. Обратите внимание, выход датчика подключен ко второму пину ARDUINO. В двух последних примерах он будет подключен к 6 пину, т.к второй используется для подключения дисплея.




Рассмотрим примеры работы.

1.   Вывод результатов на serial monitor

Тут все просто. Подключаем датчик, открываем serial monitorи каждые две секунды видим показания влажности и температуры



// DHT11 (С)2013 ALEN Studio by Little_Red_Rat

// Измерение температуры

#include <dht11.h>
dht11 DHT11;
#define DHT11PIN 2

void setup()
{
  Serial.begin(9600);
  Serial.println("DHT11 TEST PROGRAM ");
}

void loop()
{
  int chk = DHT11.read(DHT11PIN);
  
  Serial.print("Humidity (%): ");
  Serial.println((float)DHT11.humidity, 2);

  Serial.print("Temperature (oC): ");
  Serial.println((float)DHT11.temperature, 2);
  
  delay(2000);
}

2.   Вывод результатов на дисплей 1602

Немного помучимся  зато напишем слова ТЕМПЕРАТУРА и ВЛАЖНОСТЬ по русски. Для этого добавим символы П,У,Л,Ж,Ь.


// DHT11 (С)2013 ALEN Studio by Little_Red_Rat

// Измерение температуры

#include <LiquidCrystal.h>
#include <dht11.h>
dht11 DHT11;
#define DHT11PIN 6

byte PE_lit[8] =
{
  B11111,
  B10001,
  B10001,
  B10001,
  B10001,
  B10001,
  B10001,
  B00000,
};

byte EL_lit[8] =
{
  B00111,
  B01001,
  B10001,
  B10001,
  B10001,
  B10001,
  B10001,
  B00000,
};

byte ZH_lit[8] =
{
  B10001,
  B10101,
  B10101,
  B01110,
  B10101,
  B10101,
  B10001,
  B00000,
};

byte MZ_lit[8] =
{
  B10000,
  B10000,
  B10000,
  B11110,
  B10001,
  B10001,
  B11110,
  B00000,
};

byte U_lit[8] =
{
  B10001,
  B10001,
  B10001,
  B01111,
  B00001,
  B00001,
  B11110,
  B00000,
};

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
{
  lcd.createChar(1, PE_lit);
  lcd.createChar(2, U_lit);
  lcd.createChar(3, EL_lit);
  lcd.createChar(4, ZH_lit);
  lcd.createChar(5, MZ_lit);
  
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print("TEM\1EPAT\2PA");
  lcd.setCursor(1, 1);
  lcd.print("B\3A\4HOCT\5");
}

void loop()
{

 int chk = DHT11.read(DHT11PIN);

    lcd.setCursor(12, 0);
    lcd.print((float)DHT11.temperature, 1);
    lcd.setCursor(12, 1);
    lcd.print((float)DHT11.humidity, 1);
    
    delay(2000);
}

  3.    Вывод результатов на дисплей NOKIA 5110

Для большей наглядности выведем показания крупными цифрами, благо что этот шрифт уже есть в библиотеке. Красиво, но теперь для одновременного вывода обеих значений не хватает места. Выход найден, будем выводить влажность и температуру поочередно.


// DHT11 (С)2013 ALEN Studio by Little_Red_Rat

// Измерение температуры

#include <dht11.h>
dht11 DHT11;
#define DHT11PIN 6
#include <LCD5110_Graph.h>
LCD5110 myGLCD(8,9,10,12,11);
extern uint8_t BigNumbers[];
extern uint8_t SmallFont[];

void setup()
{
  myGLCD.InitLCD(); // в качестве параметра можно указать контрастность (0-127), по умолчанию 79
  myGLCD.setFont(SmallFont);
}

void loop()
{
  int chk = DHT11.read(DHT11PIN);

  myGLCD.clrScr();
myGLCD.setFont(SmallFont);  
myGLCD.print("Temperature: ", CENTER, 5);
myGLCD.setFont(BigNumbers); 
myGLCD.printNumI(DHT11.temperature, CENTER, 20);
myGLCD.update();
  delay(2000);
  myGLCD.clrScr();
myGLCD.setFont(SmallFont);  
myGLCD.print("Humidity: ",CENTER, 5);
myGLCD.setFont(BigNumbers); 
myGLCD.printNumI(DHT11.humidity, CENTER, 20);
myGLCD.update();  
delay(2000);  
}

2 комментария:

  1. А работаете ли вы с ктс-б? Можно ли применять все это к этим комплектам? В Теплоком можно посмотреть на ктс-б цена на сайте плюс характеристики.



    ктс-б цена

    ОтветитьУдалить
  2. да, еще у меня вопрос - какое ваше мнение об расходомерам ПРЭМ: energoteplolider.ru. Что о них скажете???

    ОтветитьУдалить