Радиотехника | Электротехника | Строительство | Растениеводство | Учёба | Книги | Фильмы | Игры | Вопросы-ответы | Визитка

Главы страницы

  1. Работа автомата поддержания максимальной температуры в теплице
  2. Использованные материалы и детали
  3. Использованные библиотеки
  4. Текст программы на С
  5. Эпилог

Как самому сделать автомат поддержания максимальной температуры в теплице на базе набора "Arduino"

Цветы плодовых растений в теплице

Пример автомата поддержания максимальной температуры в теплице

Работа автомата поддержания максимальной температуры в теплице

Температурный режим поддерживается включением принудительной вентиляции при превышении критической максимальной температуры : 35 градусов по Цельсию. Почему выбран такой критерий?

Информация о работе автомата высвечивается на жидко-кристаллическом индикаторе. Если в этом необходимости нет, индикатор и его библиотеки можно исключить.

Использованные материалы и детали

  1. Плата Arduino-Uno;
  2. Жидко-кристаллический индикатор LCD 16x2;
  3. Датчик влажности и температуры DHT11.
  4. Любой вытяжной вентилятор

Использованные библиотеки

  1. DHT.h - библиотека датчика температуры и влажности;
  2. LiquidCrystal.h - библиотека люминисцентного индикатора:
  3. kiril_lcd.h - библиотека набора кирилицы для LiquidCrystal;
  4. С целью экономии энергии в алгоритм работы включена библиотека Narcoleptic. Если экономия не нужна библиотеку Narcoleptic можно не использовать.

Текст программы на C

/*************

*/
#define VERSION 2-02.6
#define DEBUG true

// include the library code:
#include "DHT.h"
#include "Narcoleptic.h"
#include "kiril_lcd.h"
#include "LiquidCrystal.h"
// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const char rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

/* add sensor t/h
  DHT11:
    1->Vcc=5V
    2->signal
    3-nil
    4->GND
    */
#define DHTPIN 7
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

#define RELEPIN 13
float t_wentilator=35;
const char *test="--test--";


void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  lcd.clear();
  lcd.createChar(0,bo);
  lcd.createChar(1,bl);
  lcd.createChar(2,bu);
  lcd.createChar(3,bii);
  lcd.createChar(4,btsh);
  lcd.createChar(5,bz);
  lcd.createChar(6,byy);
  lcd.createChar(7,bd);

  dht.begin();
  pinMode(RELEPIN,OUTPUT);

  if (DEBUG) {Serial.begin(9600);};
  
  /* --test--*/
  if (DEBUG) {Serial.println(test);};
  lcd.setCursor(0,0);
  lcd.print(test);
  digitalWrite(RELEPIN,HIGH);
  Narcoleptic.delay(2000);
  digitalWrite(RELEPIN,LOW);
  lcd.clear();
  lcd.write(byte(5));
  lcd.write(byte(7));
  lcd.print("PABCTB");
  lcd.write(byte(2));
  lcd.write(byte(3));
  lcd.print("TE !");
  Narcoleptic.delay(10000);
  lcd.clear();

}

void loop() {
  // 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 (the default)
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit (isFahrenheit = true)
 // float f = dht.readTemperature(true);
  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t) ){ // || isnan(f)) {
    if (DEBUG) {Serial.println(F("Failed to read from DHT sensor!"));};
    lcd.print("Failed to read from DHT sensor!");
    };
  
  lcd.print("T=");lcd.print(t);lcd.write(byte(0));lcd.print(" ");
  if (DEBUG) {Serial.println(t);};
  lcd.print("To=");lcd.print(t_wentilator);
  lcd.setCursor(0, 1);
  lcd.print("B=");lcd.print((int)h);lcd.print("%");   
  if (DEBUG) {Serial.println(h);};

  if (t>t_wentilator) {
    lcd.print("  BK");lcd.write(byte(1));
    digitalWrite(RELEPIN,HIGH);
  }else{
    lcd.print(" OTK");lcd.write(byte(1));
    digitalWrite(RELEPIN,LOW);
  }
  
  lcd.home();
  Narcoleptic. delay(2000);
}

Эпилог

Функции программы документированы, переменные имеют доступные имена.

Но если понадобится помощь -- обращайтесь