Самодельный акваконтроллер на Arduino — необходим для домашнего аквариума
Делаем на Arduino автоматизацию для аквариума
Arduino – микроконтроллер, использующийся в качестве конструктора и платформы для самостоятельной разработки электроники. Устройство подходит как новичкам, так и профессионалом в техническом строении. Ардуино заслужило популярность среди разработчиков благодаря удобному и легкому языку, на котором пишут программный код для МК.
Кроме того, этот микроконтроллер обладает открытой архитектурой. Достаточно подсоединить устройство к компьютеру и записать получившийся код с помощью usb-кабеля. Приборы, в основе которых находится микроконтроллер, получают сведения из окружающей среды посредством датчиков и управляют исполнительными частями сконструированных инструментов. В этой статье подробно расписаны задачи для МК Arduino, которые помогут автоматизировать работу аквариума и избавить пользователя от лишних хлопот.
1. Определение задач для микроконтроллера Arduino при автоматизации аквариума
Первое, о чем должен позаботиться пользователь, – формулировка задач для работы аквариума. По-другому, за что должен отвечать программный код на Arduino для аквариума. Список задач представлен в списке ниже:
- подача подсветки в разных тонах в утреннее, дневное, вечернее и ночное время;
- включение света белого оттенка утром, в дневное время яркость увеличивается, а в вечернее, наоборот, уменьшается, ночью запрещается включать свет вообще;
- синий оттенок включается, когда рыбам становится «холодно»;
- красный оттенок подается, когда рыбам «жарко»;
- на аквариуме устанавливается датчик, который всегда отображает точное время;
- компрессор в аквариуме регулируется: пузыри с воздухом пускаются строго вечером, на ночь компрессор прекращает работу;
- пользователь создает пульт управления устройством;
- сигнальный свет регулируется строго с переходом температуры воды, пользователь настраивает данные диапазоны;
- регулируется утреннее и вечернее время;
- дополнительная функция – отображение данных о показателе влажности воздуха и температуры вне аквариумной зоны, вывод температуры воды обязателен при этом;
- подсвечивание даты, когда пользователь нажимает соответствующую кнопку на пульте управления, если дополнительных действий не последовало, экран меркнет.
2. Необходимая периферия и способы ее подключения к Arduino
Для собрания аппаратной части потребуются следующие компоненты:
- микроконтроллер Arduino Uno (можно и с Мегой);
- пьезо сигналка;
- светодиодная лента RGB для подачи света, при погружении в емкость ее следует поместить в силиконовый шланг, чтобы вода не проникала внутрь;
- белая светодиодная лента;
- датчик, отслеживающий температурный режим и влажность, наиболее оптимальный вариант – DHT11;
- небольшой LCD экран;
- часы, отображающие реальное время, оптимальный вариант – DS1307;
- 2 штуки реле, один управляет работой компрессора, другой регулирует аэрацию, причем оба работают только при 220;
- ик-приемник;
- транзисторы в количестве 5 штук, 3 штуки для rgb-ленты, 1 для помпы и последний для работы белой ленты.
Перечисленные компоненты обладают собственным типом подключения. Кроме того, потребуются драйверы для работы. После покупки пользователь должен зайти на официальный сайт производителя и скачать драйвера.
Одна из возможных схем:
На просторах интернета найдена была еще одна возможная схема для сборки стеклянного друга:
3. Программирование на Arduino для автоматизации аквариума
При программировании Ардуино для аквариума стоит быть внимательным. Перед подключением любого компонента необходимо ознакомиться с прилагаемой инструкцией. Обычно в памятке и на официальном сайте производителя указывается информация насчет равномерного напряжения. Если пренебречь условиями напряжения, можно испортить оборудование – произойдет замыкание. Обычно такая ситуация наблюдается при неаккуратном подключении датчика температуры и часов.
3.1 Меню и ЖК-Дисплей
Для ЖК-дисплея чаще всего используют библиотеку LiquidCrystal. Вы можете её увидеть во многих проектах, где фигурирует дисплей.
Например, для вывода «Hello World» нам нужен такой код:
Для нашего урока базовый класс может выглядеть так:
Ну и как пример с одним из пунктов меню (позаимствовано на просторах интернета):
Все датчики и светодиодные ленты к платформе Ардуино подключаются с помощью контактов, у которых действительно есть возможность поддержания широтно-импульсной модуляции. Нельзя подключать сразу 3 контакта при максимальном напряжении, так как лента может перегореть: не сразу, но в течение 50 минут светодиоды прекращают мерцать. Такая ситуация возникает, когда резисторы выходят из строя.
Недостаток вышеизложенной конструкции состоит в том, что каждый цвет на ленте имеет разную яркость. Если включить максимум напряжение на светодиоде красного оттенка, получится условная яркость красной ленты, равная 255 единицам.
А если одновременно подключить синий и красный фонарик на максимальном напряжении, показатель яркости установится на 510 единицах. В итоге получится фиолетовый цвет, что неприемлемо.
3.2 Код для работы цветной ленты
Отрегулируем яркость белой ленты с помощью кода:
На этом пока всё. Желаем вам дальнейших успехов с проектами на разных микроконтроллерах.
Самодельный акваконтроллер на Arduino — необходим для домашнего аквариума
Войти
Аквариумный контроллер своими руками из Arduino
Практически готовый проект автоматизации жизнеобеспечения аквариума на базе arduino nano, герметичного датчика температуры DS18B20, дисплея 16 символов 2 строки, часов реального времени, тактовой кнопки и 4х канального релейного модуля. Вдруг кому будет интересно, софт готов, железо каждый сам спаяет.
В виде ёжика оно выглядит вот так:
Фоторезистор, светодиод и дигиспарк на макетной плате оказались случайно 🙂 в ходе экспериментов они не пострадали 🙂
Чёрный толстый провод — герметичный датчик температуры, пытавшийся скрыться за клавиатурой, набор из красивых резисторов — попытка заменить связкой 4х1 кОм + 3х220 Ом нужный, но потерявшийся резистор на 4.7 кОм.
Логика работы контроллера
1. Включение подсветки в 6 утра, выключение в 8 утра, включение в 17 часов, выключение в 2 часа ночи;
2. Включение циркуляции воды через фильтр в 6 утра, выключение в 8 утра, включение в 18 часов, выключение в 22 часа;
3. Поддержание температуры воды не ниже 24 градусов (пока только включение по нижнему порогу);
4. Отключение подсветки экрана одновременно с подсветкой аквариума (без подсветки на экране видны цифры но тускло);
5. Корректировка часов (китайские RTC они такие китайские)
6. Включение червячной передачи из контейнера с кормом в аквариум в 22 часа 05 минут с 20 до 23 секунд (длительность 3 секунды выбрана от фонаря, так как двигатель ещё не привезли)
Пока нет двигателя я не могу доделать всё, так что пока проект в режиме макетной платы (йожыка) и аналогично не закончен корпус из лего :))) так как основная часть деталек лего находится на даче 🙂
Я себя программистом не считаю и это не просто так, мои попытки кодить «руками» проходят очень муторно и сложно, язык С++ я учил году так в 1996 и больше им не пользовался. Я честно сделал несколько маленьких проектов писав код руками, даже 1 раз обращался за помощью к коллеге, который помог найти нестыковку в коде, но потом выяснилось что код под arduino uno или leonardo не работает без напильника на arduino nano, а я изначально собирался использовать полноценную плату и переход на миниатюрную должен был произойти после завершения проекта. Тем более что ещё непонятно на чём в итоге что будет работать.
По счастливой случайности я нарыл программу для программирования промышленной автоматики, адаптированную под ардуиноподобные поделки. Сие чудо находится здесь http://flprog.ru. Хоть программа местами очень странная и поддерживает не всё что есть (и не всегда как надо), но она работает, позволяя собирать из блоков логику работы ардуино. Люто советую всем, кто не хочет (на первых порах) лезть в программирование или тратить время на изучения синтаксиса каждой платы.
Блочно проект выглядит так (кликабельно):
Рассмотри по блокам (платам) работу контроллера
Изначально был сделано блок «Плата 2»
Здесь идёт подключение часов реального времени, экрана и датчика температуры.
Часы выдают HR Min Sec Y Mo Day (если вы дочитали до этого момента, я думаю нет смысла лить водичку и всё разжевывать) в числовом формате (integer), что не годится для вывода текста на экран.
Для этого мы конвертируем (SConv) число в текст и подаём на (SSum) склейку текста на 1 строку экрана DISP (9 блоков текста)
У нас получается Hr идёт на 1 блок, потом двоеточие на 2 блок, далее Min на 3 блок, 4 блок — двоеточие, 5 блок Sec, пробел на 6 блок, на 7 блок я выводил отладочные данные (1 или 0), которые подавались на пины реле. В данном случае там ничего нет, но можно прикрутить что хочется 🙂 Экран центрировал, единственное я не боролся с числами менее 2х знаков, на экран выводится 1 вместо 01 и тд, меня это не парит, но для красоты если кому интересно можете сделать обработку строки и поделиться опытом.
Аналогично на 2 строку экрана выводится дата в формате ДД/ММ/ГГГГ и показания датчика температуры и знака С.
Экран, градусник и часы подключены по I2C, коды устройств вычислял методом исключения (научного тыка).
«Плата 1» Это логика включения подсветки, здесь всё немного интереснее но предельно просто.
Для работы подсветки нам нужны часы с выводом значение Hr.
Получаем данные с часов и сравниваем с константой L1 =L2 — если больше 17 часов то получаем логическую 1, которая далее проходят через И, и в случае, если оба условия = ИСТИНА, И выдаёт на выходе 1.
Далее через ИЛИ проходят все временные интервалы, так как у нас нет пересечений временных интервалов — на один момент может быть сработка только одного И или у всех И будет ЛОЖЬ. То есть если у нас на одном из ИЛИ будет 1 то дальше передаётся ИСТИНА.
Это и есть результат всей схемы — при наступлении временного интервала на выходе должна появиться 1, которая скомандует контроллеру включить реле 1 и при включении зажечь подсветку экрана.
Есть один момент. Китайское реле по неведомым мне причинам срабатывает на 0 и отключается на 1. Для борьбы с этим эффектом стоит Switch (REVERSE) который подменяет показания выхода на противоположные.
Вероятно это можно было сделать и проще, но мне такая схема показалась вменяемой, при чём на стадии тестирования я выводил на экран показания с разных точек и дебажил где неправильная логика.
Плата 3
Блок обработки включения червячной передачи с контейнера с кормом в аквариум через трубочку, пока только логика (не приехал двигатель) работает абсолютно так же как и подсветка.
По логике в 22 часа отключается насос фильтрации воды, в 22:05:20 включается питание двигателя на 3 секунды (значение от фонаря)для подачи корма, сначала я подключил ещё и зуммер, но его звук настолько ужасен что я его отключил после третьей попытки.
Плата 4
По нажатию тактовой кнопки минуты сбрасываются на 01, секунды на 0 — чисто для корректировки работы часов. Можно было бы сделать сброс на 00:00:00 но лень было экспериментировать с переходом даты (непонятно будут часы отставать или спешить).
Плата 5
Логика абсолютно идентичная включению и отключению подсветки.
С чем пришлось столкнуться
Потребление блока реле выше способностей ардуины в питании, при включении более 2х реле одновременно начинает тухнуть экран. Блоку реле нужен отдельный БП на 5v (GND которого должен быть общим с ардуино), благо для тестирования можно снять джампер и реле не будут щёлкать — только моргать светодиоды.
Для тестирования логики я брал минуты, а потом секунды вместо часов, получалось что 1 светодиод (подсветка аквариума и подсветка экрана) включался от 0 до 2, с 6 до 8, с 17 до 23 секунд, 2 светодиод (очистка воды) включался с 18 до 22 и с 6 до 8, 3 светодиод включался только при опускании термометра в чашку с холодной водой, 4 светодиод приходилось менять часы и минуты для проверки.
При копипасте уберите звёздочки в первых четырёх строках
LiquidCrystal_I2C _lcd1(0x3F, 16, 2);
int _dispTempLength1=0;
boolean _isNeedClearDisp1;
OneWire _ow12(12);
int _PWDC = 0;
bool _swi2;
bool _swi3;
byte _RTC1_GetTime2_HourOut = 0;
byte _RTC1_GetTime2_MinOut = 0;
byte _RTC1_GetTime2_SecOut = 0;
byte _RTC1_GetTime2_DayOut = 0;
byte _RTC1_GetTime2_MounthOut = 0;
byte _RTC1_GetTime2_YearOut = 0;
byte _RTC1_GetTime3_HourOut = 0;
byte _RTC1_GetTime3_MinOut = 0;
byte _RTC1_GetTime3_SecOut = 0;
unsigned long _d18x2x1Tti = 0UL;
float _d18x2x1O = 0.00;
bool _swi1;
byte _RTC1_GetTime1_HourOut = 0;
bool _D1B1 = 0;
int _disp1oldLength = 0;
bool _bounseInputD10S = 0;
bool _bounseInputD10O = 0;
unsigned long _bounseInputD10P = 0UL;
int _disp2oldLength = 0;
bool _RTCST_Ost1 = 0;
byte _RTC1_GetTime4_HourOut = 0;
void setup()
<
Wire.begin();
delay(10);
TCCR2A = 0x00;
TCCR2B = 0x07;
TIMSK2=0x01;
TCNT2=100;
analogReference(EXTERNAL);
_RTC1.begin();
_RTC1.period(1);
pinMode(10, INPUT);
digitalWrite(10, HIGH);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
bool _bounceInputTmpD10 = (digitalRead (10));
//Плата:1
//Наименование:Подсветка аквариума и подсветка экрана. График работы с 6:00 до 7:59, с 17:00 до 1:59 (разбит на интервалы с 17 до 0 и с 0 до 2). Логика — сравнение часов (HR) с заданными параметрами, показания часов сравниваются (AND)
//Комментарии:и в случае совпадений выдаётся True. Через ИЛИ (XOR) передаётся состояние всех 3х интервалов . Параллельно вкл экран(D1B1), далее через реверс (Cwitch) 1 или 0 попадают на реле — так как китайкое реле срабатывает от False а не от True
if(( (( (( ((_RTC1_GetTime1_HourOut) = (17)) )) ^ (( ((_RTC1_GetTime1_HourOut) = (0)) )) )) ^ (( ((_RTC1_GetTime1_HourOut) = (6)) )) ))
<_swi3=0;>
else
<_swi3=1;>
if(( (( (( ((_RTC1_GetTime1_HourOut) = (17)) )) ^ (( ((_RTC1_GetTime1_HourOut) = (0)) )) )) ^ (( ((_RTC1_GetTime1_HourOut) = (6)) )) ))
digitalWrite(2, _swi3);
_RTC1.gettime();
_RTC1_GetTime1_HourOut = _RTC1.Hours;
//Плата:2
//Наименование:Подключение экрана и датчика температуры, датчик температуры включает подогрев при температуре ниже 24 градусов
//Комментарии:Данные с часов попадают на экран через конавертер число-строка и сложение строк на экран 1 и 2, туда же попадает значение температуры с DS18B20
if(_isTimer(_d18x2x1Tti, 2000)) <
_d18x2x1Tti = millis();
_d18x2x1O= _readDS18_ow12(_d18x2x1Addr, 0);>
_RTC1.gettime();
_RTC1_GetTime2_HourOut = _RTC1.Hours;
_RTC1_GetTime2_MinOut = _RTC1.minutes;
_RTC1_GetTime2_SecOut = _RTC1.seconds;
_RTC1_GetTime2_DayOut = _RTC1.day;
_RTC1_GetTime2_MounthOut = _RTC1.month;
_RTC1_GetTime2_YearOut = _RTC1.year;
if (1) <
_dispTempLength1 = (((((String(_RTC1_GetTime2_HourOut, DEC))) + (String(«:»)) + ((String(_RTC1_GetTime2_MinOut, DEC))) + (String(«:»)) + ((String(_RTC1_GetTime2_SecOut, DEC))) + (String(» «)) + (String(«»)) + (String(» «)) + (String(«»))))).length();
if (_disp1oldLength > _dispTempLength1) <_isNeedClearDisp1 = 1;>
_disp1oldLength = _dispTempLength1;
_lcd1.setCursor(int((16 — _dispTempLength1)/2), 0);
_lcd1.print(((((String(_RTC1_GetTime2_Ho urOut, DEC))) + (String(«:»)) + ((String(_RTC1_GetTime2_MinOut, DEC))) + (String(«:»)) + ((String(_RTC1_GetTime2_SecOut, DEC))) + (String(» «)) + (String(«»)) + (String(» «)) + (String(«»)))));
> else <
if (_disp1oldLength > 0) <_isNeedClearDisp1 = 1; _disp1oldLength = 0;>
>
if (1) <
_dispTempLength1 = (((((String(_RTC1_GetTime2_DayOut, DEC))) + (String(«/»)) + ((String(_RTC1_GetTime2_MounthOut, DEC))) + (String(«/»)) + ((String(_RTC1_GetTime2_YearOut, DEC))) + (String(» «)) + (( _floatToStringWitRaz((_d18x2x1O),1))) + (String(«C»))))).length();
if (_disp2oldLength > _dispTempLength1) <_isNeedClearDisp1 = 1;>
_disp2oldLength = _dispTempLength1;
_lcd1.setCursor(int((16 — _dispTempLength1)/2), 1);
_lcd1.print(((((String(_RTC1_GetTime2_Da yOut, DEC))) + (String(«/»)) + ((String(_RTC1_GetTime2_MounthOut, DEC))) + (String(«/»)) + ((String(_RTC1_GetTime2_YearOut, DEC))) + (String(» «)) + (( _floatToStringWitRaz((_d18x2x1O),1))) + (String(«C»)))));
> else <
if (_disp2oldLength > 0) <_isNeedClearDisp1 = 1; _disp2oldLength = 0;>
>
digitalWrite(3, ((_d18x2x1O)) > (24));
>
String _floatToStringWitRaz(float value, int raz)
<
return String(value,raz);
>
bool _isTimer(unsigned long startTime, unsigned long period )
<
unsigned long currentTime;
currentTime = millis();
if (currentTime>= startTime)
>
ISR(TIMER2_OVF_vect)
< TCNT2=100;
if(_PWDC >= 1000)
>
float _convertDS18x2xData(byte type_s, byte data[12])
<
int16_t raw = (data[1]
классно. Но слишком много технических деталей — я не стал углублятся. В Германии ваяние сего обойдется дороже покупки готового.
А вот по этому поводу:
«Включение циркуляции воды через фильтр в 6 утра, выключение в 8 утра, включение в 18 часов, выключение в 22 часа;»
мне нужно отписаься: я тоже так делал. Не надо так делать. Оказалось, что самое ценное в фильтре это бактерии. Они дохнут за пару часов без свежей воды. Поэтому все оставляют фильтр вклечунным всегда. Вот один переключатель и свободен.
Самодельный акваконтроллер на Arduino — необходим для домашнего аквариума
Основной функционал:
плавное включение-выключение освещения (рассвет-закат) 2 канала + люминесцентные лампы;
контроль температуры (включение выключение обогревателя);
подача жидких удобрений по времени (Микро, Макро, Железо);
контроль системы фильтрации (вкл-выкл по расписанию);
контроль подачи CO2 в аквариум (вкл-выкл по расписанию);
установка часов и календаря;
режим «Профилактики» с возможностью ручного включения-выключения исполнительных устройств (освещение, фильтр, обогрев, CO2);
Также планировалось реализовать автоматическое кормление рыб, посредством управления шаговым двигателем и созданием механической части самой кормушки, но руки пока не дошли, да и памяти и выходов Arduino Nano явно недостаточно.
Итак для сборки АкваКонтроллера нам понадобится:
1. Arduino Nano v 3.0 ATMEGA328P;
2. Модуль часов реального времени DS3231 I2C RTC;
3. LCD display 2004A I2C;
4. Блок реле 5V 4 канала;
5. Датчик температуры DS18B20 водонепроницаемый;
6. Три Дозирующий перистальтических насоса DC 12V;
7. Блок питания или драйвер 12V (для питания самой схемы и светодиодного освещения;
8. DC-DC преобразователь XL6009;
9. Ну и по мелочи: несколько мосфетов, транзасторов, тактильные кнопки 6*6*25 мм, китайская USB зарядка 5V, пищалка (buzzer 12085) и др.
Схема акваконтроллера представлена ниже:
Позже, после сборки схема была несколько доработана (добавлены подтягивающие резисторы в цепи затвора-истока мосфетов для предотвращения ложных запусков перистальтических насосов, рализовна полная гальваническая развязка блока силовых реле с основной схемой для предотвращения помех, и установлены LC-фильтры в цепи питания Ардуины и на нагрузочные розетки исполнительных устройств (особенно на розетку люминесцентных ламп с пускателем). Итоговую схему вы можете наблюдать ниже:
Почти все собрано навесным монтажем с помощью соединительных проводов (продаются такие специально для ардуины). На печатной плате спаяна только силовая часть (мосфеты) и кнопки управления.
Итак, изготавливаем печатные платы:
Припаиваем на платы электронные компоненты:
Выше показана также распайка соединения дисплея с кнопками с основной частью акваконтроллера посредством разъемов USB.
Кнопки 6*6*8 мм, показанные на фото, впоследствии были заменены на более подходящие для корпуса, а именнно вот на такие (6*6*25) :
Далее объединяем в корпус подходящего размера (125х83х32 мм) LCD дисплей и плату с кнопками управления:
Собираем из подручных материалов (ДСП и оргстекло) основной ящик-корпус акваконтроллера:
Оклеиваем корпус самоклейкой, и начинаем собирать основные блоки акваконтроллера в корпусе:
Первоначально у меня розовые полноспектральные светодиоды запитывались от отдельного драйвера на 34 Вольта 700 мА (его видно на 1 фото выше (маленький такой, расположен над USB зарядкой черного цвета, которая предназначена для запитывания блока реле) ), но позже выяснилось что данный драйвер не поддерживает диммирование (светодиоды начинают мигать при диммировании). Поэтому было принято решение заменить данный драйвер на DC-DC преобразователь XL6009, выставленный на выдачу 34 Вольт, и более мощный драйвер 12 Вольт 6.3 А (72 Ватта)(данная модель драйвера диммируется без проблем), от которого и запитывается вся схема, включая силовую часть со светодиодами и светодиодными полосками.
Полноспектральные светодиоды использованы на 3 Вт х 10 штук. Каждый рассчитан на 3.4 Вольта 700 мА. Белые светодиодные COB полосы (6500K), на 12 Вольт, 10-12 Ватт каждая также запитываются от общего источника питания 12В. Вот как выглядят светодиоды и полосы:
Питание к светодиодам освещения у меня подводится с помощью старого советского стереофонического аудиокабеля ( у него 4 отдельных жилы и экран (2 жилы для питания полноспектральных светодиодов, и 2 жилы запаралеленных друг с другом + экранная оплетка для питания белых светодиодных полос (у них повышенная нагрузка по току, поэтому так сделано) ) ). Соединяется кабель с помошью DIN разъема и гнезда 5-контактного (тоже аудио). Ниже показано это соединение + заводка удобрений и CO2 в аквариум:
И вот как выглядит конечная паутина проводов и элементов. Не очень эстетично, но зато работает! :
А вот так смотрятся смонтированные розетки (делал из того что было в наличии дома, поэтому розетки разные, где-то двойные, где-то одинарные) и перистальтические насосы:
Лицевая часть корпуса акваконтроллера:
Удобрения подаются из бутылочек с помощью трубок из под капельницы (Система), купленных в аптеке:
А вот так смотрится дисплей с кнопками управления:
И общий вид на аквариум:
А теперь давайте пройдемся по программной части акваконтроллера. Примерная блок-схема работы программы представлена ниже:
Главное меню Акваконтроллера , его экраны с настройками представлены ниже:
Думаю все понятно и без описания, что да как. Кроме этого еще есть несколько менюшек с настроками часов реального времени, режима «Профилактики» в котором можно вручную включать и выключать освещение (розовое, белое, и люминесцентные лампы), фильтр, обогреватель и подачу CO2. И тестовое окно для проверки работы перистальтических насосов :
Вот скомпилированный скетч в IDE Arduino:
Занимает 30718 байт памяти устройства (99%). Как видите все под завязку!
Ну и вот собственно сам скетч (дождались :)) :
В заключение можно посмотреть видеообзор (общее устройство, основные функции, пункты меню, демонстрация рассвета-заката) данного Акваконтроллера:
ReefCentral.ru — Форум. Морская аквариумистика.
Аква-контроллер от Олега
- Нравится
- Не нравится
Карен 10 фев 2013
Получил я наконец-то от Олега Дубинского (Oleg_il) его плату AQUA SHIELD V2, тот самый про который некоторые периодически упоминают, а другие спрашивают что это такое и где взять. А Олег, видимо из природной скромности, тихо помалкивает.
Для начала, информация для тех, кто не в курсе. Есть длиннющая тема, где обсуждается как легко и просто сделать контроллер для ледов с сенсорным экраном и прочими прелестями : DIY 6-Канальный контроллер LED c тач-панелью «3.2» из готовых блоков Ардуино (минимум пайки) Там хотя и сказано, что «минимум пайки», но зато забыли приписать «максимум чтения» , скоро страниц 100 будет, то есть быстро и просто врубиться новичку (на кого оно, собственно, и расчитано) не получится. К примеру, мне было категорически лень все это читать чтобы понять что купить и т. п.
А на деле все просто, покупаем:
1) Ардуино MEGA 2560
2) Экран
3) и, внимание, самое главное! — аква шилд от Олега (пишем ему, платим несколько шекелей, получаем). У него же берем программу, на которой все это дело работает.
Вот как он выглядит сверху и снизу:
Естественно, Олег профессиональный электронщик, так что сделано все лучшим образом и выглядит отлично.
А теперь, берем эти три платы (Arduino Mega 2560 + Аквашилд от Олега + Экран) и соединяем в трехслойный бутерброд.
Осталось подсоединить USB шнур, подключить к компу, залить туда программу и контроллер готов.
Естественно еще понадобится подключать его выходы к драйверам в светильнике, и к другим устройствам, но об этом, я надеюсь, сам Олег расскажет — что куда подключать, и какие функции имеются и вообще о возможностях.
Последний из вопросов, который у вас останется — как запихать этот бутерброд в светильник и удобно ли вам будет тыкать в него настраивая свет, но это уже другой вопрос. (Собственно, поэтому я сам предпочитаю более простые и более удобные на мой взгляд решения, типа этого моего контроллера, но это дело вкуса и он не ко всем драйверам подходит).
Давай, Олег, теперь твоя очередь рассказывать
(Все дружно плюсуем Олегу за отличную работу! Ну и мне за великолепные фотографии )
- Нравится
- Не нравится
Александр Авдеев 10 фев 2013
- Нравится
- Не нравится
Александр Авдеев 10 фев 2013
Позволю себе перенести сюда (до кучи)то, что Олег давал на АЛ.
Shield_v2_connection.pdf 20,96К 1208 скачиваний
- Нравится
- Не нравится
Александр Авдеев 10 фев 2013
- Нравится
- Не нравится
mixzt 10 фев 2013
Хех, а у меня уже шилд от Олега v3, он прислушался к моим просьбам, и сделал фактически конфетку Шилд правда пока в пути, но Израиль уже давно покинул, теперь надеемся на нашу почту.
Шим полностью 11бит на все 8 каналов(1Кгц), по пожеланию Олега, адаптирую на 12бит шим 500Гц
- Нравится
- Не нравится
Александр Авдеев 10 фев 2013
- Нравится
- Не нравится
Карен 10 фев 2013
- Нравится
- Не нравится
oleg_il 10 фев 2013
Карен СПАСИБО.
Я проснулся.
Пришлось преодолеть лень, расчехлить палатку и фотографировать в ней.
По порядку. Раз уж подняли тему я постараюсь на неделе выложить инструкцию по сборке всего бутерброда, там есть ньюансы.
Подключение самого шилда уже Александр выложил — надеюсь там все понятно.
Кратенько, в телеграфном стиле функции шилда версии 2
— два варианта часов (илиили), дорогие сверхточные ds3231 или обычные ds3107
— вместо батарейки конденсатор (ионистор) на 350- 400 часов поддержки без питания
— место под дополнительную память (EEPROM)
— 8 каналов 0-10в или ШИМ (в любых сочетаниях), с напряжениями от 5 и до 10в — по запайке. Т.е совместимо с абсолютно всеми известными на сегодня драйверами
— 6 транзисторных ключей средней мощности под вентиляторы или реле. Часть из них ШИМ (для вентиляторов), часть просто ключи (под реле, помпы и тд)
— собственный достаточно мощный источник питания (+5в и + 3.3в), т. о стабилизатор на меге перестает греться так сумашедше как сейчас при питании от 12в
— питание от 12в
— отдельный ШИМ «драйвер» луны — под индикаторные диоды
— разьем с питанием и связью под wireless (nordic cpu), совпадает с платой от ITEADSTUDIO
— разьемы под платки atlas (PH, ORP и тд http://atlas-scientific.com)
— электрически нормальное согласование экрана и SD карты с мегой, с помощью IC а не резисторов
— выход на термодатчики (резистор внутри платы)
— пищалка аларма
— легкодоступная кнопка сброса платы меги, вместо внутренней
— крепеж экрана на 4х винтах, а не на соплях как сейчас
Ну обьясните «темным» . для чего ЭТО надо и чем наши «старые» уже устарели?
Ну вот, не успели чтото сказать, как уже «ревнушки»
Да, уже есть новый шилд. Отличия не такие уж и принципиальные, чтобы говорить что версия 2 устарела , но всеже есть.
Отличия шида версии 3 от версии 2
1. Поддержка 11бит версии программы.
С подачи Миши(mixzt) и при его непосредственном участии изменено распределение выводов ШИМов для того чтобы можно было использовать не только
8бит режим (Jarduino_V1_2_Oleg_mod), а и 11бит. Как только мы закончип проверки программы, выложим эту версию.
Шилд версии 2 не поддерживает 100% этот режим, поэтому для него сделанна модификация программы 8/11 где 5 наиболее «заметных глазу» цветов работают в 11бит режиме, а три (UV, RoyalBlue, TV) остались в 8бит режиме. И поскольку в таком варианте сильно уменьшилась «ступенька» между соседними отсчетами, то и изменение яркости происходит раз в секунду, а не в пять (как в 8бит режиме)
2. Применены чуть более дорогие компоненты, но зато уменьшилось их количество. Мне проще паять и на цене не отразилось
3. 7 транзисторных ключей, а не 6 как раньше. И сами ключи немного более мощные.
4. Изменено на 0.5мм расстояние между конекторами Р22 и Р20. Теперь на них можно одеть или два конектора по 14пин или один большой (34 или 40) от старых компьютерных харддисков.
5. Добавлена еще одна линия для подключения термодатчиков. Иногда если требуется контроллер «растянуть» на две аквы — это удобнее и надежнее две независимых линии термодатчиков.
Все.
Внешний вид
Это запаянна версия с ШИМ выходом.
А вот вариант менее востребованный (а зря) с выходами 0-10
конекторы еще не запаянны по бокам. Не обращайте внимания.
Вот еще вариант сделанный для одного форумчанина (снято наспех на рабочем столе )
Занимает в «ширину» меньше места и экран на шлейфе.
Раз уж мы заговорили о контроллерах, то у меня есть следующие идеи, хотелось бы услышать мнения о желательности/необходимости
1. Усеченная версия контроллера для миников/»бюджетных» светильников. Меньше выходов/ключей/функций.
Базируется на моей програме Oleg_mod. Тач экран 2.2инча, 4-6 каналов ШИМ, габариты приблизительно вдвое сборки на меге. Цена — ниже
2. Гаджет — имитация молнии в аквах
3. Платы с драйверами 4/6 драйверов на плате, аналоговое (0-10) и ШИМ управление одновременно
4. Ну и от этого наверно никто не откажется — вэйв контроллер для 220АС помп. Если получится нормаль конечно.
- Нравится
- Не нравится
Starcomputer 11 фев 2013
Усеченная версия контроллера для миников/»бюджетных» светильников. Меньше выходов/ключей/функций.
Для бюджетных аквариумов экран не нужен, т. к. это значительное удорожание девайса, да и согласен я с Кареном, на мой взгляд он вообще не нужен.
Обосную. Я на экран своего контроллера смотрю раз в неделю, и то случайно, а что такое пользоваться им для настройки, так уже и забыл как это делается
В свое время мы работали над проектом, названным Аквадуино
Суть в следующем: имеем основной блок, к которому как платы расширения могут присоединяться различные устройства, от просто силовых ключей на 220В, до драйверов светодиодов, рН, редокс усилителей. Увы энтузиастов мало и проект заглох
вэйв контроллер для 220АС помп. Если получится нормаль конечно.
У ТЕБЯ получится
Бронь 2 шт плиз
- Нравится
- Не нравится
Александр Авдеев 11 фев 2013
- Нравится
- Не нравится
Starcomputer 11 фев 2013
ЭКРАН по мне ОЧЕНЬ ИНТЕРЕСНО
Может стоит Олегу предусмотреть два режима управления ? Через собственный тач-скрин и с помощью компа через блютуз ?
Блютуз можно делать отдельным девайсом и подключать при желании.
Далее программа определяет при старте наличие экрана / блютуза и ведет себя соответственно. Ну либо два варианта прошивки.
- Нравится
- Не нравится
Карен 11 фев 2013
- Нравится
- Не нравится
Starcomputer 11 фев 2013
Так — решение простое — проц смотрит подключение блютуса (уровень на его ноге, куда статус выводится), если подключен — экран вырубается.
А если кому-то захочется и то и то ? Экран то красиво смотрится
- Нравится
- Не нравится
Карен 11 фев 2013
- Нравится
- Не нравится
Александр Авдеев 11 фев 2013
. Естественно еще понадобится подключать его выходы к драйверам в светильнике, и к другим устройствам, но об этом, я надеюсь, сам Олег расскажет — что куда подключать, и какие функции имеются и вообще о возможностях.
Последний из вопросов, который у вас останется — как запихать этот бутерброд в светильник . Давай, Олег, теперь твоя очередь рассказывать .
C помощью Олега (из-за ошибки распайки, в разьеме старого БП 12В, не загорался экран) вчера запустил мини бутерброд. Удалось загрузить и один из скетчей Олега (не помню какая его версия). Теперь для начала, хотелось бы услышать, как правельно подключить термодатчики?(приобрел на Ebay уже давно по совету Ваге)
- Нравится
- Не нравится
Starcomputer 11 фев 2013
когда запущен интерфейс на компе, (блютус связь установлена) экран отключен, закрыли программу — экран заработал снова.
А ну так конечно
как правельно подключить термодатчики?
Так на схеме же есть подключение.
GND — P20.9
DQ — P20.13
VDD — P20.14