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

Поиск сообщества

Показаны результаты для тегов 'контроллер'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • Администрация
    • ПРАВИЛА ФОРУМА
    • Обратная связь
  • Растениеводство
    • Я – новичок
    • Жизненный цикл. От семечки до урожая
    • Вода, почва, удобрения
    • Проблемы растений
    • Гроубокс и оборудование
    • Аутдор
    • Гидропоника и кокосовый субстрат
    • Микрогров/стелс
    • Гроверская
    • DIY и гроухаки
    • Культура употребления
    • Видео и книги
    • Ситифермерство
    • Техническое коноплеводство
    • Шруминг
    • English Growers Area
  • Гроурепорты
    • 🏆 Dzagi Cup 2023
    • Почвосмеси и субстраты
    • Кокосовый субстрат
    • Гидропоника
    • Микрогроу / Стелс
    • LED репорты
    • 100% Organic
    • Аутдор
    • Лучшие гроурепорты
    • Заброшенные репорты
  • Семена
  • Оборудование и удобрения
  • Девайсы для курения
  • Грибы
  • Свободное общение
  • Конкурсы

Категории

  • Все публикации
    • Новости
    • Тенденции
    • Интервью
    • События
    • Истории
    • Конкурсы
    • Видео
  • О нас
  • Важное
  • Акции гроурынка
  • Гроупедия
    • Гроупедия
    • Я - новичок
    • Жизненный цикл
    • Вода и водоподготовка
    • Почва и субстраты
    • Удобрения/стимуляторы
    • Сорта и генетика
    • Проблемы растений
    • Тренировка растений
    • Гроубокс / Гроурум / Микро / Стелс
    • Освещение
    • Гидропоника
    • Органика
    • Открытый грунт (Аутдор)
    • Своими руками (Handmade / DIY)
    • Культура употребления
    • Видеотека
    • Энтеогены
    • Библиотека
    • Кулинария
    • Медицина
    • Топы / подборки
    • Лайфстайл
    • Исследования
    • Ситифермерство
    • Гроухаки
    • История
    • Экстракты
    • Юридическая безопасность
    • Техническое коноплеводство
    • Другое
    • Все статьи
    • Карточки
    • Лучшие Гроурепорты Дзаги
  • Шпаргалка
  • Архив лунного календаря
  • Оборудование и удобрения
    • Онлайн гроушопы
    • Физические магазины
    • Оборудование
    • Удобрения
    • Магазины оборудования и удобрений в странах СНГ
  • Семена
    • Сидшопы
    • Сидбанки
    • Бридеры
  • Гороскоп
  • Девайсы
  • Грибы

Поиск результатов в...

Поиск контента, содержащего...


Дата создания

  • Начало

    Конец


Дата обновления

  • Начало

    Конец


Фильтр по количеству...

Регистрация

  • Начало

    Конец


Группа


Telegram


Сайт


Город


