Публикации
Гроупедия
Перейти к содержанию

Автоматический климат-контроль своими руками

Привет, сын Джа! Мир тебе! Некоторое время назад я написал вот этот пост про полноценную автоматизацию гидропоники «на коленке», который многим олдовым гроверам показался полезным, но уж очень заумным. Так что сейчас, мой юный падаван, я снижу планку и расскажу тебе, как своими руками сделать автоматический блок управления микроклиматом в боксе, потратив при этом не более $30 и почти не заморочив себе голову. 

Поскольку свой первый, чрезмерно навороченный проект я обозвал гордым именем «Робот-садовник», то это упрощенное устройство будет называться «Мой младший брат – дебил». Готовься, будет много картинок!

 

Что мы собираем?

Назначение блока: управление тремя приборами в боксе – вентилятором, обогревателем и увлажнителем - с помощью «умного удлинителя» под руководством самого дешевого и, при этом, очень надежного контроллера Ардуино.

Автоматический климат-контроль своими руками

Итак, нам понадобится:

  • Контроллер Arduino Nano - $2
  • Блок питания на 5 вольт - $2
  • Датчик температуры/влажности DHT22 (микросхема AM2321) - $3
  • Резистор на 1 кОм
  • Модуль на 4 реле - $3
  • Пластиковый кабель-канал 100x60 и две торцевых заглушки - $6
  • 3 электрических розетки для скрытого монтажа с заземлением - $6
  • Электрический кабель ПВС 3x1,5 и евровилка с землей - $2
  • Ножовка, дрель, отвертка, паяльник, клеевой пистолет
  • Компьютер под виндой или линуксом для настройки контроллера
  • Относительно прямые руки

Где всё это покупать, расскажу в конце, если ты до туда дочитаешь, конечно :)


Как это собрать?

Начнем с самого простого – соберем блок розеток. Не хочу ограничивать твою фантазию, просто расскажу, как это сделал я. Отрезаем кусок кабель-канала с таким расчетом, чтобы разместить три розетки и все остальные потроха. Размечаем и вырезаем отверстия, прикручиваем розетки и переходим к подключению проводов. Провода в электрокабеле обычно различаются по цветам. Ноль - синий, земля - желто-зеленый, фаза - коричневый. Ноль и землю разводим по соответствующим клеммам розеток, а фазу (коричневый) разводим на центральные контакты реле.

Автоматический климат-контроль своими руками

Автоматический климат-контроль своими руками

Автоматический климат-контроль своими руками

!! Часто у электриков-энтузиастов возникает желание забить на «землю». Я – сторонник теории естественного отбора, поэтому активно поддерживаю такие желания. Для не-энтузиастов  сообщаю: вентилятор – это прибор, особо хорошо накапливающий статические заряды, которым надо куда-то стекать. И лучше бы им стекать на землю, а не тебе в руку. Делай выводы.

У каждого реле – три силовых контакта. Центральный контакт – общий, а два по краям – нормально-замкнутый и нормально-разомкнутый. Нам нужно соединить нормально-разомкнутый контакт каждого реле с клеммой «фаза» на соответствующей розетке.

Автоматический климат-контроль своими руками

С электричеством на 220 вольт разобрались. Займемся питанием контроллера. Разбираем блок питания на 5 вольт. Провода, идущие к вилке, обрезаем и наращиваем. Подсоединяем к ближайшим клеммам фаза и ноль. Отрезаем штекер от низковольтового выхода и подсоединяем «плюс» (обычно по этому проводнику идет текстовая маркировка кабеля) к контактам [5V] на контроллере и модуле реле, а «минус» (обычно или без маркировки, или с маркировкой «-») соответственно, к контактам [Gnd]. Лучше проверить напряжение и полярность мультиметром, иначе устройства можно сжечь.

Автоматический климат-контроль своими руками

Автоматический климат-контроль своими руками

Автоматический климат-контроль своими руками

Теперь нужно подсоединить модуль реле к контроллеру. Тут всё просто. [1] соединяем с [D2], [2] соединяем с [D3], [3] соединяем с [D4]. Всё, релейный модуль подключен. Внимательно смотри схему.

Автоматический климат-контроль своими руками

Автоматический климат-контроль своими руками

Теперь займемся датчиком температуры/влажности. У датчика четыре ножки, нам нужны только 3 из них. Крайний левый контакт цепляем к «плюсу» от блока питания. Второй слева (передача данных) – к [D12] на контроллере. Крайний правый контакт – к «минусу» на блоке питания. Внимательно смотри схему! Для того, чтобы датчик нормально работал, обязательно нужно включить «подтягивающий» резистор на 1 кОм между [5V] и [D12].

 

Автоматический климат-контроль своими руками

 

Автоматический климат-контроль своими руками


Чтобы всё смотрелось аккуратно, подготовим заглушки. В одной сверлим отверстие для провода (я воспользовался сальником, купленным в элетротоварах), во второй вырезаем прямоугольное отверстие для датчика. Датчик вставляем и сажаем на клей, чтобы случайно не оторвался. По бокам сверлим маленькие отверстия под саморезы, чтобы зафиксировать конструкцию.
Полезный совет: ничего не крепи и не приклеивай на этом этапе, сначала добейся устойчивой работы системы. Иначе наверняка все придется разбирать, особенное, если ты уверенный в себе профессионал.

Автоматический климат-контроль своими руками

 

Автоматический климат-контроль своими руками


Как заставить это работать?

Теперь – самое интересное! В контроллер нужно загрузить прошивку. Для начала, скачай программу Arduino с сайта Arduino.cc и установи её. Запускаем программу и подсоединяем контроллер к компьютеру.

Делаем предварительные настройки программы – выбираем модель контроллера и порт, к которому он присоединен.

 

(изображение кликабельны)
Автоматический климат-контроль своими руками

Автоматический климат-контроль своими руками

Устанавливаем необходимые для нашей прошивки библиотеки: DHT, Time и TimeAlarms.

Автоматический климат-контроль своими руками

Автоматический климат-контроль своими руками


Автоматический климат-контроль своими руками

Заменяем всё содержимое окна на этот код:
 

