Перейти к контенту
МОРСКОЙ АКВАРИУМ - форум Аква Лого

Аква Лого / мы на связи
Аква Лого в VK
Аква Лого в Телеграмм
Аква Лого в соцсетях

Судак-тудак

У дороги новый чибис

Идиакант

svyaz

DIY 6-Канальный контроллер LED c тач-панелью "3.2"

Рекомендуемые сообщения

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

Здравствуйте, svyaz! Извините, не знаю как к Вам по имени обращаться.

 

У меня есть одна идея. Не хочу тянут шлейф проводов от контроллера к светильнику. Это особенно актуально с учетом того, что число цветовых каналов будет довольно велико, а светильник будет висеть на подвесе, с потолка. В свое время я купил 4 модуля беспроводной связи на базе NRF24L01+. Стоят они копейки. Под них есть готовая библиотека для Ардуино. Сегодня заказал вторую плату мега2560. Идея вот в чем: одну ардуину (без экрана, но с беспроводным модулем) и все LED драйвера установить непосредственно на светильнике. Там же будет стоять DC/DC конвертор на 12 вольт (правда, он пока не пришел). При таком варианте на светильник заведу только 48В от блока питания, все остальное будет формироваться на месте. А вторая такая же плата Arduino Mega 2560 будет мастер-контроллером, с экраном, передавая данные по такому же радиомодулю. По идее, в дальнейшем хотелось бы также установить на этот мастер веб-сервер и иметь возможность дистанционного управления через интернет/по телефону. Но это потом.

 

Теперь вопрос. Я пока не пытался вникать в структуру программы - ни Вашей, ни Jamie. По идее, надо будет разбить ее на 2 куска: чтобы процессор мастера генерировал какие-то стандартные команды по некоему протоколу (что-то типа "установить ШИМ канала #11 на уровень 25%"), а процессор исполнительного устройства декодировал эти команды и исполнял их. Хорошо бы также наладить некую обратную связь/подтверждение получения и исполнения команды (чтобы мастер был уверен, что связь не прервалась), а также, было бы хорошо предусмотреть некую программу аварийной работы в случае потери связи с мастером. В дальнейшем, точно такие радиомодули вкупе с маленькими дешевыми ардуинами можно будет встроить во все исполнительные устройства, сделав все модули совершенно автономными. Вопрос вот в чем: какая версия программы больше подходит под такую переделку? На что лучше ориентироваться - Ваш код, или код Jamie?

Изменено пользователем vahegan (см. историю изменений)

Поделиться этим сообщением


Ссылка на сообщение

Здравствуйте, svyaz! Извините, не знаю как к Вам по имени обращаться.

Меня Вадим зовут

 

У меня есть одна идея. Не хочу тянут шлейф проводов от контроллера к светильнику. Это особенно актуально с учетом того, что число цветовых каналов будет довольно велико, а светильник будет висеть на подвесе, с потолка. В свое время я купил 4 модуля беспроводной связи на базе NRF24L01+. Стоят они копейки. Под них есть готовая библиотека для Ардуино. Сегодня заказал вторую плату мега2560. Идея вот в чем: одну ардуину (без экрана, но с беспроводным модулем) и все LED драйвера установить непосредственно на светильнике. Там же будет стоять DC/DC конвертор на 12 вольт (правда, он пока не пришел). При таком варианте на светильник заведу только 48В от блока питания, все остальное будет формироваться на месте. А вторая такая же плата Arduino Mega 2560 будет мастер-контроллером, с экраном, передавая данные по такому же радиомодулю. По идее, в дальнейшем хотелось бы также установить на этот мастер веб-сервер и иметь возможность дистанционного управления через интернет/по телефону. Но это потом.

Я читал Вашу идею на Британском форуме, я пока не настолько разбираюсь что бы гарантировать что через месяц будет все работать, так как занимаюсь ардуиной после работы, а не вместо :)

На данном этапе в основном адаптирую различные функции под связку ардуино + ITDB02 из других проектов.

