Аква-контроллер от Олега
#21
Отправлено 11 Февраль 2013 - 17:59
- BARS и Bishob это нравится
#22
Отправлено 11 Февраль 2013 - 18:02
#23
Отправлено 11 Февраль 2013 - 18:36
Кстати там возможно резистор уже запаян на плате - надо Олега спрашивать, или просто подключиться и проверить работу датчиков - ничего не сгорит, это подтягивающий резистор.
Запаян.
#24
Отправлено 11 Февраль 2013 - 18:40
#25
Отправлено 11 Февраль 2013 - 22:32
Не так... это так я раньше хотел, до получения шилда Олега.
А где в посте 3 указан резистор?
Про номера на АЛ читал в темке...
Раз не указан - значит не нужен, все что можно я в плату втащил. -
Сергей- я помню тот ваш компьютер. Но на сегодня получается что цена контроллера сравнима с ценой 1-2 коралов, т.е это не такая уж и существенная сумма.
Я согласен с Кареном что в высоко висящем светильнике - экран не очень то и лепится, но если монтировать в крышку -то тач наилучшее решение. И симпатично, и кнопок не надо.
И в качестве DIY -такое проще поставить одно квадратное отверстие и проблема решена.
В конце концов одну и туже плату, если подумать хорошо, можно паять в разных версиях
тач
тач + блютус
блютус
Лично у меня с блютусом както не сложилось. Аква в одной комнате, компьютер в другой.
Рядовой зуб недотягивает и антенны не очень помогают. Поэтому экран проще.
Мой знакомый, не найдя место для этого контролера в своем "сверхплотном" светильнике просто поставил его в тумбу, и протянул тонкий кабель управления в светильник, да и все.
все. Ну и есть еще один момент, утилиту то под винду ктото написать должен. Я не могу, не мое это.
#26
Отправлено 12 Февраль 2013 - 09:54
Ну если опишешь протокол обмена с контроллером .......Я не могу, не мое это.
Если без экрана, то и это отверстие не нужно.И в качестве DIY -такое проще поставить одно квадратное отверстие и проблема решена.
С точки зрения производства (а у меня все мои разработки изготавливают на заводе) проще одна плата.одну и туже плату, если подумать хорошо, можно паять в разных версиях
Блютуз можно сделать отдельным небольшим модулем и подключать отдельно, тем более что если корпус металлический, то его нужно обязательно выносить за пределы корпуса (на шлейфе в 4 провода).
Если есть свободный, выведенный на разъемы UART порт контроллера, то можно вообще сделать многофункционалку - либо блютуз (а это по сути UART радиоудлиннитель) либо к USB компа через переходник USB-UART. Программа от этого не меняется.
Все что нужно от тебя, это запрограммировать в контроллере управление через UART и дать описание команд (чтение-запись). Проще всего это делется так:
Выделяется область EEPROM в которой хранятся все переменные настройки, контроллер читает их оттуда в цикле и в соответствии с их значениями работает. Через UART идут только две команды - считать эту область и записать ее. Ну а на компе просто экранный интерфейс.
Где-то так. Карен наверняка что-то еще умное подскажет
Неплохо бы еще иметь возможность загрузки программы контроллера через UART, чтобы можно было легко переписывать ее при выходе новых версий.
#27
Отправлено 12 Февраль 2013 - 15:49
Нет, это слишком медленно, каждый раз считывать всю область. У меня работает примерно так.Выделяется область EEPROM в которой хранятся все переменные настройки, контроллер читает их оттуда в цикле и в соответствии с их значениями работает. Через UART идут только две команды - считать эту область и записать ее. Ну а на компе просто экранный интерфейс.
1. Контроллер сам по своей инициативе никогда никуда ничего не посылает.
2. Постоянно мониторится буфер приема, если там появились данные, проверяем команда это или нет (на предмет фильтрации мусора), если команда, то передаем ее интерпретатору - длинный switch:
void CommandInterpret(unsigned char CommandID){
StartResponce(CommandID);// отправка заголовка ответа
switch (buf[0]){
case READ_TIME :
PutInteger(Sec);
PutInteger(Min);
PutInteger(Hour);
case WRITE_TIME :
//получаем 6 байт: hhmmss (hour min sec)
............
case READ_DIMMER_EERPOM : //читаем почасовую яркость одного канала
if (buf[1]<4) //buf[1] = номер канала
PutBufferEEPROM(EEPROM_Dim_Array[buf[1]],24);
else putchar('0');
break;
case WRITE_DEVICE_NAME :
... и так далее, еще много разных команд на запись и на чтение
}
StopResponce(); // конец ответа
}
К примеру, хотим прочитать текущее время светильника - посылаем команду (байт) READ_TIME и в ответ ожидаем получить три числа - секунды, Минуты, часы.
Хотим записать новое время в светильник - посылаем байт WRITE_TIME и еще 3 двухбайтовых числа - секунды, Минуты, часы.
Ну и так далее, если команда на изменение чего-то, что храниться в EEPROM - то полученные данные сразу пишутся в EEPROM и одновременно в рабочую переменную, которая используется в программе.
Короче говоря, все что надо от программы микроконтроллера - это написать функцию с длинным switch где описать все возможные действия на все получаемые команды - это все очень несложно и легко читаемо.
Наверное эта функция (для начала) может повторять все те же действия, которые делаются в ответ на тачскрин.
А прогу под винду сделать имея такой интерфейс в контроллере уже не проблема. Если возьмешь за основу мою систему команд, то можно сделать на основе моего ЛедКонтроллера, только интерфейс переделать в некоторой степени, а сам движок останется тем же (он отлажен и работает отлично).
#28
Отправлено 12 Февраль 2013 - 15:53
Это уже почти есть - по родному USB шнурку, без среды Ардуино (чтоб пользователям не заморачиваться) любой hex фал можно записать в процессор используя его родной ардуиновский загрузчик. Это все можно встроить в управляющую программу под виндовс.Неплохо бы еще иметь возможность загрузки программы контроллера через UART, чтобы можно было легко переписывать ее при выходе новых версий.
#29
Отправлено 12 Февраль 2013 - 17:37
Я не писал быстро, я писал проще всегоНет, это слишком медленно,
В реале да, так и есть. Первые два байта - команда (RT,WT,RE, WE, ......), дальше чтение N байт в зависимости от команды.
Ну и последний байт - Q, конец команды, но это можно и не использовать.
Далее в программе идет:
Cmd = Buffer[0]+Buffer[1];
Case Cmd:
RT:.............
WT:...........
Ну и так далее.
Для задачи параметров, хранимых в EEPROM (зачем дублировать их переменными в программе ?) командой RW записываются N байт начиная с Х адреса, т.е. команда выглядит так:
RW08000102030405060708Q
#30
Отправлено 12 Февраль 2013 - 23:38
Так не надо. Любая команда принимается в буфер, в ram, благо места там предостаточно. Вначале команда проверяется на "исправность"
чексум, хедер, трейлер - неважно, по степени фантазии автора. А потом уже анализируется типа как указал Карен, потом уже на исполнение.
Это и значительно быстрее, и надежнее. Всегда можно дать запрос на повтор команды в случае ошибки, а потом уже корежить еепром.
Карен, я не уверен что все так просто. Ты написал ехе для прожига с использованием функций avrdude.Это уже почти есть - по родному USB шнурку, без среды Ардуино (чтоб пользователям не заморачиваться) любой hex фал можно записать в процессор используя его родной ардуиновский загрузчик. Это все можно встроить в управляющую программу под виндовс.
Я сделал тоже самое написав bat файл к avrdude. И радостный дал его двум человекам чтобы мне не морочили головы с прошивками.
Это зараза у них не заработала. Дудка протребовала микрософт net и еще чтото. Короче по телефону я с ними бился пару часов и конце-концов пришлось перебросить всю сотню мегабайт ардуины.
Так что отдельную незевисимую утилиту я найти не сумел. Причем проверять работоспособность этого надо на "чистом" компе.
Такая утилита весьма пригодилась-бы.
Перетрем в личке. потребность есть и большая, могобыть.А прогу под винду сделать имея такой интерфейс в контроллере уже не проблема. Если возьмешь за основу мою систему команд, то можно сделать на основе моего ЛедКонтроллера, только интерфейс переделать в некоторой степени, а сам движок останется тем же (он отлажен и работает отлично).
#31
Отправлено 13 Февраль 2013 - 10:15
Ну а я как написал ? Buffer[] это же не EEPROM, это оперативка. Запись в EEPROM идет после приемки команды и ее разбора. Только зачем при этом хранить полученные настройки в EEPROM и в переменных в памяти я не пойму. Не хочется лишний раз писать в EEPROM, так можно сделать проверку перед записью на совпадение настроек, предназаначенных для записи и уже хранащихся в EEPROM.Любая команда принимается в буфер, в ram, благо места там предостаточно. Вначале команда проверяется на "исправность"
чексум, хедер, трейлер - неважно, по степени фантазии автора. А потом уже анализируется типа как указал Карен, потом уже на исполнение.
Это и значительно быстрее, и надежнее. Всегда можно дать запрос на повтор команды в случае ошибки, а потом уже корежить еепром.
У Карена в его контроллере собственный загрузчик, который может загружать программу по UART, если я о том.Карен, я не уверен что все так просто. Ты написал ехе для прожига с использованием функций avrdude.
..................................
Честно, если учесть, что Ардуино это собственно Атмега в базовом включении с несколькими расширениями, то не вижу смысла его (Ардуино) применять. Для разработчика очень удобно, в серии - удорожание конструкции, т. к. не все расширения Ардуино нужны. Но это ИМХО.
#32
Отправлено 13 Февраль 2013 - 11:13
У меня (как показывал на АЛ) "зараза" вроде как работала... на рабочей Arduino batы вроде и читали и писали, но позавчера, после первого серьезного вылета (не удачно как-то снял экран), востановить старые настройки не удалось....Я сделал тоже самое написав bat файл к avrdude. И радостный дал его двум человекам чтобы мне не морочили головы с прошивками.
Это зараза у них не заработала. Так что отдельную незевисимую утилиту я найти не сумел. Причем проверять работоспособность этого надо на "чистом" компе.
Такая утилита весьма пригодилась-бы.
Пришлось прошить исходник и опять долго и муторно все настраивать.
#33
Отправлено 13 Февраль 2013 - 11:42
Чтобы этого не было делается предварительный сброс настроек на внешний носитель (в файл) и затем их загрузка в контроллер.опять долго и муторно все настраивать
#35
Отправлено 13 Февраль 2013 - 11:51
Это обсуждалось... но вроде так и не нашли приемлимого быстрого способа (или подскажи если знаешь)Чтобы этого не было делается предварительный сброс настроек на внешний носитель (в файл) и затем их загрузка в контроллер.
#36
Отправлено 13 Февраль 2013 - 11:53
- Boris.Kirilov это нравится
#37
Отправлено 13 Февраль 2013 - 11:56
При чем здесь "Скорость порта"
#38
Отправлено 13 Февраль 2013 - 12:01
Быстрее - повышать скорость передачи.
#39
Отправлено 13 Февраль 2013 - 12:08
Есть у меня например AVR8 Burn....ею можно?
з.ы. Мы наверно не поймем друг друга... у меня Arduino
#40
Отправлено 13 Февраль 2013 - 12:17
Нет, нужна своя программа, чужая тут не подойдет скорее всего.
Хотя поскольку Ардуино можно программировать, в т.ч. и EEPROM, то значит можно его и считать и сохранить. Это наверно и AVR8 Burn может.
Далее вопрос к Олегу.
Но даже если программа работает с переменными и считывает EEPROM только в момент старта, то надо сохранить EEPROM, потом зашить его заново и рестартануть контроллер.
Все это в том случае, если ВСЕ установки хранятся в EEPROM ( ну или и в памяти и в EEPROM, последнее обязательно).
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных