вторник, 3 мая 2016 г.

Простой термо-гигрометр на ардуино…

 Всем читателям привет! Рад очередной встрече на страницах блога. Сегодня мы попробуем сделать простейший прибор для измерения температуры и влажности, на базе Arduino с выводом информации на LCD экран. А начнем с того что перечислим что нам нужно будет для осуществления этого проекта: датчик влажности или температуры DHT11, LCD дисплей с I2C модулем, резистор на 10 кОм.

Как и что подключать вы без труда поймете из принципиальной схемы. Выводы датчика подключаем S на А0, питание на +5В (к плате ардуино), и минус к GND. Обратите внимание что на датчике 4 вывода, но использоваться будут только 3. Дисплей LCD подключается как и в прошлом проекте: VCC на +5, GND на GND, SDA на А4, SLC на А5.

Итак, все подключили (еще раз сверьтесь со схемой) пора заняться программированием МК. Скетч я нашел готовый в интернете, который неплохо будет работать. Сам скетч беремс яндекс диска жми сюда. Как видите все просто, можно даже и не уметь программировать на Си+, но тем не менее практически работать с МК.

Еще одно важное замечание. Перед тем как начать компиляцию, обязательно установите библиотеки (на этот раз две): DHT и LiquidCrystal_I2C. Так же эти библиотеки можно загрузить с Яндекс диска: библиотека DHT здесь, а LiquidCrystal_I2Cздесь. Вот теперь устанавливаем отсутвующие библиотеки (в стандартный набор библиотек они не входят). Если какой-то из этих библиотек вы не установили то при попытке скомпилировать будет ошибка.
Надеемся, что все у вас получилось. И в случае успеха на экране появиться температура и влажность. Убедимся, что датчик работает: можно на него подышать, и тем самым нагнать и температуру и влажность.

Скетч нашего проекта:

#include <Wire.h> // Добавляем необходимые библиотеки
#include <LiquidCrystal_I2C.h>
#include "DHT.h"
#define DHTPIN A0 // к какому пину будет подключен сигнальный выход датчика
//выбор используемого датчика
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
//инициализация датчика
DHT dht(DHTPIN, DHTTYPE);
byte degree[8] = // кодируем символ градуса
{
   B00111,
   B00101,
   B00111,
   B00000,
   B00000,
   B00000,
   B00000,
};
LiquidCrystal_I2C lcd(0x27,16,2); // Задаем адрес и размерность дисплея
void setup()
{
lcd.init(); // Инициализация lcd
lcd.backlight(); // Включаем подсветку
lcd.createChar(1, degree); // Создаем символ под номером 1
Serial.begin(9600);
dht.begin();
}
void loop() {
// Добавляем паузы в несколько секунд между измерениями
delay(2000);
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
// Read temperature as Celsius
float t = dht.readTemperature();
// Read temperature as Fahrenheit
float f = dht.readTemperature(true);
// Выводим показания влажности и температуры
lcd.setCursor(0, 0); // Устанавливаем курсор в начало 1 строки
lcd.print("Hum = % "); // Выводим текст
lcd.setCursor(7, 0); // Устанавливаем курсор на 7 символ
lcd.print(h, 1); // Выводим на экран значение влажности
lcd.setCursor(0, 1); // Устанавливаем курсор в начало 2 строки
lcd.print("Temp = \1C "); // Выводим текст, \1 - значок градуса
lcd.setCursor(7, 1); // Устанавливаем курсор на 7 символ
lcd.print(t,1); // Выводим значение температуры
}


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

  1. Я тут сделал как ты показывал и у меня на дисплей не выводятся сами показания.

    ОтветитьУдалить
  2. Этот комментарий был удален автором.

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