Таким образом и практикуюсь. Следующим этапом будет добавление изернет модуля, так как у меня есть куски кода.

Модуль уже заказан (Wiznet W5100) и заказал пару радио модулей NRF24L01, заказывал в Украине, через пару дней будут.

Я смотрю NRF24L01 популярны, есть много примеров, попробуем разобратся.

 

Теперь вопрос. Я пока не пытался вникать в структуру программы - ни Вашей, ни Jamie. По идее, надо будет разбить ее на 2 куска: чтобы процессор мастера генерировал какие-то стандартные команды по некоему протоколу (что-то типа "установить ШИМ канала #11 на уровень 25%"), а процессор исполнительного устройства декодировал эти команды и исполнял их. Хорошо бы также наладить некую обратную связь/подтверждение получения и исполнения команды (чтобы мастер был уверен, что связь не прервалась), а также, было бы хорошо предусмотреть некую программу аварийной работы в случае потери связи с мастером. В дальнейшем, точно такие радиомодули вкупе с маленькими дешевыми ардуинами можно будет встроить во все исполнительные устройства, сделав все модули совершенно автономными. Вопрос вот в чем: какая версия программы больше подходит под такую переделку? На что лучше ориентироваться - Ваш код, или код Jamie?

 

Оба кода используют оду и ту же связку железа, ни каких переделок не требуется, разве только вывести дополнительные порты

(таймеры, доз. помпы и др. ) Так же можно перенести функции из одного контроллера в другой.

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

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

 

post-972-1340051147_thumb.jpg

 

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

Такой пример: загрузка 8 графических кнопок с sd карты (в меню часов) занимает секунд 5, из памяти ардуино - меньше секунды.

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

Поделиться этим сообщением


Ссылка на сообщение

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

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

Изменено пользователем BlackAlex (см. историю изменений)

Поделиться этим сообщением


Ссылка на сообщение

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

Вот например графика из меню термодатчиков (в нужном размере)

 

post-972-1340052539.jpg

 

а вот оригинал из которого я его сделал, проблема подобрать такой маленький шрифт, чтоб подписать датчики и при этом он был чиаем. Возможно можно что-то по лучше и красивее придумать, стрелки и положение отображения температуры - могут быть любыми (на сколько есть фантазии), я потом по картинке спозиционирую. В принципе размер картинки может быть 320х240, но тогда время загрузки картинки около 2-х секунд, что несколько раздражает особенно когда меню не одно, при указанном размере - около 1 сек. Сам экран нельзя сказать что очень качественный, поэтому в реальности картинка выглядит тускнее, нужно это учитывать.

 

post-972-1340052743_thumb.jpg

 

Шриф должен быть в формате 6 символов на 16, первый и последний символ отсутствуют. Расположение букв алфавита - может быть любым, но желательно как на картинке.Вот оригинальный размер, поддерживаемые форматы png, .jpg, .gif.

 

SmallFont.png

 

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

 

Sinclair_S.png

 

Другого русского шрифта (в нужном нам формате) кроме того что я выложил с jarduino - в природе не существует.

 

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

Раз уже есть такой экран - нужно его использовать по полной иначе можно вообще без экрана, так проще намного.

 

post-972-1340055406_thumb.jpg

Изменено пользователем svyaz (см. историю изменений)

Поделиться этим сообщением


Ссылка на сообщение

Добрый день, Вадим!

 

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

 

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

 

Да, увы, но боюсь, что это основная проблема для всех нас...

 

На данном этапе в основном адаптирую различные функции под связку ардуино + ITDB02 из других проектов.

Ага, интересно. В продолжение идеи - можно попробовать сделать проект конфигурируемым - пометил нужные тебе модули, скомпилировал, и получил программу "под себя". То есть, скажем, если я не буду применять автокормушку, зачем мне компилировать ее код, занимая место в памяти и в меню?

 

Не знаю, насколько реализуем такой подход?

 

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

Модуль уже заказан (Wiznet W5100) и заказал пару радио модулей NRF24L01, заказывал в Украине, через пару дней будут.

