Купили с сыном двух красноухих черепах. Поставили террариум. Всё здорово и красиво, но одно НО…
Нужно следить за температурой воздуха, температурой воды, и вовремя включать и выключать свет. Оказалась не такая и простая работа. Перед сном пару раз забывали включённым свет…пару раз случайно выключали фильтр. В общем было принято волевое решение немного заSmart’ить место обитания наших нинзя.
В планах пока:
- Сделать автоматическое включение и выключение света
- Сделать авто выключение подогрева
- Сделать авто выключение фильтра воды
- Выводить на дисплей параметры температур воды и воздуха
- Выводить на дисплей влажность воздуха
- Сделать меню с настройкой режимов работы
На текущий момент собран скелет аппаратной части по сбору данных
Используются:
- Дисплей LCD1602 i2c
- Датчик влажности и температуры воздуха DHT22
- Датчик температуры DS18B20
- Arduino NANO
- и макеточка канешн.
Вот скетч:
#include <OneWire.h>
// библиотека для работы с датчиком DS18B20
#include <DallasTemperature.h>
#include "DHT.h"
#define DHTPIN 3 //пин датчика DHT22
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define ONE_WIRE_BUS 2 // пин датчика DS18B20
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensor(&oneWire);
void setup() {
Serial.begin(9600);
lcd.begin();
lcd.backlight();
sensor.begin();// начинаем работу с датчиком DS
sensor.setResolution(12);// устанавливаем разрешение датчика от 9 до 12 бит
dht.begin();//запуск датчика DHT
}
void loop() {
//lcd.clear();
float h = dht.readHumidity(); //переменная влажности для DHT
float t = dht.readTemperature(); //переменная температуры для DHT
float temperature; // переменная для хранения температуры для DS
sensor.requestTemperatures(); // отправляем запрос на измерение температуры
temperature = sensor.getTempCByIndex(0); // считываем данные из регистра датчика
lcd.setCursor(0, 0);
lcd.print("Vater:");
lcd.setCursor(7, 0);
lcd.print(temperature);
lcd.setCursor(0, 1);
lcd.print("t: ");
lcd.setCursor(3, 1);
lcd.print(t);
lcd.setCursor(7, 1);
lcd.print(" h:");
lcd.setCursor(12, 1);
lcd.print(h);
delay(1000); // ждём одну секунду
}
Добавить комментарий