Интересы

  1. Здравствуйте товарищи. Я здесь новенький, и спасибо за теплый прием. Цель создания этой темы 30% похвастаться, 30% подкинуть идею и вариант реализации умного контроллера управления электроникой гроубокса своими руками, 40% послушать идеи усовершенствования системы. Основные требования к контроллеру и в целом к системе: -низкое постоянное напряжение для всех компонентов (приоритет 12 вольт) -управление светом, приточной и вытяжной вентиляцией, вентиляторами обдува растений и радиатора светодиодов, ультразвуковым увлажнителем воздуха, системой автополива/гидро или аэропоники -регулировка яркости светодиодов и скорости вентиляторов с помощью ШИМ с высокой частотой -в качестве мозга atmega328 (любой arduino) -подключение модуля реального времени, датчика влажности/температуры, защитного термистора -на всякий случай пару каналов управления 230 вольт с помощью симисторов без контроля нуля -питание системы от 12 вольт, любой более менее подходящий по мощности с запасом блок питания от ПК -свет на светодиодах с али, как минимум cree, пусть и из китая (если хочется больше ммоль на ватт, то берем более дорогие) -вытяжная вентиляция с использованием вентилятора от авто (с использованием фильтра по типу: два воздушных фильтра от авто, а между ними 3-7см активированного угля) -увлажнитель 12 вольт с али (емкость с водой, плюс модуль увлажнителя по цене 50 рублей за штуку) -дисплей 1602 для управления или по крайней мере минимальной настройки (в самом крайнем случае для отслеживания температуры и прочих параметров) -энкодер и несколько кнопок -уложиться в 5 -7 тысяч за все, включая свет, вентиляторы, датчики и т.д. -логика работы примерно такая: контроллер знает сколько времени и в него забиты два режима освещения, к примеру 16/8 и 12/12, которые можно будет переключить кнопкой или энкодером. Так же контроллер знает какая температура и влажность внутри, и если последняя уменьшается, то включается увалжнитель, если увеличивается, то включается вытяжная вентиляция, которая включается также, если надо снизить температуру внутри бокса. Защитный термистор стоит на радиаторе светодиодов, и в случае чего, отключает всю систему. Это можно реализовать и отдельно от контроллера, так сказать, защита, от глюка и перегрева. Не хотелось бы сжечь светодиоды. Система автополива может автоматически включать полив через заданные промежутки или по дням недели. В качестве насоса предлагаю моторчик омывателя от автоваза. и т.д и т.п. ---- Считаю, что в таком месте как гроубокс желательно использовать все таки низкие напряжения. С постоянным током проще, можно рулить нагрузками с помощью мосфетов (которые кстати ничего не стоят и отлично выпаиваются из старых материнских плат). А если добавляем шим, то можно плавно регулировать обороты вентилятора и яркость светодиодов. Уже собрал первую версию контроллера, пока что тестировал только на стенде. Скоро будут полевые испытания. В моем варианте 6 мощных мосфетов, некоторые из которых запросто могут плавно рулить током 15 ампер без доп охлаждения с помощью ШИМ. 2 из которых работают просто вкл/выкл. 2 симистора. Можно добавить пару обычных реле. Меня удивляет, что здесь все стараются все делать на 230 вольт. По мне - это лишний геморой и повышенная опасность. Поэтому предлагаю обсудить такую концепцию. Вы скажите, зачем я это собирал, если есть контроллер теплицы от Гайвера? У него широконаправленное сложное устройство, а я постарался сделать что то, что подходит для наших нужд. Если тема будет интересна, буду пополнять , выложу фотографии прототипа, печатную плату в lay (она же схема) и прошивку, которую так же постараюсь дополнять. И еще. Низкая цена достигается использованием подручного говна и деталей с али. К примеру мощный, нет, даже мега мощный 150 ваттный вентилятор может обойтись вам в 500 рублей, угольный фильтр обойдется в 400-600 рублей, моторчик от автоваза 150 рублей и т.д. Предлагаю обсудить, внести предложения, высказать критику. Приветствуются философские рассуждения насчет сравнения 230 вольт против 12. И что все таки лучше и целесообразно использовать в гроубоксе.
  2. Привет, сын Джа! Мир тебе! Некоторое время назад я написал вот этот пост про полноценную автоматизацию гидропоники «на коленке», который многим олдовым гроверам показался полезным, но уж очень заумным. Так что сейчас, мой юный падаван, я снижу планку и расскажу тебе, как своими руками сделать автоматический блок управления микроклиматом в боксе, потратив при этом не более $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 дороже, естественно. Хотя суммы всё равно копеечные.Всё, пионеры, я устал! Пойду придумывать, чем вас удивить в следующий раз. СЛАВА РОБОТАМ! Обсудить на форуме
  3.   Новый регулятор pH-2x-003 отображает на экране уровень pH и позволяет добавить кислоту или щелочь нажатием кнопки, в ручном режиме, либо перейти в автоматический режим чтобы прибор сам выровнял и поддерживал заданный гистерезис pH.  В ручном режиме регулятор добавляет реагенты небольшими порциями по заданным дозировкам. В автоматическом режиме pH-2x-003 по мере необходимости добавляет реагенты в гидропонную систему, а помпа проботборника размешивает их в баке с раствором. Схема подключения регулятора к гидропонной системе: Настройки регулятора крайне простые, все ясно без слов, но все же обязательно прочитайте "как управлять уровнем pH" в инструкции.     Разработку pH регулятора мы начали с модернизации платы от старого блока управления Джинн и насосов от Дэу матиза. Пробывали и китайские насосы, выходившие из строя  за неделю.    Следующую версию регулятора больше полугода тестировали в гидропонной установке аэрофло 60. Проверяли регулятор в программе Monitoring, которая показывает  все изменения pH в графиках и сохраняет их в базу. Профессионально проработали алгоритмы регулирования. Фиксированный pH=6 не приведет ни к чему хорошему. Уровни pH различаются для каждого растения, но в основном правильный гистерезис пиаш "плавает" от 5,5 до 6,5!   Выпуск в продажу планируется в конце сентября. Вопросы приветствуются! Инструкция по эксплуатации контроллера pH-2x-003 и pH-2x-003_ENG    А мы ищем того, кто на собственном (желательно не малом) опыте протестирует контроллер и получит его в подарок. Тем, кто готов и имеет давнюю регистрацию на форуме и опыт работы с растворами - гидропоникой пишите мне в приват.  (ЗАЯВКА ЗАКРЫТА)   Обсудить на форуме
  4. Поскольку свой первый, чрезмерно навороченный проект я обозвал гордым именем «Робот-садовник», то это упрощенное устройство будет называться «Мой младший брат – дебил». Готовься, будет много картинок! Что мы собираем?Назначение блока: управление тремя приборами в боксе – вентилятором, обогревателем и увлажнителем - с помощью «умного удлинителя» под руководством самого дешевого и, при этом, очень надежного контроллера Ардуино.Итак, нам понадобится: Контроллер 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 дороже, естественно. Хотя суммы всё равно копеечные.Всё, пионеры, я устал! Пойду придумывать, чем вас удивить в следующий раз. СЛАВА РОБОТАМ! Обсудить на форуме
  • Создать...

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