Я смотрю NRF24L01 популярны, есть много примеров, попробуем разобратся.

Оба кода используют оду и ту же связку железа, ни каких переделок не требуется, разве только вывести дополнительные порты

Ну, скажем так - заставить работать модули NRF24L01, думаю, будет нетрудно. Меня больше волнует переделка основного кода - насколько легко будет разбить его на исполняемую и командную части. Это зависит, в основном, от стиля программирования, как написан основной код. Поскольку Вы писали, что полностью переписали код и с Jarduino он теперь не имеет ничего общего, я ожидал услышать Ваши коммментарии именно по этому поводу: как структурирован код, и насколько легко будет разбить его - и какая версия кода больше подходит под разбиение в структурном плане - Ваша, или оригинальная Jarduino. Функционал и красивости пока на втором плане - это всегда можно будет доделать лучшим образом - сейчас меня заботит именно глобальное изменение структуры программы - как-бы, объектная ориентированность, модульность. Но это и самое сложное, так как надо разобраться с основным кодом, понять логику работы.

 

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

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

 

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

Вот здесь, мне кажется, должно помочь разбиение на командные и исполняющие модули. То есть, все функции по реализации того же ШИМ управления, например, можно спокойно перенести на исполняющий Arduino (расположенный на самом светильнике), а мастер будет только посылать ему команды. Это должно сильно разгрузить ресурсы мастера, освободив место на улучшение графики и под веб-сервер.

 

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

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

К сожалению, основная проблема - свободное время...

 

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

А не пробовали сначала апскейлить в очень большое разрешение, работать над графикой только в большом разрешении, а потом уже делать из него нужное разрешение в самом конце? Или не помогает?

Поделиться этим сообщением


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

Ваге, уже было множество попыток и здесь и на Украинском форуме заплатить проффесиональным программистам дабы они создали нечто легко повторяемое и соответствующее требованиям аквариумистов. Но получив ТЗ все куда то исчезают, причем на долго.

Связка ардуино + ITDB02 - это лучшее на сегодня решение, собрать и запрограммировать сможет практически любой, а колличество существующих шилдов http://shieldlist.org/ позволят создать все что угодно. Модули ардуино есть в магазинах по всему миру, не нужно ждать что кто-то вытравит и вышлет плату.

Ага, интересно. В продолжение идеи - можно попробовать сделать проект конфигурируемым - пометил нужные тебе модули, скомпилировал, и получил программу "под себя". То есть, скажем, если я не буду применять автокормушку, зачем мне компилировать ее код, занимая место в памяти и в меню?

 

Не знаю, насколько реализуем такой подход?

"Открытый" контроллер Reef Angel построен подобным образом, хотя какая разница если есть 258 кб доступной памяти (8кб занимает загрузчик), при использовании например 100 из 258 - быстрее работать не будет.

Ну, скажем так - заставить работать модули NRF24L01, думаю, будет нетрудно. Меня больше волнует переделка основного кода - насколько легко будет разбить его на исполняемую и командную части. Это зависит, в основном, от стиля программирования, как написан основной код. Поскольку Вы писали, что полностью переписали код и с Jarduino он теперь не имеет ничего общего, я ожидал услышать Ваши коммментарии именно по этому поводу: как структурирован код, и насколько легко будет разбить его - и какая версия кода больше подходит под разбиение в структурном плане - Ваша, или оригинальная Jarduino. Функционал и красивости пока на втором плане - это всегда можно будет доделать лучшим образом - сейчас меня заботит именно глобальное изменение структуры программы - как-бы, объектная ориентированность, модульность. Но это и самое сложное, так как надо разобраться с основным кодом, понять логику работы.

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

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

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