#include  // Подключаем библиотеку для работы с таймерами#include          // Подключаем библиотеку для работы с датчиками температуры/влажности на базе чипов AM23xx#define DHTPIN 12        // Цифровой пин, к которому подключен датчик тепрературы/влажности (12 = D12)#define DHTTYPE DHT22 // Модель датчика (AM2301 = DHT21, AM2302 и AM2321 = DHT22)// Релейные модули, в зависимости от модели, включаются либо высоким, либо низким уровнем на порте. Если розетки инвертированы, нужно поменять S_ON и S_OFF местами.#define S_ON 0 // Значение пина для ВКЛЮЧЕНИЯ розетки#define S_OFF 1 // Значение пина для ВЫКЛЮЧЕНИЯ розетки// Режим включения нагрузки#define NO_ACTION        0 // Значение датчика не учитывается#define IN_RANGE         1 // Включать нагрузку, когда значение В ПРЕДЕЛАХ диапазона#define OUT_RANGE        2 // Включать нагрузку, когда значение ВНЕ ПРЕДЕЛОВ ДИАПАЗОНА// Определяем структуру, в которой содержатся условия для подключения розетки.typedef struct RunCondition {int socketPin; // Пин, который управляет розеткойfloat tempBegin; // Температура. Начало диапазона.float tempEnd; // Температура. Конец диапазона.int tempMode;    // Режим включения нагрузки по температуреfloat humBegin; // Влажность. Начало диапазона.float humEnd;    // Влажность. Конец диапазона.int humMode;     // Режим включения нагрузки по влажности.};#define NUM_SOCKETS 3 // Количество розеток в системе// Определяем массив структур, определяющих условия для 3-х розеток (нумерация с 0 по 2)RunCondition sockets[NUM_SOCKETS] = {{2,       // Розетка №1: Приточный вентилятор. Управляющий пин - D2.30.0,    // Минимальная температура100.0, // Максимальная температураIN_RANGE, // Вентилятор включается, если температура более 30 градусов и менее 100.0.0,0.0,NO_ACTION // Влажность не учитывается},{3,       // Розетка №2: Обогреватель. Управляющий пин - D3.-50.0, // Минимальная температура16.0,    // Максимальная температураIN_RANGE, // Обогреватель включается, если температура больше -50 и меньше 16 градусов0.0,0.0,NO_ACTION // Влажность не учитывается},{4,       // Розетка №3: Увлажнитель. Управляющий пин - D4.20.0,    // Минимальная температура100.0, // Максимальная температураIN_RANGE, // Увлажнитель включается только если температура в диапазоне от 20 до 60 градусов0.0,     // Минимальная влажность (в %)50.0,    // Максимальная влажностьIN_RANGE // Увлажнитель включается, если влажность в диапазоне от 0% до 50%}};int socketStatus[NUM_SOCKETS]; // Определяем массив переменных, в которых хранится текущее состояние розеток. S_OFF - выключено, S_ON - включено.DHT dht(DHTPIN, DHTTYPE); // Создаем объект для работы с датчиком// Определяем глобальные переменные, в которых будем хранить показания датчиковfloat temp = 0;float hum = 0;void setSockets() {// Эта функция устанавливает состояние розетокfor (int i = 0; i  NUM_SOCKETS; i++) {// Перебираем все определенные ранее розетки, устанавливая для них соответствующий статусdigitalWrite(sockets[i].socketPin, socketStatus[i]);}}void printSensors() {// Эта функция выводит в консоль состояние датчиков для помощи при отладке.Serial.print("[ >> ] Temperature: "); Serial.print(temp); Serial.print(" C;\tHumidity: "); Serial.print(hum); Serial.println("%");}void setup() {// Эта функция выполняется один раз при включении контроллера.Serial.begin(115200); // Подключаем COM-порт для вывода информации из контроллера.Serial.println("WeedLife Air Controller Lite v.1.0");dht.begin(); // Инициализируем датчик температуры/влажности.for (int i = 0; i  NUM_SOCKETS; i++) {socketStatus[i] = S_OFF; // Устанавливаем розетку в ВЫКЛЮЧЕНО по умолчаниюpinMode(sockets[i].socketPin, OUTPUT); // Переключаем управляющие пины всех определенных ранее розеток в режим "выход"}setSockets(); // Переводим розетки в состояние по умолчаниюAlarm.timerRepeat(5, printSensors); // Включаем таймер для запуска функции printSensors каждые 5 секунд.}void loop() {// Эта функция выполняется по бесконечному кругу. Здесь мы будем проверять показания датчиков и управлять нагрузками.Alarm.delay(1000); // Вносим задержку в 1 секунду, чтобы датчик успел передать предыдущие данныеtemp = dht.readTemperature(); // Получаем текущую температуруhum = dht.readHumidity(); // Получаем текущую влажностьif (isnan(temp) || isnan(hum)) {// Что-то пошло не так, потому что данные с датчика не поступают! Отключаем все нагрузки и возвращаемся в начало!for (int i = 0; i  NUM_SOCKETS; i++) socketStatus[i] = S_OFF;setSockets();Serial.println("[FAIL] Can't read sensor data! Turn everithing OFF!");return;}// Теперь сравним полученные данные с условиями, заданными для каждой розеткиfor (int s = 0; s  NUM_SOCKETS; s++) {// Проверяем условия для включения розетки по датчику температурыint tempStatus = S_OFF;switch (sockets[s].tempMode) {         case NO_ACTION:         tempStatus = S_ON;         break;         case IN_RANGE:         if ((temp >= sockets[s].tempBegin) && (temp  sockets[s].tempEnd)) tempStatus = S_ON;         break;         case OUT_RANGE:         if ((temp  sockets[s].tempBegin) || (temp >= sockets[s].tempEnd)) tempStatus = S_ON;         break; }// Проверяем условия для включения розетки по датчику влажностиint humStatus = S_OFF;switch (sockets[s].humMode) {         case NO_ACTION:         humStatus = S_ON;         break;         case IN_RANGE:         if ((hum >= sockets[s].humBegin) && (hum  sockets[s].humEnd)) humStatus = S_ON;         break;         case OUT_RANGE:         if ((hum  sockets[s].humBegin) || (hum >= sockets[s].humEnd)) humStatus = S_ON;         break; }// Объединяем оба результата в один новый статус розеткиint newStatus = S_OFF;if ((tempStatus == S_ON) && (humStatus == S_ON)) newStatus = S_ON;if (socketStatus[s] != newStatus) {         // Статус розетки изменился! Отправим сообщение об этом в консоль и установим новое значение.         Serial.print("[ OK ] Socket #"); Serial.print(s); Serial.print(" status has changed to "); Serial.println(newStatus);         socketStatus[s] = newStatus;}// Обновляем статусы розетокsetSockets();}// Конец функции loop. Сейчас контроллер запустит ее снова.}

Специально для новичков в программировании я снабдил код очень подробными комментариями. Если тебе захочется что-то изменить или добавить – дерзай! Буду рад помочь советом.
В первую очередь, нас интересует фрагмент кода, где задаются условия для включения розеток (выделен желтым цветом). Измени эти значения по своему усмотрению.

Автоматический климат-контроль своими руками

Прошивка загружается в контроллер нажатием на кнопку [Upload] на панели быстрого запуска. Если всё прошло хорошо, в строке состояния появится сообщение «Done uploading».

Сразу после загрузки контроллер начнет работу с новой прошивкой. Чтобы посмотреть ход выполнения программы, выбери в меню [Tools] -> [Serial Monitor].  Если в окошке монитора ничего не отображается или сыплется «мусор», проверь скорость com-порта – нужно выбрать 115200.

Автоматический климат-контроль своими руками

Прежде чем отключать контроллер от компьютера и приступать к сборке, погоняй систему в тестовом режиме. Чтобы повысить температуру и влажность, можно несколько раз выдохнуть прямо в сенсор. Если хочешь повысить температуру, не повышая влажность, воспользуйся феном для волос. Чтобы охладить датчик, поможет лёд из морозилки.

Если контроллер четко выполняет инструкции (а куда он, гад, денется?), можно приступать к окончательной сборке. Аккуратно запихиваем все платы в корпус. В идеале, чтобы ничего не болталось, нужно прихватить платы клеевым пистолетом или посадить на двухсторонний скотч.

Автоматический климат-контроль своими руками

Автоматический климат-контроль своими руками

Советы бывалых

Известно, что электроника – наука о контактах. Так что, если что-то не работает, значит, или не контачит, или замкнуло. Так что все советы – по этой теме:
  • Собери всю схему на столе с помощью перемычек, и заставь её работать, ПРЕЖДЕ, чем браться за паяльник и запихивать все потроха в корпус.
  • Когда отладил работу на перемычках – бери паяльник. Только не любимый дедулин паяльник на 200 ватт и размером с ментовский дубинал, а маленький, ватт на 30, чтобы температура жала была не больше 300 градусов. Соответственно, припой (олово) должен быть тоже легкоплавким. Иначе рискуешь спалить всю нежную электронику. Если никогда до этого не паял – посмотри ролики на Ютубе, как это правильно делать.
  • Открытые контакты нужно изолировать. Конечно, покатит и изолента, но намного удобнее пользоваться термоусаживающимеся трубками. Спроси на радиорынке или в магазе радиодеталей.
  • Пользуй мультиметр для проверки напряжения и полярности.
Развитие системы

Если ты внимательно посмотрел на код и попытался в нем разобраться, ты наверняка заметил, что я не стал в нем фиксировать количество розеток, которыми можно управлять. Фактически, количество управляемых розеток на контроллере Nano может быть до 10 штук – по количеству свободных цифровых выходов D2…D11. Добавь еще один релейный модуль на 8 реле, поставь блок питания помощнее, и вперед!

Следующая логичная вещь – подключить к контроллеру LCD экран и выводить на него всякую полезную инфу. Экранов для Ардуино продается немеряно, так что ничего невозможного нет.

Ну и почитай мой репорт про автоматизацию гидры. Контроллер там используется из этой же серии, только программирование немного сложнее. В общем, добро пожаловать в мир микроконтроллеров!

Где брать детали?

Розетки, кабель-канал, вилку, провод и блок питания я купил в ближайших элетротоварах. Вообще, у гроувера со стажем, как правило, найдется всё это барахло в кладовке :)Контроллер, блок реле и датчик я купил на сайте Aliexpress. Правильные названия для поиска такие:
  • Arduino Nano 3.0 ATmega328
  • 5V 4 Channel Relay Module
  • DHT22 Module AM2302

Если по почте заказывать не хочешь или не можешь, или просто впадлу ждать посылку три недели, обратись к местным реселлерам, ищутся по словам «Arduino купить дешево в Мухосранске». Продадут тебе всё, что надо, но раза в 1.5 – 2 дороже, естественно. Хотя суммы всё равно копеечные.

Всё, пионеры, я устал! Пойду придумывать, чем вас удивить в следующий раз. СЛАВА РОБОТАМ! 

 

Обсудить на форуме

mixturator
  • Респект! 5
Нашли ошибку?

Успех! Найденная ошибка зафиксирована и отправлена, совсем скоро она будет еще и исправлена!

Реклама






Обратная связь

Рекомендуемые комментарии



Вот интересно, про влажность замечание - из жизненного опыта? Утверждение рождает дополнительные вопросы.

 

И главный вопрос - в чем, собственно, месседж? Предупредить несчастных недалеких людей, что они рискуют зря потратить почти тысячу рублей и обжечь палец паяльником?

 

Про влажность подсказывает в первую очередь здравый смысл, хотя и регулировать по жизни тоже пытался.

Здравый смысл говорит о том, что из каждого бокса канальник выкачивает воздух, обеспечивая воздухообмен. Скорее всего не ошибусь, если скажу, что в большинстве ставят канальники на 250 кубов. У тебя работает увлажнитель, а весь этот воздух вытягивается канальником просто в момент и при этом из помещения затягивается сухой. Тут даже и пороги срабатывания не нужны, увлажнителю надо работать постоянно.

 

Я понимаю тебя, заставить в руки взять паяльник это здорово, но надо понимать, что это не форум "радиокот" и здесь это просто лишнее.

 

Главный мой посыл заключается в том, что если вещь можно сделать проще, ее надо делать проще.

Если готовый регулятор температуры можно купить за 200 рублей, его надо купить за 200 рублей, а не тратить самому 1000 рублей да еще паять и программировать ))

 

