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

Содержание Несмотря на различия в размере уход, содержание и кормление средних и мелких попугаев во многом схожи. В этом материале упоминаются волнистые попугаи, неразлучники, какарики, кореллы, ожереловые попугаи, розеллы.

Рыбы без кольчуги

Рыбья кольчуга

На танцующих утят быть похожими хотят

svyaz

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

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

Ты где его взял? Там много надо править, оно того не стоит.

Где то тут нарыл.

Может есть ссылка на нормальную?

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


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

Прога от Олега у меня есть и она работает. Хотелось попробовать другую с русским языком.

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


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

От svyaz посмотри.

Так я и не магу найти нормальную рабочую прогу от svyaz. Писал ему в личьку но пока тишина.

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


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

Я не совсем понял твои комментарии. Библиотека sdfat использунется при работе с SD картой. На карту в программме делается бэкап всех выстраданных :) сеттингов, при желании пользователя.

Причем тут пропадание питания, поясни?

:(

зачем на карту если есть EEPROM?

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


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

Затем что формат записи в еепром процессора в разных программах абсолютно разный. Желающих попробовать ту или иную версию предостаточно.

А у некоторых уходят недели экспериментов и попыток подобрать "под себя" все настройки. А потом другая версия скеча все это лихо сносит.......

Поэтому и сделана возможность бэкапа еепрома на карточку.

:)

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


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

Так я и не магу найти нормальную рабочую прогу от svyaz. Писал ему в личьку но пока тишина.

Для 11бит шима и управляемых помп, нужно перенести пины тач-панели (для тех, у кого стандартный шилд с часами)

Стандартно тач-панель занимает пины 6,5,4,3,2 мы их переносим на 49,48,47,43,42 (для совместимости с аква-шилдом Олега)

 

Выпаять с одной стороны резисторы R30, R31,R32, R33

post-972-0-12360000-1375651140_thumb.jpg

 

Перерезать в любом месте дорожку, идущую к пину 2 ардуино

 

post-972-0-61925600-1375651248.jpg

 

Подпаять провод к дорожке идущей сквозь плату (пин 2 подключен к экрану без резистора)

 

post-972-0-20224700-1375651882.jpg

 

Подключение пинов следующее

резистор30 на pin 49

резистор31 на pin 48

резистор32 на pin 47

резистор33 на pin 43

 

post-972-0-69324100-1375652198_thumb.jpg

 

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

Jarduino.rar

 

--------- назначение пинов ----------

22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 - экран

42,43,47,48,49 - тач панель (для 11 бит шима)

 

19 - Датчик температуры (DS18B20 Temperature sensors pin)

20, 21 - часы

 

2 - White Led pin

3 - Blue Led pin

5 - RoyBlue Led pin

6 - Red Led pin

7 - UV Led pin

8 - Orange Led pin

11 - Green Led pin

13 - луна 8 бит

4 - подсветка LCD (8 бит)

 

9 - пин для помпы 1 (Pump PWM 1)

10 - пин для помпы 2 (Pump PWM 2)

 

A0 - таймер 1 (Timer 1)

A1 - таймер 2 (Timer 2)

A2 - таймер 3 (Timer 3)

A3 - таймер 4 (Timer 4)

A4 - таймер 5 (Timer 5)

A5 - Нагреватель вкл./выкл. (power switch Heater on/off)

A6 - Холодильник вкл./выкл. (power switch1 Chiller on/off)

A7 - Buzzer Alarm

A8 - Включить / выключить питание на драйвера

A9 - вкл./выкл. вентилятор (Cooler on/off)

 

44 - Вентилятор на радиаторе 1

45 - Вентилятор на радиаторе 2

 

50, 51, 52, 53 - SD карта

 

0, 1 - RX, TX Serial - USB шнур

14, 15 - RX, TX Serial3 - Bluetooth

16, 17 - RX, TX Serial2 - Роутер

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


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

Прогу грузануть удалось осталось только заставить заработать тачь. А для стандартного жилда v1.0 без часов те же монипуляции необходимы что и для v1.1?

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


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

Прогу грузануть удалось осталось только заставить заработать тачь. А для стандартного жилда v1.0 без часов те же монипуляции необходимы что и для v1.1?

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

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

Будет нужна беспроводная точка доступа либо MR3020 либо WR703n, последняя и дешевле и меньше размером.