Вот здесь, мне кажется, должно помочь разбиение на командные и исполняющие модули. То есть, все функции по реализации того же ШИМ управления, например, можно спокойно перенести на исполняющий Arduino (расположенный на самом светильнике), а мастер будет только посылать ему команды. Это должно сильно разгрузить ресурсы мастера, освободив место на улучшение графики и под веб-сервер.
Здесь я не уверен, контроллеру все равно нужно будет каждые 15 минут читать таблицу яркости всех каналов, да и еще если добавить обратную связь прийдется дополнительно опрашивать slave контроллер.
А не пробовали сначала апскейлить в очень большое разрешение, работать над графикой только в большом разрешении, а потом уже делать из него нужное разрешение в самом конце? Или не помогает?
Я так и делаю с текстом и небольшими картинками вот минимально читаемая картинка, хотя уже буква в с близи выглядит коряво, но это минимальный размер кириллического шрифта.

post-972-1340093465.jpg

Поделиться этим сообщением


Ссылка на сообщение

Ну, скажем так - заставить работать модули NRF24L01, думаю, будет нетрудно. Меня больше волнует переделка основного кода - насколько легко будет разбить его на исполняемую и командную части. Это зависит, в основном, от стиля программирования, как написан основной код.

В общем я тоже сильно увлекся Ардуино , и переделками кода .

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

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

//Define the PWM PINS for the LEDs

const int ledPinSump = 7; //Канал света для сампа 7 пин

const int ledPinBlue = 8; //Канал света синий 8 пин

const int ledPinWhite = 9; //Канал света белые 9 пин

const int ledPinRoyBlue = 10; //Канал света роялы 10 пин

const int ledPinRed = 11; //Канал света красный 11 пин

const int ledPinUV = 12; //Канал света UF 12 пин

const int ledPinMoon = 13; //канал света для луны

Как видим переменные нам извесны , это одноименные ledPinSump, ledPinBlue , и так далее .

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

вот примерно простой код который заставит передать данные ledPinSump

void setup()

{

Serial.begin(9600); // код открытия сериал соединения на скорости 9600

}

 

void loop() //основной цикл

{

Serial.println(ledPinSump); // передает значение переменной ledPinSump через сериал соединение .

}

 

 

Вот этот код на канал света в сампе , для остальных каналов делаем по аналогии .

 

На втором ардуино который подключен к лампе код будет такой :

void setup()

{

Serial.begin(9600); // код открытия сериал соединения на скорости 9600

}

 

void loop() //основной цикл

{

while(Serial.available() == 0); // бесконечный цикл ожидания данных с сериал порта , и сравнения его с 0

int ledPinSump = Serial.read() - '0' ; // получает данные с сериал порта , '0' - переводит байт данные в целое число и присваивает его переменной ledPinSump

ledPinSump = constrain(ledPinSump, 0, 255); // это защита функцией constrain , которая гарантирует что данные будут от 0 до 255

}

Ну как то так :) .

}

Поделиться этим сообщением


Ссылка на сообщение

В общем я тоже сильно увлекся Ардуино , и переделками кода .

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

Зачем так делать? Думаю, надо ставить на мегу всего один радиомодуль, а обращения к разным устройствам разделить на уровне протокола. Типа, у каждого устройства на "радиошине" будет свой порядковый номер, скажем, длиной в 1 байт. Когда мастер отсылает команду, в заголовке сообщения должен быть указан номер устройства, к которому он обращается. Соответственно, сообщение получат все устройства, но отреагирует только то, к которому обращались. В общем, протокол должен быть чем-то похожим на работу Ethernet (и в частности, надо будет предусмотреть механизм борьбы с "collisions", так как передачу данных может инициировать не только мастер, но и сами управляемые устройства).

 

Да, и еще, слушать все время последовательный порт как-то нехорошо, на это уйдут все ресурсы. Думаю, надо организовать реакцию по прерыванию, насколько помню, радиомодуль генерирует прерывания при поступлении сигнала.

 

Кстати, NRF24L01 разве к последовательному порту цепляется? Я был уверен, что он на SPI садится.

Вот здесь вроде про этот модуль написано, и именно в плане SPI подключения. Или я что-то не так понимаю?

Изменено пользователем vahegan (см. историю изменений)

Поделиться этим сообщением


Ссылка на сообщение

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

Передатчик :

void setup()

