blesk 1 Опубликовано 3 Августа 2013 Ты где его взял? Там много надо править, оно того не стоит. Где то тут нарыл. Может есть ссылка на нормальную? Поделиться этим сообщением Ссылка на сообщение
avp8853 0 Опубликовано 4 Августа 2013 1. Скачать из http://reefcentral.r...t-olega/page-25 сообщение #483 архив. Поделиться этим сообщением Ссылка на сообщение
blesk 1 Опубликовано 4 Августа 2013 Прога от Олега у меня есть и она работает. Хотелось попробовать другую с русским языком. Поделиться этим сообщением Ссылка на сообщение
avp8853 0 Опубликовано 4 Августа 2013 От svyaz посмотри. Поделиться этим сообщением Ссылка на сообщение
blesk 1 Опубликовано 4 Августа 2013 От svyaz посмотри. Так я и не магу найти нормальную рабочую прогу от svyaz. Писал ему в личьку но пока тишина. Поделиться этим сообщением Ссылка на сообщение
kapelan 3 Опубликовано 4 Августа 2013 Я не совсем понял твои комментарии. Библиотека sdfat использунется при работе с SD картой. На карту в программме делается бэкап всех выстраданных сеттингов, при желании пользователя. Причем тут пропадание питания, поясни? зачем на карту если есть EEPROM? Поделиться этим сообщением Ссылка на сообщение
Oleg_il 62 Опубликовано 4 Августа 2013 Затем что формат записи в еепром процессора в разных программах абсолютно разный. Желающих попробовать ту или иную версию предостаточно. А у некоторых уходят недели экспериментов и попыток подобрать "под себя" все настройки. А потом другая версия скеча все это лихо сносит....... Поэтому и сделана возможность бэкапа еепрома на карточку. Поделиться этим сообщением Ссылка на сообщение
svyaz 19 Опубликовано 4 Августа 2013 Так я и не магу найти нормальную рабочую прогу от svyaz. Писал ему в личьку но пока тишина. Для 11бит шима и управляемых помп, нужно перенести пины тач-панели (для тех, у кого стандартный шилд с часами) Стандартно тач-панель занимает пины 6,5,4,3,2 мы их переносим на 49,48,47,43,42 (для совместимости с аква-шилдом Олега) Выпаять с одной стороны резисторы R30, R31,R32, R33 Перерезать в любом месте дорожку, идущую к пину 2 ардуино Подпаять провод к дорожке идущей сквозь плату (пин 2 подключен к экрану без резистора) Подключение пинов следующее резистор30 на pin 49 резистор31 на pin 48 резистор32 на pin 47 резистор33 на pin 43 Для упрощения, в архиве скомпилированный 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 - Роутер Поделиться этим сообщением Ссылка на сообщение
blesk 1 Опубликовано 5 Августа 2013 Прогу грузануть удалось осталось только заставить заработать тачь. А для стандартного жилда v1.0 без часов те же монипуляции необходимы что и для v1.1? Поделиться этим сообщением Ссылка на сообщение
svyaz 19 Опубликовано 5 Августа 2013 Прогу грузануть удалось осталось только заставить заработать тачь. А для стандартного жилда v1.0 без часов те же монипуляции необходимы что и для v1.1? Если хотите, чтобы оно еще и работало, а не просто было вместо часов - то нужно переделывать. "Продвинутые" пользователи, могут уже сейчас (если конечно не пугают некоторые манипуляции с linux) начинать подготовку. Будет нужна беспроводная точка доступа либо MR3020 либо WR703n, последняя и дешевле и меньше размером. Сравнение размеров, слева MR3020, справа WR703n (со снятой крышкой) Достаем плату роутера из корпуса (на фото WR703n) Так, как у меня роутер MR3020, все манипуляции с проводами, покажу на нем, для WR703n - нужно будет тестером прозвонить - уточнить где там что. 5 вольт берем до стабилизатора на плате роутера и проводом выводим к 5v ардуино. В комплекте с роутером идет 5v 1А блок питания, (подключается к микро-юсб (на фото желтый) от него заодно запитаем ардуино. Землю GND можно взять с "железного" UART (разьем P1) У ардуино есть 4 аппаратных uart (пины ардуино 0,1 - используется для юсб кабеля) я использую пины 16, 17 , в скече обращение к этому порту выглядит так Serial2() Так, как у ардуино 5v, а у роутера 3.3, сигнал из ардуино TX, нужно подключить через простейший делитель, иначе можно спалить роутер, подробности здесь Прошивка: Больше всего подходит (меньше манипуляций с пакетами) прошивка OR-WRT качать здесь , настраивать по инструкции от сюда Если все сделать по инструкции, то уже можно работать с ардуино через web консоль, единственное что нужно сделать, зайти через WinSCP на роутер и заменить в папке www index.htm на приаттаченный и изменить порт в скрипте serial.cgi , котрый лежит в папке /www/cgi-bin на "железный" /dev/ttyATH0 index.rar В моем скетче уже есть простейшее управление через uart Пример: Включить ручное управление, послать в порт 1, выключить - послать 2 Изменить яркость какого либо канала, формируем команду, где первая буква - цвет канала w - белый b - голубой y - синий r - красный u - фиолетовый o - оранжевый g - зеленый Допустим мы хотим включить белый канал на 50% посылаем команду w1000 значения яркости в диапазоне 0 -2000 , для каждого канала. Всякие красивости, будут позже, но будет нужна юсб флешка Поделиться этим сообщением Ссылка на сообщение
svyaz 19 Опубликовано 5 Августа 2013 (изменено) Забыл добавить фотки, как роутер выглядит прицепленный к ардуино. Как видно, места он занимает не много, к ардуино я его приклеил двухсторонним скотчем, через прокладку. Изменено 5 Августа 2013 пользователем svyaz (см. историю изменений) Поделиться этим сообщением Ссылка на сообщение
svyaz 19 Опубликовано 5 Августа 2013 (изменено) Возвращаясь к помпам WP40, в аттаче плата (под ЛУТ) и схема WP40neg.pdf WP40sch.pdf Теперь опять возвращаясь к роутеру. Все это возможно только с доп. юсб флешкой Роутер я подключил к домашнему по WI-FI в режиме клиента. Установил Web Server Настроил авторизацию Настроил отправку SMS через Google calendar (можно бесплатно отправля 20 sms в день) Работу с почтой через SSMTP, настраивал по этой ссылке (в самом низу) Для хранения базы данных (ведения лога), нужно установить и настроить Sqlite3 MySQL-жрет больше памяти и более требователен к ресурсам. Теперь с любого домашнего устройства, набирая в адресной строке (у меня у него такой ip 192.168.1.121:80) я попадаю на страницу авторизации. Дополнительно на роутере разместил страницу еще одного (французкого) web контроллера Сам контроллер с изернет шилдом подключен проводом к домашнему роутеру. Выджет погоды, для моего региона взял здесь http://www.yr.no/ste.../Moskva/Moskva/ просто вставляем в наш htm код ссылку на картинку Виджетов часов, календарей и прочего - полно здесь Изменено 5 Августа 2013 пользователем svyaz (см. историю изменений) 1 Поделиться этим сообщением Ссылка на сообщение
avp8853 0 Опубликовано 5 Августа 2013 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(); показывает на экране только цифры таймера, ни больше ни чего, ни кнопок ни стрелок ничего. Помоги разобраться с этим. Поделиться этим сообщением Ссылка на сообщение
svyaz 19 Опубликовано 5 Августа 2013 (изменено) Я так и не понял, хотите еще таймеров добавить, 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 для других функций. Изменено 5 Августа 2013 пользователем svyaz (см. историю изменений) Поделиться этим сообщением Ссылка на сообщение
Grigory 7 Опубликовано 5 Августа 2013 (изменено) Доброй ночи, Вадим. Как всегда поражаешь Объемом проекта и проделанной работы. Еще раз Большое Спасибо за подробное, по шаговое инструктирование процесса сборки и настройки. Жду скоро уже придет заказанный роутер и новый шилд для перепайки пинов по новой схеме. Но до отпуска наверное не успею получить, а руки уже чешутся начинать. Как понял для роутера ставить флешку (в качестве дополнительной памяти) более 2 гБ не имеет смысла? По ссылкам почитал, что форматирует флешку в диск объемом до 1 гБ. Или что-то не так прочитал? С Уважением Григорий. Изменено 5 Августа 2013 пользователем Grigory (см. историю изменений) Поделиться этим сообщением Ссылка на сообщение
Natalichev 0 Опубликовано 5 Августа 2013 (изменено) Добрый вечер. Могли бы вы помочь запустить часы на ардуино нано. библиотека используется вот эта: https://github.com/adafruit/RTClib Скетч залил. Часы настроил, а они идут на одном месте. Изменено 5 Августа 2013 пользователем Natalichev (см. историю изменений) Поделиться этим сообщением Ссылка на сообщение
svyaz 19 Опубликовано 5 Августа 2013 В прошивке 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% / Поделиться этим сообщением Ссылка на сообщение
avp8853 0 Опубликовано 5 Августа 2013 (изменено) svyaz Это я сделал, мне непонятно почему или строки не обновляются или кнопок не видно. // Таймеры uint8_t timer1 = A0; // Таймер1 pin analog 0 uint8_t timer2 = A0; // Таймер2 pin analog 0 Это понятно что все таймеры можно повесить на один пин. Мне 5 таймеров мало. Изменено 5 Августа 2013 пользователем avp8853 (см. историю изменений) Поделиться этим сообщением Ссылка на сообщение
svyaz 19 Опубликовано 5 Августа 2013 Это понятно что все таймеры можно повесить на один пин. Мне 5 таймеров мало. Я не знаю что у тебя за скетч, под case 26: у меня луна, ты видимо переходишь не на тот case Поделиться этим сообщением Ссылка на сообщение
AlexKrumholz 4 Опубликовано 6 Августа 2013 Теперь опять возвращаясь к роутеру. Все это возможно только с доп. юсб флешкой Роутер я подключил к домашнему по WI-FI в режиме клиента. Установил Web Server Вадим, снимаю шляпу. Нет слов, уважаю!! Ты проделал ГИГАНТСКУЮ работу. У нас на смежном предприятии люди занимаются подобными вещами долгие месяцы, а потом еще сидят на отладке ... Поделиться этим сообщением Ссылка на сообщение
avp8853 0 Опубликовано 6 Августа 2013 Я не знаю что у тебя за скетч, под 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; Поделиться этим сообщением Ссылка на сообщение
svyaz 19 Опубликовано 6 Августа 2013 Вадим, снимаю шляпу. Нет слов, уважаю!! Ты проделал ГИГАНТСКУЮ работу. У нас на смежном предприятии люди занимаются подобными вещами долгие месяцы, а потом еще сидят на отладке ... Это не очень сложно, тем более что есть интернет Не люблю хвастать, но наверное один раз можно, но только 1 раз То, что я здесь показал, не более 10 процентов, из того что я уже изучил, еще учился делать меню и строить графики. Вчера переделал страницу, которая работает с моим кодом, который я выложил выше. index.rar Поделиться этим сообщением Ссылка на сообщение
avp8853 0 Опубликовано 6 Августа 2013 Это не очень сложно, тем более что есть интернет Не люблю хвастать, но наверное один раз можно, но только 1 раз То, что я здесь показал, не более 10 процентов, из того что я уже изучил, еще учился делать меню и строить графики. Вчера переделал страницу, которая работает с моим кодом, который я выложил выше. index.rar Очень Очень здорово, можно и не один раз похвастаться тем более есть чем. Поделиться этим сообщением Ссылка на сообщение
svyaz 19 Опубликовано 6 Августа 2013 (изменено) У многих здесь на форуме есть мастеркитовский контроллер BM8036 Используя роутер с openwrt TP-LINK 3420, можно организовать удаленное управление через интернет, при этом ни чего разбирать/ паять не нужно. Прямая ссылка на Manual по настройке (PDF) и ссылка на сайт Изменено 6 Августа 2013 пользователем svyaz (см. историю изменений) 1 Поделиться этим сообщением Ссылка на сообщение
blesk 1 Опубликовано 7 Августа 2013 (изменено) Всем добрый вечер. У меня следующая проблема, вентиляторы подключены к блоку питания на 12v (-) БП 12v подключен к (-) контроллера (+) соответственно к вентилятору. Контроллер питает БП на 9v. При такой компоновки вентиляторы включаются и отключаются но МЕГА греется (у меня стандартный шилд v1, без часов) шилд от Олега закажу как только он у него появится. Так вот при подключении к МЕГе БП 5V она работает но не включает вентиляторы а при подключении БП 7v вообще не запускается горит белый экран и все. Прога от Олега v1.31. В чем может быть проблема? Чуть не забыл по совету Олега купил транзистор IRF820A и IRFIBC30G. Изменено 7 Августа 2013 пользователем blesk (см. историю изменений) Поделиться этим сообщением Ссылка на сообщение