Сравнение размеров, слева MR3020, справа WR703n (со снятой крышкой)

post-972-0-21745000-1375689656_thumb.jpg

 

Достаем плату роутера из корпуса (на фото WR703n)

post-972-0-14097900-1375688351_thumb.jpg

 

Так, как у меня роутер MR3020, все манипуляции с проводами, покажу на нем, для WR703n - нужно будет тестером прозвонить - уточнить где там что.

5 вольт берем до стабилизатора на плате роутера и проводом выводим к 5v ардуино.

В комплекте с роутером идет 5v 1А блок питания, (подключается к микро-юсб (на фото желтый) от него заодно запитаем ардуино.

post-972-0-26583200-1375690860_thumb.jpg

 

Землю GND можно взять с "железного" UART (разьем P1)

post-972-0-14796300-1375691320_thumb.jpg

 

У ардуино есть 4 аппаратных uart (пины ардуино 0,1 - используется для юсб кабеля) я использую пины 16, 17 , в скече обращение к этому порту выглядит так Serial2()

post-972-0-26004000-1375692994.jpg

 

Так, как у ардуино 5v, а у роутера 3.3, сигнал из ардуино TX, нужно подключить через простейший делитель, иначе можно спалить роутер, подробности здесь

post-972-0-46471200-1375691982_thumb.png

 

Прошивка:

Больше всего подходит (меньше манипуляций с пакетами) прошивка OR-WRT качать здесь , настраивать по инструкции от сюда

Если все сделать по инструкции, то уже можно работать с ардуино через web консоль, единственное что нужно сделать, зайти через WinSCP на роутер и заменить в папке www index.htm на приаттаченный и изменить порт в скрипте serial.cgi , котрый лежит в папке /www/cgi-bin на "железный" /dev/ttyATH0

post-972-0-14280400-1375692812_thumb.png

index.rar

 

В моем скетче уже есть простейшее управление через uart

Пример:

Включить ручное управление, послать в порт 1, выключить - послать 2

Изменить яркость какого либо канала, формируем команду, где первая буква - цвет канала

w - белый

b - голубой

y - синий

r - красный

u - фиолетовый

o - оранжевый

g - зеленый

Допустим мы хотим включить белый канал на 50% посылаем команду w1000

значения яркости в диапазоне 0 -2000 , для каждого канала.

 

Всякие красивости, будут позже, но будет нужна юсб флешка

post-972-0-50465500-1375693832_thumb.png

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


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

Забыл добавить фотки, как роутер выглядит прицепленный к ардуино.

Как видно, места он занимает не много, к ардуино я его приклеил двухсторонним скотчем, через прокладку.

post-972-0-65264800-1375694650_thumb.jpg post-972-0-10950300-1375694678_thumb.jpg

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

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


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

Возвращаясь к помпам WP40, в аттаче плата (под ЛУТ) и схема

 

WP40neg.pdf

 

WP40sch.pdf

 

Теперь опять возвращаясь к роутеру. Все это возможно только с доп. юсб флешкой

Роутер я подключил к домашнему по WI-FI в режиме клиента.

Установил Web Server

Настроил авторизацию

Настроил отправку SMS через Google calendar (можно бесплатно отправля 20 sms в день)

Работу с почтой через SSMTP, настраивал по этой ссылке (в самом низу)

Для хранения базы данных (ведения лога), нужно установить и настроить Sqlite3 MySQL-жрет больше памяти и более требователен к ресурсам.

Теперь с любого домашнего устройства, набирая в адресной строке (у меня у него такой ip 192.168.1.121:80) я попадаю на страницу авторизации.

Дополнительно на роутере разместил страницу еще одного (французкого) web контроллера Сам контроллер с изернет шилдом подключен проводом к домашнему роутеру.

 

post-972-0-41318600-1375704239_thumb.png

 

Выджет погоды, для моего региона взял здесь http://www.yr.no/ste.../Moskva/Moskva/ просто вставляем в наш htm код ссылку на картинку

 

meteogram.png

 

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

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

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


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

svyaz вопрос? В твоем скетче есть строки таймера

void light1set() {

 

printFramework();

printPicture();

printButGreen(print_text[67]);

printButRed(print_text[68]);

PrintStringIndex=18; printHeader ();

printButton(print_text[2], back[0], back[1], back[2], back[3], SMALL);

printButton(print_text[3], prSAVE[0], prSAVE[1], prSAVE[2], prSAVE[3], SMALL);

printButton(print_text[1], canC[0], canC[1], canC[2], canC[3], SMALL);

printButton("", nextT[0], nextT[1], nextT[2], nextT[3], SMALL);

 

 

 

printTimernumber(print_text[47]);

myGLCD.setColor(0, 255, 255);

timer1Change(); }

 

void timer1Change(){ printFont();

 

if (on1/60<10){

myGLCD.print(print_text[187], 27, 100);

myGLCD.printNumI(on1/60,44, 100);} else {

myGLCD.printNumI(on1/60,27, 100);}

 

if (on1-((on1/60)*60)<10){

myGLCD.print(print_text[187], 95, 100);

myGLCD.printNumI(on1-((on1/60)*60),112, 100);} else {

myGLCD.printNumI(on1-((on1/60)*60),95, 100);}

 

if (off1/60<10){

myGLCD.print(print_text[187], 193, 100);

myGLCD.printNumI(off1/60,210, 100);} else {

myGLCD.printNumI(off1/60,193, 100);}

 

if (off1-((off1/60)*60)<10){

myGLCD.print(print_text[187], 262, 100);

myGLCD.printNumI(off1-((off1/60)*60),279, 100);} else {

myGLCD.printNumI(off1-((off1/60)*60),262, 100);} }

 

case 20: // Timer 1

 

 

// Часы включения (плюс)

if (x>20 && x<68 && y>44 && y<75){on1=on1+60;} // Часы включения +

if (x>20 && x<68 && y>149 && y<180){on1=on1-60;} // Часы включения -

// Минуты включения (плюс)

if (x>89 && x<137 && y>44 && y<75){on1++;} // Минуты включения +

if (x>89 && x<137 && y>149 && y<180){on1--;} // Минуты включения -

// Часы выключения

if (x>185 && x<233 && y>44 && y<75){off1=off1+60;} // Часы выключения +

if (x>185 && x<233 && y>149 && y<180){off1=off1-60;}// Часы выключения -

// Минуты выключения

if (x>255 && x<303 && y>44 && y<75){off1++;} // Минуты выключения +

if (x>255 && x<303 && y>149 && y<180){off1--;} // Минуты выключения -

 

if (on1<0){on1=1439;} // кнопка (плюс) ON

if (on1>1439){on1=0;} // кнопка (минус) ON

if (off1<0){off1=1439;}

if (off1>1439){off1=0;} // установки таймера освещения канала 1

timer1Change(); _delay_ms(100);

 

if ((x>=back[0]) && (x<=back[2]) && (y>=back[1]) && (y<=back[3])){ // press back

waitForIt(back[0], back[1], back[2], back[3]);

dispScreen=19; clearScreen(); TimerScreen(); } else // Суточные Таймеры

// переход

if ((x>=nextT[0]) && (x<=nextT[2]) && (y>=nextT[1]) && (y<=nextT[3])){ // press next

waitForIt(nextT[0], nextT[1], nextT[2], nextT[3]);

dispScreen=26; clearFscreen(); timer11Change(); } else

 

// возврат в меню cуточных таймеров

if ((x>=prSAVE[0]) && (x<=prSAVE[2]) && (y>=prSAVE[1]) && (y<=prSAVE[3])){ // press SAVE

waitForIt(prSAVE[0], prSAVE[1], prSAVE[2], prSAVE[3]);

SaveTimerEEPROM(); _delay_ms(10); clearScreen(); dispScreen=19; TimerScreen();}

break;

 

Я добавляю к первому таймеру

 

 

void light11set(){

 

printFramework();

printPicture();

printButGreen(print_text[67]);

printButRed(print_text[68]);

PrintStringIndex=18; printHeader ();

printButton(print_text[2], back[0], back[1], back[2], back[3], SMALL);

printButton(print_text[3], prSAVE[0], prSAVE[1], prSAVE[2], prSAVE[3], SMALL);

printButton(print_text[1], canC[0], canC[1], canC[2], canC[3], SMALL);

 

 

printTimernumber(print_text[48]);

myGLCD.setColor(0, 255, 255);

timer11Change();

}

 

void timer11Change(){ printFont();

 

if (on11/60<10){

myGLCD.print(print_text[187], 27, 100);

myGLCD.printNumI(on11/60,44, 100);} else {

myGLCD.printNumI(on11/60,27, 100);}

 

if (on11-((on11/60)*60)<10){

myGLCD.print(print_text[187], 95, 100);

myGLCD.printNumI(on11-((on11/60)*60),112, 100);} else {

myGLCD.printNumI(on11-((on11/60)*60),95, 100);}

 

if (off11/60<10){

myGLCD.print(print_text[187], 193, 100);

myGLCD.printNumI(off11/60,210, 100);} else {

myGLCD.printNumI(off11/60,193, 100);}

 

if (off11-((off11/60)*60)<10){

myGLCD.print(print_text[187], 262, 100);

myGLCD.printNumI(off11-((off11/60)*60),279, 100);} else {

myGLCD.printNumI(off11-((off11/60)*60),262, 100);} }

 

 

case 26: // Timer 11

 

// Часы включения (плюс)

if (x>20 && x<68 && y>44 && y<75){on11=on11+60;} // Часы включения +

if (x>20 && x<68 && y>149 && y<180){on11=on11-60;} // Часы включения -

// Минуты включения (плюс)

if (x>89 && x<137 && y>44 && y<75){on11++;} // Минуты включения +

if (x>89 && x<137 && y>149 && y<180){on11--;} // Минуты включения -

// Часы выключения

if (x>185 && x<233 && y>44 && y<75){off11=off11+60;} // Часы выключения +

if (x>185 && x<233 && y>149 && y<180){off11=off11-60;}// Часы выключения -

// Минуты выключения

if (x>255 && x<303 && y>44 && y<75){off11++;} // Минуты выключения +

if (x>255 && x<303 && y>149 && y<180){off11--;} // Минуты выключения -

 

if (on11<0){on11=1439;} // кнопка (плюс) ON

if (on11>1439){on11=0;} // кнопка (минус) ON

if (off11<0){off11=1439;}

if (off11>1439){off11=0;} // установки таймера освещения канала 1

timer11Change(); _delay_ms(100);

 

if ((x>=back[0]) && (x<=back[2]) && (y>=back[1]) && (y<=back[3])){ // press back

waitForIt(back[0], back[1], back[2], back[3]);

dispScreen=20; clearScreen(); timer1Change(); } else // Суточные Таймеры

 

// возврат в меню cуточных таймеров

if ((x>=prSAVE[0]) && (x<=prSAVE[2]) && (y>=prSAVE[1]) && (y<=prSAVE[3])){ // press SAVE

waitForIt(prSAVE[0], prSAVE[1], prSAVE[2], prSAVE[3]);

SaveTimerEEPROM(); _delay_ms(10); clearScreen(); dispScreen=19; TimerScreen(); }

break;

 

Идея такая, у меня пресный аквариум, стоит авто кормушка, корм высыпается по расписанию в 08.00 и 20.00, я хочу на таймер 1 повесить фильтр, чтоб он включался 06.00 выключался 07.50 включался 08.20 выключался 19.50 включался 20.20 и выключался 22.00.

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

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


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

Я так и не понял, хотите еще таймеров добавить, 5 мало ?

1 таймер - 1 событие . Назначте пин, допустим таймера 2 - такой же, как у первого A0 и настройте событие

Допустим таймер 1 - включается в 06.00 выключается в 07.50

таймер 2 - включается в 08.20 выключается в 19.50 и т.д .Пин управления у них один и тот же, можно все 5 на один и будет один таймер с 5 событиями.

 

// Таймеры

uint8_t timer1 = A0; // Таймер1 pin analog 0

uint8_t timer2 = A0; // Таймер2 pin analog 0

 

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

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

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


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

Доброй ночи, Вадим.

 

Как всегда поражаешь Объемом проекта и проделанной работы. Еще раз Большое Спасибо за подробное, по шаговое инструктирование процесса сборки и настройки.

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

Как понял для роутера ставить флешку (в качестве дополнительной памяти) более 2 гБ не имеет смысла? По ссылкам почитал, что форматирует флешку в диск объемом до 1 гБ. Или что-то не так прочитал?

 

С Уважением Григорий.

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

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


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

Добрый вечер.

 

Могли бы вы помочь запустить часы на ардуино нано. библиотека используется вот эта: https://github.com/adafruit/RTClib

 

Скетч залил. Часы настроил, а они идут на одном месте.

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

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


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

В прошивке OR-WRT есть скрипт автоматического форматирования и подключения флеш карты.

Скрипт делит память равномерно между разделами. Естественно мы не сможем использовать все 2 гигабайта, например для хранения mp3 файлов в созданном нами разделе Web сервера.Можно самому вручную создать требуемые разделы.

Для наших целей достаточно самой маленькой карты, даже система умного дома majorDoMo занимает всего 25 мегабайт + база

приблизительно так это потом выглядит.

 

rootfs 968.0M 51.9M 867.6M 6% /

/dev/root 1.5M 1.5M 0 100% /rom

tmpfs 14.2M 72.0K 14.2M 0% /tmp

tmpfs 512.0K 0 512.0K 0% /dev

/dev/sda1 968.0M 51.9M 867.6M 6% /overlay

overlayfs:/overlay 968.0M 51.9M 867.6M 6% /

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


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

svyaz Это я сделал, мне непонятно почему или строки не обновляются или кнопок не видно.

// Таймеры

uint8_t timer1 = A0; // Таймер1 pin analog 0

uint8_t timer2 = A0; // Таймер2 pin analog 0

 

Это понятно что все таймеры можно повесить на один пин. Мне 5 таймеров мало.

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

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


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

Это понятно что все таймеры можно повесить на один пин. Мне 5 таймеров мало.

 

Я не знаю что у тебя за скетч, под case 26: у меня луна, ты видимо переходишь не на тот case

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


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

Теперь опять возвращаясь к роутеру. Все это возможно только с доп. юсб флешкой

Роутер я подключил к домашнему по WI-FI в режиме клиента.

Установил Web Server

 

 

Вадим, снимаю шляпу.

 

Нет слов, уважаю!! Ты проделал ГИГАНТСКУЮ работу.

У нас на смежном предприятии люди занимаются подобными вещами долгие месяцы, а потом еще сидят на отладке ...

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


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

Я не знаю что у тебя за скетч, под case 26: у меня луна, ты видимо переходишь не на тот case

 

 

case 20: // Timer 1

break;

 

case 21: // Резерв

break;

 

case 22: // Резерв

break;

 

case 23: // Резерв

break;

 

case 24: // Резерв

break;

 

case 25: // Резерв

break;

 

case 26: // Timer 11

break;

 

case 27: // Timer 2

break;

 

case 28: // Timer 3

break;

 

case 29: // Timer 4

break;

 

case 30: // Timer 5

break;

 

case 31: // ручное управление таймерами

break;

 

case 32: // экран настройки яркости луны

break;

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


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

Вадим, снимаю шляпу.

 

Нет слов, уважаю!! Ты проделал ГИГАНТСКУЮ работу.

У нас на смежном предприятии люди занимаются подобными вещами долгие месяцы, а потом еще сидят на отладке ...

Это не очень сложно, тем более что есть интернет :))

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

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