Не записывай меня в недоброжелатели, про твоего робота-садовника я же ничего вообще не сказал.

 

ну и как верно заметили, датчик температуры внутри корпуса не самое удачное решение, его необходимо выносить.

Поделиться этим комментарием


Ссылка на комментарий
Поделиться на другие сайты

только что заказал кучу ардины с датчиками и релюхами как раз для постройки подобной штуки

завтра должны привезти

подпишусь на тему на всякий случай =)

Поделиться этим комментарием


Ссылка на комментарий
Поделиться на другие сайты

только что заказал кучу ардины с датчиками и релюхами как раз для постройки подобной штуки

а какие функции ты хочешь реализовать и сколько ты потратил на релюхи?:)

Поделиться этим комментарием


Ссылка на комментарий
Поделиться на другие сайты

Друже, братка, чувак, многое хотел тебе написать... скажу проще - ты ОХУЕНЕН!!1адин!

 

(Приношу извинения админам и модерам раздела за мат - написал от избытка чувств).

 

Может быть, позже, спрошу тебя об одной нестандартной задачке. Решить ее нужно будет без контроллеров, электричество и прочее я знаю на уровне "что бы ты не делал - токнет ёбом все равно!)))".

 

Спасибо за статью. Вряд ли спаяю, но статья написана на таком уровне, что даже полный лузер вроде меня сможет это сделать левой пяткой под злобной индикой)

 

Мир) :kutyashie-101:

Поделиться этим комментарием


Ссылка на комментарий
Поделиться на другие сайты

а какие функции ты хочешь реализовать и сколько ты потратил на релюхи?:)

Я хочу вообще ардуино поковырять, попаять, попрограммировать ,не обязательно применимо к грову.

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

 

Так что я купил много лишнего, вот в списке оставил только то, что для грова можно использовать. Думаю придется еще докупать, в основном датчики.

 

Arduino Mega 2560 R3 1240 руб. (мега самая дорогая, можно плату и подешевле взять)

модуль беспроводного управления с пультом [4 канала] 450 руб.

FC-28, Модуль датчика влажности почвы 180 руб.

AMT1001, наружный датчик влажности и температуры 310 руб.

Модуль реле 1 канал 5В 115 руб.

Модуль реле 2 канала 5В 230 руб.

Модуль реле 4 канала 5В 430 руб.

Релюхи не все пригодятся, наверняка.

так же на сайте видал датчик пламени (определяет пламя на расстоянии до 80см, датчик CO2, датчик освещенности, датчики уровня жидкости и прочие классные штуки)

 

Если в общих чертах, то в первую очередь хочу подключить три вентилятора (на фильтр, на свет и ветер внутри бокса, будут работать от датчика влажности и температуры) и датчик влажности почвы, который будет мигать диодом при высыхании кокоса)

во вторую хочу датчик движения, чтоб при посторонних все автоматически переходило в стеллс режим, работа датчика будет управляться с радиопульта. Сюда же можно электрозамок еще (600руб)

Ну а дальше посмотрим =)

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

Поделиться этим комментарием


Ссылка на комментарий
Поделиться на другие сайты

Я хочу вообще ардуино поковырять, попаять, попрограммировать ,не обязательно применимо к грову.

Набор хороший, успехов тебе!

Но правда модуль влажности почвы будет песдеть прилично и судя по отзывам с ним много проблем, проще управлять поливом по времени.

датчик CO2 тоже низкого качетсва там, плюс-минус километр, если хочешь точно, покупай инфакрасный. тут вот и пример есть

датчик пламени на случай пожара в боксе? по работе тоже имею дело с датчиками пламени... это такой геморр... они чаще всего просто на яркий свет реагируют, а не на пламя (хотя на фотке датчика пламени типа ИК-резистор или транзистор) боюсь, что при работающем ДНАТе у тебя датчик будет постоянно работать ))) но я хз, может там чуйку настроить можно. но всё равно я думаю затея дохлая. Проще температуру измерять и по ней судить горим или нет.

 

датчик уровня жидкости! вот это молодец, вот это красавчик))) наконец его можно купить на амперке!

 

вот видишь в чем плох ардуино, он как бы заставляет мозг тупеть. ты используешь в проектах только то, что предлагают тебе в магазине, поскольку ты знаешь как это подключать и опрашивать, т.к. есть готовая библиотека.

датчик уровня жидкости - обычный геркон с магнитом на поплавке, этой идее лет сто :) такой датчик можно самому собрать из подручных средств, но даже автор этой темы (и другие люди) использует в качестве датчика уровня ультразвуковой дальномер, типа измерять расстояние до уровня воды, хотя ему там и пузырьки мешают, да и сам датчик будет корродировать от гидры. да, измерять уровень воды так можно, но на костылях.

 

если ты увлекаешься электроникой то ардуино хорошая первая ступенька, но если хочешь больше, бросай ее нах и изучай микроконтроллеры с языком Си )))

 

ps вент внутри должен работаь всегда, а не от датчика температуры))) ну я про основной вент. на ночь можно выключать одним рубильником, вместе с лампой.

pps датчик влажности почвы тоже корродирует в земле, да под удобрениями, да когда через него ток идет.

Изменено пользователем Doomnik

Поделиться этим комментарием


Ссылка на комментарий
Поделиться на другие сайты

Но правда модуль влажности почвы будет песдеть прилично и судя по отзывам с ним много проблем, проще управлять поливом по времени.

ps вент внутри должен работаь всегда, а не от датчика температуры))) ну я про основной вент. на ночь можно выключать одним рубильником, вместе с лампой.

pps датчик влажности почвы тоже корродирует в земле, да под удобрениями, да когда через него ток идет.

Так и есть с датчиком почвы, корродирует даже при очень редком (раз в 5 мин) опросе на миллисекунды. При чем не копеешные китайские платы, а самодельные датчики из нержавеющих спиц. В своем проекте на кокосе я в итоге отказался от этих датчиков, все равно не нужная инфа, ведь полив был по таймеру.

А вент так и есть, у меня работал всегда, но при 28 и выше градусах внутри бокса, и при условии что на вдуве температура меньше 27, включалась вторая скорость вента, а при снижении до 26 обратно первая. Очень полезная фича в плане снижения уровня шума.