{

SPI_DIR = ( CE + SCK + CSN + MOSI);

SPI_DIR &=~ ( IRQ + MISO);

// attachInterrupt(1, _ISR, LOW);// interrupt enable

Serial.begin(9600);

init_io(); // Initialize IO port

unsigned char status=SPI_Read(STATUS);

Serial.print("status = ");

Serial.println(status,HEX); // read the mode’s status register, the default value should be ‘E’

Serial.println("*******************TX_Mode Start****************************");

TX_Mode(); // set TX mode

}

void loop()

{

int k = 0;

for(;;)

{

for(int i=0; i<32; i++)

tx_buf = k++;

unsigned char status = SPI_Read(STATUS); // read register STATUS's value

if(status&TX_DS) // if receive data ready (TX_DS) interrupt

{

SPI_RW_Reg(FLUSH_TX,0);

SPI_Write_Buf(WR_TX_PLOAD,tx_buf,TX_PLOAD_WIDTH); // write playload to TX_FIFO

}

if(status&MAX_RT) // this is retransmit than SETUP_RETR

{

SPI_RW_Reg(FLUSH_TX,0);

SPI_Write_Buf(WR_TX_PLOAD,tx_buf,TX_PLOAD_WIDTH); // disable standy-mode

}

SPI_RW_Reg(WRITE_REG+STATUS,status); // clear RX_DR or TX_DS or MAX_RT interrupt flag

delay(1000);

}

}

 

 

 

Приемник :

void setup()

{

SPI_DIR = ( CE + SCK + CSN + MOSI);

SPI_DIR &=~ ( IRQ + MISO);

// attachInterrupt(1, _ISR, LOW); // interrupt enable

Serial.begin(9600);

init_io(); // Initialize IO port

unsigned char status=SPI_Read(STATUS);

Serial.print("status = ");

Serial.println(status,HEX); // read the modes status register, the default value should be E

Serial.println("*****************RX_Mode start******************************R");

RX_Mode(); // set RX mode

}

void loop()

{

for(;;)

{

unsigned char status = SPI_Read(STATUS); // read register STATUS's value

if(status&RX_DR) // if receive data ready (TX_DS) interrupt

{

SPI_Read_Buf(RD_RX_PLOAD, rx_buf, TX_PLOAD_WIDTH); // read playload to rx_buf

SPI_RW_Reg(FLUSH_RX,0); // clear RX_FIFO

for(int i=0; i<32; i++)

{

Serial.print(" ");

Serial.print(rx_buf,HEX); // print rx_buf

}

Serial.println(" ");

}

SPI_RW_Reg(WRITE_REG+STATUS,status); // clear RX_DR/TX_DS/MAX_RT interrupt flag

delay(1000);

}

}

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

Ну а так вот файлик в которм можно многое подчерпнуть для такой связки .

SPI_rf24L01.zip

 

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

Изменено пользователем log-win (см. историю изменений)

Поделиться этим сообщением


Ссылка на сообщение

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

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

 

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

Не, это нехорошее решение. Длинные провода, по которым бежит ШИМ сигнал, проведенные параллельно друг другу, будут вызывать наводки на соседних каналах. И опять же, вся идея в том, чтобы сделать светильник автономным, связывая проводами только с блоком питания.

 

Второй Ардуино мега понадобится только для светильника, так как именно там нужно множество ШИМ каналов. Я вчера уже заказал себе Chinduino Mega2560, всего 18 долларов, надеюсь, придет за 2-3 недели. В остальные исполнительные устройства можно будет встроить миниатюрные и дешевые Arduino Pro Mini.

Изменено пользователем vahegan (см. историю изменений)

Поделиться этим сообщением


Ссылка на сообщение

Cуществует библиотека EasyTransfer для связи двух ардуино, ну и если в гугле поискать EasyTransfer + NRF24L01, можно найти примеры

Я себе тоже заказал еще одну ардуину 2560, второй экран уже получил (раньше атмегами страдал - теперь сплошные ардуины)