post-972-0-19595400-1375779012_thumb.png post-972-0-71546100-1375779026_thumb.png

 

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

post-972-0-70127400-1375779098_thumb.png

 

index.rar

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


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

Это не очень сложно, тем более что есть интернет :))

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

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

post-972-0-19595400-1375779012_thumb.png post-972-0-71546100-1375779026_thumb.png

 

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

post-972-0-70127400-1375779098_thumb.png

 

index.rar

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

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


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

У многих здесь на форуме есть мастеркитовский контроллер BM8036

 

master_kit_RS_2_6_06.jpg

 

Используя роутер с openwrt TP-LINK 3420, можно организовать удаленное управление через интернет, при этом ни чего разбирать/ паять не нужно.

Прямая ссылка на Manual по настройке (PDF) и ссылка на сайт

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

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


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

Всем добрый вечер. У меня следующая проблема, вентиляторы подключены к блоку питания на 12v (-) БП 12v подключен к (-) контроллера (+) соответственно к вентилятору. Контроллер питает БП на 9v. При такой компоновки вентиляторы включаются и отключаются но МЕГА греется (у меня стандартный шилд v1, без часов) шилд от Олега закажу как только он у него появится. Так вот при подключении к МЕГе БП 5V она работает но не включает вентиляторы а при подключении БП 7v вообще не запускается горит белый экран и все. Прога от Олега v1.31. В чем может быть проблема? Чуть не забыл по совету Олега купил транзистор IRF820A и IRFIBC30G.

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

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


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

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

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



Войти

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

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