Поделиться этим комментарием


Ссылка на комментарий
Поделиться на другие сайты

Набор хороший, успехов тебе!

Но правда модуль влажности почвы будет песдеть прилично и судя по отзывам с ним много проблем, проще управлять поливом по времени.

датчик CO2 тоже низкого качетсва там, плюс-минус километр, если хочешь точно, покупай инфакрасный. тут вот и пример есть

датчик пламени на случай пожара в боксе? по работе тоже имею дело с датчиками пламени... это такой геморр... они чаще всего просто на яркий свет реагируют, а не на пламя (хотя на фотке датчика пламени типа ИК-резистор или транзистор) боюсь, что при работающем ДНАТе у тебя датчик будет постоянно работать ))) но я хз, может там чуйку настроить можно. но всё равно я думаю затея дохлая. Проще температуру измерять и по ней судить горим или нет.

 

датчик уровня жидкости! вот это молодец, вот это красавчик))) наконец его можно купить на амперке!

 

вот видишь в чем плох ардуино, он как бы заставляет мозг тупеть. ты используешь в проектах только то, что предлагают тебе в магазине, поскольку ты знаешь как это подключать и опрашивать, т.к. есть готовая библиотека.

датчик уровня жидкости - обычный геркон с магнитом на поплавке, этой идее лет сто :) такой датчик можно самому собрать из подручных средств, но даже автор этой темы (и другие люди) использует в качестве датчика уровня ультразвуковой дальномер, типа измерять расстояние до уровня воды, хотя ему там и пузырьки мешают, да и сам датчик будет корродировать от гидры. да, измерять уровень воды так можно, но на костылях.

 

если ты увлекаешься электроникой то ардуино хорошая первая ступенька, но если хочешь больше, бросай ее нах и изучай микроконтроллеры с языком Си )))

 

ps вент внутри должен работаь всегда, а не от датчика температуры))) ну я про основной вент. на ночь можно выключать одним рубильником, вместе с лампой.

pps датчик влажности почвы тоже корродирует в земле, да под удобрениями, да когда через него ток идет.

 

Не, датчики пламени, уровня ,СО2, уровня и прочего я только на сайте видел, где покупал. Но спасибо,. бро, что рассказал про их работу. на практике..Комплектуху брал не на амперке, а на робопартс, там например ардуино мега дешевле почти в три раза, чем на амперке.

Датчик уровня можно влегкую самому сделать - поплавок с магнитом в трубке, геркон и упор для поплавка, которым будем нужное падение уровня воды отмечать. Даже без геркона можно, просто тупо два контакта размыкать)

Для конструкций без ардуино можно просто поплавок с отметками, в трубке. вставленной в крышку. Мне даже странно, что нигде не видел такого ) Можно даже чтоб просто вода подпирала, а при падении уровня кончик просто исчезает вниз. Можно очень компактной такую конструкцию сделать и не надо сверлить в емкости дырки под указометр.

Поделиться этим комментарием


Ссылка на комментарий
Поделиться на другие сайты

Вопрос немного глупый как эту штуку к com порту подключить и есть ли возможность через usb это сделать ?

Поделиться этим комментарием


Ссылка на комментарий
Поделиться на другие сайты

Вопрос немного глупый как эту штуку к com порту подключить и есть ли возможность через usb это сделать ?

Поделиться этим комментарием


Ссылка на комментарий
Поделиться на другие сайты

мужики, только у меня выложенный скетч слепился в кучу (копируется одной строкой без переносов)?

Так-то пару дней плотненько посидел над обучалками с амперки, прогресс налицо. Моргать лампочками с разной яркостью и пердеть динамиками теперь могу не заглядывая в мануал =)

 

Пользуясь случаем хочу выразить автору свой респект и благодарность ))

Изменено пользователем JSmith

Поделиться этим комментарием


Ссылка на комментарий
Поделиться на другие сайты

ОБНОВЛЯШЕЧКИ!

 

Ну что же, подоспела награда для самых терпеливых. Я, наконец, одержал промежуточную победу в борьбе со своей ленью и завершил начатое.Чтобы придать прибору завершенный вид, не хватало одной маленькой мелочи, и я её, наконец, приладил.

 

4 Bits Digital Tube LED Display Module With Clock Display TM1637

или

Четырехзначный 7-сегментный индикатор на мыкросхеме TM1637

Стоит умопомрачительно - $1!

 

Объяснения считаю напрасной тратой времени, просто смотрите на обновленную схему и фотки, заливайте новую прошивку (будет сразу под фотками) и наслаждайтесь!

 

А я, тем временем, уже нашел две симпатичных кнопочки и припаял к ним проводочки! Догадайтесь, о чем будет третья часть этого увлекательного поста?

 

gallery_83681_1936_366393.png

 

gallery_83681_1936_554425.jpg

 

gallery_83681_1936_2466054.jpg

 

gallery_83681_1936_2383847.jpg

 

gallery_83681_1936_2379617.jpg

 

 

А вот и новый код прошивки:


WeedLife Air v.1.1.d

  Показать содержимое

 

#include <TimeAlarms.h> // Подключаем библиотеку для работы с таймерами
#include <DHT.h>	 // Подключаем библиотеку для работы с датчиками температуры/влажности на базе чипов AM23xx
#include <TM1637Display.h> // Библиотека для работы с 7-сегментным дисплеем на микросхеме TM1637.
					 // В стандартном репозитории нет, поэтому взял отсюда: https://github.com/avishorp/TM1637
#define DHTPIN 12	 // Цифровой пин, к которому подключен датчик тепрературы/влажности (12 = D12)
#define DHTTYPE DHT22 // Модель датчика (AM2301 = DHT21, AM2302 и AM2321 = DHT22)
#define CLKPIN 10	 // Цифровые пины для подключения дисплея
#define DIOPIN 11
#define S_ON 0 // Значение пина для ВКЛЮЧЕНИЯ розетки
#define S_OFF 1 // Значение пина для ВЫКЛЮЧЕНИЯ розетки
#define DISPLAY_TIMEOUT 5 // Задержка между сменой показаний на дисплее, в секундах
const uint8_t LETTER_t = SEG_D | SEG_E | SEG_F | SEG_G; // набор сегментов для символа t (Температура)
const uint8_t LETTER_h = SEG_C | SEG_E | SEG_F | SEG_G; // символ h (Humidity, Влажность)
const uint8_t LETTER_E = SEG_A | SEG_D | SEG_E | SEG_F | SEG_G; // символ E (Error)