На днях все должно прийти, сразу попробую связать их между собой.

Изменено пользователем svyaz (см. историю изменений)

Поделиться этим сообщением


Ссылка на сообщение

Я себе тоже заказал еще одну ардуину 2560, второй экран уже получил (раньше атмегами страдал - теперь сплошные ардуины)

А экран то второй зачем? ИМХО экран только на мастере нужен, а на исполнительных блоках и светодиодов индикаторных будет достаточно. Самое большее - алфавитно-цифровой индикатор (скажем, в pH метре, или терморегуляторе). Кстати, вот неплохой комплект под Ардуино для измерения pH: pH CIRCUIT DEVELOPMEN​T KIT FOR ARDUINO, там же и под ORP есть. Правда, их модуль по последовательному порту работает.

Изменено пользователем vahegan (см. историю изменений)

Поделиться этим сообщением


Ссылка на сообщение

А экран то второй зачем? ИМХО экран только на мастере нужен, а на исполнительных блоках и светодиодов индикаторных будет достаточно. Самое большее - алфавитно-цифровой индикатор (скажем, в pH метре, или терморегуляторе).

Я как и большинство здесь присутствующих - моряк, правда здесь на форуме я свой аквариум не показывал, но у меня есть на пикасе галерея и есть полное описание всей системы Сейчас у меня полный перезапуск (были проблемы с ДСБ)

Ну и соответственно "заболел" LED и делаю свой светильник (уже почти закончил) В светильнике будут светодиоды всех видов, почти все cree, китайские оранжевые, deep red (2 вида) и 2 вида UV 400 b 420nm, но самое главное это почти половина MCE 4CT RGB+W (видел Японский светильник полностью на rgb led) Буду тут наверное первый с таким светильником, ну и радиатор у меня такой - что можно без вентиляторов.

Контроллер собственно под этот светильник и делал (иначе зачем он мне нужен), но так как "пошла жара" c ардуиной, нужно другой комплект для экспериментов.

 

Кстати, вот неплохой комплект под Ардуино для измерения pH: pH CIRCUIT DEVELOPMEN​T KIT FOR ARDUINO, там же и под ORP есть. Правда, их модуль по последовательному порту работает.

В контроллере SebduinoV2 используется именно такой электрод, на сайте производителя есть скетчи для ардуино, для всех выпускаемых ими датчиков.

Поделиться этим сообщением


Ссылка на сообщение

Вот например графика из меню термодатчиков (в нужном размере)

 

post-972-1340052539.jpg

 

 

 

ну, с таким градиентом на стрелках сильно картинку не ужать. разрешение у экрана какое? Вообще надо делить на дробное, как в HTML и подставлять - стрелки то одинаковые.

По шрифтам не совсем понял, буду вникать.

Поделиться этим сообщением


Ссылка на сообщение

Позволю добавить свои 5 копеек.

 

На мой взгляд, разделять модули нужно чуть по другому принципу. Модуль на светильнике - будет полноценным контроллером, самостоятельно обслуживающим себя и заложенное в себе расписания и ситуации(управление вентиляторами на LED). В принципе, он должен быть полностью автономный и без всяких экранов, разве что индикатор аварийной ситуации. А по по внешним командам (радиомодули с SPI тут подходят очень хорошо) он может перейти в ручной режим, вернуть свой статус, изменить свои настройки.

 

А контроллер с экраном будет использоваться для изменения настроек первого контроллера и управления тем, что находится рядом с ним (непосредственно к нему подключено) (хотя и здесь можно сделать отдельные модули, например для управления розетками 220V на маленьких arduino+реле).

Ну и для связи с внешним миром.

Поделиться этим сообщением


Ссылка на сообщение

Позволю добавить свои 5 копеек.

 

На мой взгляд, разделять модули нужно чуть по другому принципу. Модуль на светильнике - будет полноценным контроллером, самостоятельно обслуживающим себя и заложенное в себе расписания и ситуации(управление вентиляторами на LED). В принципе, он должен быть полностью автономный и без всяких экранов, разве что индикатор аварийной ситуации. А по по внешним командам (радиомодули с SPI тут подходят очень хорошо) он может перейти в ручной режим, вернуть свой статус, изменить свои настройки.

 