// Режим включения нагрузки
#define NO_ACTION	 0 // Значение датчика не учитывается
#define IN_RANGE	 1 // Включать нагрузку, когда значение В ПРЕДЕЛАХ диапазона
#define OUT_RANGE	 2 // Включать нагрузку, когда значение ВНЕ ПРЕДЕЛОВ ДИАПАЗОНА

// Определяем структуру, в которой содержатся условия для подключения розетки.
typedef struct RunCondition {
int socketPin; // Пин, который управляет розеткой
float tempBegin; // Температура. Начало диапазона.
float tempEnd; // Температура. Конец диапазона.
int tempMode;	 // Режим включения нагрузки по температуре
float humBegin; // Влажность. Начало диапазона.
float humEnd;	 // Влажность. Конец диапазона.
int humMode;	 // Режим включения нагрузки по влажности.
};
#define NUM_SOCKETS 3 // Количество розеток в системе
// Определяем массив структур, определяющих условия для 3-х розеток
RunCondition sockets[NUM_SOCKETS] = {
{
2,	 // Розетка №1: Приточный вентилятор. Управляющий пин - D2.
30.0,	 // Минимальная температура
100.0, // Максимальная температура
IN_RANGE, // Вентилятор включается, если температура более 30 градусов и менее 100.
0.0,
0.0,
NO_ACTION // Влажность не учитывается
},
{
3,	 // Розетка №2: Обогреватель. Управляющий пин - D3.
-50.0, // Минимальная температура
16.0,	 // Максимальная температура
IN_RANGE, // Обогреватель включается, если температура больше -50 и меньше 16 градусов
0.0,
0.0,
NO_ACTION // Влажность не учитывается
},
{
4,	 // Розетка №3: Увлажнитель. Управляющий пин - D4.
20.0,	 // Минимальная температура
100.0, // Максимальная температура
IN_RANGE, // Увлажнитель включается только если температура в диапазоне от 20 до 60 градусов
0.0,	 // Минимальная влажность (в %)
50.0,	 // Максимальная влажность
IN_RANGE // Увлажнитель включается, если влажность в диапазоне от 0% до 50%
}
};
int socketStatus[NUM_SOCKETS]; // Определяем массив переменных, в которых хранится текущее состояние розеток. S_OFF - выключено, S_ON - включено.
DHT dht(DHTPIN, DHTTYPE); // Создаем объект для работы с датчиком
TM1637Display display(CLKPIN, DIOPIN); // Создаем объект для работы с дисплеем
// Определяем глобальные переменные, в которых будем хранить показания датчиков
float temp = 0;
float hum = 0;
int displayMode = 0; // Определяем флаговую переменную, показывающую, какую информацию отображать на дисплее
void setSockets() {
// Эта функция устанавливает состояние розеток
for (int i = 0; i < NUM_SOCKETS; i++) {
// Перебираем все определенные ранее розетки, устанавливая для них соответствующий статус
digitalWrite(sockets[i].socketPin, socketStatus[i]);
}
}
void printSensors() {
// Эта функция выводит в консоль состояние датчиков для помощи при отладке.
Serial.print("[ >> ] Temperature: "); Serial.print(temp); Serial.print(" C;\tHumidity: "); Serial.print(hum); Serial.println("%");
}
void setup() {
// Эта функция выполняется один раз при включении контроллера.

Serial.begin(115200); // Подключаем COM-порт для вывода информации из контроллера в консоль.
Serial.println("[ ++ ] WeedLife Air Controller Lite v.1.1.d");
dht.begin(); // Инициализируем датчик температуры/влажности.
for (int i = 0; i < NUM_SOCKETS; i++) {
socketStatus[i] = S_OFF; // Устанавливаем розетку в ВЫКЛЮЧЕНО по умолчанию
pinMode(sockets[i].socketPin, OUTPUT); // Переключаем управляющие пины всех определенных ранее розеток в режим "выход"
}
setSockets(); // Переводим розетки в состояние по умолчанию
Alarm.timerRepeat(5, printSensors); // Включаем таймер для запуска функции printSensors каждые 5 секунд.
displayInfo();
}
void displayInfo() {
// Эта функция рекурсивно запускает саму себя через заданный промежуток времени,
// отображая попеременно температуру и влажность. Используем конструкцию switch,
// чтобы оставить место для новых режимов, хотя сейчас их только два.
uint8_t data[] = { 0x00, 0x00, 0x00, 0x00 }; // Определяем массив знаков для 4-х-значного дисплея
int num = 0;
display.setBrightness(0x0f);

switch (displayMode) {
case 0:
 data[0] = LETTER_t;
 num = (int)temp;
 if ((num < 0) || (num > 99)) {
 // Если температура явно выходит за рамки, сообщаем о неисправности датчика
 data[2] = LETTER_E;
 data[3] = LETTER_E;
 } else {
 data[2] = display.encodeDigit(num / 10);
 data[3] = display.encodeDigit(num % 10);
 }
 displayMode++;
 break;
case 1:
 data[0] = LETTER_h;
 num = (int)hum;
 if ((num < 0) || (num > 99)) {
 // Если температура явно выходит за рамки, сообщаем о неисправности датчика
 data[2] = LETTER_E;
 data[3] = LETTER_E;
 } else {
 data[2] = display.encodeDigit(num / 10);
 data[3] = display.encodeDigit(num % 10);
 }
 displayMode = 0;
 break;
}
display.setSegments(data);
Alarm.timerOnce(DISPLAY_TIMEOUT, displayInfo);
}
void loop() {
// Эта функция выполняется по бесконечному кругу. Здесь мы будем проверять показания датчиков и управлять нагрузками.
Alarm.delay(1000); // Вносим задержку в 1 секунду, чтобы датчик успел передать предыдущие данные
temp = dht.readTemperature(); // Получаем текущую температуру
hum = dht.readHumidity(); // Получаем текущую влажность

if (isnan(temp) || isnan(hum)) {
// Что-то пошло не так, потому что данные с датчика не поступают! Отключаем все нагрузки и возвращаемся в начало!
for (int i = 0; i < NUM_SOCKETS; i++) socketStatus[i] = S_OFF;
setSockets();
Serial.println("[FAIL] Can't read sensor data! Turn everithing OFF!");
return;
}
// Теперь сравним полученные данные с условиями, заданными для каждой розетки
for (int s = 0; s < NUM_SOCKETS; s++) {
// Проверяем условия для включения розетки по датчику температуры
int tempStatus = S_OFF;
switch (sockets[s].tempMode) {
 case NO_ACTION:
 tempStatus = S_ON;
 break;
 case IN_RANGE:
 if ((temp >= sockets[s].tempBegin) && (temp <= sockets[s].tempEnd)) tempStatus = S_ON;
 break;
 case OUT_RANGE:
 if ((temp <= sockets[s].tempBegin) || (temp >= sockets[s].tempEnd)) tempStatus = S_ON;
 break;	
}
// Проверяем условия для включения розетки по датчику влажности
int humStatus = S_OFF;
switch (sockets[s].humMode) {
 case NO_ACTION:
 humStatus = S_ON;
 break;
 case IN_RANGE:
 if ((hum >= sockets[s].humBegin) && (hum <= sockets[s].humEnd)) humStatus = S_ON;
 break;
 case OUT_RANGE:
 if ((hum <= sockets[s].humBegin) || (hum >= sockets[s].humEnd)) humStatus = S_ON;
 break;	
}
// Объединяем оба результата в один новый статус розетки
int newStatus = S_OFF;
if ((tempStatus == S_ON) && (humStatus == S_ON)) newStatus = S_ON;

if (socketStatus[s] != newStatus) {
 // Статус розетки изменился! Отправим сообщение об этом в консоль и установим новое значение.
 Serial.print("[ OK ] Socket #"); Serial.print(s); Serial.print(" status has changed to "); Serial.println(newStatus);
 socketStatus[s] = newStatus;
}
// Обновляем статусы розеток
setSockets();
}
// Конец функции loop. Сейчас контроллер запустит ее снова.
}

 

 

Поделиться этим комментарием


Ссылка на комментарий
Поделиться на другие сайты

мужики, только у меня выложенный скетч слепился в кучу (копируется одной строкой без переносов)?

Так-то пару дней плотненько посидел над обучалками с амперки, прогресс налицо. Моргать лампочками с разной яркостью и пердеть динамиками теперь могу не заглядывая в мануал =)

 

Пользуясь случаем хочу выразить автору свой респект и благодарность ))

 

Как-то не очень хорошо на этом форуме работает вставка кода. Поэтому и схлопнулось. Только, почему-то, не сразу, а через месяц :)

Поделиться этим комментарием


Ссылка на комментарий
Поделиться на другие сайты

Впечатляет, но я неуверен что здесь половина и "половины" не поняли, как и я. А так, браво.

Поделиться этим комментарием


Ссылка на комментарий
Поделиться на другие сайты

Впечатляет, но я неуверен что здесь половина и "половины" не поняли, как и я. А так, браво.

ардуино это тупо микроконтроллер.

 

микроконтроллер - такая херня, которая может подавать на ножки сигнал 0 или 5 вольт, а может и считывать сигнал, ну т.е. понимать какой сигнал на ее ножке, ноль или пять. Вот таким нехитрым способом он либо считывает информацию, либо выдает ее. Но сам микроконтроллер абсолютно ничего не делает, он работает по программе, которую пишешь ты. Если ты в программе напишешь подать на ножку 5 вольт, он подаст.

 

Программа пишется в специальной проге на языке Си ну или ассемблер.

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

 

Но это всё сложно. Поэтому и появился такой продукт, как Ардуино.

 

На плате находится сам микроконтроллер, программатор к нему, да еще и удобные контакты, чтобы можно было быстро и легко что-то сразу подключить +еще фирма разработала свой язык программирования, ну который полегче ассемблера точно :sm:

 

Поэтому ты берешь платку Ардуино, втыкаешь проводочек, подключаешь к компу. Открываешь программу, выбираешь файл прошивки и заливаешь это в микроконтроллер, подключаешь проводочки датчиков и всё работает. паять вообще не надо.

 

тебе не надо отдельно махаться покупать программатор, делать печатную плату, разводку дорожек и так далее... это просто уже всё есть в наборе.

 

вот почитай сайт, норм - http://proavr.narod....rod.ru/02.htm но если тебе не нужно вникать в суть программирования, а необходимо собрать девайс по интсрукции, просто внимательно прочти автора, он вроде нормально пишет))

Изменено пользователем Doomnik

Поделиться этим комментарием


Ссылка на комментарий
Поделиться на другие сайты

это сложна и не оч понятно к чему вообще ссылка. там другой девайс для гидропоны, а в нашем случае простой такой приборчик

Изменено пользователем Doomnik

Поделиться этим комментарием


Ссылка на комментарий
Поделиться на другие сайты

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

 

Интересно гроверам нужна такая информация? ну типа для анализа изменения температуры за день. мне вообще интерсно собирать данные, но правда я не выращиваю)

 

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

 

post-33528-0-12000800-1470249553_thumb.jpg

Изменено пользователем Doomnik

Поделиться этим комментарием


Ссылка на комментарий
Поделиться на другие сайты

 

На плате находится сам микроконтроллер, программатор к нему, да еще и удобные контакты, чтобы можно было быстро и легко что-то сразу подключить +еще фирма разработала свой язык программирования, ну который полегче ассемблера точно :sm:

 

Поэтому ты берешь платку Ардуино, втыкаешь проводочек, подключаешь к компу. Открываешь программу, выбираешь файл прошивки и заливаешь это в микроконтроллер, подключаешь проводочки датчиков и всё работает. паять вообще не надо.

 

 

Я узнал тебя, Нил Деграсс Тайсон, великий популяризатор и упрощатель науки ;)

 

Вообще, все именно так и есть. Чуть позанудствую - ардуиновцы не делали свой язык, просто сделали большую либу arduino.h для обычного gcc, который и вызывают из своей среды программирования. Так что это самый обычный C++.