А контроллер с экраном будет использоваться для изменения настроек первого контроллера и управления тем, что находится рядом с ним (непосредственно к нему подключено) (хотя и здесь можно сделать отдельные модули, например для управления розетками 220V на маленьких arduino+реле).

Ну и для связи с внешним миром.

Вот оно, правильное решение !

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

В компиляторе Ардуино открываем serial monitor и печатаем указанный ниже символ. Мне такая идея сразу понравилась, так проще и минимум переделок

 

//------------------------------------- Команды через ком порт ----------------------------------------------

void serialCommands()

{ int command = 0; // Эта команда символ в ASCII форме, отправленная в последовательный порт

int i; byte test;

if (Serial.available()) { // Look for char in serial que and process if found

command = Serial.read();

if (command == 77) { // "M" = Menu

dispScreen=1; clearScreen(); menuScreen(); // переход в главное меню

} if (command == 67) { // "C" = Cancel

dispScreen=0; clearScreen(); mainScreen(true);

} if (command == 84) { // "T" = Time and Date

dispScreen=2; clearScreen(); clockScreen(); // переход в clock

} if (command == 83) { // "S" = Seting

dispScreen=12; clearScreen(); generalSettingsScreen(); // переход в меню настройки

} if (command == 71) { // "G" = Graphic

dispScreen=16; clearScreen(); graficoScreen(); // переход в главное меню

} if (command == 82) { // "R" = Reset (clear memory)

dispScreen=1; clearScreen(); resetScreen(); // переход в главное меню

} if (command == 90) { // "Z" = Screensaver

clearScreen(); screenSaver(); TimeSaver(true);

 

 

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

analogWrite(ledPinMoon, moon_out); сразу под ней скопируйте код:

 

Serial.println(sled_out);

Serial.println(wled_out);

Serial.println(bled_out);

Serial.println(rbled_out);

Serial.println(rled_out);

Serial.println(uvled_out);

 

Залейте скетч в ардуино, запустите serial monitor и наблюдайте следующую картину. Каждую секунду ардуино посылыет информацию о яркости каналов.

Такую манипуляцию нужно проделать с другими функиями температура и т.д. и обратная связь готова.

 

post-972-1340125297.jpg

Изменено пользователем svyaz (см. историю изменений)

Поделиться этим сообщением


Ссылка на сообщение

Всё, получил все компоненты и теперь попробую реализовать следующую идею:

 

Контроллер slave (в светильнике) - имеет полноценный код jarduino, но с добавление некоторых функций, а именно: открыт доступ (через радиоканал) к eeprom, адреса где какие настройки хранятся, нам известны.

 

Контроллер master - код jarduino, но только графическая оболочка, при сохранении настроек, они сохраняются не в самом контроллере, а отсылаются по радиоканалу в контроллер slave и в конце цикла записи отсылается подтверждение о удачно віполненной команде.

 

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

у кого не работает - установите в Serial Monitor скорость 115200 (по умолчанию там 9600baud)

Поделиться этим сообщением


Ссылка на сообщение
Всё, получил все компоненты и теперь попробую реализовать следующую идею:

 

Вадим, отлично! Дай знать, какие будут успехи!

Поделиться этим сообщением


Ссылка на сообщение

А есть какая нибудь красивая рамка для данного экрана?

Поделиться этим сообщением


Ссылка на сообщение

Есть экраны с 3.2" 240х400 , их можно брать ?

Поделиться этим сообщением


Ссылка на сообщение

Есть экраны с 3.2" 240х400 , их можно брать ?

Брать - можно, работать будут, но справа экрана будет пустая полоса шириной 80 пикселей.

Для полного заполнения экрана, нужно в коде делать смещение по Х либо в эту часть экрана перенести некоторую часть функций, кнопки сохранить и отмена например, как это сделал один Бразилец.

 

post-972-1340224824_thumb.jpg post-972-1340224922_thumb.jpg

Изменено пользователем svyaz (см. историю изменений)

Поделиться этим сообщением


Ссылка на сообщение

Всем привет!

 

Решил присоединиться к вашему клубу любителей тач-панелей и Аурдино :).

 

Сегодня заказал следующие компоненты:

 

Сhinduino Mega2560

LCD Module Display Touch Panel SD card

ITDB02 Arduino Mega shield

 

 

Будет ли работать такая связка??

Поделиться этим сообщением


Ссылка на сообщение

А я вчера :) именно эту "связку"

Поделиться этим сообщением


Ссылка на сообщение

А я вчера :) именно эту "связку"

 