Но это только важно только для тех, кто разбирается в оттенках дерьма :)

 

А как бы к этому еще добавить управление освещением? :13:

 

Если дело только в освещении, рискну предложить обычный механический таймер, воткнутый в соседнюю розетку :)

 

Но вообще, я попытался соединить все функции по гроуву в одно устройство, получилось то, что у меня в подписи.

Поделиться этим комментарием


Ссылка на комментарий
Поделиться на другие сайты

Так что это самый обычный C++.

Но это только важно только для тех, кто разбирается в оттенках дерьма :)

согласен (но в оттенках не досконально не разбираюсь).

Если дело только в освещении, рискну предложить обычный механический таймер, воткнутый в соседнюю розетку :)

механика тикает, некоторых это бесит, электронный надо брать, а это может быть уже деньги.

 

В Москве вот был на днях, решил для прикола книжку по Ардуино купить. Чувака этого бородатого из видосов увидел в офисе :) Интересовали главы по работе с сетью, может разберусь для себя что там как.

Изменено пользователем Doomnik

Поделиться этим комментарием


Ссылка на комментарий
Поделиться на другие сайты

механика тикает, некоторых это бесит, электронный надо брать, а это может быть уже деньги.

В Москве вот был на днях, решил для прикола книжку по Ардуино купить. Чувака этого бородатого из видосов увидел в офисе :) Интересовали главы по работе с сетью, может разберусь для себя что там как.

касик за таймер не такие уж и деньги)

https://dzagigrow.ru/catalog/klimat_kontrol/taymer_elektronnyy_feron_tm_22/

а что за книжка ? можешь название написать или скинуть ссылку на книгу.

Поделиться этим комментарием


Ссылка на комментарий
Поделиться на другие сайты

касик за таймер не такие уж и деньги)

https://dzagigrow.ru...yy_feron_tm_22/

а что за книжка ? можешь название написать или скинуть ссылку на книгу.

именно, что косарик.

тут суть просто в том: зачем покупать отдельно, если таймер можно реализовать в рамках рассматриваемого проекта с меньшими затратами (косарик).

 

На сайте амперки книги. Я купил "Arduino, датчики и сети для связи устройств" и "Изучаем Arduino". Скорее всего книги можно и так скачать, но я не люблю с компа читать, да и распечатывать для тоже не оч удобно.

Изменено пользователем Doomnik

Поделиться этим комментарием


Ссылка на комментарий
Поделиться на другие сайты

именно, что косарик.

тут суть просто в том: зачем покупать отдельно, если таймер можно реализовать в рамках рассматриваемого проекта с меньшими затратами (косарик).

 

На сайте амперки книги. Я купил "Arduino, датчики и сети для связи устройств" и "Изучаем Arduino". Скорее всего книги можно и так скачать, но я не люблю с компа читать, да и распечатывать для тоже не оч удобно.

 

 

Вполне можно. Есть так называемые Часы Реального Времени - RTC DS3231 - батарейка с микрохой. стоят два доллара.

Дальше - просто добавить проверку по времени. Поскольку мы имеем дело не с тупым таймером, а в контроллером, количество режимов работы ограничено только фантазией садовода.

Ни и можно, конечно же, комбинировать проверки по времени/температуре.

Например, в "темные" часы не включать приточку, чтобы палатка не надулась без выдува.

Изменено пользователем mixturator

Поделиться этим комментарием


Ссылка на комментарий
Поделиться на другие сайты

Приветствую, товарищи!

Задумался о термостате в своей коробчёнке))

Подвернулся бесплатно вот такой термостат: http://www.electropol.ru/catalog/termostat/fan_coils/Eberle/KLRe_7012/, точнее не он, а его более старший брат(KRLE 7038), но там всё идентично, за исключением, того, что у меня на одну крему больше.

Подскажите мне, друзья, смогу ли я к нему присобачить вент и нагреватель? Если надо могу схему своего скинуть.

Заранее благодарю!

Поделиться этим комментарием


Ссылка на комментарий
Поделиться на другие сайты

нагреватель на 1 кВт должен потянуть. вент потянет, они не такие мощные, а марку нагревателя надо сообщить,чтобы мощность знать точно

Изменено пользователем Doomnik

Поделиться этим комментарием


Ссылка на комментарий
Поделиться на другие сайты

нагреватель на 1 кВт должен потянуть. вент потянет, они не такие мощные, а марку нагревателя надо сообщить,чтобы мощность знать точно

Зовут его EBERLE KLR-E 7038.

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

post-81628-0-21288400-1470891963_thumb.jpeg

post-81628-0-78798800-1470891992_thumb.jpeg

Поделиться этим комментарием


Ссылка на комментарий
Поделиться на другие сайты

я отвечал на вопрос потянет ли твой прибор нагреватель, а не как делать подключение. и спрашивал марку нагревателя, чтобы уточнить его мощность :)

если ты спрашиваешь по поводу подключения, то отвечу через дня два, как приеду домой. надо найти документашку на твой регулятор, чтобы понять что там как. а я сейчас с телефона и мне не удобно.

 

бесплатно достался? по обрезаным проводам это видно :)

Изменено пользователем Doomnik

Поделиться этим комментарием


Ссылка на комментарий
Поделиться на другие сайты

я отвечал на вопрос потянет ли твой прибор нагреватель, а не как делать подключение. и спрашивал марку нагревателя, чтобы уточнить его мощность :)

если ты спрашиваешь по поводу подключения, то отвечу через дня два, как приеду домой. надо найти документашку на твой регулятор, чтобы понять что там как. а я сейчас с телефона и мне не удобно.

 

бесплатно достался? по обрезаным проводам это видно :)

Ахаххахаха, да, я бы тоже подумал, что прибор то отвязан))) но нет, на работе у электриков отнял, они вент систему в магазине модернизировали и вот)) Но он рабочий это точно. Не хотел у них раса рашивать, много вопросов возникнет( Если поможешь, буду безумно благодарен! Спасибо за отзыв!

О времени не беспокойся, я только готовлюсь к зиме, так что времени вагон, буду ждать))

Поделиться этим комментарием


Ссылка на комментарий
Поделиться на другие сайты



Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Создать...

Успех! Новость принята на премодерацию. Совсем скоро ищите в ленте новостей!