ОК, будем ждать ...

Осталось выпросить у кого-нибудь нормальный код, желательно с русским интерфейсом :hmmm:

Всю жизнь работал с ПИКами, теперь пора учить АВРки :shock:

 

P.S. забыл про датчики температуры :497762:

 

DS18b20

Изменено пользователем AlexKrumholz (см. историю изменений)

Поделиться этим сообщением


Ссылка на сообщение

Всем привет

Сначала заболел аквариумом, пока читал, что да как заразился ледами, и на этой волне подцепил заразу-контроллер за оными. Оценив, что есть из готового - это 100 баксов. Потом сюда занесло. Прикинув во что выливается этот проект, принял решение - дерзать. Люблю DIY. Плюс натура у меня плохая - если делать - то сразу нормально, чтоб потом сопли не доделывать.

Несколько раз перечитывал эту тему, пару раз прочитал британскую ветку Джейми.

Тут был пост о том что надо, на что был ответ - скажи что хочешь получить, по этому формулирую вопрос, точнее вопросы.

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

2. Количество каналов - как есть, то есть - 6+луна

3. Пару (тройку) термодатчиков - вода, радиатор, ну еще раз радиатор (для примера)

4. Соответственно управление вентиляторами от этих термодатчиков.

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

6. Драйверы. Пока не определился, а посему вопрос: Ардуина со всеми ШИМ драйверами будет работать, или есть исключения. Пока ориентируюсь либо на родную плату 6 каналов, тут о ней писали на PT4115. Либо LDD MeanWell, либо еще вариант на HV9910.

В итоге. Какое железо нужно?

1. Какую Ардуину все же лучше, то есть с какой там прошивкой (версии)? Пока честно говоря плаваю в этом вопросе (не программер к сожалению). Не могу понять после Мега 2560 еще есть какие то 16U2 или 8U2?

2. Какой экран, точнее какой именно наименованием (на что особенно обращать внимание), а то есть типа безо всего и цена тогда всего 9 баксов без микрухи на обороте, но с боковыми штырьками - (не могу вставить ссылку - ошибку выдает)

либо за 18 бачинских с микрухой, но без боковыз штырьков -

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

 

"ITDB02 Arduino MEGA Shield v1.1

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

я спаял на обычной макетке и обрезал её под размер Ардуины

 

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

 

Существует макетная плата Mega Prototyping Shield For Arduino с которой удобно выводить сигналы,а к экрану подключить шлейфом от HDD (40pin) В идеале, на этой же плате самому спаять часы (DS1307) и согласующие резисторы (10-20КОМ)"

 

4. Что еще по железу? Сервер не собираюсь поднимать, ви-фи тоже. Достаточно того, что подошел, глянул на сам аквас, на параметры текущие, если надо подкорректировал, сохранил изменения, убрал стилус, дальше наслаждаешься. Участвуешь в беседах по мере своих сил (когда-то в паскале программил), если у кого что-то новенькое - то идешь к нему на страничку с бокалом холодненького и пробуешь новенькое посредством поднесения бука к аквасу.

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

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

Спасибо.

Изменено пользователем Вовка (см. историю изменений)

Поделиться этим сообщением


Ссылка на сообщение

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

Вы сможете оставлять комментарии после авторизации



Войти

×
×
  • Создать...

Политика обработки персональных данных